| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – 简介</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/</link><description>Recent content in 简介 on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/index.xml" rel="self" type="application/rss+xml"/><item><title>Docs: dubbo-go 3.0 新特性</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/3.0_feature/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/3.0_feature/</guid><description> |
| <div class="pageinfo pageinfo-primary"> |
| <p>此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档,请参阅<a href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/preface/3.0_feature/">最新版本</a>。</p> |
| </div> |
| <h1 id="dubbo-go-30-新特性介绍">Dubbo-go 3.0 新特性介绍</h1> |
| <p><img src="https://shields.io/github/stars/apache/dubbo-go?style=dark" alt="star"></p> |
| <h2 id="1-triple-协议">1. Triple 协议</h2> |
| <h3 id="11-概述">1.1 概述</h3> |
| <ul> |
| <li> |
| <p>通信层面</p> |
| <p>Triple 协议,也称为Dubbo3协议,是基于HTTP2 + gRPC协议,增加特定字段和逻辑的扩展协议,保证了和<strong>原生gRPC协议互通</strong>。在此基础之上,Triple 新协议将更原生地支持 <strong>Dubbo 服务治理能力</strong>。并支持<strong>流式RPC调用</strong>。</p> |
| <p>简单来说,可以理解为 Triple = gRPC + Dubbo</p> |
| </li> |
| <li> |
| <p>序列化</p> |
| <p>Triple 协议使用高效的<strong>PB序列化方式</strong>,并在此基础之上增加序列化协议的<strong>可扩展支持</strong>。</p> |
| </li> |
| <li> |
| <p>用户开发习惯:</p> |
| <p>Triple 服务在开发前需要<strong>预定义.proto文件</strong>,对于习惯在编码前先定义IDL的Go语言开发者带来便捷。不同于符合java编程习惯的,定义JavaClassName用于描述接口的 Dubbo-go 1.x版本。</p> |
| </li> |
| <li> |
| <p>跨语言互通性:</p> |
| <p>可与 Dubbo-Java 实现<strong>跨语言互通</strong>。</p> |
| </li> |
| </ul> |
| <h2 id="2-应用级服务发现">2. 应用级服务发现</h2> |
| <h3 id="21-简介">2.1 简介</h3> |
| <p>在服务注册阶段,服务端实例将应用级别的注册信息,主要包含从应用名到实例IP的映射注册到注册中心。在服务发现阶段,客户端实例,通过注册中心获取到需要请求的服务实例IP。进入服务自省阶段,服务自省过程为通过应用信息获取接口信息的过程。如上图,包含两种模式:</p> |
| <ol> |
| <li>remote模式:通过元数据中心(例如 zk )获取应用到接口元数据的映射</li> |
| <li>local模式:直接通过服务端获取应用到接口元数据的映射(通过 Dubbo 协议针对 Metadata Service 发起 RPC 调用)</li> |
| </ol> |
| <p>经过服务自省后,客户端正式向对应实例发起调用。这样做最明显的好处是减少了注册中心的数据量,即注册中心只保存了应用级别的数据。</p> |
| <p>用户在使用 Dubbo-go 3.0的应用级服务发现能力时,可以仿照示例,直接在配置文件中配置服务自省模式和元数据中心信息,引入依赖,开启应用级别服务发现。</p> |
| <h3 id="22-应用级服务发现介绍文章">2.2 应用级服务发现介绍文章</h3> |
| <p><a href="https://baijiahao.baidu.com/s?id=1669266413887039723&amp;wfr=spider&amp;for=pc">应用级服务发现解析</a></p> |
| <h2 id="3-mesh-路由由规则">3. Mesh 路由由规则</h2> |
| <p>用户可定义路由文件:</p> |
| <p>virtual_service.yaml</p> |
| <p>以及 dist_rule.yml</p> |
| <p>框架可根据路由文件针对特定的请求进行流量转发。</p> |
| <h2 id="4-相关文章">4. 相关文章</h2> |
| <p>阿里云官方介绍文章:<a href="https://developer.aliyun.com/article/770964?utm_content=g_1000175535">《Dubbo 3.0 - 开启下一代云原生微服务》</a></p></description></item><item><title>Docs: 架构</title><link>https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/languages/golang/dubbo-go-3.0/preface/architecture/</guid><description> |
| <div class="pageinfo pageinfo-primary"> |
| <p>此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档,请参阅<a href="https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/preface/design/architecture/">最新版本</a>。</p> |
| </div> |
| <h1 id="架构">架构</h1> |
| <p><img src="https://dubbo.apache.org/imgs/golang/dubbo-go-architecture.png" alt="architecture"></p> |
| <h4 id="节点说明">节点说明</h4> |
| <ul> |
| <li><code>Registry</code> : dubbo-go中负责服务注册与发现的注册中心</li> |
| <li><code>Consumer</code> : 调用远程服务的服务消费方</li> |
| <li><code>Provider</code> : 暴露服务的服务提供方</li> |
| </ul> |
| <h4 id="过程说明">过程说明</h4> |
| <ul> |
| <li><code>0. register</code> : 当服务提供方在启动的时候,会自动将自己的服务注册到注册中心</li> |
| <li><code>1. subscribe</code> : 服务消费方会在启动的时候,向注册中心订阅自己所需要的服务</li> |
| <li><code>2. notify</code> : 注册中心返回服务注册的信息给到服务消费方,当订阅的服务发生变更,会推送变更的数据给到消费方</li> |
| <li><code>3. invoke</code> : 服务消费者根据从注册中心获得的服务地址,经过负载均衡算法选出一个合适的服务地址发起请求</li> |
| </ul></description></item></channel></rss> |