已发表的技术专栏(订阅即可观看所有专栏)
0 grpc-go、protobuf、multus-cni 技术专栏 总入口
4 grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录
专栏不会结束,将来有新的内容,也会继续添加到这里的;
01 grpc-go源码剖析与实战之 图文专栏介绍 【关注+收藏+20万字+99篇文章】(免费看)
02 grpc-go源码剖析与实战之 文章目录 【关注+收藏+点击查看】 (免费看)
03 grpc-go环境说明、版本、网盘、QQ群、为什么学习grpc-go (免费看)
文章篇幅大小说明 |
我是将一个大的功能模块拆分成若干篇文章,尽量保证每篇文章至少A4纸1页,最多不超过A4纸10页。 大部分是3-6页左右。
模块重要性说明------>可根据模块的重要性来选择性学习(降低难度) |
- 1-7模块,是最主要的,最难的,是了解整个grpc-go框架流程的。(必学的)
- 8-18模块,不太影响对整体功能的了解。(非必学)
- 其中:以下模块,有机会的话,还是有必要了解一下的:
- 健康检测模块、拦截器、加密、认证 这些模块,次重要
- 多路复用模块,可以了解服务器端是如何实现不同请求的多个数据帧是如何按序存储,按序读取;(达到的效果其实是,不同服务请求的数据隔离)
- 重试机制模块,看看grpc-go框架是如何来实现重试的?不光是对本步骤的重试,还实现了对前面几个步骤的重试?这种实现方式,是不是可以应用到项目中去呢?(有机会的话,还是有必要了解一下的)
- 其中:以下模块,有机会的话,还是有必要了解一下的:
直接点击文章题目,就可以进入 |
模块1:grpc客户端是如何跟grpc服务器端建立rpc链接的 |
1 grpc客户端跟grpc服务器端整个交互过程经历过那些阶段(免费看)
4 链接失败后,grpc客户端是否重新尝试链接?每次链接的间隔时间是如何设置的?
模块2:解析器原理以及实践介绍------>(4-6非必学) |
模块3:平衡器原理以及实践介绍------>(5-8非必学) |
5 grpc + LoadBalancer 实现负载均衡方案介绍
6 grpc + NGINX实现负载均衡方案介绍 (免费看)
7 grpc+consul+自定义平衡器weight-balancer方案介绍
8 解析器resolver 、平衡器balancer、Picker之间的关系
模块4:帧接收原理介绍 |
模块5:帧发送器原理介绍 |
模块6:grpc客户端是如何向grpc服务器发起rpc请求以及处理流程 |
1 建立rpc连接后,进入rpc请求阶段,此阶段主要有哪些过程?
3 客户端如何将请求服务的名称,方法的名称,请求类型,编码类型等信息传递给服务器端的?
4 客户端流ClientStream是如何将请求方法中的参数值发送给服务器端的?
5 客户端流ClientStream是如何接收服务器端的反馈结果呢?
7 grpc服务器端对客户端的每次请求是单协程处理还是多协程处理?
8 grpc服务器端是如何具体执行客户端的请求服务的?比方说,如何在服务器端执行SayHello方法的?
模块7:滑动窗口原理(流量控制)------>(很重要) |
3 构建数据帧以及将数据帧发送到帧缓存controlBuf里
5 帧发送器LoopyWriter是如何存储数据帧的?(免费看)
6 客户端数据发送器processData,如何将数据帧发送到链路上的?
7 服务器端接收到数据帧后,将数据帧缓存到本地的整体处理流程图
9 服务器端将接收到的数据帧缓存到recvBuffer前,抽样级别流控原理介绍
10 服务器端将接收到的数据帧缓存到recvBuffer前,链路级别流控原理介绍
11 服务器端将接收到的数据帧缓存到recvBuffer前,流级别的流控原理介绍
12 服务器端是如何将数据帧缓存到recvBuffer里?(多个数据帧时,在底层是如何来存储的?)(免费看)
13 服务器端在真正执行客户端的请求方法前,是如何完整的读取到请求参数值的?
15 场景一:假设调用SayHello服务一次时的抓包情况? (免费看)
16 场景二:假设调用两次SayHello服务时的抓包情况,验证是不是可以在同一个链路上,传输多个流呢?
17 场景三:在同一条链路上,发起多次rpc调用时,为什么第二次之后的头帧字节数非常小呢?
18 场景四:假设调用SayHello服务时,参数值的字节数比较大的情况时,抓包分析?
模块8:取消功能cancellation |
5 从golang源码的角度,分析一下调用cancel()后,为什么ctx.Done()就不阻塞了?(免费看)
模块9:截止时间deadline |
3 服务器端一侧,是如何处理截止时间deadline呢?(免费看)
4 假设在一条调用链上,存在多个grpc服务的调用,如A服务调用B服务调用C服务,那么他们的超时时间如何?
模块10:健康检测health |
4 服务器端HealthChecking原理介绍 (免费看)
模块11:拦截器interceptor |
模块12:保持链接keepalive |
3 服务器端keepalive原理图介绍以及源码分析 (免费看)
5 什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)
模块13:多路复用multiplex |
模块14:压缩特性compression |
4 为什么在链路级别上设置压缩特性,该链路上的所有流都具备了压缩特性呢?
模块15:重试机制retry |
3 深入源码,分析重试机制withRetry的原理? (免费看)
模块16:元数据metadata |
模块17:加密encryption |
3 rpc链路建立阶段分析服务器端一侧,加密的原理?(基于wireshark抓包分析)
4 tls握手的本质是什么?tls1.2版本为什么为tls1.3版本多来一次握手呢?(免费看)
模块18:认证authentication |