
《玩转gRPC框架》
文章平均质量分 90
本篇专栏,从最简单的Hello World程序开始,从认识到应用,从编写程序到剖析源码,从全局到细节,和大家一起去掌握gRPC
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
闫同学鸭
让旷野天空放一片晴
展开
-
00开篇词:带你玩转gRPC框架
大家好,先做一下自我介绍我叫Barry Yan,目前是一名互联网公司的研发工程师,同时也是后端技术领域的狂热爱好者和技术博主,在GitHub、优快云社区、51CTO博客社区、阿里云技术社区、掘金技术社区和InfoQ写作社区等都有自己的博客,原创200余篇。原创 2023-01-24 11:28:25 · 1503 阅读 · 8 评论 -
01网络协议:从TCP协议到RPC协议都经历了哪些?
这节课我们抛开具体的gRPC框架,从原理层面讲述了从TCP/IP、Socket到RPC演进的过程,分析了从底层到上层是如何分析不足并逐渐演进的,其实就像我们的编程语言一样,从纸带编程到汇编语言再到高级语言,其实计算机一直都只认识二进制,但是我们通过对操作系统接口和CPU指令集的封装,演进出了高级编程语言,方便了开发者和用户,但是对底层的封装或多或少都会影响传输的效率。所以说,越底层代码越复杂、效率越高;越上层代码越简单*,*抽象封装越好、效率越差,一些都是取舍。原创 2023-01-25 09:13:42 · 1658 阅读 · 14 评论 -
02基础概念:gRPC是怎样的RPC框架?
下面是来自官网的简单介绍,我把它翻译成中文gRPC是一个开源的高性能远程过程调用(RPC)框架,可以在现有任何平台上运行。gRPC可以有效的连接数据中心内和跨数据中心的服务,并且支持负载平衡、链路追踪、健康检查和身份验证,同时适用于分布式计算的最后一英里,将设备、移动应用程序和浏览器连接到后端服务。gRPC所拥有的几个特性简单的服务定义使用Protocol Buffers(一种强大的二进制序列化工具集和语言)定义服务和消息编码安装便捷并易于扩展。原创 2023-01-30 22:41:52 · 544 阅读 · 7 评论 -
03俯瞰全局:gRPC是如何进行通信的
gRPC采用IDL的方式生成服务端与客户端的存根,IDL,全称Interface description language,是指接口描述语言,主要用来描述软件组件接口的一种计算机语言,是跨平台开发的基础。IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。原创 2023-02-04 09:47:12 · 699 阅读 · 9 评论 -
04动手实践:手把手带你实现gRPC的Hello World
这篇文章就从实践的角度出发,带大家一起体验一下gRPC的Hello World。原创 2023-02-11 10:45:57 · 939 阅读 · 10 评论 -
05服务发现:引入etcd服务注册中心
etcd是一种强一致性的分布式键值存储组件,使用Raft算法,由于CAP理论,没有一种服务注册中心能够完全兼顾C、A、P,只能偏向于CP或AP,etcd作为偏向CP的分布式服务注册中心,利用Go语言编写,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它在网络分区期间优雅地处理领导者选举,并且可以容忍机器故障,即使在领导者节点中也是如此。原创 2023-02-18 10:18:31 · 1082 阅读 · 20 评论 -
06细节探究:gRPC是如何获取一个连接的?
第三步本篇文章我们较为深入的了解了gRPC客户端获取连接的大致过程,因为gRPC作为RPC框架的实现,底层使用HTTP/2作为传输协议,在通信过程中还要考虑性能、安全、异常、负载等诸多方面,因此获取连接的过程也是相对复杂的,但是如果我们站在设计者的角度或许就不那么难以理解,在拿到连接之前我们需要将配置尽可能的考虑周全,才可以在通信的过程中进行合理的使用与分析。原创 2023-02-26 23:04:57 · 660 阅读 · 6 评论 -
07平衡负载:gRPC是如何进行负载均衡的?
gRPC内置轮询负载均衡器实现(1)实现Picker接口的Pick方法(2)利用PickerBuilder接口的Build方法构建Picker实例(3)balancer.Register方法注册实现的PickerBuilder实例。原创 2023-03-18 16:36:53 · 1250 阅读 · 6 评论 -
08异步请求:何种场景下应该使用异步请求?
异步操作和同步操作是并发编程中的两种基本方式,它们都可以实现并发执行,但是它们在实现方式和优缺点上有所不同。异步操作是指在程序执行过程中,多个线程并行执行,程序不需要阻塞当前线程等待操作完成,而是直接继续执行后续操作,直到所有的操作完成后再返回结果给用户。异步操作的主要优点是可以并行处理多个任务,提高程序的并发性能,缺点是需要额外的线程负担和复杂的编程实现。同步操作是指在程序执行过程中,多个线程按照顺序依次执行,程序需要等待所有线程执行完成后才能返回结果给用户。原创 2023-04-22 15:57:41 · 999 阅读 · 13 评论 -
09身份认证:gRPC如何解决安全问题?
gRPC是一个高效的跨语言远程过程调用框架,但在使用时需要考虑安全问题。TLS加密:gRPC支持基于TLS的加密通信,可以使用自签名证书或由受信任的证书颁发机构颁发的证书,可以保证通信的机密性和数据完整性。认证和授权:gRPC支持基于Token的认证和基于角色的访问控制。可以使用JWT Token或OAuth2.0 Token来进行认证,可以使用基于角色的访问控制来限制对服务的访问。总之,gRPC提供了丰富的安全机制,可以满足不同应用场景的安全需求。原创 2023-05-07 10:44:11 · 778 阅读 · 2 评论 -
10健康检查:如何找到可用的节点?
健康检查也叫健康监测,是分布式微服务架构中一个非常重要的机制,目前市面上主流的服务注册中心都支持对服务集群中的节点进行健康状态的检测,以便于及时发现和解决服务问题。常见的健康检查策略分两种方式,一种是客户端主动上报自身健康状态,也就是基于心跳检测,即通过定期发送心跳包来检测节点是否存活,另一种则是服务端主动探测客户端的健康状态,即通过检测节点的端口是否可用来判断节点是否健康。这两种方式都可以有效地保证节点的健康状态,从而提高整个系统的可用性和稳定性。原创 2023-03-25 10:27:38 · 562 阅读 · 13 评论 -
11服务方式:gRPC的四种服务方式
本篇文章我们介绍了gRPC的流式处理,流式处理往往也是我们在处理某些业务场景用来解决问题的常用方式,比如聊天会话、日志收集等等,gRPC的流式处理具有很高的灵活性,客户端和服务端双方都能使用流的方式进行请求的发送和应答,虽然操作起来有一定的复杂度,但是其优秀的理念和设计是非常值得我们学习的。原创 2023-04-01 08:52:39 · 607 阅读 · 2 评论 -
12性能提升:如何提升gRPC系统性能
gRPC本身作为一款优秀的RPC框架,在框架层面提升性能可能比较难以入手,因此我们一般通过架构设计、编码等层面进行入口,进而提升整个系统的性能,以上我们从不同方面分析讨论了gRPC系统可以提升性能的方式,但还是需要在具体的业务上具体的分析才能达到更好的效果。原创 2023-06-10 09:29:09 · 1326 阅读 · 10 评论 -
13回归网络:HTTP/2是怎样的网络协议?
HTTP/2 的规范于2015 年5月发布,旨在解决其前身的一些可扩展性问题,在许多方面改进了 HTTP/1.1 的设计,最重要的是提供了连接上的语义映射原创 2023-03-11 08:56:47 · 844 阅读 · 8 评论 -
14巧探细节:gRPC的UnknownService接口
是 gRPC 提供的一个接口,用于处理未知的服务请求。当客户端发起一个未定义的 RPC 调用时,服务端就会调用接口来处理该请求。一般情况下,服务端需要对客户端的请求进行拦截并进行特定的处理,比如进行日志记录、错误处理等。服务端需要对客户端发送的请求进行过滤或者鉴权,只有符合条件的请求才能被处理。服务端需要对客户端发送的请求进行路由,将请求转发到特定的处理逻辑中。原创 2023-05-28 22:21:34 · 1252 阅读 · 1 评论 -
15游刃有余:动手实现自己的RPC框架(一)
在系统开发中,一般需要对外提供接口时,因为普适性,HTTP是首选,而在同一个组织或公司内部进行不同系统间服务的提供时,面向服务封装的RPC更具有竞争力,可以针对服务进行可用性和效率的优化,因此HTTP和RPC不同的网络通信协议各自具有更擅长的领域。接下来的三篇文章,我们将通过所学的知识,从0开始自己动手实现一个RPC框架,当然最终的框架相比当下知名的RPC框架可能比较的简陋,但是过程和其中的思想一定会让我们有所成长,下面我们就从Socket开始,Coding我们的RPC框架!原创 2023-05-13 11:46:37 · 627 阅读 · 6 评论 -
16游刃有余:动手实现自己的RPC框架(二)
这篇文章我们动手使用Go语言来实现一个RPC框架,我们就叫它BarryRPC。原创 2023-07-29 18:23:24 · 253 阅读 · 2 评论 -
17游刃有余:动手实现自己的RPC框架(三)
如果想要自己实现一个优秀的RPC框架,可能需要投入大量的时间和经历,并且要不断打磨和优化,但是只要将原理和流程熟记于心中,就是打开大门最好的钥匙。原创 2023-08-05 18:34:22 · 550 阅读 · 8 评论 -
18跨越语言:不同语言间进行RPC通信
这篇文章我们了解和实践了gRPC跨语言调用的主要流程,虽然跨语言的服务调用早就不是什么新鲜事,在许多公司中已经有了成熟的架构体系,但是gRPC框架的这种灵活的方式还是需要我们学习下的。RPC可以让不同的语言像调用本地方法一样,本次的重点在跨语言的调用,其核心就是先寻找各个语言共同支持的通用数据结构,把这种通用的结构通过网络从一种语言发送到另一种语言。原创 2023-03-04 16:43:35 · 1159 阅读 · 14 评论 -
19学习提升:gRPC源码中的那些优秀设计(上)
gRPC作为高性能的RPC框架,离不开它优雅的设计和编码,无论是作为一名底层开发者还是上层的业务开发者,能够写出一手好的代码一直都是决定自身水平高低的一个重要体现,如果想要达到一个较高层次的水平,离不开长时间的学习和训练以及不断的感悟,而一些优秀的开源软件和框架往往存在着很多优秀的设计供我们学习,下面我们就以贯穿整个专栏的grpc-go源码说起,来尽情感受下gRPC框架的优雅设计。原创 2023-04-08 20:31:56 · 1235 阅读 · 17 评论 -
20学习提升:gRPC源码中的那些优秀设计(下)
抛开具体的gRPC框架,从更高处向下看,软件层面的框架在我看来就是思想+设计模式的整合,想要实现一个框架就需要有理论思想作为铺垫,比如Java框架中的Spring主要依赖的是IoC和AOP思想,Dubbo基于SPI思想,gRPC基于RPC设计理念等等,当然如果要想设计优秀的框架,就需要将各种好的设计模式进行整合,以及利用网络协议进行配合。原创 2023-05-20 09:21:06 · 644 阅读 · 0 评论 -
21经验分享:我在使用gRPC时都遇到过哪些问题
众所周知,计算机是一门实践性的学科,在这样的学科中往往是实践出真知,所以想要针对一门技术能达到比较高的水平,就需要付出大量的时间进行实践,在实践中不断的遇到问题和解决问题,才能有更好的长进原创 2023-06-03 11:01:39 · 1136 阅读 · 5 评论 -
22勤于思考:gRPC都有哪些优势和不足?
专栏至此已经接近尾声,相信通过对专栏所有文章的学习过后,大家能够对gRPC有一个全新的认识,当然最重要的还是要多动手实践,在实践中不断的思考。原创 2023-04-15 17:28:27 · 766 阅读 · 2 评论 -
23他山之石:谈一谈Protocol Buffer
Protocol Buffers,简称Protobuf,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。原创 2023-06-18 08:50:07 · 739 阅读 · 0 评论 -
24结束语:每一位技术人都应该有自己的核心技能
以上的全部内容就是我个人在闲暇时的所思所想,没有要教大家的意思,更没有告诫人们的意思,因为我目前不能算是一个成功者,虽然在朋友和同学的小圈子里经常自诩为工程师,但是内心确是把自己定位为IT界的小混混,但是我正在努力的向上攀爬,希望在不断的打拼中能作出更有价值的事情,影响更多的人。原创 2023-06-24 20:25:23 · 290 阅读 · 0 评论 -
25特别放送:我的Gopher成长之路
很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。原创 2023-04-29 19:49:38 · 1328 阅读 · 4 评论 -
26特别说明:专栏代码案例获取和使用方式
亲爱的读者们,很高兴能与你们一起在这个充满挑战和机遇的gRPC框架世界里探索、学习和成长。经过一段时间的旅程,我们共同见证了gRPC的众多优点,包括高性能、可扩展性、跨语言支持以及易于使用等特点。在这篇文章中,我们将对所学内容进行总结,同时展望未来的发展,并在此过程中给出一些有价值的建议。首先,我们来回顾一下这篇专栏的核心观点。我们了解到,gRPC是一个由Google开发的开源高性能、跨语言、可扩展的远程过程调用(RPC)框架。原创 2023-07-03 22:59:17 · 248 阅读 · 6 评论 -
27加餐篇:gRPC框架的优势与不足之处
gRPC作为一个现代的、开源的远程过程调用(RPC)框架,在多个方面都展现了其优雅之处,同时也存在一些不足之处。这篇文章我们就相对全面的分析一下gRPC框架那些优雅的地方和不足的地方。原创 2024-11-27 23:56:09 · 199 阅读 · 0 评论