第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表
刘超
该思维导图由 AI 生成,仅供参考
到目前为止,咱们讲了四种 RPC,分别是 ONC RPC、基于 XML 的 SOAP、基于 JSON 的 RESTful 和 Hessian2。
通过学习,我们知道,二进制的传输性能好,文本类的传输性能差一些;二进制的难以跨语言,文本类的可以跨语言;要写协议文件的严谨一些,不写协议文件的灵活一些。虽然都有服务发现机制,有的可以进行服务治理,有的则没有。
我们也看到了 RPC 从最初的客户端服务器模式,最终演进到微服务。对于 RPC 框架的要求越来越多了,具体有哪些要求呢?
首先,传输性能很重要。因为服务之间的调用如此频繁了,还是二进制的越快越好。
其次,跨语言很重要。因为服务多了,什么语言写成的都有,而且不同的场景适宜用不同的语言,不能一个语言走到底。
最好既严谨又灵活,添加个字段不用重新编译和发布程序。
最好既有服务发现,也有服务治理,就像 Dubbo 和 Spring Cloud 一样。
Protocol Buffers
这是要多快好省地建设社会主义啊。理想还是要有的嘛,这里我就来介绍一个向“理想”迈进的 GRPC。
GRPC 首先满足二进制和跨语言这两条,二进制说明压缩效率高,跨语言说明更灵活。但是又是二进制,又是跨语言,这就相当于两个人沟通,你不但说方言,还说缩略语,人家怎么听懂呢?所以,最好双方弄一个协议约定文件,里面规定好双方沟通的专业术语,这样沟通就顺畅多了。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
GRPC是一种高效的RPC框架,通过使用Protocol Buffers作为二进制序列化协议,实现了高效的网络传输和灵活的协议约定。基于HTTP 2.0协议,支持多种服务方法,丰富了客户端和服务器之间的交互方式。然而,GRPC本身并未提供服务发现的机制,因此需要借助其他组件来实现服务发现和治理。Envoy作为一种负载均衡器,不仅支持静态配置,还能实现动态的服务发现和配置更新,并且能够通过GRPC与服务发现中心进行通信。此外,Envoy还能配置路由策略和负载均衡策略,实现对服务之间的调用代理和治理。未来的服务治理趋势将是Service Mesh,即应用之间的相互调用全部由Envoy进行代理,完全将服务治理抽象出来,到平台层解决。总之,GRPC具有传输性能和跨语言调用方面的显著优势,而结合Envoy的服务治理能力,使其成为一种值得推荐的RPC框架。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》,新⼈⾸单¥68
《趣谈网络协议》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(20)
- 最新
- 精选
- HectorEnvoy就是lstio的核心支持,越来越觉得kubernetes真的是集大成者,服务治理,面向未来的声明式API架构,资源调度与编排,网络的多种优秀方案。怪不得可以在极端的时间里力压docker
作者回复: 是的
2019-05-0723 - 李博越想问一下老师,GRPC是否支持client通过代理服务器访问到server端?官网上找了半天没有找到相关答案,我这边现在的场景需要经典网络的管控节点访问到vpc中的服务节点,由于vpc中服务节点太多,不可能打太多的洞,所以想在vpc中部署nginx服务作为代理服务器,转发经典网络发来的所有请求到server端
作者回复: 试一下envoy
2019-01-0921 - sam我觉得是极客目前最好的专栏2018-08-0893
- 灰灰讲的太棒了,绝对是大师级人物。快结束了,意犹未尽,重新看一遍。2018-08-0843
- 悟空聊架构题目:在讲述 Service Mesh 的时候,我们说了,希望 Envoy 能够在服务不感知的情况下,将服务之间的调用全部代理了,你知道怎么做到这一点吗? 答:在Service Mesh模式中,每个服务都配备了一个代理sidecar(Envoy代理),用于服务之间的通信。这些代理通常与应用程序一起部署,代理不会被应用程序感知。这些代理组织起来形成服务网格。 Envoy是Service Mesh中一个非常优秀的sidecar的来源实现。2018-08-0837
- blackpiglet对思考题的解答 容器系统中,是通过 sidecar 模式来解决的,服务容器都是直接和 envoy sidecar 互通,envoy 的配置变化,网络拓扑的改变对服务容器都是不可感知的。service mesh 还更进一步的发展,istio 和 conduit,他们都是在 sidecar 基础上,又加了一个总的数据控制平面,来加强 service mesh 的掌控能力。2018-08-096
- 爱学习的老吴老师,我有点搞不懂了,grpc用的是http2.0协议来传输的话,那它和普通的http服务有什么区别了吗?2020-02-2425
- 谢晋我觉得是极客目前最好的专栏2019-05-125
- jedi knight学java的应该可以跳过spring cloud了,感觉envoy + grpc + kubernetes是趋势2018-08-0925
- mgxian通过使用iptables程序配置内核中的netfilter,实现流量劫持转发,把指定入口流量都转发到envoy,出口流量也可以使用两样的方法实现2018-08-085
收起评论