dubbo-go 3.0 新特性

star

1. Triple 协议

1.1 概述

dubbo-go 3.0 新特性 - 图2

  • 通信层面

    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 简介

dubbo-go 3.0 新特性 - 图3

在服务注册阶段,服务端实例将应用级别的注册信息,主要包含从应用名到实例IP的映射注册到注册中心。在服务发现阶段,客户端实例,通过注册中心获取到需要请求的服务实例IP。进入服务自省阶段,服务自省过程为通过应用信息获取接口信息的过程。如上图,包含两种模式:

  1. remote模式:通过元数据中心(例如 zk )获取应用到接口元数据的映射
  2. local模式:直接通过服务端获取应用到接口元数据的映射(通过 Dubbo 协议针对 Metadata Service 发起 RPC 调用)

经过服务自省后,客户端正式向对应实例发起调用。这样做最明显的好处是减少了注册中心的数据量,即注册中心只保存了应用级别的数据。

用户在使用 Dubbo-go 3.0的应用级服务发现能力时,可以仿照示例,直接在配置文件中配置服务自省模式和元数据中心信息,引入依赖,开启应用级别服务发现。

2.2 应用级服务发现介绍文章

应用级服务发现解析

3. Mesh 路由规则

用户可定义路由文件:

virtual_service.yaml

dubbo-go 3.0 新特性 - 图4

以及 dist_rule.yml

dubbo-go 3.0 新特性 - 图5

框架可根据路由文件针对特定的请求进行流量转发。

4. 相关文章

阿里云官方介绍文章:《Dubbo 3.0 - 开启下一代云原生微服务》

最后修改 December 16, 2022: Fix check (#1736) (97972c1)