<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dubbo 核心特性 on Apache Dubbo</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/</link><description>Recent content in Dubbo 核心特性 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/index.xml" rel="self" type="application/rss+xml"/><item><title>微服务开发</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-definition/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-definition/</guid><description>&lt;p>Dubbo 解决企业微服务从开发、部署到治理运维的一系列挑战，Dubbo 为开发者提供从项目创建、开发测试，到部署、可视化监测、流量治理，再到生态集成的全套服务。&lt;/p>
&lt;ul>
&lt;li>&lt;strong>开发层面&lt;/strong>，Dubbo 提供了 Java、Go、Rust、Node.js 等语言实现并定义了一套微服务开发范式，配套脚手架可用于快速创建微服务项目骨架&lt;/li>
&lt;li>&lt;strong>部署层面&lt;/strong>，Dubbo 应用支持虚拟机、Docker 容器、Kubernetes、服务网格架构部署&lt;/li>
&lt;li>&lt;strong>服务治理层面&lt;/strong>，Dubbo 提供了地址发现、负载均衡、流量管控等治理能力，官方还提供 Admin 可视化控制台、丰富的微服务生态集成&lt;/li>
&lt;/ul>
&lt;h2 id="开发">开发&lt;/h2>
&lt;p>接下来以 Java 体系 Spring Boot 项目为例讲解 Dubbo 应用开发的基本步骤，整个过程非常直观简单，其他语言开发过程类似。&lt;/p>
&lt;h3 id="创建项目">创建项目&lt;/h3>
&lt;p>&lt;a href="https://start.dubbo.apache.org/bootstrap.html" target="_blank">Dubbo 微服务项目脚手架&lt;/a>（支持浏览器页面、命令行和 IDE）可用于快速创建微服务项目，只需要告诉脚手架期望包含的功能或组件，脚手架最终可以帮助开发者生成具有必要依赖的微服务工程。更多脚手架使用方式的讲解，请参见任务模块的 &lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/tasks/develop/template">通过模板生成项目脚手架&lt;/a>&lt;/p>
&lt;p>&lt;img alt="脚手架示例图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/advantages/initializer.png">&lt;/p>
&lt;h3 id="开发服务">开发服务&lt;/h3>
&lt;p>&lt;strong>1. 定义服务&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">interface&lt;/span> &lt;span style="color:#268bd2">DemoService&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> String &lt;span style="color:#268bd2">hello&lt;/span>(String arg);
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>2. 提供业务逻辑实现&lt;/strong>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-java" data-lang="java">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">@DubboService&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">public&lt;/span> &lt;span style="color:#268bd2">class&lt;/span> &lt;span style="color:#268bd2">DemoServiceImpl&lt;/span> &lt;span style="color:#268bd2">implements&lt;/span> DemoService {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">public&lt;/span> String &lt;span style="color:#268bd2">hello&lt;/span>(String arg) {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#586e75">// put your microservice logic here&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="发布服务">发布服务&lt;/h3>
&lt;p>&lt;strong>1. 发布服务定义&lt;/strong>&lt;/p>
&lt;p>为使消费方顺利调用服务，服务提供者首先要将服务定义以 Jar 包形式发布到 Maven 中央仓库。&lt;/p>
&lt;p>&lt;strong>2. 对外暴露服务&lt;/strong>&lt;/p>
&lt;p>补充 Dubbo 配置并启动 Dubbo Server&lt;/p></description></item><item><title>服务发现</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-discovery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-discovery/</guid><description>&lt;p>Dubbo 提供的是一种 Client-Based 的服务发现机制，依赖第三方注册中心组件来协调服务发现过程，支持常用的注册中心如 Nacos、Consul、Zookeeper 等。&lt;/p>
&lt;p>以下是 Dubbo 服务发现机制的基本工作原理图：&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/service-discovery/arc.png">&lt;/p>
&lt;p>服务发现包含提供者、消费者和注册中心三个参与角色，其中，Dubbo 提供者实例注册 URL 地址到注册中心，注册中心负责对数据进行聚合，Dubbo 消费者从注册中心读取地址列表并订阅变更，每当地址列表发生变化，注册中心将最新的列表通知到所有订阅的消费者实例。&lt;/p>
&lt;h2 id="面向百万实例集群的服务发现机制">面向百万实例集群的服务发现机制&lt;/h2>
&lt;p>区别于其他很多微服务框架的是，&lt;strong>Dubbo3 的服务发现机制诞生于阿里巴巴超大规模微服务电商集群实践场景，因此，其在性能、可伸缩性、易用性等方面的表现大幅领先于业界大多数主流开源产品&lt;/strong>。是企业面向未来构建可伸缩的微服务集群的最佳选择。&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/service-discovery/arc2.png">&lt;/p>
&lt;ul>
&lt;li>首先，Dubbo 注册中心以应用粒度聚合实例数据，消费者按消费需求精准订阅，避免了大多数开源框架如 Istio、Spring Cloud 等全量订阅带来的性能瓶颈。&lt;/li>
&lt;li>其次，Dubbo SDK 在实现上对消费端地址列表处理过程做了大量优化，地址通知增加了异步、缓存、bitmap 等多种解析优化，避免了地址更新常出现的消费端进程资源波动。&lt;/li>
&lt;li>最后，在功能丰富度和易用性上，服务发现除了同步 ip、port 等端点基本信息到消费者外，Dubbo 还将服务端的 RPC/HTTP 服务及其配置的元数据信息同步到消费端，这让消费者、提供者两端的更细粒度的协作成为可能，Dubbo 基于此机制提供了很多差异化的治理能力。&lt;/li>
&lt;/ul>
&lt;h3 id="高效地址推送实现">高效地址推送实现&lt;/h3>
&lt;p>从注册中心视角来看，它负责以应用名 (dubbo.application.name) 对整个集群的实例地址进行聚合，每个对外提供服务的实例将自身的应用名、实例ip:port 地址信息 (通常还包含少量的实例元数据，如机器所在区域、环境等) 注册到注册中心。&lt;/p>
&lt;blockquote>
&lt;p>Dubbo2 版本注册中心以服务粒度聚合实例地址，比应用粒度更细，也就意味着传输的数据量更大，因此在大规模集群下也遇到一些性能问题。
针对 Dubbo2 与 Dubbo3 跨版本数据模型不统一的问题，Dubbo3 给出了&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/upgrades-and-compatibility/service-discovery/migration-service-discovery/">平滑迁移方案&lt;/a>，可做到模型变更对用户无感。&lt;/p>
&lt;/blockquote>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/service-discovery/registry-data.png">&lt;/p>
&lt;br/>
每个消费服务的实例从注册中心订阅实例地址列表，相比于一些产品直接将注册中心的全量数据 (应用 + 实例地址) 加载到本地进程，Dubbo 实现了按需精准订阅地址信息。比如一个消费者应用依赖 app1、app2，则只会订阅 app1、app2 的地址列表更新，大幅减轻了冗余数据推送和解析的负担。
&lt;p> &lt;/p>
&lt;br/>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/service-discovery/subscription2.png">&lt;/p>
&lt;h3 id="丰富元数据配置">丰富元数据配置&lt;/h3>
&lt;p>除了与注册中心的交互，Dubbo3 的完整地址发现过程还有一条额外的元数据通路，我们称之为元数据服务 (MetadataService)，实例地址与元数据共同组成了消费者端有效的地址列表。&lt;/p>
&lt;p>&lt;img alt="service-discovery" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/service-discovery/metadata.png">&lt;/p>
&lt;p>完整工作流程如上图所示，首先，消费者从注册中心接收到地址 (ip:port) 信息，然后与提供者建立连接并通过元数据服务读取到对端的元数据配置信息，两部分信息共同组装成 Dubbo 消费端有效的面向服务的地址列表。以上两个步骤都是在实际的 RPC 服务调用发生之前。&lt;/p></description></item><item><title>负载均衡</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/load-balance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/load-balance/</guid><description>&lt;p>在集群负载均衡时，Dubbo 提供了多种均衡策略，缺省为 &lt;code>weighted random&lt;/code> 基于权重的随机负载均衡策略。&lt;/p>
&lt;p>具体实现上，Dubbo 提供的是客户端负载均衡，即由 Consumer 通过负载均衡算法得出需要将请求提交到哪个 Provider 实例。&lt;/p>
&lt;h2 id="负载均衡策略">负载均衡策略&lt;/h2>
&lt;p>目前 Dubbo 内置了如下负载均衡算法，可通过调整配置项启用。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">算法&lt;/th>
 &lt;th style="text-align: left">特性&lt;/th>
 &lt;th style="text-align: left">备注&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">Weighted Random LoadBalance&lt;/td>
 &lt;td style="text-align: left">加权随机&lt;/td>
 &lt;td style="text-align: left">默认算法，默认权重相同&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">RoundRobin LoadBalance&lt;/td>
 &lt;td style="text-align: left">加权轮询&lt;/td>
 &lt;td style="text-align: left">借鉴于 Nginx 的平滑加权轮询算法，默认权重相同，&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">LeastActive LoadBalance&lt;/td>
 &lt;td style="text-align: left">最少活跃优先 + 加权随机&lt;/td>
 &lt;td style="text-align: left">背后是能者多劳的思想&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Shortest-Response LoadBalance&lt;/td>
 &lt;td style="text-align: left">最短响应优先 + 加权随机&lt;/td>
 &lt;td style="text-align: left">更加关注响应速度&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">ConsistentHash LoadBalance&lt;/td>
 &lt;td style="text-align: left">一致性哈希&lt;/td>
 &lt;td style="text-align: left">确定的入参，确定的提供者，适用于有状态请求&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">P2C LoadBalance&lt;/td>
 &lt;td style="text-align: left">Power of Two Choice&lt;/td>
 &lt;td style="text-align: left">随机选择两个节点后，继续选择“连接数”较小的那个节点。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">Adaptive LoadBalance&lt;/td>
 &lt;td style="text-align: left">自适应负载均衡&lt;/td>
 &lt;td style="text-align: left">在 P2C 算法基础上，选择二者中 load 最小的那个节点&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="weighted-random">Weighted Random&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>加权随机&lt;/strong>，按权重设置随机概率。&lt;/li>
&lt;li>在一个截面上碰撞的概率高，但调用量越大分布越均匀，而且按概率使用权重后也比较均匀，有利于动态调整提供者权重。&lt;/li>
&lt;li>缺点：存在慢的提供者累积请求的问题，比如：第二台机器很慢，但没挂，当请求调到第二台时就卡在那，久而久之，所有请求都卡在调到第二台上。&lt;/li>
&lt;/ul>
&lt;h3 id="roundrobin">RoundRobin&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>加权轮询&lt;/strong>，按公约后的权重设置轮询比率，循环调用节点&lt;/li>
&lt;li>缺点：同样存在慢的提供者累积请求的问题。&lt;/li>
&lt;/ul>
&lt;p>加权轮询过程中，如果某节点权重过大，会存在某段时间内调用过于集中的问题。
例如 ABC 三节点有如下权重：&lt;code>{A: 3, B: 2, C: 1}&lt;/code>
那么按照最原始的轮询算法，调用过程将变成：&lt;code>A A A B B C&lt;/code>&lt;/p></description></item><item><title>通信协议</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/protocols/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/protocols/</guid><description>&lt;p>Dubbo 框架提供了自定义的高性能 RPC 通信协议：基于 HTTP/2 的 Triple 协议 和 基于 TCP 的 Dubbo2 协议。除此之外，Dubbo 框架支持任意第三方通信协议，如官方支持的 gRPC、Thrift、REST、JsonRPC、Hessian2 等，更多协议可以通过自定义扩展实现。这对于微服务实践中经常要处理的多协议通信场景非常有用。&lt;/p>
&lt;p>&lt;strong>Dubbo 框架不绑定任何通信协议，在实现上 Dubbo 对多协议的支持也非常灵活，它可以让你在一个应用内发布多个使用不同协议的服务，并且支持用同一个 port 端口对外发布所有协议。&lt;/strong>&lt;/p>
&lt;p>&lt;img alt="protocols" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/protocols/protocol1.png">&lt;/p>
&lt;p>通过 Dubbo 框架的多协议支持，你可以做到：&lt;/p>
&lt;ul>
&lt;li>将任意通信协议无缝地接入 Dubbo 服务治理体系。Dubbo 体系下的所有通信协议，都可以享受到 Dubbo 的编程模型、服务发现、流量管控等优势。比如 gRPC over Dubbo 的模式，服务治理、编程 API 都能够零成本接入 Dubbo 体系。&lt;/li>
&lt;li>兼容不同技术栈，业务系统混合使用不同的服务框架、RPC 框架。比如有些服务使用 gRPC 或者 Spring Cloud 开发，有些服务使用 Dubbo 框架开发，通过 Dubbo 的多协议支持可以很好的实现互通。&lt;/li>
&lt;li>让协议迁移变的更简单。通过多协议、注册中心的协调，可以快速满足公司内协议迁移的需求。比如如从自研协议升级到 Dubbo 协议，Dubbo 协议自身升级，从 Dubbo 协议迁移到 gRPC，从 HTTP 迁移到 Dubbo 协议等。&lt;/li>
&lt;/ul>
&lt;h2 id="http2-triple">HTTP/2 (Triple)&lt;/h2>
&lt;p>Triple 协议是 Dubbo3 发布的面向云原生时代的通信协议，它基于 HTTP/2 并且完全兼容 gRPC 协议，原生支持 Streaming 通信语义，Triple 可同时运行在 HTTP/1 和 HTTP/2 传输协议之上，让你可以直接使用 curl、浏览器访问后端 Dubbo 服务。&lt;/p></description></item><item><title>扩展适配</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/extensibility/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/extensibility/</guid><description>&lt;p>Dubbo 从设计上是高度可扩展的，通过这些扩展点你可以做到：&lt;/p>
&lt;ul>
&lt;li>拦截流量并控制流量行为&lt;/li>
&lt;li>按需调优 Dubbo 的一些默认策略与实现&lt;/li>
&lt;li>将 Dubbo 服务适配到公司内部微服务集群或其他主流的开源组件&lt;/li>
&lt;/ul>
&lt;h2 id="一切皆可扩展">一切皆可扩展&lt;/h2>
&lt;p>Dubbo 扩展能力使得 Dubbo 项目很方便的切分成一个一个的子模块，实现热插拔特性。用户完全可以基于自身需求，替换 Dubbo 原生实现，来满足自身业务需求。&lt;/p>
&lt;p>&lt;img alt="Admin 效果图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/advantages/extensibility.png">&lt;/p>
&lt;ul>
&lt;li>&lt;strong>协议与编码扩展&lt;/strong>。通信协议、序列化编码协议等&lt;/li>
&lt;li>&lt;strong>流量管控扩展&lt;/strong>。集群容错策略、路由规则、负载均衡、限流降级、熔断策略等&lt;/li>
&lt;li>&lt;strong>服务治理扩展&lt;/strong>。注册中心、配置中心、元数据中心、分布式事务、全链路追踪、监控系统等&lt;/li>
&lt;li>&lt;strong>诊断与调优扩展&lt;/strong>。流量统计、线程池策略、日志、QoS 运维命令、健康检查、配置加载等&lt;/li>
&lt;/ul>
&lt;h2 id="基于扩展点的微服务生态">基于扩展点的微服务生态&lt;/h2>
&lt;p>众多的扩展点与抽象，是 Dubbo 与众多微服务生态组件对接、实现微服务治理能力的基础。&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/">全链路追踪&lt;/a>&lt;/li>
&lt;li>&lt;code>数据一致性&lt;/code>&lt;/li>
&lt;li>&lt;a href="../../core-features/traffic/circuit-breaking/">限流降级&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Dubbo 的各语言 sdk 实现都是采用的 &amp;ldquo;微内核+插件&amp;rdquo; 的设计模式，几乎所有流程中的核心节点都被定义为扩展点，官方发布的组件也是以扩展点的实现形式发布，因此 Dubbo 可以平等的对待所有官方与第三方组件扩展。&lt;/p>
&lt;ul>
&lt;li>扩展适配能力是实现 Dubbo 微服务生态的关键，Dubbo 生态组件如全链路追踪、注册中心实现等的适配都是基于 Filter、Registry、DynamicConfiguration 等扩展点实现。&lt;/li>
&lt;li>扩展适配给用户带来最大的灵活性，开发者可以随时接入公司内部组件、按需定制核心能力等。&lt;/li>
&lt;/ul>
&lt;p>&lt;img alt="extensibility-echosystem.png" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/extensibility/arc.png">&lt;/p>
&lt;p>以上是按架构层次划分的 Dubbo 内的一些核心扩展点定义及实现，从三个层次来展开：&lt;/p>
&lt;ul>
&lt;li>协议通信层&lt;/li>
&lt;li>流量管控层&lt;/li>
&lt;li>服务治理层&lt;/li>
&lt;/ul>
&lt;h2 id="协议通信层">协议通信层&lt;/h2>
&lt;p>在通信协议一节我们强调过，Dubbo 不绑定任何协议，用户可以选择 Triple、gRPC、Dubbo2、REST、自定义协议等任一 RPC 远程通信协议，除此之外，RPC 协议之上的数据编码格式 (即序列化协议) 也是通过扩展点定义，用户可以灵活选择 RPC 与序列化的通信协议组合。&lt;/p>
&lt;p>&lt;img alt="协议与编码原理图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/extensibility/protocol.png">&lt;/p>
&lt;h3 id="protocol">Protocol&lt;/h3>
&lt;p>Protocol 扩展点定义对应的是 RPC 协议，利用这个扩展点可以让 Dubbo 作为统一的微服务开发和治理框架，而在下层通信协议上实现灵活切换。官方发布了对大多数主流 RPC 通信协议的适配，你可以通过几条简单的配置直接使用，如果你想使用公司自定义的 RPC 通信协议，请通过 Protocol 提供自定义扩展实现。&lt;/p></description></item><item><title>观测服务</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/observability/</guid><description>&lt;p>Dubbo 内部维护了多个纬度的可观测指标，并且支持多种方式的可视化监测。可观测性指标从总体上来说分为三个度量纬度：&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;strong>Admin&lt;/strong> Admin 控制台可视化展示了集群中的应用、服务、实例及依赖关系，支持流量治理规则下发，同时还提供如服务测试、mock、文档管理等提升研发测试效率的工具。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Metrics&lt;/strong> Dubbo 统计了一系列的流量指标如 QPS、RT、成功请求数、失败请求数等，还包括一系列的内部组件状态如线程池数、服务健康状态等。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Tracing&lt;/strong> Dubbo 与业界主流的链路追踪工作做了适配，包括 Skywalking、Zipkin、Jaeger 都支持 Dubbo 服务的链路追踪。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Logging&lt;/strong> Dubbo 支持多种日志框架适配。以 Java 体系为例，支持包括 Slf4j、Log4j2、Log4j、Logback、Jcl 等，用户可以基于业务需要选择合适的框架；同时 Dubbo 还支持 Access Log 记录请求踪迹。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="admin">Admin&lt;/h2>
&lt;p>Admin 控制台可视化展示了集群中的应用、服务、实例及依赖关系，支持流量治理规则下发，同时还提供如服务测试、mock、文档管理等提升研发测试效率的工具&lt;/p>
&lt;p>&lt;img alt="Admin 效果图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/observability/admin.jpg">&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/">Admin 部署与效果演示&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="metrics">Metrics&lt;/h2>
&lt;p>Dubbo 运行时统计了包括 qps、rt、调用总数、成功数、失败数，失败原因统计等在内的核心服务指标，同时，为了更好的监测服务运行状态，Dubbo 还提供了对核心组件状态的监控，如线程池数量、服务健康状态等。&lt;/p>
&lt;p>可以通过 Grafana 可视化的查看 Metrics 指标&lt;/p>
&lt;p>&lt;img alt="Grafana 效果图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/observability/provider-stat.png">&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/grafana/">使用 Grafana 可视化展示 Metrics 指标&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/prometheus/">如何从 Prometheus 查询特定 Metrics 指标&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="tracing">Tracing&lt;/h2>
&lt;p>全链路追踪对于监测分布式系统运行状态具有非常重要的价值，Dubbo 通过 Filter 拦截器实现了请求运行时的埋点跟踪，通过将跟踪数据导出到一些主流实现如 Zipkin、Skywalking、Jaeger 等，可以实现全链路跟踪数据的分析与可视化展示。&lt;/p>
&lt;p>&lt;img alt="Tracing 效果图" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/feature/observability/tracing.png">&lt;/p>
&lt;blockquote>
&lt;p>未来我们计划支持通过 Dubbo Admin 等治理平台动态调整 Dubbo 的链路追踪采样率。&lt;/p></description></item><item><title>认证鉴权</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/security/</guid><description>&lt;p>Dubbo 提供了构建安全微服务通信体系 (零信任体系) 的完善机制，这包括：&lt;/p>
&lt;ul>
&lt;li>避免通信过程中的中间人攻击，Dubbo 提供了身份认证 (Authentication) 和基于 TLS 的通信链路加密能力&lt;/li>
&lt;li>控制服务间的访问鉴权 (Authorization)，Dubbo 提供了 mTLS 和权限检查机制&lt;/li>
&lt;/ul>
&lt;p>通过这篇文档，你将了解如果使用 Dubbo 的安全机制构建微服务零信任体系，实现身份认证、透明链路加密、鉴权、审计等能力。由于构建零信任是一套系统的工作，而 Dubbo 只是其中数据通信层的一环，因此你可能需要一系列基础设施的配合，包括证书生成、分发、安全策略管控等。&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>证书的生成和分发不在本文讨论范围，我们假设您已经有完善的基础设施解决了证书管理问题，因此，我们将更专注在讲解 Dubbo 体系的认证和鉴权机制与流程。&lt;/strong> 如果您并没有这些证书管理设施，我们推荐您使用服务网格架构 (具体请参见 &lt;a href="../service-mesh/">Dubbo Mesh 服务网格&lt;/a> 文档说明)，借助 &lt;a href="https://istio.io/latest/docs/concepts/security/">Istio&lt;/a> 等服务网格控制面的证书管理机制和安全策略，您可以很容易将 Dubbo 集群的认证和鉴权能力实施起来。&lt;/p>
&lt;/blockquote>
&lt;blockquote>
&lt;p>另外，以下默认讲的都是 Dubbo Proxyless Mesh 模式下的 Dubbo 数据面行为，对于部署 Envoy 的场景，由于 Dubbo 只是作为通信和编程 sdk，因此 Envoy 场景下认证鉴权能力请完全参考标准 Istio 文档即可。&lt;/p>
&lt;/blockquote>
&lt;h2 id="架构">架构&lt;/h2>
&lt;p>一套完整的零信任体系包含多个组成部分：&lt;/p>
&lt;ul>
&lt;li>一个根证书机构 (CA) 来负责管理 key 和 certificate&lt;/li>
&lt;li>一个安全策略的管理和分发中心，来负责将安全策略实时下发给数据面组件：
&lt;ul>
&lt;li>认证策略&lt;/li>
&lt;li>鉴权策略&lt;/li>
&lt;li>安全命名信息 (Secure Naming Information)&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>数据面组件 (Dubbo) 负责识别和执行身份认证、加密、策略解析等动作&lt;/li>
&lt;li>一系列的工具和生态，配合完成安全审计、数据链路监控等工作&lt;/li>
&lt;/ul>
&lt;p>在服务网格 (Istio) 部署模式下，控制面通常负责安全策略、证书等的管理，控制面负责与基础设施如 Kubernetes API Server 等交互，将配置数据下发给 Dubbo 或者 Envoy 等数据面组件。但如我们前面提到的，我们假设控制面产品已经就绪，因此不会涉及控制面如何签发证书、定义认证鉴权策略的讨论，我们将专注在 Dubbo 作为数据面的职责及与控制面的交互流程上。&lt;/p></description></item><item><title>服务网格</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-mesh/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/service-mesh/</guid><description>&lt;p>Dubbo Mesh 是 Dubbo 在云原生背景的微服务整体解决方案，它帮助开发者实现 Dubbo 服务与标准的 Kubernetes Native Service 体系的打通，让 Dubbo 应用能够无缝接入 Istio 等业界主流服务网格产品。&lt;/p>
&lt;p>以下是 Dubbo Mesh 的部署架构图&lt;/p>
&lt;p>&lt;img alt="Dubbo-Mesh" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/mesh/mix-mesh.png">&lt;/p>
&lt;ul>
&lt;li>控制面。Istio 作为统一控制面，为集群提供 Kubernetes 适配、服务发现、证书管理、可观测性、流量治理等能力。&lt;/li>
&lt;li>数据面。Dubbo 应用实例作为数据面组件，支持两种部署模式
&lt;ul>
&lt;li>Proxy 模式。Dubbo 进程与 Envoy 部署在同一 pod，进出 Dubbo 的流量都经 Envoy 代理拦截，由 Envoy 执行流量管控。&lt;/li>
&lt;li>Proxyless 模式。Dubbo 进程独立部署，进程间直接通信，通过 xDS 协议与控制面直接交互。&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>关于服务网格架构以及为何要接入 Istio 控制面，请参考 &lt;a href="https://istio.io/">Istio 官网&lt;/a>，本文不包含这部分通用内容的讲解，而是会侧重在 Dubbo Mesh 解决方案本身。&lt;/p>
&lt;h2 id="dubbo-mesh">Dubbo Mesh&lt;/h2>
&lt;h3 id="proxy-mesh">Proxy Mesh&lt;/h3>
&lt;p>在 proxy 模式下，Dubbo 与 Envoy 等边车 (Proxy or Sidecar) 部署在一起&lt;/p>
&lt;p>&lt;img alt="dubbo-sidecar" src="https://deploy-preview-3199--dubbo.netlify.app/imgs/v3/mesh/dubbo-proxy.png">&lt;/p>
&lt;p>以上是 Dubbo Proxy Mesh 部署架构图&lt;/p></description></item><item><title>微服务生态</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/ecosystem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/ecosystem/</guid><description>&lt;p>Dubbo 社区和众多优秀的开源项目一起围绕 Dubbo 建立了丰富的微服务生态支持，这让开发者从选型 Dubbo 作为开发框架的第一天，就无需担心后续的服务治理诉求，Dubbo 对每一个常见问题均提供了生产级的解决方案。&lt;/p>
&lt;p>以下表格为基于最新 Dubbo Java 3.2.x 版本统计的生态组件支持情况，后续将根据开发进展持续更新。同时每个语言支持的组件完善度会有一定差异，具体请参见各个 &lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/">语言参考手册&lt;/a> 内的详细说明&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th style="text-align: left">功能&lt;/th>
 &lt;th style="text-align: left">组件列表&lt;/th>
 &lt;th style="text-align: left">组件列表&lt;/th>
 &lt;th style="text-align: left">组件列表&lt;/th>
 &lt;th style="text-align: left">组件列表&lt;/th>
 &lt;th style="text-align: left">组件列表&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td style="text-align: left">服务发现&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/registry/zookeeper/">Zookeeper&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/registry/nacos/">Nacos&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/">Kubernetes Service&lt;/a>&lt;/td>
 &lt;td style="text-align: left">DNS【开发中】&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-registry-extensions" target="_blank">更多&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">动态配置&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/zookeeper/">Zookeeper&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/nacos/">Nacos&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/config-center/apollo/">Apollo&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Kubernetes【开发中】&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-configcenter-extensions" target="_blank">更多&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">元数据管理&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/zookeeper/">Zookeeper&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/nacos/">Nacos&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/reference-manual/">Redis&lt;/a>&lt;/td>
 &lt;td style="text-align: left">Kubernetes【开发中】&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-metadata-report-extensions" target="_blank">更多&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">RPC 协议&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/reference/protocols/triple/">HTTP/2 (Triple)&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/reference/protocols/tcp/">TCP&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/reference/protocols/http/">HTTP/REST【Alpha】&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/reference/protocols/triple/">gRPC&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/reference/protocols/">更多&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">可视化观测平台&lt;/td>
 &lt;td style="text-align: left">&lt;code>Admin&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/grafana/">Grafana&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/prometheus/">Prometheus&lt;/a>&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">全链路追踪&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/zipkin/">Zipkin&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/observability/tracing/skywalking/">Skywalking&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot3-tracing#2-adding-micrometer-tracing-bridge-to-your-project" target="_blank">OpenTelemetry&lt;/a>&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">限流降级&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/rate-limit/sentinel">Sentinel&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Resilience4j&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;code>Hystrix&lt;/code>&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">分布式事务&lt;/td>
 &lt;td style="text-align: left">&lt;code>Seata&lt;/code>&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">网关&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/blog/2024/04/01/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87-higress-%E7%BD%91%E5%85%B3%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1/">Higress&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;code>APISIX&lt;/code>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/blog/2022/05/04/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87-apache-shenyu-%E7%BD%91%E5%85%B3%E4%BB%A3%E7%90%86-dubbo-%E6%9C%8D%E5%8A%A1/">Shenyu&lt;/a>&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/dubbo_proxy_filter">Envoy&lt;/a>&lt;/td>
 &lt;td style="text-align: left">-&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td style="text-align: left">服务网格&lt;/td>
 &lt;td style="text-align: left">Istio【开发中】&lt;/td>
 &lt;td style="text-align: left">&lt;a href="https://www.aeraki.net/" target="_blank">Aeraka&lt;/a>&lt;/td>
 &lt;td style="text-align: left">OpenSergo【开发中】&lt;/td>
 &lt;td style="text-align: left">Proxyless【Alpha】&lt;/td>
 &lt;td style="text-align: left">更多&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="微服务生态示例架构">微服务生态示例架构&lt;/h2>
&lt;script src="https://g.alicdn.com/mamba/assets/0.0.19/mse-arc-ui.min.js">&lt;/script>
&lt;link rel="stylesheet" href="https://g.alicdn.com/mamba/assets/0.0.19/mse-arc-ui.min.css" />

&lt;section id="section-3" style="">
	
&lt;div class="msemap-section">
 &lt;div class="msemap-container">
 &lt;div id="mse-arc-container">&lt;/div>
 &lt;/div>
&lt;/div>

&lt;/section></description></item><item><title>更多高级功能</title><link>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/more/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/what/core-features/more/</guid><description>&lt;p>作为一款与应用开发紧密相关的微服务框架，同时旨在为微服务集群提供企业级服务治理能力，Dubbo 还提供了很多高级功能，涵盖服务调用行为控制、服务诊断与调优、服务治理等。&lt;/p>
&lt;p>多种语言 sdk 在功能实现、配置方式上会略有差异，具体功能列表和使用方式可参考如下文档：&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/">Java&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://deploy-preview-3199--dubbo.netlify.app/zh-cn/overview/mannual/golang-sdk/tutorial/">Golang&lt;/a>&lt;/li>
&lt;/ul>
&lt;h2 id="控制服务调用行为">控制服务调用行为&lt;/h2>
&lt;ul>
&lt;li>服务版本&lt;/li>
&lt;li>服务分组&lt;/li>
&lt;li>分组聚合&lt;/li>
&lt;li>异步调用&lt;/li>
&lt;li>异步执行&lt;/li>
&lt;li>流式通信&lt;/li>
&lt;li>响应式编程&lt;/li>
&lt;li>泛化调用&lt;/li>
&lt;li>泛化实现&lt;/li>
&lt;li>调用链路传递隐式参数&lt;/li>
&lt;li>RPC调用上下文&lt;/li>
&lt;li>调用触发事件通知&lt;/li>
&lt;li>服务端对客户端进行回调&lt;/li>
&lt;li>只订阅&lt;/li>
&lt;li>只注册&lt;/li>
&lt;li>运行时动态指定 IP 调用&lt;/li>
&lt;li>直连提供者&lt;/li>
&lt;li>启动时检查&lt;/li>
&lt;li>本地调用&lt;/li>
&lt;li>参数校验&lt;/li>
&lt;li>本地伪装&lt;/li>
&lt;li>本地存根&lt;/li>
&lt;li>回声测试&lt;/li>
&lt;li>调用信息记录&lt;/li>
&lt;li>延迟暴露&lt;/li>
&lt;li>集群容错&lt;/li>
&lt;li>服务降级&lt;/li>
&lt;/ul>
&lt;h2 id="诊断与调优">诊断与调优&lt;/h2>
&lt;ul>
&lt;li>端口协议复用&lt;/li>
&lt;li>线程池隔离&lt;/li>
&lt;li>多协议&lt;/li>
&lt;li>多注册中心&lt;/li>
&lt;li>请求耗时采样&lt;/li>
&lt;li>线程模型&lt;/li>
&lt;li>服务引用配置对象缓存&lt;/li>
&lt;li>路由状态采集&lt;/li>
&lt;li>负载均衡&lt;/li>
&lt;li>注册信息简化&lt;/li>
&lt;li>调用结果缓存&lt;/li>
&lt;li>并发控制&lt;/li>
&lt;li>连接控制&lt;/li>
&lt;li>延迟连接&lt;/li>
&lt;li>粘滞连接&lt;/li>
&lt;li>支持 Graal VM&lt;/li>
&lt;li>导出线程堆栈&lt;/li>
&lt;li>Kryo 和 FST 序列化&lt;/li>
&lt;li>自定义服务容器&lt;/li>
&lt;li>优雅停机&lt;/li>
&lt;li>主机地址自定义暴露&lt;/li>
&lt;li>一致性哈希选址&lt;/li>
&lt;li>日志框架适配及运行时管理&lt;/li>
&lt;li>Kubernetes 生命周期探针&lt;/li>
&lt;/ul></description></item></channel></rss>