dubbo-go 3.0 新特性
1. Triple 协议
1.1 概述
通信层面
Triple 协议,也称为Dubbo3协议,是基于HTTP2 + gRPC协议,增加特定字段和逻辑的扩展协议,保证了和原生gRPC协议互通。在此基础之上,Triple 新协议将更原生地支持 Dubbo 服务治理能力。并支持流式RPC调用。
简单来说,可以理解为 Triple = gRPC + Dubbo
序列化
Triple 协议使用高效的PB序列化方式,并在此基础之上增加序列化协议的可扩展支持。
用户开发习惯:
Triple 服务在开发前需要预定义.proto文件,对于习惯在编码前先定义IDL的Go语言开发者带来便捷。不同于符合java编程习惯的,定义JavaClassName用于描述接口的 Dubbo-go 1.x版本。
跨语言互通性:
可与 Dubbo-Java 实现跨语言互通。
2. 应用级服务发现
2.1 简介
在服务注册阶段,服务端实例将应用级别的注册信息,主要包含从应用名到实例IP的映射注册到注册中心。在服务发现阶段,客户端实例,通过注册中心获取到需要请求的服务实例IP。进入服务自省阶段,服务自省过程为通过应用信息获取接口信息的过程。如上图,包含两种模式:
- remote模式:通过元数据中心(例如 zk )获取应用到接口元数据的映射
- local模式:直接通过服务端获取应用到接口元数据的映射(通过 Dubbo 协议针对 Metadata Service 发起 RPC 调用)
经过服务自省后,客户端正式向对应实例发起调用。这样做最明显的好处是减少了注册中心的数据量,即注册中心只保存了应用级别的数据。
用户在使用 Dubbo-go 3.0的应用级服务发现能力时,可以仿照示例,直接在配置文件中配置服务自省模式和元数据中心信息,引入依赖,开启应用级别服务发现。
2.2 应用级服务发现介绍文章
3. Mesh 路由规则
用户可定义路由文件:
virtual_service.yaml
以及 dist_rule.yml
框架可根据路由文件针对特定的请求进行流量转发。
4. 相关文章
阿里云官方介绍文章:《Dubbo 3.0 - 开启下一代云原生微服务》
最后修改 December 16, 2022: Fix check (#1736) (97972c1)