趣谈网络协议
刘超
前网易研究院云计算技术部首席架构师
130417 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 51 讲
趣谈网络协议
15
15
1.0x
00:00/00:00
登录|注册

第36讲 | 跨语言类RPC协议:交流之前,双方先来个专业术语表

Service Mesh
Envoy
服务发现与治理问题
网络传输问题
协议约定问题
Protocol Buffers
GRPC
Hessian2
RESTful
SOAP
ONC RPC
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
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • Hector
    Envoy就是lstio的核心支持,越来越觉得kubernetes真的是集大成者,服务治理,面向未来的声明式API架构,资源调度与编排,网络的多种优秀方案。怪不得可以在极端的时间里力压docker

    作者回复: 是的

    2019-05-07
    23
  • 李博越
    想问一下老师,GRPC是否支持client通过代理服务器访问到server端?官网上找了半天没有找到相关答案,我这边现在的场景需要经典网络的管控节点访问到vpc中的服务节点,由于vpc中服务节点太多,不可能打太多的洞,所以想在vpc中部署nginx服务作为代理服务器,转发经典网络发来的所有请求到server端

    作者回复: 试一下envoy

    2019-01-09
    2
    1
  • sam
    我觉得是极客目前最好的专栏
    2018-08-08
    93
  • 灰灰
    讲的太棒了,绝对是大师级人物。快结束了,意犹未尽,重新看一遍。
    2018-08-08
    43
  • 悟空聊架构
    题目:在讲述 Service Mesh 的时候,我们说了,希望 Envoy 能够在服务不感知的情况下,将服务之间的调用全部代理了,你知道怎么做到这一点吗? 答:在Service Mesh模式中,每个服务都配备了一个代理sidecar(Envoy代理),用于服务之间的通信。这些代理通常与应用程序一起部署,代理不会被应用程序感知。这些代理组织起来形成服务网格。 Envoy是Service Mesh中一个非常优秀的sidecar的来源实现。
    2018-08-08
    37
  • blackpiglet
    对思考题的解答 容器系统中,是通过 sidecar 模式来解决的,服务容器都是直接和 envoy sidecar 互通,envoy 的配置变化,网络拓扑的改变对服务容器都是不可感知的。service mesh 还更进一步的发展,istio 和 conduit,他们都是在 sidecar 基础上,又加了一个总的数据控制平面,来加强 service mesh 的掌控能力。
    2018-08-09
    6
  • 爱学习的老吴
    老师,我有点搞不懂了,grpc用的是http2.0协议来传输的话,那它和普通的http服务有什么区别了吗?
    2020-02-24
    2
    5
  • 谢晋
    我觉得是极客目前最好的专栏
    2019-05-12
    5
  • jedi knight
    学java的应该可以跳过spring cloud了,感觉envoy + grpc + kubernetes是趋势
    2018-08-09
    2
    5
  • mgxian
    通过使用iptables程序配置内核中的netfilter,实现流量劫持转发,把指定入口流量都转发到envoy,出口流量也可以使用两样的方法实现
    2018-08-08
    5
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部