02 grpc-go源码剖析与实战之 文章目录 【关注+收藏+点击查看】

02 grpc-go源码剖析与实战之 文章目录 【关注+收藏+点击查看】,第1张

1  go grpc-go 相关技术专栏 总入口

2  Protobuf介绍与实战 图文专栏 文章目录

3  multus-cni 文章目录(k8s多网络实现方案)

  专栏不会结束,将来有新的内容,也会继续添加到这里的;

文章篇幅大小说明

我是将一个大的功能模块拆分成若干篇文章,尽量保证每篇文章至少A4纸1页,最多不超过A4纸10页。 大部分是3-6页左右。

模块重要性说明------>可根据模块的重要性来选择性学习(降低难度)
1-7模块,是最主要的,最难的,是了解整个grpc-go框架流程的。(必学的)8-18模块,不太影响对整体功能的了解。(非必学) 其中:以下模块,有机会的话,还是有必要了解一下的: 健康检测模块、拦截器、加密、认证 这些模块,次重要多路复用模块,可以了解服务器端是如何实现不同请求的多个数据帧是如何按序存储,按序读取;(达到的效果其实是,不同服务请求的数据隔离)重试机制模块,看看grpc-go框架是如何来实现重试的?不光是对本步骤的重试,还实现了对前面几个步骤的重试?这种实现方式,是不是可以应用到项目中去呢?(有机会的话,还是有必要了解一下的)


直接点击文章题目,就可以进入
   
模块1:grpc客户端是如何跟grpc服务器端建立rpc链接的

  1 grpc客户端跟grpc服务器端整个交互过程经历过那些阶段

  2 grpc服务器端启动时都做了哪些事情

  3 grpc客户端跟grpc服务器端是如何建立起链接的?

  4 链接失败后,grpc客户端是否重新尝试链接?每次链接的间隔时间是如何设置的?

模块2:解析器原理以及实践介绍------>(4-6非必学)

  1 解析器基本原理介绍

  2 grpc框架是如何使用解析器的?

  3 passthrough解析器

  4 manual解析器

  5 dnsResolver解释器

  6 基于consul实现自定义解析器?

模块3:平衡器原理以及实践介绍------>(5-8非必学)

  1 平衡器相关介绍

  2 平衡器基本原理介绍

  3 pickFirst 平衡器 原理介绍

  4 round_robin 平衡器 原理介绍

  5 grpc + LoadBalancer 实现负载均衡方案介绍

  6 grpc + NGINX实现负载均衡方案介绍

  7 grpc+consul+自定义平衡器weight-balancer方案介绍

  8 解析器resolver 、平衡器balancer、Picker之间的关系

模块4:帧接收原理介绍

  1 grpc客户端帧接收器的原理介绍

  2 grpc客户端帧接收器是如何处理不同的帧的?

  3 grpc服务器端帧接收器的原理介绍

模块5:帧发送器原理介绍

  1 帧发送器的整体流程介绍

  2 如何将帧数据在内存里进行存储和获取?

  3 在同一个进程中如何使用通知的方式消费数据帧?

  4 帧发送器执行逻辑介绍

  5 头帧是如何发送出去的呢?

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

  1 建立rpc连接后,进入rpc请求阶段,此阶段主要有哪些过程?

  2 在客户端一侧,什么场景下,会触发流的创建?

  3 客户端如何将请求服务的名称,方法的名称,请求类型,编码类型等信息传递给服务器端的?

  4 客户端流ClientStream是如何将请求方法中的参数值发送给服务器端的?

  5 客户端流ClientStream是如何接收服务器端的反馈结果呢?

  6 grpc服务器端处理客户端请求的整体流程?

  7 grpc服务器端对客户端的每次请求是单协程处理还是多协程处理?

  8 grpc服务器端是如何具体执行客户端的请求服务的?比方说,如何在服务器端执行SayHello方法的?

模块7:滑动窗口原理(流量控制)------>(很重要)

  1 滑动窗口基本介绍以及整体流程图介绍?

  2 帧发送器是如何将数据帧发送给服务器端的基本流程图介绍

  3 构建数据帧以及将数据帧发送到帧缓存controlBuf里

  4 数据帧是不是可以不加限制的写入帧缓存里?如何加以限制?

  5 帧发送器LoopyWriter是如何存储数据帧的?

  6 客户端数据发送器processData,如何将数据帧发送到链路上的?

  7 服务器端接收到数据帧后,将数据帧缓存到本地的整体处理流程图

  8 服务器端数据处理器handleData源码简单分析

  9 服务器端将接收到的数据帧缓存到recvBuffer前,抽样级别流控原理介绍

  10 服务器端将接收到的数据帧缓存到recvBuffer前,链路级别流控原理介绍

  11 服务器端将接收到的数据帧缓存到recvBuffer前,流级别的流控原理介绍

  12 服务器端是如何将数据帧缓存到recvBuffer里?(多个数据帧时,在底层是如何来存储的?)

  13 服务器端在真正执行客户端的请求方法前,是如何完整的读取到请求参数值的?

  14 如何配置wireshark抓取HTTP2包

  15 场景一:假设调用SayHello服务一次时的抓包情况?

  16 场景二:假设调用两次SayHello服务时的抓包情况,验证是不是可以在同一个链路上,传输多个流呢?

  17 场景三:在同一条链路上,发起多次rpc调用时,为什么第二次之后的头帧字节数非常小呢?

  18 场景四:假设调用SayHello服务时,参数值的字节数比较大的情况时,抓包分析?

模块8:取消功能cancellation

  1 取消功能相关介绍以及测试用例介绍

  2 取消功能的流程原理图介绍

  3 客户端一侧,是如何处理取消功能的?

  4 服务器端一侧,是如何处理取消功能的?

  5 从golang源码的角度,分析一下调用cancel()后,为什么ctx.Done()就不阻塞了?

模块9:截止时间deadline

  1 截止时间相关介绍

  2 客户端一侧,是如何处理截止时间呢?

  3 服务器端一侧,是如何处理截止时间deadline呢?

  4 假设在一条调用链上,存在多个grpc服务的调用,如A服务调用B服务调用C服务,那么他们的超时时间如何?

模块10:健康检测health

  1 健康检测相关介绍

  2 健康检测的整体流程图介绍

  3 客户端HealthChecking原理介绍?

  4 服务器端HealthChecking原理介绍

模块11:拦截器interceptor

  1 拦截器介绍

  2 如何使用拦截器(如何启动拦截器)?

  3 服务器端拦截器原理介绍

  4 客户端拦截器原理介绍

模块12:保持链接keepalive

  1 保持链接keepalive介绍

  2 客户端或者服务器如何使用keepalive功能呢?

  3 服务器端keepalive原理图介绍以及源码分析

  4 客户端keepalive原理图介绍以及源码分析

  5 什么情况下服务器端通知客户端,双方关闭链接?(goAway帧处理逻辑)

模块13:多路复用multiplex

  1 多路复用简单介绍以及测试用例说明?

  2 grpc框架是如何实现多路复用的?

模块14:压缩特性compression

  1 压缩特性介绍

  2 客户端一侧,压缩器处理数据的原理?

  3 服务器端一侧,压缩器处理数据的原理?

  4 为什么在链路级别上设置压缩特性,该链路上的所有流都具备了压缩特性呢?

  5 如何让grpc框架支持lz4压缩算法呢?

模块15:重试机制retry

  1 重试机制相关介绍

  2 重试机制的实现的核心?以及重试机制的原理图介绍?

  3 深入源码,分析重试机制withRetry的原理?

模块16:元数据metadata

  1 元数据相关介绍?

  2 客户端一侧,是如何处理元数据的?

  3 服务器端一侧,是如何处理元数据的?

  4 测试用例介绍

模块17:加密encryption

  1 加密相关介绍以及测试用例介绍

  2 rpc链路建立阶段分析客户端一侧,加密的原理?

  3 rpc链路建立阶段分析服务器端一侧,加密的原理?(基于wireshark抓包分析)

  4 tls握手的本质是什么?tls1.2版本为什么为tls1.3版本多来一次握手呢?

  5 数据帧发送阶段来分析grpc框架加密的原理?

模块18:认证authentication

  1 如何理解认证token?

  2 grpc+oauth2.Token方式

  3 grpc+自定义认证方式介绍

  4 如果在统一认证的基础上,想对某次rpc请求添加额外的认证,如何实现?

  5 grpc+Basic认证方式介绍

  6 grpc+jwt认证方式介绍

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/995753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存