《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3——三、 迁移到 HTTP/2 协议(3):https://developer.aliyun.com/article/1223558
5) 使用 Protobuf 序列化的流
对于 Protobuf 序列化方式,推荐编写 IDL 使用 compiler 插件进行编译生成。生成的代码大致如下:
a) 流的实现原理
Triple 协议的流模式是怎么支持的呢?
• 从协议层来说,Triple 是建立在 HTTP2 基础上的,所以直接拥有所有 HTTP2 的能力,故拥有了分 stream 和全双工的能力。
• 框架层来说,StreamObserver 作为流的接口提供给用户,用于入参和出参提供流式处理。框架在收发 stream data 时进行相应的接口调用,从而保证流的生命周期完整。
6) Triple 与应用级注册发现
关于 Triple 协议的应用级服务注册和发现和其他语言是一致的,可以通过上一节应用级服务发现迁移方案了解更多。
7) 与 GRPC 互通
通过对于协议的介绍,我们知道 Triple 协议是基于 HTTP2 并兼容 GRPC。为了保证和验证与 GRPC 互通能力,Dubbo3 也编写了各种从场景下的测试。详细的可以通过这里了解更多。
8) 未来:Everything on Stub
用过 Grpc 的同学应该对 Stub 都不陌生。
Grpc 使用 compiler 将编写的 proto 文件编译为相关的 protobuf 对象和相关 rpc 接口。默认的会同时生成几种不同的 stub。
• blockingStub
• futureStub
• reactorStub
• ...
stub 用一种统一的使用方式帮我们屏蔽了不同调用方式的细节。不过目前 Dubbo3暂时只支持传统定义接口并进行调用的使用方式。
在不久的未来,Triple 也将实现各种常用的 Stub,让用户写一份 proto 文件,通过comipler 可以在任意场景方便的使用,请拭目以待。
《Apache Dubbo微服务开发从入门到精通》——迁移到 Dubbo3——三、 迁移到 HTTP/2 协议(5):https://developer.aliyun.com/article/1223555