You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2022/11/22 09:30:38 UTC

[dubbo-website] branch refactor/next updated: add docs

This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch refactor/next
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/refactor/next by this push:
     new 6c3d1870c37 add docs
6c3d1870c37 is described below

commit 6c3d1870c37acd55d51895946bfb51a5760cff24
Author: chickenlj <ke...@gmail.com>
AuthorDate: Tue Nov 22 17:30:27 2022 +0800

    add docs
---
 content/zh/overview/what/_index.md                 |   4 +
 .../zh/overview/what/advantages/observability.md   |   1 +
 content/zh/overview/what/advantages/performance.md |  34 +++++--
 .../overview/what/advantages/traffic-management.md |  15 +++
 content/zh/overview/what/advantages/usability.md   | 105 +++++++++++++++++----
 content/zh/overview/what/overview.md               |  76 +++++++++++----
 6 files changed, 192 insertions(+), 43 deletions(-)

diff --git a/content/zh/overview/what/_index.md b/content/zh/overview/what/_index.md
index fa89bbbc1f1..ccdba49c862 100644
--- a/content/zh/overview/what/_index.md
+++ b/content/zh/overview/what/_index.md
@@ -47,3 +47,7 @@ Dubbo 项目托管在 Apache 社区,有来自国际、国内的活跃贡献者
 * **庞大的用户群体**
 
 Dubbo 的用户群体是其稳定性、需求来源、先进性的基础。
+
+## Dubbo 不是什么?
+不是 Spring Boot
+不是
diff --git a/content/zh/overview/what/advantages/observability.md b/content/zh/overview/what/advantages/observability.md
index 5d400a66f40..e267b506b23 100644
--- a/content/zh/overview/what/advantages/observability.md
+++ b/content/zh/overview/what/advantages/observability.md
@@ -4,6 +4,7 @@ title: "可观测性"
 linkTitle: "可观测性"
 weight: 50
 ---
+Istio generates detailed telemetry for all service communications within a mesh. This telemetry provides observability of service behavior, empowering operators to troubleshoot, maintain, and optimize their applications – without imposing any additional burdens on service developers. Through Istio, operators gain a thorough understanding of how monitored services are interacting, both with other services and with the Istio components themselves.
 
 可观测性分为三个维度度量、链路追踪以及日志,Dubbo从这三个方面为开发者提供了全面的可观测性解决方案。
 
diff --git a/content/zh/overview/what/advantages/performance.md b/content/zh/overview/what/advantages/performance.md
index 26744ebbfac..4e425e88f4e 100644
--- a/content/zh/overview/what/advantages/performance.md
+++ b/content/zh/overview/what/advantages/performance.md
@@ -5,12 +5,34 @@ title: "高性能"
 linkTitle: "高性能"
 weight: 30
 ---
+Dubbo 被设计用于解决阿里巴巴超大规模的电商微服务集群实践,并在各个行业头部企业经过多年的十万、百万规模的微服务实践检验,因此,Dubbo 在通信性能、稳定性方面具有无可比拟的优势,非常适合构建近乎无限水平伸缩的微服务集群,这也是 Dubbo 从实践层面优于业界很多同类的产品的一大巨大优势。
 
-Triple 是基于 HTTP/2 开发的新一代 RPC 协议,在网关穿透性和通用性以及 Stream 通信模型都具备优势。
+## 高性能数据传输
+Dubbo 内置支持 Dubbo2、Triple (兼容 gRPC) 两款高性能通信协议。其中
+* Dubbo2 是基于 TCP 传输协议之上构建的二进制私有 RPC 通信协议,是一款非常简单、紧凑、高效的通信协议。
+* Triple 是基于 HTTP/2 应用层协议之上构建新一代 RPC 通信协议,在网关穿透性、通用性以及 Streaming 通信上都具备优势,同时 Triple 在完全兼容 gRPC 协议的同时,在实现上更具性能优势。
 
-Streaming 通信:基于 Triple 协议进行 Stream 流模式。
-响应式编程:基于 Triple 协议流式调用。
-流式通信:基于 Triple 协议进行流式通信。
-应用级服务发现是基于应用粒度的服务发现机制,适配云原生微服务变革。在大规模集群展现极致性能以及大幅降低系统资源的利用率。
+Dubbo2 benchmark 性能指标
 
-应用级服务发现:提升性能与可伸缩性。
\ No newline at end of file
+![Dubbo2]()
+
+Triple benchmark 性能指标
+
+![Triple]()
+
+通过以下内容了解更多协议详情:
+* [Dubbo 协议支持详情](../../../core-features/protocols)
+
+## 构建可伸缩的微服务集群
+业务增长带来了集群规模的快速增长,而集群规模的增长会对服务治理架构带来挑战,这包括注册中心的存储容量、节点动态变化带来的地址推送与解析效率、高效的网络链接管理、高峰期的流量无损上下线、异常节点的自动节点管理、消费端存储大量网络地址的资源开销等。
+
+以上很多点都直接关系到了微服务集群的稳定性,因此很容易成为影响集群和业务增长的瓶颈,当集群规模变得越大,问题带来的影响面也就越会被进一步放大。很多开发者可能会想只有几个应用而已,当前不需要并不关心集群规模,但作为技术架构选型的关键因素之一,我们还是要充分考虑微服务集群。并且基于我们对业界大量微服务架构和框架实现的调研,大部分产品的性能瓶颈点可能很快就会到来(一些产品所能高效支持的瓶颈节点规模阈值都是非常低的,比如几十个应用、数百个节点)。
+
+![一份对比的 Dubbo、Spring Cloud、Go-Micro、Istio 在不同集群规模下的资源咋用 benchmark,比如模拟10个节点、100个节点、1000 个节点情况下的资源占用情况]()
+
+Dubbo 的优势在于
+
+通过以下内容了解 Dubbo 构建生产可用的、可伸缩的大规模微服务集群背后的原理:
+* [Dubbo3 服务发现模型]()
+* [流量管理]()
+* [源码解析]()
\ No newline at end of file
diff --git a/content/zh/overview/what/advantages/traffic-management.md b/content/zh/overview/what/advantages/traffic-management.md
index f355e14ffe7..afecb39aaec 100644
--- a/content/zh/overview/what/advantages/traffic-management.md
+++ b/content/zh/overview/what/advantages/traffic-management.md
@@ -4,3 +4,18 @@ title: "流量治理"
 linkTitle: "流量治理"
 weight: 40
 ---
+
+按标签的条件路由
+
+Service Mesh 路由
+
+路由规则可扩展
+
+* 超时
+* 重试
+* 限流
+* 降级
+* Mock
+* 集群容错
+* 无损上下线
+* 异常链接管理
\ No newline at end of file
diff --git a/content/zh/overview/what/advantages/usability.md b/content/zh/overview/what/advantages/usability.md
index 2f4e8994478..a162ddfcfb1 100644
--- a/content/zh/overview/what/advantages/usability.md
+++ b/content/zh/overview/what/advantages/usability.md
@@ -4,21 +4,90 @@ title: "易用性"
 linkTitle: "易用性"
 weight: 20
 ---
-Dubbo提供了简单易用的配置方式,支持XML、Properties、Annotation、Yaml等格式的配置文件。以Dubbo Java SDK为例,Dubbo支持Spring Boot + Annotation的方式来开发应用。开发者只需要使用@DubboService和 @EnableDubbo来暴露服务,通过@DubboReference和@EnableDubbo即可调用暴露的服务,通过application.properties或application.yml来定义服务相关的配置信息。
-
-Dubbo提供了丰富的samples,开发者可以根据具体情况选择合适的脚手架来构建自己的项目。
-
-Java SDK:dubbo-samples
-Golang SDK:dubbo-go-samples
-Rust SDK:dubbo-rust-samples
-Dubbo从开发者的角度出发,提供了一系列能力降低开发者在调试、部署和调用等环节的复杂度:
-
-本地调用:当在本地开发时,无需配置注册中心也可以实现服务注册发现功能,减少了对注册中心的依赖。
-泛化调用:可以将开发的服务用Http协议对外进行暴露,能够满足在多语言场景下服务调用的需求。
-依赖检查:在服务部署的过程中,Dubbo可以检测依赖的服务是否部署成功。
-延迟暴露:部署的服务可以经过一段时间以后再对外暴露,可以满足服务需要预热的需求。
-异步调用:可以通过Dubbo提供的异步调用功能来提供系统的吞吐量。
-关键词
-支持多种格式的配置文件:支持XML、Properties、Annotation、Yaml等格式的配置文件。
-提供了丰富的脚手架:不同的开发语言提供了对应的开发脚手架。目前已经支持Java、Golang和Rust。
-降低调试、部署和调用等环节的复杂度:支持本地调用、泛化调用、异步调用、依赖检查和延迟暴露。
\ No newline at end of file
+Dubbo 通过提供面向开发开发侧的编程框架和一系列服务治理套件,极大的简化了微服务构建的复杂度。从开发层面,Dubbo 通过针对不同语言实现定义了一套微服务开发范式,并提供了配套脚手架用于快速搭建微服务项目骨架;从部署上来说,Dubbo 应用可以打包部署,Dubbo 提供了多种;Dubbo 服务治理是真正从解决微服务生产实践问题的角度出发,提供了除服务发现等能力之外的高阶特性。
+
+## 开发
+Dubbo 提供了用于快速生成微服务项目脚手架的配套工具(浏览器页面或命令行工具),只需要告诉脚手架你期望包含的功能或组件,脚手架最终可以帮助开发者生成具有合理和必要依赖的工程,里面包含必要的第三方依赖、默认配置等,开发者只需要在特定的位置编写业务逻辑,并通过 Dubbo 特有的方式定义和发布服务即可。
+
+![脚手架示例图]()
+
+Dubbo 并没有发明一套全新的应用开发模式,而是与业界主流的应用开发框架整合,让开发者可以用流行的应用开发框架开发 Dubbo 应用 --- Dubbo 提供了与应用开发框架模式相匹配的 RPC 服务开发模式。
+
+这点我们通过 Java 体系的 Spring Boot 解释过,如果开发者选择基于 Spring/Spring Boot 开发微服务,则 Dubbo 就是构建在 Spring Boot 之上的服务开发框架,这里还是以 Spring Boot 为基础的 Dubbo 应用开发为例,只需要增加相应的注解和配置文件就可以了。
+
+增加 Spring Boot 风格的注解:
+```java
+@SpringBootApplication
+@EnableDubbo
+public class ProviderApplication {
+}
+
+@DubboService
+public class DemoServiceImpl implements DemoService {
+}
+```
+
+在 `application.yml` 配置文件中增加配置
+```yaml
+dubbo:
+  application:
+    name: dubbo-demo
+  protocol:
+    name: dubbo
+    port: -1
+  registry:
+    address: zookeeper://127.0.0.1:2181
+```
+
+关于具体语言的脚手架、开发体验可参见:
+* [Dubbo Java 开发指南]()
+* [Dubbo Golang 开发指南]()
+
+分布式系统中服务组件由不同团队负责开发,服务间如何透明、高效协作是非常影响开发效率的问题,这包括 API 管理、服务测试、服务静态观测等,Dubbo 对此类场景都提供了一些有用的配套工具。关于服务 API 管理,服务查询、测试、Mock 等,可参加 [Dubbo-Amin]() 的详细描述。
+* Dubbo 提供了类似 Swagger 的 API 管理工具,而对于 IDL 也将开源对应的管理工具
+* 支持服务测试
+* 支持服务 Mock
+* Admin 服务查询
+
+
+## 部署
+Dubbo 原生服务可打包部署到 Docker 容器、Kubernetes、Service Mesh 等云原生基础设施和微服务架构。
+
+对 Docker 部署环境,Dubbo 服务最需要解决的就是注册 IP 地址与通信 IP 地址统一的问题,对于这点
+
+对于 Kubernetes 部署环境,有两种模式
+Kubernetes Native Service
+
+对于 Service Mesh 架构,
+
+关于不同环境的部署示例,可参考:
+* [部署 Dubbo 服务到 Docker 容器]()
+* [部署 Dubbo 服务到 Kubernetes]()
+* [部署 Dubbo 服务到 Service Mesh]()
+
+## 治理
+Dubbo 提供了丰富的服务治理能力,对于绝大多数用户来说,Dubbo 原生提供的服务治理定义与实现 (服务发现、负载均衡等) 就能满足微服务实践诉求,开发者只需要做两步使用服务治理
+
+**1. 配置一条注册中心地址**
+```yaml
+dubbo:
+  registry:
+    address: zookeeper://127.0.0.1:2181
+```
+服务消费端、提供端都在 dubbo 配置文件中增加以上配置(以 yaml 格式为例),消费端就能自动发现并对提供端地址发起服务调用,将默认采用基于权重的随机负载均衡,且包含超时、失败重试等默认策略。
+
+**2. 打开 Dubbo Admin 观测服务运行状态**
+
+![Dubbo Admin 运行状态截图]()
+
+服务的基本信息、调用数据等会如上图展示在 Dubbo Admin 之上。
+
+对于更复杂的微服务实践场景,Dubbo 还提供了更多高级的服务治理特性,包括
+* [流量治理]()
+* [动态配置]()
+* [限流降级]()
+* [数据一致性]()
+* [可观测性]()
+* [多协议]()
+* [多注册中心]()
+* [Dubbo Mesh]()
diff --git a/content/zh/overview/what/overview.md b/content/zh/overview/what/overview.md
index 7593c68e343..bab2917a30d 100644
--- a/content/zh/overview/what/overview.md
+++ b/content/zh/overview/what/overview.md
@@ -6,44 +6,82 @@ weight: 10
 description: ""
 ---
 
-## 基本架构
 ![arch-service-discovery](/imgs/architecture.png)
 
 以上是 Dubbo 的工作原理架构图,有三个核心的抽象角色:服务消费者 (Client/Consumer)、服务提供者 (Server/Provider)、服务治理中心。
 * **代表业务服务的消费者和提供者统称为 Dubbo 数据面**,组成数据面的业务服务之间依赖 Dubbo 实现数据传输,即某个服务 (消费者) 以 RPC 或 HTTP 形式发起调用,目标服务 (提供者) 收到并回复对方的请求,Dubbo 定义了微服务开发与调用规范并完成数据传输的编解码工作。
-* **服务治理中心控制 Dubbo 数据面的行为**,比如作为注册中心协调服务组件间的地址自动发现、作为规则管控中心下发流量治理策略等。治理中心不是指如注册中心类的单个具体组件,而是 对 Dubbo 治理体系的抽象表达。
+* **服务治理中心控制并观测 Dubbo 数据面的流量**,比如作为注册中心协调服务组件间的地址自动发现、作为规则管控中心下发流量治理策略等。治理中心不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。
 
 ## Dubbo 数据面
-从数据面的视角,Dubbo 帮我们完成如下事项:
+从数据面的视角,Dubbo 解决了微服务实践中的以下问题:
 * Dubbo 作为**服务开发框架**定义了微服务定义、开发与调用的规范
-* Dubbo 作为 **RPC 协议实现**解决服务间通信的编解码工作
+* Dubbo 作为 **RPC 通信协议实现**解决服务间通信的编解码工作
 
 ![架构图](#)
 
 ### 服务开发框架
-* 服务定义:IDL、Java、Golang 等
-* 调用方式:同步、异步、Reactive
-* 服务行为:超时、延迟注册、预热、治理中心等
-* 配置:xml yaml properties
-* 多语言:Java Spring、Golang xx
+微服务的目标是构建足够小的、自包含的、独立演进的、可以随时部署运行的分布式应用程序,几乎每个语言都有类似的应用开发框架来帮助开发者快速构建此类微服务应用,比如 Java 微服务体系的 Spring Boot,它帮 Java 微服务开发者以最少的配置、最轻量的方式快速开发、打包、部署与运行应用。
+
+微服务的分布式特性,使得应用间的依赖、网络交互、数据传输变得更频繁,因此不同的**微服务应用需要定义、暴露或调用 RPC 服务,那么这些 RPC 服务如何定义、如何与应用开发框架结合、服务调用行为如何控制?这就是 Dubbo 服务开发框架的含义,Dubbo 在微服务应用开发框架之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式**,比如 Dubbo Java 作为服务开发框架,当运行在 Spring 体系时就是构建在 Spring Boot 应用开发框架之上的微服务开发框架,并在此之上抽象了一套 RPC 服务定义、暴露、调用与治理的编程范式。
+
+Dubbo 作为服务开发框架包含的具体内容如下:
+* **RPC 服务定义**。IDL、多语言Java、Golang 等
+* **RPC 服务调用暴露与调用 API**。同步、异步、Reactive Streaming
+* **RPC 服务行为、治理相关配置**。超时、延迟注册、预热、治理中心等,xml yaml properties
+
+这些 Dubbo 服务的行为,你也何种形式发起调用,
+
+快速体验如何用 Dubbo 开发微服务:
+* [Java](../../..docs3-v2/java-sdk/)
+* [Golang]()
+* [Rust]()
+* [Node]()
 
 ### 通信协议
+**Dubbo 从设计上不绑定任何一款特定通信协议,REST、gRPC、Json-rpc、Hessian2 等几乎所有主流的通信协议 Dubbo 框架都可以提供支持。** 这样的 Protocol 设计模式给构建微服务带来了最大的灵活性,开发者可以根据需要如性能、通用型等选择不同的通信协议,不再需要任何的代理来实现协议转换,甚至你还可以通过 Dubbo 实现不同协议间的迁移。
+
+Dubbo Protocol 被设计支持扩展,您可以将内部私有协议适配到 Dubbo 框架上,进而将私有协议接入 Dubbo 体系,以享用 Dubbo 的开发体验与服务治理能力。比如 Dubbo3 的典型用户阿里巴巴,就是通过扩展支持 HSF 协议实现了内部 HSF 框架到 Dubbo3 框架的整体迁移。Dubbo 还支持多协议暴露,您可以在单个端口上暴露多个协议,Dubbo Server 能够自动识别并确保请求被正确处理,也可以将同一个 RPC 服务发布在不同的端口(协议),为不同技术栈的调用方服务。Dubbo 灵活的通信协议设计可满足各种微服务通信场景的组合。
+
+Dubbo 提供了两款**内置高性能 Dubbo2、Triple (兼容 gRPC) 协议实现**,以满足部分微服务用户对高性能通信的诉求。Dubbo2 协议是在 TCP 传输层协议之上设计的二进制通信协议,而 Triple 则是基于 HTTP/2 之上构建的支持流式模式的通信协议,并且 Triple 完全兼容 gRPC 但实现上做了更多的符合 Dubbo 框架特点的优化,两者最开始都设计和诞生于阿里巴巴内部的高性能通信业务场景。
+
+总的来说,Dubbo 对通信协议的支持具有以下特点:
 * 不绑定通信协议
-* 流式通信模型
-* 不绑定序列化协议
-* 多协议暴露、同时支持单端口上的协议自动识别
-* 高性能实现:benchmark 图
+* 提供高性能通信协议实现
+* 支持流式通信模型
+* 不绑定序列化协议,
+* 支持单个服务的多协议暴露
+* 支持单端口多协议发布
 
 ![dubbo-rpc](/imgs/v3/concepts/rpc.png)
 
 ## Dubbo 服务治理
+只有服务开发框架还不够,要构建符合 12 要素的微服务应用,开发者还需要解决无状态服务节点动态变化、外部化配置、日志跟踪、可观测性、流量管理、高可用性等一系列问题。Dubbo 抽象了一套微服务治理模式并提供了一系列官方实现,用来帮助开发、运维简化微服务实践,更专注在微服务业务本身。
+
+Dubbo 提供的服务治理能力包括:
+
+* **服务发现**
+
+服务地址注册与发现是构建微服务体系的关键,Dubbo 默认提供 Nacos、Zookeeper 等注册中心并支持自定义扩展;Dubbo3 应用级服务发现模型解决 Dubbo2 规模瓶颈问题的同时,实现了与 Kubernetes Native Service 及 Spring Cloud 等微服务体系的互通。
+
+* **负载均衡**
+
+
+* **动态配置**
+
+
+
+* **流量路由**
+
+Dubbo 支持通过一系列流量规则控制服务与服务之间的流量分布与行为,基于这些规则可以实现基于权重流量分布、流量灰度验证、金丝雀发布、按请求参数的路由、超时、限流降级等能力。
+
+* **链路追踪**
+
+多维度的可观测指标(Metrics、Tracing、Access Logs)帮助了解服务运行状态,为持续定位、维护和优化服务提供依据,Admin 控制台帮助实现数据指标可视化展示
+
+* **服务网格**
 
-服务发现
-负载均衡
-动态配置
-流量路由
-链路追踪
-服务网格
+多种形态数据面支持,包括以 Thin SDK 模式与 Envoy 等一起部署或以 Proxyless 模式独立部署,所有模式均可以开源标准方式无缝接入 Istio、Consul 等服务治理体系。
 
+除此之外,Dubbo 生态体系还提供了对 API 网关、限流降级、数据一致性、认证鉴权等场景的支持。