百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

gRPC-go源码剖析与实战 技术专栏介绍

ccwgpt 2024-10-13 01:32 63 浏览 0 评论

1、背景介绍

??无论是分布式架构,还是微服务架构,服务之间如何高效、可靠性的通信是具有一定的挑战性的;那么,解决方案之一就是使用RPC通信

而由google开发的gRPC-go是一个高性能、开源和通用的RPC框架,面向移动和HTTP2设计。

??在涉及到网络通信的领域内,经常可以看到gRPC-go的身影;
??目前,已经在
Kubernetes、Docker、Istio等优秀开源框架中广泛应用;因此,有必要对gRPC-go的核心原理进行深入了解,以便能够更好地为微服务架构,分布式架构提供安全、高效、可靠的网络通信服务。

2、专栏解读

??本专栏非常详细地介绍了gRPC-go的源码;

2.1、 专栏提供了什么?

01?600页

02?18个功能模块

03?99篇文章

04?20万字

05?60张逻辑原理图

06?在全网内第1次全面介绍流量控制原理

07?在全网内第1次全面介绍gRPC-go源码

来帮助大家了解gRPC-go框架的每个功能原理;

2.2、 阅读本专栏会有什么收获

2.2.1、熟悉gRPC-go框架的核心原理

如:

01?如何建立rpc连接,如何处理rpc请求

02?如何自定义平衡器,解析器

03?滑动窗口(流量控制)原理

04?重试机制原理

05?加密原理

06?认证(basic, Token, jwt)

07?如何让gRPC-go框架支持lz4算法

08?如何基于wireshark进行抓包分析

09? 帧发送器原理,源码作者为什么如此设计帧发送器

等等

2.2.2、从gRPC-go框架中学到很多golang编程技巧

如,

01? 如何使用上下文的?

02? 如何比较两个数的大小?

03? gRPC-go框架是如何使用事件机制的

04? 当某个步骤失败时如何对本步骤以及前面的步骤实现重试机制

05? 从源码中学到的技能,经过提炼后,都可以运用到自己的项目中去

06? 如何使用切片,通道存储结构,来实现有序读取数据,有序存储数据?

等等,对go语言的提高有很大的帮助;

3、本专栏最大的目的:

希望您学完之后:

01?是你go语言能力的一种体现

02?具备二次开发gRPC-go源码的能力

03?该技术能够成为你简历上的技术亮点

04?求职简历上可以注明熟读gRPC-go源码

05?经过自己努力后,甚至可以成为gRPC-go框架的源码贡献者

等等

4、专栏主要分为以下模块

4.1、模块1:grpc客户端是如何向grpc服务器端建立起rpc连接的

本模块主要介绍rpc链接建立阶段所涉及到的内容;
主要涉及到的内容:
??grpc客户端跟grpc服务器端整个交互过程主要经历过哪些阶段;如何建立起的tcp链接?
如果rpc链接失败后,grpc客户端是否尝试重试链接,每次连接的间隔时间是如何设置的;等等

4.2、模块2:解析器原理以及实践介绍

本模块介绍解析器相关原理;
主要涉及到的内容:
??解析器是用来做什么的?如何实现一个解析器,如何注册一个解析器?对grpc框架内置的解析器介绍?如何使用consul来自定义解析器;

4.3、模块3:平衡器原理以及实践介绍

本模块介绍平衡器相关原理;
主要涉及到的内容:
??平衡器主要实现什么功能?客户端如何指定使用哪个平衡器呢?如何实现、注册、创建平衡器?pickFirst平衡器介绍、round_robin平衡器介绍、grpc+LoadBalancer平衡器介绍、grpc+nginx平衡器介绍、grpc+consul自定义解析器介绍等等;

4.4、模块4:grpc客户端是如何向grpc服务器端发起rpc请求的以及处理流程

本模块介绍的原理以及流程:是在rpc建立连接基础之上的;也就是rpc连接建立后,客户端如何调用本地方法,服务器端如何接收请求,执行请求,反馈执行结果给客户端。
主要涉及到的内容:
??在rpc请求阶段,主要经历了哪些过程;在客户端一侧,什么场景下,会触发流的创建?客户端是如何将请求服务的名称,方法名称等信息通知服务器端的?
以及如何将请求方法的参数值发送给服务器端的?客户端一侧,接收服务器端反馈执行结果的流程?grpc服务器端一侧,处理客户端的整体流程?
grpc服务器端对客户端的每次tcp请求,是单协程处理,还是多协程处理?等等;

4.5、模块5:帧接收原理介绍

本模块介绍帧接收器相关原理;每次客户端跟服务器端建立rpc连接后,就会创建各自的帧接收器,专门用来接收对方发送的帧;
主要内容涉及到:
??grpc客户端帧接收器的原理介绍;grpc客户端帧接收器是如何处理不同的帧的?grpc服务器端帧接收器的原理介绍;服务器端接收到客户端的头帧后,如何处理?等等

4.6、模块6:帧发送器原理介绍

本模块介绍帧发送器相关原理;每次客户端跟服务器端建立rpc连接后,就会创建各自的帧发送器,专门用来将各种类型的帧发送给对方;客户端跟服务器端的帧发送器原理是一样的。
主要内容涉及到:
??帧发送器的整体流程介绍;如何将帧数据在内存里进行存储和读取?在同一个进程里如何使用通知的方式消费数据帧?帧发送器处理帧时有什么特点?帧发送器的基本流程介绍?
为什么源码作者将帧发送器的代码如何设计?客户端一侧,头帧的整体处理流程介绍?等等

4.7、模块7:滑动窗口(流量控制)

本模块主要介绍grpc服务器端在接收客户端发送的数据帧时,是如何动态控制客户端发送的数据帧大小的;也可以称之为流量控制。
涉及到的内容:
??滑动窗口的整体流程介绍;帧发送器是如何将数据帧发送给服务器端的;在服务器端一侧,帧接收器是如何将接收到的数据帧存储到本地的?
数据帧缓存到recvBuffer前的流控?从recvBuffer里读取数据时,如何调整流控指标?服务器端在真正执行客户端的请求方法时,是如何完整地读取到请求参数值的?
如何计算本次发送的数据帧的大小?服务器端发送的设置帧、窗口更新帧是如何影响客户端的帧大小的?
基于wireshark对grpc进行抓包分析:如何配置wireshark能够抓取grpc包,多场景抓包测试用例分析;等等

4.8、模块8:取消功能cancellation

本模块对grpc框架中的取消功能cancellation进行介绍;
涉及到的内容:
??取消cancellation功能的基本原理介绍;取消功能实现什么效果?客户端一侧,是如何处理取消功能的?服务器端一侧,是如何处理取消功能的?等等

4.9、模块9:截止时间deadline

本模块对grpc框架中的截止时间Deadline进行介绍;
涉及到的内容:
??截止时间deadline跟取消功能cancellation的区别?截止时间可以发生在哪些阶段?客户端一侧,如何配置启动截止时间?
客户端一侧,当截止时间发生在不同的阶段,每个阶段是如何处理的?
服务器端一侧,是如何处理截止时间的?等等

4.10、模块10:健康检测health

本模块对grpc框架中的健康检测HealthChecking进行介绍;
涉及到的内容:
??客户端是如何判定服务器端的服务的健康状态的?健康检测原理的整体流程图介绍;客户端的链接状态时如何更新为Ready状态的?
客户端如何判断服务器端的服务能够正常提供服务呢?服务器端健康检测Watcher的核心思想?健康检测运行时场景的异常场景处理?等等

4.11、模块11:拦截器interceptor

本模块对grpc框架中的拦截器interceptor原理进行介绍;
涉及到的内容:
??拦截器的分类;客户端如何使用拦截器;服务器端如何使用拦截器;服务器端何时触发拦截器流程?客户端何时触发拦截器流程?
拦截器的调度策略,即拦截器的执行过程?等等

4.12、模块12:保持链接keepalive

本模块对grpc框架中的保持链接keepalive原理进行介绍;
涉及到的内容:
??保持链接跟健康检测的区别?服务器端keepalive的原理图?服务器端何时触发keepalive功能的启动?当链接处于不同状态时,服务器端如何处理链接?
客户端一侧keepalive的原理图?服务器端跟客户端交互处理goAway帧的流程图;等等

4.13、模块13:多路复用multiplex

本模块对grpc框架中多路复用multiplex原理进行介绍;
涉及到的内容:
??grpc采矿机是如何实现多路复用的;实现多路复用的基本思路?grpc框架中,服务器端是如何区分不同的服务请求的?一个服务器请求,可能存在多个http2数据帧,
服务器端是如何存储不同服务请求的http2数据帧的?如何按顺序存储?如何按顺序读取数据帧呢?等等

4.14、模块14:压缩特性compression

本模块对grpc框架中压缩特性compression原理进行介绍;
涉及到的内容:
??grpc框架是如何支持不同的压缩算法的?如何启动压缩特性?如何注册一个压缩算法?客户端一侧,压缩处理数据的原理?服务器端一侧,压缩处理数据的原理?
在客户端一侧,发送数据阶段,压缩器压缩数据的处理流程?在服务器端一侧,如何获取客户端采用的压缩算法呢?如何解压数据?如何让grpc框架支持lz4压缩算法呢?等等

4.15、模块15:重试机制retry

本模块对grpc框架中的重试机制retry原理进行介绍;
涉及到的内容:
??在grpc框架中什么场景下使用了重试机制?客户端一侧,如何启动、禁止重试机制功能?如何定义、使用重试策略呢?grpc框架中,实现重试机制的主体思路?
重试机制withRetry实现方式的特点?客户端是如何判断是不是允许重试呢?如果某个阶段失败了,客户端如何重试前几步的操作呢?等等

4.16、模块16:元数据metadata

本模块对grpc框架中的元数据metadata原理进行介绍;
涉及到的内容:
??客户端一侧,如何创建元数据?如何使用创建的元数据?如何将元数据信息存储到上下文中的呢?服务器端一侧,是如何接收元数据的?如何让服务端提供的服务中有能力使用元数据;等等

4.17、模块17:加密encryption

本模块对grpc框架中加密encryption原理进行介绍;
涉及到的内容:
??grpc框架支持哪几种加密?基于tls证书加密的测试用例介绍?基于ca的tls证书加密测试用例介绍?
链路建立阶段时的tls加密原理介绍:客户端一侧,加密原理介绍?服务器端加密原理介绍,介绍时配合wireshark抓包分析;如何配置wireshark能够抓取tls包?整体握手过程原理介绍;
数据帧发送阶段的tls加密介绍;如何使用在tls链路建立阶段双方协商好的数据作为加密数据的?使用协商好的加密数据开始对数据帧进行加密?等等

4.18、模块18:认证authentication

本模块对grpc框架中的认证authentication原理进行介绍;
涉及到的内容:
??如何理解认证?grpc+oauth2.Token认证方式介绍:如何配置认证?认证功能属于链路级别功能,还是属于流级别功能?服务器端一侧是如何获取认证信息的?如何来验证认证信息的?grpc+自定义认证方式介绍;grpc+Basic认证方式介绍:basic认证方式介绍;模拟Basic认证测试用例介绍;grpc+jwt认证方式介绍:jwt认证介绍;jwt-grpc-go认证测试用例介绍;客户端向服务器端发起授权码请求?如何具体校验jwt?如何生成jwt?等等

5、适宜人群

01??微服务研发工程师

02??中间件研发工程师

03??docker开发工程师

04??kubernetes开发工程师

05??对grpc-go感兴趣的爱好者

06??go语言研发工程师、go语言爱好者

07??计算机相关专业的大学生、研究生


6、如何订阅

进入主页,右侧订阅即可

7、如何联系

技术专栏交流群 QQ:34249889

订阅,进群,获取免费资料
go的相关资料,如:

?
?

点击下面的 了解更多,即可找到。

相关推荐

团队管理“布阵术”:3招让你的团队战斗力爆表!

为何古代军队能够以一当十?为何现代企业有的团队高效似“特种部队”,有的却松散若“游击队”?**答案正隐匿于“布阵术”之中!**今时今日,让我们从古代兵法里萃取3个核心要义,助您塑造一支战斗力爆棚的...

知情人士回应字节大模型团队架构调整

【知情人士回应字节大模型团队架构调整】财联社2月21日电,针对原谷歌DeepMind副总裁吴永辉加入字节跳动后引发的团队调整问题,知情人士回应称:吴永辉博士主要负责AI基础研究探索工作,偏基础研究;A...

豆包大模型团队开源RLHF框架,训练吞吐量最高提升20倍

强化学习(RL)对大模型复杂推理能力提升有关键作用,但其复杂的计算流程对训练和部署也带来了巨大挑战。近日,字节跳动豆包大模型团队与香港大学联合提出HybridFlow。这是一个灵活高效的RL/RL...

创业团队如何设计股权架构及分配(创业团队如何设计股权架构及分配方案)

创业团队的股权架构设计,决定了公司在随后发展中呈现出的股权布局。如果最初的股权架构就存在先天不足,公司就很难顺利、稳定地成长起来。因此,创业之初,对股权设计应慎之又慎,避免留下巨大隐患和风险。两个人如...

消息称吴永辉入职后引发字节大模型团队架构大调整

2月21日,有消息称前谷歌大佬吴永辉加入字节跳动,并担任大模型团队Seed基础研究负责人后,引发了字节跳动大模型团队架构大调整。多名原本向朱文佳汇报的算法和技术负责人开始转向吴永辉汇报。简单来说,就是...

31页组织效能提升模型,经营管理团队搭建框架与权责定位

分享职场干货,提升能力!为职场精英打造个人知识体系,升职加薪!31页组织效能提升模型如何拿到分享的源文件:请您关注本头条号,然后私信本头条号“文米”2个字,按照操作流程,专人负责发送源文件给您。...

异形柱结构(异形柱结构技术规程)

下列关于混凝土异形柱结构设计的说法,其中何项正确?(A)混凝土异形柱框架结构可用于所有非抗震和抗震设防地区的一般居住建筑。(B)抗震设防烈度为6度时,对标准设防类(丙类)采用异形柱结构的建筑可不进行地...

职场干货:金字塔原理(金字塔原理实战篇)

金字塔原理的适用范围:金字塔原理适用于所有需要构建清晰逻辑框架的文章。第一篇:表达的逻辑。如何利用金字塔原理构建基本的金字塔结构受众(包括读者、听众、观众或学员)最容易理解的顺序:先了解主要的、抽象的...

底部剪力法(底部剪力法的基本原理)

某四层钢筋混凝土框架结构,计算简图如图1所示。抗震设防类别为丙类,抗震设防烈度为8度(0.2g),Ⅱ类场地,设计地震分组为第一组,第一自振周期T1=0.55s。一至四层的楼层侧向刚度依次为:K1=1...

结构等效重力荷载代表值(等效重力荷载系数)

某五层钢筋混凝土框架结构办公楼,房屋高度25.45m。抗震设防烈度8度,设防类别丙类,设计基本地震加速度0.2g,设计地震分组第二组,场地类别为Ⅱ类,混凝土强度等级C30。该结构平面和竖向均规则。假定...

体系结构已成昭告后世善莫大焉(体系构架是什么意思)

实践先行也理论已初步完成框架结构留余后人后世子孙俗话说前人栽树后人乘凉在夏商周大明大清民国共和前人栽树下吾之辈已完成结构体系又俗话说青出于蓝而胜于蓝各个时期任务不同吾辈探索框架结构体系经历有限肯定发展...

框架柱抗震构造要求(框架柱抗震设计)

某现浇钢筋混凝土框架-剪力墙结构高层办公楼,抗震设防烈度为8度(0.2g),场地类别为Ⅱ类,抗震等级:框架二级,剪力墙一级,混凝土强度等级:框架柱及剪力墙C50,框架梁及楼板C35,纵向钢筋及箍筋均采...

梁的刚度、挠度控制(钢梁挠度过大会引起什么原因)

某办公楼为现浇钢筋混凝土框架结构,r0=1.0,混凝土强度等级C35,纵向钢筋采用HRB400,箍筋采用HPB300。其二层(中间楼层)的局部平面图和次梁L-1的计算简图如图1~3(Z)所示,其中,K...

死要面子!有钱做大玻璃窗,却没有钱做“柱和梁”,不怕房塌吗?

活久见,有钱做2层落地大玻璃窗,却没有钱做“柱子和圈梁”,这样的农村自建房,安全吗?最近刷到个魔幻施工现场,如下图,这栋5开间的农村自建房,居然做了2个全景落地窗仔细观察,这2个落地窗还是飘窗,为了追...

不是承重墙,物业也不让拆?话说装修就一定要拆墙才行么

最近发现好多朋友装修时总想拆墙“爆改”空间,别以为只要避开承重墙就能随便砸!我家楼上邻居去年装修,拆了阳台矮墙想扩客厅,结果物业直接上门叫停。后来才知道,这种配重墙拆了会让阳台承重失衡,整栋楼都可能变...

取消回复欢迎 发表评论: