01 grpc-go源码剖析与实战之 图文专栏介绍 【关注+收藏+20万字+99篇文章】

本文主要是介绍01 grpc-go源码剖析与实战之 图文专栏介绍 【关注+收藏+20万字+99篇文章】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

已发表的技术专栏
0  grpc-go、protobuf、multus-cni 技术专栏 总入口

1  grpc-go 源码剖析与实战  文章目录

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

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

4  grpc、oauth2、openssl、双向认证、单向认证等专栏文章目录

5  零入门kubernetes网络实战  文章目录

gRPC-go原理图

为什么选择grpc-go源码呢

每当我们去面试的时候,经常有面试官问:有没有看过优秀的开源框架; 此时,就比较尴尬,有些源码框架,看过,但是又说不出来,只是简单的翻阅过。

而grpc-go源码呢?
相比于docker,k8s,etcd,istio等优秀源码来说,简单多了,完全是入门级别,而且rpc的基本原理,都大同小异。

为什么选择grpc-go源码呢?
  • 简单,好理解,容易上手,
  • 认可度高,已经在很多优秀框架中运行了
  • 不需要花太多时间,就可以掌控,
  • 掌握后,就可以在简历中注明自己在rpc方面的能力,
  • 不断提升加薪能力

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:342498897

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



点击下面的图片,返回到 专栏大纲(目录)

gRPC-go源码剖析与实战之专栏大纲

专栏大纲(目录)

您的每一次点赞,每一次关注,每一次收藏都是对我工作的最大支持,让我们开始 吧!
gRPC-go源码剖析与实战之点赞之交

gRPC-go源码剖析与实战感谢

这篇关于01 grpc-go源码剖析与实战之 图文专栏介绍 【关注+收藏+20万字+99篇文章】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054299

相关文章

揭秘未来艺术:AI绘画工具全面介绍

📑前言 随着科技的飞速发展,人工智能(AI)已经逐渐渗透到我们生活的方方面面。在艺术创作领域,AI技术同样展现出了其独特的魅力。今天,我们就来一起探索这个神秘而引人入胜的领域,深入了解AI绘画工具的奥秘及其为艺术创作带来的革命性变革。 一、AI绘画工具的崛起 1.1 颠覆传统绘画模式 在过去,绘画是艺术家们通过手中的画笔,蘸取颜料,在画布上自由挥洒的创造性过程。然而,随着AI绘画工

20.Spring5注解介绍

1.配置组件 Configure Components 注解名称说明@Configuration把一个类作为一个loC容 器 ,它的某个方法头上如果注册7@Bean , 就会作为这个Spring容器中的Bean@ComponentScan在配置类上添加@ComponentScan注解。该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 <context:component-scan>@Sc

C++入门01

1、.h和.cpp 源文件 (.cpp)源文件是C++程序的实际实现代码文件,其中包含了具体的函数和类的定义、实现以及其他相关的代码。主要特点如下:实现代码: 源文件中包含了函数、类的具体实现代码,用于实现程序的功能。编译单元: 源文件通常是一个编译单元,即单独编译的基本单位。每个源文件都会经过编译器的处理,生成对应的目标文件。包含头文件: 源文件可以通过#include指令引入头文件,以使

React+TS前台项目实战(十七)-- 全局常用组件Dropdown封装

文章目录 前言Dropdown组件1. 功能分析2. 代码+详细注释3. 使用方式4. 效果展示 总结 前言 今天这篇主要讲全局Dropdown组件封装,可根据UI设计师要求自定义修改。 Dropdown组件 1. 功能分析 (1)通过position属性,可以控制下拉选项的位置 (2)通过传入width属性, 可以自定义下拉选项的宽度 (3)通过传入classN

springboot家政服务管理平台 LW +PPT+源码+讲解

3系统的可行性研究及需求分析 3.1可行性研究 3.1.1技术可行性分析 经过大学四年的学习,已经掌握了JAVA、Mysql数据库等方面的编程技巧和方法,对于这些技术该有的软硬件配置也是齐全的,能够满足开发的需要。 本家政服务管理平台采用的是Mysql作为数据库,可以绝对地保证用户数据的安全;可以与Mysql数据库进行无缝连接。 所以,家政服务管理平台在技术上是可以实施的。 3.1

高仿精仿愤怒的小鸟android版游戏源码

这是一款很完美的高仿精仿愤怒的小鸟android版游戏源码,大家可以研究一下吧、 为了报复偷走鸟蛋的肥猪们,鸟儿以自己的身体为武器,仿佛炮弹一样去攻击肥猪们的堡垒。游戏是十分卡通的2D画面,看着愤怒的红色小鸟,奋不顾身的往绿色的肥猪的堡垒砸去,那种奇妙的感觉还真是令人感到很欢乐。而游戏的配乐同样充满了欢乐的感觉,轻松的节奏,欢快的风格。 源码下载

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

PAT-1039 到底买不买(20)(字符串的使用)

题目描述 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以

PyTorch模型_trace实战:深入理解与应用

pytorch使用trace模型 1、使用trace生成torchscript模型2、使用trace的模型预测 1、使用trace生成torchscript模型 def save_trace(model, input, save_path):traced_script_model = torch.jit.trace(model, input)<

美容美发店营销版微信小程序源码

打造线上生意新篇章 一、引言:微信小程序,开启美容美发行业新纪元 在数字化时代,微信小程序以其便捷、高效的特点,成为了美容美发行业营销的新宠。本文将带您深入了解美容美发营销微信小程序,探讨其独特优势及如何助力商家实现业务增长。 二、微信小程序:美容美发行业的得力助手 拓宽客源渠道:微信小程序基于微信社交平台,轻松实现线上线下融合,帮助商家快速吸引潜在客户,拓宽客源渠道。 提升用户体验: