第35讲 | 二进制类RPC协议:还是叫NBA吧,总说全称多费劲
刘超
该思维导图由 AI 生成,仅供参考
前面我们讲了两个常用文本类的 RPC 协议,对于陌生人之间的沟通,用 NBA、CBA 这样的缩略语,会使得协议约定非常不方便。
在讲 CDN 和 DNS 的时候,我们讲过接入层的设计,对于静态资源或者动态资源静态化的部分都可以做缓存。但是对于下单、支付等交易场景,还是需要调用 API。
对于微服务的架构,API 需要一个 API 网关统一的管理。API 网关有多种实现方式,用 Nginx 或者 OpenResty 结合 Lua 脚本是常用的方式。在上一节讲过的 Spring Cloud 体系中,有个组件 Zuul 也是干这个的。
数据中心内部是如何相互调用的?
API 网关用来管理 API,但是 API 的实现一般在一个叫作 Controller 层的地方。这一层对外提供 API。由于是让陌生人访问的,我们能看到目前业界主流的,基本都是 RESTful 的 API,是面向大规模互联网应用的。
在 Controller 之内,就是咱们互联网应用的业务逻辑实现。上节讲 RESTful 的时候,说过业务逻辑的实现最好是无状态的,从而可以横向扩展,但是资源的状态还需要服务端去维护。资源的状态不应该维护在业务逻辑层,而是在最底层的持久化层,一般会使用分布式数据库和 ElasticSearch。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
文章介绍了数据中心内部相互调用时采用二进制类RPC协议的重要性,以及解决协议约定问题的方式。在数据中心内部相互调用时,采用二进制的RPC机制能够更加省空间和带宽。Dubbo服务化框架采用二进制的RPC方式,通过注册中心进行服务发现,然后进行编码和序列化,实现远程调用。为了解决协议约定问题,Dubbo默认采用Hessian2协议,该协议将远程调用序列化为二进制进行传输,并且具有自描述的特点,能够有效解决协议文件修改不方便的问题。Hessian2采用独一无二的起始数字来防止歧义,实现了自描述的序列化,能够高效压缩传输数据。在微服务场景下,Spring Cloud的RESTful方式也会被考虑,主要是因为JAR包的依赖和管理问题。总的来说,文章介绍了在数据中心内部相互调用时采用二进制类RPC协议的优势,以及Dubbo和Spring Cloud在解决RPC传输问题上的不同方式。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈网络协议》,新⼈⾸单¥68
《趣谈网络协议》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(23)
- 最新
- 精选
- 问题究竟系边度置顶dubbo 是这个rpc框架包括服务发现,服务均衡负载,接口层面监控。对于rpc中的扩展点比较多。后面会用servicemesh ,传输协议较多选择 spring cloud 是一个完整微服务框架,包括rpc框架,整体链路监控,熔断降级,网关,配置中心,安全验证。主要用http协议传输 对于跨语言的,首先要定义非编程语言相关的协议,例如http,protobuf ,然后需要每个语言需要写相关客户端,至于复杂程度,就要看服务发现,均衡负载是在客户端实现还是另外写一个代理2018-08-1035
- andyspring cloud的restful方式虽然基于json,但是服务端在发送数据之前会将DTO对象转换为JSON,客户端收到JSON之后还会转换为DTO。这时会在客户端和服务端分别创建各自的DTO对象,会出现代码的重复,如果共享jar,又出现jar管理的问题。
作者回复: 是的,我们是各自定义
2018-08-06217 - 咸鱼与果汁同样是基于TCP协议,为什么RPC会比HTTP快呢?
作者回复: RPC基于二进制,压缩好
2019-06-2127 - 咕咕咕还真是越到后面人越来越少 我看到现在也好多没看懂 准备先看完整体后 再回过头 仔细再看一遍
作者回复: 加油
2019-04-294 - 怎么肥四书读百遍,其义自现。听不懂不要急,多看多听时间会让我们成长。
作者回复: 这句话好“书读百遍,其义自现”
2019-06-023 - 悟空聊架构题目1: 1.Dubbo只实现了服务治理,而Spring Cloud子项目分别覆盖了微服务架构下的众多部件。 2.Dubbo使用RPC通讯协议 Spring Cloud使用HTTP协议REST API 3.Dubbo通信性能略胜于Spring Cloud 4.Dubbo通过接口的方式相互依赖,强依赖关系,需要严格的版本控制,对程序无入侵 Spring Cloud 无接口依赖,定义好相关的json字段即可,对程序有一定入侵性2018-08-0624
- 谢晋Dubbo 和 SpringCloud 各有优缺点? Dubbo只实现了服务治理,而Spring Cloud子项目分别覆盖了微服务架构下的众多部件。 Spring Cloud使用HTTP协议REST API Dubbo使用RPC通讯协议 Dubbo通信性能略胜于Spring Cloud Dubbo通过接口的方式相互依赖,强依赖关系,需要严格的版本控制,对程序无入侵 Spring Cloud 无接口依赖,定义好相关的json字段即可,对程序有一定入侵性 跨语言的RPC调用协议? Thrift是Facebook提供的跨语言轻量级RPC消息和数据交换框架; Ptotocol Buffers是Google提供的一个开源序列化框架,类似于XML、JSON这样的数据表示语言2019-05-128
- blackpiglet第二题,可以使用 thrift 和 protobuf2018-08-107
- 及子龙我们用的是gRpc,对多语言支持的比较好。2018-08-066
- 忆水寒跨语言调用的场景,可以使用序列化工具,比如Thrift、protobuf等序列化框架。2018-08-074
收起评论