1 go grpc-go 相关技术专栏 总入口
2 Protobuf介绍与实战 图文专栏 文章目录
3 multus-cni 文章目录(k8s多网络实现方案)
专栏不会结束,将来有新的内容,也会继续添加到这里的;
文章篇幅大小说明 |
我是将一个大的功能模块拆分成若干篇文章,尽量保证每篇文章至少A4纸1页,最多不超过A4纸10页。 大部分是3-6页左右。
模块重要性说明------>可根据模块的重要性来选择性学习(降低难度) |
直接点击文章题目,就可以进入 |
模块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认证方式介绍
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)