From ea290779f7a88d12e421501e1429e78c580b263a Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Sun, 8 Oct 2023 11:50:06 +0800 Subject: [PATCH 01/69] Update docs structure for preview (#2830) --- content/zh-cn/overview/mannual/_index.md | 4 ++-- content/zh-cn/overview/quickstart/_index.md | 4 ++-- content/zh-cn/overview/tasks/_index.md | 2 +- content/zh-cn/overview/what/_index.md | 4 ++-- content/zh-cn/overview/{ => what}/core-features/_index.md | 1 + content/zh-cn/overview/{ => what}/core-features/ecosystem.md | 1 + .../zh-cn/overview/{ => what}/core-features/extensibility.md | 1 + .../zh-cn/overview/{ => what}/core-features/load-balance.md | 1 + content/zh-cn/overview/{ => what}/core-features/more.md | 1 + .../zh-cn/overview/{ => what}/core-features/observability.md | 1 + content/zh-cn/overview/{ => what}/core-features/protocols.md | 1 + content/zh-cn/overview/{ => what}/core-features/security.md | 1 + .../overview/{ => what}/core-features/service-definition.md | 1 + .../{ => what}/core-features/service-definition.md.bak | 0 .../overview/{ => what}/core-features/service-discovery.md | 1 + .../zh-cn/overview/{ => what}/core-features/service-mesh.md | 1 + .../zh-cn/overview/{ => what}/core-features/traffic/_index.md | 1 + .../{ => what}/core-features/traffic/circuit-breaking.md | 2 ++ .../{ => what}/core-features/traffic/condition-rule.md | 1 + .../{ => what}/core-features/traffic/configuration-rule.md | 1 + .../{ => what}/core-features/traffic/mesh-rule.md.bak | 0 .../overview/{ => what}/core-features/traffic/script-rule.md | 1 + .../overview/{ => what}/core-features/traffic/tag-rule.md | 1 + 23 files changed, 25 insertions(+), 7 deletions(-) rename content/zh-cn/overview/{ => what}/core-features/_index.md (80%) rename content/zh-cn/overview/{ => what}/core-features/ecosystem.md (98%) rename content/zh-cn/overview/{ => what}/core-features/extensibility.md (99%) rename content/zh-cn/overview/{ => what}/core-features/load-balance.md (99%) rename content/zh-cn/overview/{ => what}/core-features/more.md (97%) rename content/zh-cn/overview/{ => what}/core-features/observability.md (98%) rename content/zh-cn/overview/{ => what}/core-features/protocols.md (99%) rename content/zh-cn/overview/{ => what}/core-features/security.md (99%) rename content/zh-cn/overview/{ => what}/core-features/service-definition.md (98%) rename content/zh-cn/overview/{ => what}/core-features/service-definition.md.bak (100%) rename content/zh-cn/overview/{ => what}/core-features/service-discovery.md (99%) rename content/zh-cn/overview/{ => what}/core-features/service-mesh.md (99%) rename content/zh-cn/overview/{ => what}/core-features/traffic/_index.md (99%) rename content/zh-cn/overview/{ => what}/core-features/traffic/circuit-breaking.md (98%) rename content/zh-cn/overview/{ => what}/core-features/traffic/condition-rule.md (99%) rename content/zh-cn/overview/{ => what}/core-features/traffic/configuration-rule.md (98%) rename content/zh-cn/overview/{ => what}/core-features/traffic/mesh-rule.md.bak (100%) rename content/zh-cn/overview/{ => what}/core-features/traffic/script-rule.md (97%) rename content/zh-cn/overview/{ => what}/core-features/traffic/tag-rule.md (98%) diff --git a/content/zh-cn/overview/mannual/_index.md b/content/zh-cn/overview/mannual/_index.md index 3b6de506518d..eeebd335f2f0 100755 --- a/content/zh-cn/overview/mannual/_index.md +++ b/content/zh-cn/overview/mannual/_index.md @@ -4,12 +4,12 @@ aliases: - /zh/docs3-v2/ - /zh-cn/docs3-v2/ always_unfold: true -description: Dubbo SDK 用户手册 +description: Dubbo SDK 手册 feature: description: | 提供 Java、Golang、Rust、Node.js、Python 等多语言 SDK 实现,支持基于 IDL 的跨语言服务定义和基于 Protobuf、Json 的数据编码 title: 多语言 SDK -linkTitle: SDK 用户手册 +linkTitle: SDK 手册 no_list: true title: Dubbo SDK 用户手册 type: docs diff --git a/content/zh-cn/overview/quickstart/_index.md b/content/zh-cn/overview/quickstart/_index.md index de26b9216f95..f7b6d49f50e6 100755 --- a/content/zh-cn/overview/quickstart/_index.md +++ b/content/zh-cn/overview/quickstart/_index.md @@ -2,11 +2,11 @@ aliases: - /zh/overview/quickstart/ description: Dubbo 入门 -linkTitle: 入门 +linkTitle: 快速开始 no_list: true title: Dubbo 入门 type: docs -weight: 2 +weight: 3 --- diff --git a/content/zh-cn/overview/tasks/_index.md b/content/zh-cn/overview/tasks/_index.md index 2af26da6ba55..9b690e6de2a2 100755 --- a/content/zh-cn/overview/tasks/_index.md +++ b/content/zh-cn/overview/tasks/_index.md @@ -2,7 +2,7 @@ aliases: - /zh/overview/tasks/ description: "" -linkTitle: 任务 +linkTitle: 进阶学习 title: 跟随示例任务学习 Dubbo type: docs weight: 5 diff --git a/content/zh-cn/overview/what/_index.md b/content/zh-cn/overview/what/_index.md index bc462548b785..0f65325d258d 100644 --- a/content/zh-cn/overview/what/_index.md +++ b/content/zh-cn/overview/what/_index.md @@ -3,11 +3,11 @@ aliases: - /zh/overview/what/ description: "" hide_summary: true -linkTitle: 介绍 +linkTitle: 了解 Dubbo no_list: true title: Dubbo 介绍 type: docs -weight: 3 +weight: 2 --- diff --git a/content/zh-cn/overview/core-features/_index.md b/content/zh-cn/overview/what/core-features/_index.md similarity index 80% rename from content/zh-cn/overview/core-features/_index.md rename to content/zh-cn/overview/what/core-features/_index.md index 04b79971c1ae..39fca832de3b 100755 --- a/content/zh-cn/overview/core-features/_index.md +++ b/content/zh-cn/overview/what/core-features/_index.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/ + - /zh-cn/overview/core-features/ description: Dubbo 核心特性 linkTitle: 功能 title: Dubbo 核心特性 diff --git a/content/zh-cn/overview/core-features/ecosystem.md b/content/zh-cn/overview/what/core-features/ecosystem.md similarity index 98% rename from content/zh-cn/overview/core-features/ecosystem.md rename to content/zh-cn/overview/what/core-features/ecosystem.md index bbc0e7f8dbd7..dec12eb049c9 100644 --- a/content/zh-cn/overview/core-features/ecosystem.md +++ b/content/zh-cn/overview/what/core-features/ecosystem.md @@ -1,6 +1,7 @@ --- aliases: - /zh-cn/overview/what/ecosystem/ + - /zh-cn/overview/core-features/ecosystem/ description: 微服务生态 feature: description: | diff --git a/content/zh-cn/overview/core-features/extensibility.md b/content/zh-cn/overview/what/core-features/extensibility.md similarity index 99% rename from content/zh-cn/overview/core-features/extensibility.md rename to content/zh-cn/overview/what/core-features/extensibility.md index dd13e4cda213..38c1b3b9a5aa 100644 --- a/content/zh-cn/overview/core-features/extensibility.md +++ b/content/zh-cn/overview/what/core-features/extensibility.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/extensibility/ + - /zh-cn/overview/core-features/extensibility/ description: 扩展适配 feature: description: | diff --git a/content/zh-cn/overview/core-features/load-balance.md b/content/zh-cn/overview/what/core-features/load-balance.md similarity index 99% rename from content/zh-cn/overview/core-features/load-balance.md rename to content/zh-cn/overview/what/core-features/load-balance.md index 5392d2eb5aa8..fb888d68931c 100644 --- a/content/zh-cn/overview/core-features/load-balance.md +++ b/content/zh-cn/overview/what/core-features/load-balance.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/load-balance/ + - /zh-cn/overview/core-features/load-balance/ description: 负载均衡 linkTitle: 负载均衡 title: 负载均衡 diff --git a/content/zh-cn/overview/core-features/more.md b/content/zh-cn/overview/what/core-features/more.md similarity index 97% rename from content/zh-cn/overview/core-features/more.md rename to content/zh-cn/overview/what/core-features/more.md index b1bb6cfc01fa..17f44509b4e3 100644 --- a/content/zh-cn/overview/core-features/more.md +++ b/content/zh-cn/overview/what/core-features/more.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/more/ + - /zh-cn/overview/core-features/more/ description: 高级功能指南 linkTitle: 更多高级功能 title: 更多高级功能 diff --git a/content/zh-cn/overview/core-features/observability.md b/content/zh-cn/overview/what/core-features/observability.md similarity index 98% rename from content/zh-cn/overview/core-features/observability.md rename to content/zh-cn/overview/what/core-features/observability.md index c61cfe430ca9..230bae6d754e 100644 --- a/content/zh-cn/overview/core-features/observability.md +++ b/content/zh-cn/overview/what/core-features/observability.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/observability/ + - /zh-cn/overview/core-features/observability/ description: 观测服务 feature: description: | diff --git a/content/zh-cn/overview/core-features/protocols.md b/content/zh-cn/overview/what/core-features/protocols.md similarity index 99% rename from content/zh-cn/overview/core-features/protocols.md rename to content/zh-cn/overview/what/core-features/protocols.md index 9ea8d86242f6..169e6215f4e8 100644 --- a/content/zh-cn/overview/core-features/protocols.md +++ b/content/zh-cn/overview/what/core-features/protocols.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/protocols/ + - /zh-cn/overview/core-features/protocols/ description: 通信协议 feature: description: | diff --git a/content/zh-cn/overview/core-features/security.md b/content/zh-cn/overview/what/core-features/security.md similarity index 99% rename from content/zh-cn/overview/core-features/security.md rename to content/zh-cn/overview/what/core-features/security.md index dbc8052372e9..cc133bf260de 100644 --- a/content/zh-cn/overview/core-features/security.md +++ b/content/zh-cn/overview/what/core-features/security.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/security/ + - /zh-cn/overview/core-features/security/ description: 认证鉴权 feature: description: | diff --git a/content/zh-cn/overview/core-features/service-definition.md b/content/zh-cn/overview/what/core-features/service-definition.md similarity index 98% rename from content/zh-cn/overview/core-features/service-definition.md rename to content/zh-cn/overview/what/core-features/service-definition.md index 9de24816ae92..907564b35f0e 100644 --- a/content/zh-cn/overview/core-features/service-definition.md +++ b/content/zh-cn/overview/what/core-features/service-definition.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/service-definition/ + - /zh-cn/overview/core-features/service-definition/ description: 微服务开发 linkTitle: 微服务开发 title: 微服务开发 diff --git a/content/zh-cn/overview/core-features/service-definition.md.bak b/content/zh-cn/overview/what/core-features/service-definition.md.bak similarity index 100% rename from content/zh-cn/overview/core-features/service-definition.md.bak rename to content/zh-cn/overview/what/core-features/service-definition.md.bak diff --git a/content/zh-cn/overview/core-features/service-discovery.md b/content/zh-cn/overview/what/core-features/service-discovery.md similarity index 99% rename from content/zh-cn/overview/core-features/service-discovery.md rename to content/zh-cn/overview/what/core-features/service-discovery.md index a5f904a24f91..68e45c3f2288 100644 --- a/content/zh-cn/overview/core-features/service-discovery.md +++ b/content/zh-cn/overview/what/core-features/service-discovery.md @@ -2,6 +2,7 @@ aliases: - /zh/overview/core-features/service-discovery/ - /zh-cn/overview/mannual/java-sdk/concepts-and-architecture/service-discovery/ + - /zh-cn/overview/core-features/service-discovery/ description: 服务发现 feature: description: | diff --git a/content/zh-cn/overview/core-features/service-mesh.md b/content/zh-cn/overview/what/core-features/service-mesh.md similarity index 99% rename from content/zh-cn/overview/core-features/service-mesh.md rename to content/zh-cn/overview/what/core-features/service-mesh.md index d92e94b4a1e7..a122d05b81ee 100644 --- a/content/zh-cn/overview/core-features/service-mesh.md +++ b/content/zh-cn/overview/what/core-features/service-mesh.md @@ -2,6 +2,7 @@ aliases: - /zh/overview/core-features/service-mesh/ - /zh-cn/overview/mannual/java-sdk/concepts-and-architecture/mesh/ + - /zh-cn/overview/core-features/service-mesh/ description: 服务网格 feature: description: | diff --git a/content/zh-cn/overview/core-features/traffic/_index.md b/content/zh-cn/overview/what/core-features/traffic/_index.md similarity index 99% rename from content/zh-cn/overview/core-features/traffic/_index.md rename to content/zh-cn/overview/what/core-features/traffic/_index.md index 9a35369dd502..5f8e84925c9d 100755 --- a/content/zh-cn/overview/core-features/traffic/_index.md +++ b/content/zh-cn/overview/what/core-features/traffic/_index.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/traffic/ + - /zh-cn/overview/core-features/traffic/ description: 流量管控 feature: description: | diff --git a/content/zh-cn/overview/core-features/traffic/circuit-breaking.md b/content/zh-cn/overview/what/core-features/traffic/circuit-breaking.md similarity index 98% rename from content/zh-cn/overview/core-features/traffic/circuit-breaking.md rename to content/zh-cn/overview/what/core-features/traffic/circuit-breaking.md index 4b1444cd9955..24d0af733f62 100644 --- a/content/zh-cn/overview/core-features/traffic/circuit-breaking.md +++ b/content/zh-cn/overview/what/core-features/traffic/circuit-breaking.md @@ -1,4 +1,6 @@ --- +aliases: + - /zh-cn/overview/core-features/traffic/circuit-breaking/ description: "" linkTitle: 限流 & 熔断 title: 限流 & 熔断 diff --git a/content/zh-cn/overview/core-features/traffic/condition-rule.md b/content/zh-cn/overview/what/core-features/traffic/condition-rule.md similarity index 99% rename from content/zh-cn/overview/core-features/traffic/condition-rule.md rename to content/zh-cn/overview/what/core-features/traffic/condition-rule.md index 618f0c09b4b5..8856c1c892fa 100644 --- a/content/zh-cn/overview/core-features/traffic/condition-rule.md +++ b/content/zh-cn/overview/what/core-features/traffic/condition-rule.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/traffic/condition-rule/ + - /zh-cn/overview/core-features/traffic/condition-rule/ description: "" linkTitle: 条件路由 title: 条件路由规则 diff --git a/content/zh-cn/overview/core-features/traffic/configuration-rule.md b/content/zh-cn/overview/what/core-features/traffic/configuration-rule.md similarity index 98% rename from content/zh-cn/overview/core-features/traffic/configuration-rule.md rename to content/zh-cn/overview/what/core-features/traffic/configuration-rule.md index dd58e2911b5a..0eec2d23e523 100644 --- a/content/zh-cn/overview/core-features/traffic/configuration-rule.md +++ b/content/zh-cn/overview/what/core-features/traffic/configuration-rule.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/traffic/configuration-rule/ + - /zh-cn/overview/core-features/traffic/configuration-rule/ description: "" linkTitle: 动态配置 title: 动态配置规则 diff --git a/content/zh-cn/overview/core-features/traffic/mesh-rule.md.bak b/content/zh-cn/overview/what/core-features/traffic/mesh-rule.md.bak similarity index 100% rename from content/zh-cn/overview/core-features/traffic/mesh-rule.md.bak rename to content/zh-cn/overview/what/core-features/traffic/mesh-rule.md.bak diff --git a/content/zh-cn/overview/core-features/traffic/script-rule.md b/content/zh-cn/overview/what/core-features/traffic/script-rule.md similarity index 97% rename from content/zh-cn/overview/core-features/traffic/script-rule.md rename to content/zh-cn/overview/what/core-features/traffic/script-rule.md index 63c43b48ccf7..96cf57f40340 100644 --- a/content/zh-cn/overview/core-features/traffic/script-rule.md +++ b/content/zh-cn/overview/what/core-features/traffic/script-rule.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/traffic/script-rule/ + - /zh-cn/overview/core-features/traffic/script-rule/ description: "" linkTitle: 脚本路由 title: 脚本路由规则 diff --git a/content/zh-cn/overview/core-features/traffic/tag-rule.md b/content/zh-cn/overview/what/core-features/traffic/tag-rule.md similarity index 98% rename from content/zh-cn/overview/core-features/traffic/tag-rule.md rename to content/zh-cn/overview/what/core-features/traffic/tag-rule.md index 8d36a5fbaf59..6e382f401106 100644 --- a/content/zh-cn/overview/core-features/traffic/tag-rule.md +++ b/content/zh-cn/overview/what/core-features/traffic/tag-rule.md @@ -1,6 +1,7 @@ --- aliases: - /zh/overview/core-features/traffic/tag-rule/ + - /zh-cn/overview/core-features/traffic/tag-rule/ description: "" linkTitle: 标签路由 title: 标签路由规则 From 4178b55baedf49443619b048484c47bb892924bf Mon Sep 17 00:00:00 2001 From: Ken Liu Date: Mon, 30 Oct 2023 11:13:35 +0800 Subject: [PATCH 02/69] Add go doc (#2848) --- content/en/blog/proposals/_index.md | 5 + .../en/blog/proposals/service-discovery.md | 5 + content/en/blog/security-notices/_index.md | 9 + .../security-notices}/security.md | 0 .../serialization-security.md | 20 + content/en/docs/notices/_index.md | 9 - content/en/docs3-v2/_index.md | 1 - content/en/docs3-v2/rust-sdk/protocol.md | 7 + .../en/overview/core-features/ecosystem.md | 46 +- .../overview/core-features/extensibility.md | 105 +++- .../en/overview/core-features/load-balance.md | 65 ++- content/en/overview/core-features/more.md | 71 ++- .../overview/core-features/observability.md | 46 +- .../en/overview/core-features/protocols.md | 92 +++- content/en/overview/core-features/security.md | 93 +++- .../core-features/service-definition.md | 149 +++++- .../core-features/service-discovery.md | 57 +++ .../en/overview/core-features/service-mesh.md | 81 ++- content/en/overview/quickstart/go.md | 6 + content/en/overview/quickstart/rust.md | 6 + content/zh-cn/_index.html | 20 +- .../blog/integration/dubbo-graalvm-support.md | 4 +- content/zh-cn/overview/mannual/_index.md | 18 +- .../overview/mannual/dubbo-go-pixiu/_index.md | 10 - .../mannual/golang-sdk/introduction.md | 122 +++++ .../mannual/golang-sdk/preface/_index.md | 18 - .../golang-sdk/preface/concept/_index.md | 10 - .../preface/concept/multi_language.md | 29 -- .../golang-sdk/preface/concept/protocol.md | 117 ----- .../golang-sdk/preface/concept/registry.md | 95 ---- .../golang-sdk/preface/design/_index.md | 10 - .../mannual/golang-sdk/preface/samples.md | 184 ------- .../overview/mannual/golang-sdk/quickstart.md | 244 +++++++++ .../mannual/golang-sdk/quickstart/_index.md | 10 - .../mannual/golang-sdk/quickstart/install.md | 58 --- .../quickstart/quickstart_triple.md | 137 ------ .../quickstart_triple_with_customize.md | 221 --------- .../mannual/golang-sdk/refer/_index.md | 4 +- .../mannual/golang-sdk/refer/basic_concept.md | 42 -- .../golang-sdk/refer/compatible_version.md | 23 - .../mannual/golang-sdk/refer/ecology.md | 45 +- .../{preface/concept => refer}/generic.md | 10 +- .../sourcecode}/3.0_feature.md | 1 + .../{ => refer}/sourcecode/_index.md | 0 .../sourcecode}/aop_and_extension.md | 1 + .../sourcecode}/app_and_interface.md | 1 + .../sourcecode}/architecture.md | 1 + .../sourcecode}/generic-2.md | 0 .../features => refer/sourcecode}/generic.md | 0 .../{ => refer}/sourcecode/protocol.md | 0 .../{ => refer}/sourcecode/registry.md | 0 .../golang-sdk/refer/use_dubbogo_cli.md | 10 +- .../golang-sdk/tutorial/debugging/grpc_cli.md | 84 ---- .../golang-sdk/tutorial/deployment/_index.md | 9 - .../tutorial/deployment/docker/_index.md | 9 - .../tutorial/deployment/kubernetes/_index.md | 9 - .../tutorial/deployment/practice/_index.md | 9 - .../golang-sdk/tutorial/develop/_index.md | 9 - .../tutorial/develop/config-center/_index.md | 9 - .../tutorial/develop/features/_index.md | 9 - .../tutorial/develop/features/context.md | 23 - .../tutorial/develop/interflow/_index.md | 9 - .../tutorial/develop/protocol/_index.md | 9 - .../develop/protocol/choose_protocol.md | 239 --------- .../tutorial/develop/protocol/error.md | 131 ----- .../develop/protocol/exception_response.md | 124 ----- .../tutorial/develop/registry/_index.md | 9 - .../golang-sdk/tutorial/develop/template.md | 96 ---- .../config.md => tutorial/file/_index.md} | 43 +- .../config-center-dynamic.md | 0 .../{develop/features => file}/config_api.md | 0 .../{develop/config-center => file}/desc.md | 0 .../config-center => file}/remote_config.md | 0 .../golang-sdk/tutorial/governance/_index.md | 9 - .../tutorial/governance/features/_index.md | 9 - .../tutorial/governance/features/aop.md | 73 --- .../tutorial/governance/health/_index.md | 9 - .../tutorial/governance/monitor/_index.md | 9 - .../governance/monitor/grafana/_index.md | 9 - .../governance/monitor/http/_index.md | 9 - .../governance/monitor/logger/_index.md | 9 - .../governance/monitor/promethus/_index.md | 9 - .../tutorial/governance/tracing/_index.md | 9 - .../governance/tracing/jaeger/_index.md | 9 - .../tracing/opentelmentry/_index.md | 9 - .../governance/tracing/skywalking/_index.md | 9 - .../tutorial/governance/traffic/_index.md | 9 - .../{debugging => healthcheck}/_index.md | 6 +- .../health => healthcheck}/kubernetes.md | 0 .../health => healthcheck}/start-check.md | 0 .../triple-health-check.md | 0 .../tutorial/interop-dubbo/_index.md | 9 + .../interflow => interop-dubbo}/call_java.md | 0 .../tutorial/interop-grpc/_index.md | 9 + .../interflow => interop-grpc}/call_grpc.md | 0 .../tutorial/observability/_index.md | 9 + .../monitor => observability}/metrics.md | 0 .../monitor => observability}/rpc_metrics.md | 0 .../mannual/golang-sdk/tutorial/rpc/_index.md | 9 + .../golang-sdk/tutorial/rpc/attachments.md | 6 + .../custom-filter.md => rpc/filter.md} | 68 ++- .../custom-logger.md => rpc/logger.md} | 13 +- .../golang-sdk/tutorial/rpc/protocol.md | 461 ++++++++++++++++++ .../mannual/golang-sdk/tutorial/rpc/retry.md | 6 + .../golang-sdk/tutorial/rpc/serialization.md | 6 + .../golang-sdk/tutorial/rpc/streaming.md | 6 + .../{governance/features => rpc}/timeout.md | 12 +- .../tutorial/service-discovery/_index.md | 9 + .../registry => service-discovery}/desc.md | 0 .../multi_registry.md | 0 .../registry => service-discovery}/nacos-2.md | 0 .../registry => service-discovery}/nacos.md | 0 .../registry => service-discovery}/polaris.md | 0 .../registry.md | 0 .../service-discovery.md | 0 .../zookeeper.md | 0 .../{governance => }/service-mesh/_index.md | 0 .../{governance => }/service-mesh/deploy.md | 0 .../{governance => }/service-mesh/istio.md | 0 .../service-mesh/pixiu/_index.md | 0 .../service-mesh/pixiu/http_triple.md | 0 .../service-mesh/pixiu/pixiu-nacos-triple.md | 0 .../service-mesh/proxyless_service_mesh.md | 0 .../service-mesh/traffic_management.md | 0 .../golang-sdk/tutorial/tracing/_index.md | 9 + .../golang-sdk/tutorial/traffic/_index.md | 9 + .../traffic/graceful_shutdown.md | 0 .../{governance => traffic}/limit/_index.md | 0 .../limit/adaptive-service.md | 0 .../limit/internally/_index.md | 0 .../limit/polaris/_index.md | 0 .../limit/sentinel/_index.md | 0 .../limit/tps_limiter.md | 0 .../{governance => }/traffic/mesh_router.md | 0 .../overview/mannual/golang-sdk/versions.md | 40 ++ .../mannual/java-sdk/quick-start/idl.md | 2 +- .../overview/mannual/nodejs-sdk/_index.md | 7 + .../mannual/nodejs-sdk/quick-start.md | 186 +++++++ .../zh-cn/overview/mannual/rust-sdk/_index.md | 2 +- .../overview/mannual/rust-sdk/quick-start.md | 34 +- .../zh-cn/overview/mannual/web-sdk/_index.md | 7 + .../overview/mannual/web-sdk/quick-start.md | 267 ++++++++++ .../overview/quickstart/java/spring-boot.md | 2 +- .../erlang-sdk/_index.md | 3 +- .../erlang-sdk/quick-start.md | 6 +- .../erlang-sdk/reference.md | 1 + .../erlang-sdk/serialization.md | 1 + .../erlang-sdk/service.md | 1 + .../zh-cn/overview/reference/pixiu/_index.md | 11 + .../pixiu}/dev/_index.md | 3 +- .../pixiu}/dev/dubbo-pilot.md | 1 + .../pixiu}/dev/filter-extension.md | 1 + .../pixiu}/dev/trie.md | 1 + .../pixiu}/overview/_index.md | 1 + .../pixiu}/overview/faq.md | 1 + .../pixiu}/overview/terminology.md | 1 + .../pixiu}/overview/what-is-pixiu.md | 1 + .../pixiu}/user/_index.md | 1 + .../pixiu}/user/adapter/_index.md | 1 + .../pixiu}/user/adapter/dubbo.md | 1 + .../pixiu}/user/adapter/springcloud.md | 1 + .../pixiu}/user/appendix/_index.md | 1 + .../http-to-dubbo-default-stragety.md | 1 + .../pixiu}/user/configurations.md | 1 + .../pixiu}/user/deployment.md | 1 + .../pixiu}/user/httpfilter/_index.md | 1 + .../pixiu}/user/httpfilter/dubbo.md | 1 + .../pixiu}/user/httpfilter/hystrix.md | 1 + .../pixiu}/user/httpfilter/ratelimit.md | 1 + .../pixiu}/user/listener/_index.md | 1 + .../pixiu}/user/listener/http.md | 1 + .../pixiu}/user/listener/http2.md | 1 + .../pixiu}/user/listener/tcp.md | 1 + .../pixiu}/user/listener/triple.md | 1 + .../pixiu}/user/networkfilter/_index.md | 1 + .../pixiu}/user/networkfilter/dubbo.md | 1 + .../pixiu}/user/networkfilter/grpc.md | 1 + .../pixiu}/user/networkfilter/http.md | 1 + .../pixiu}/user/quality/_index.md | 1 + .../pixiu}/user/quality/performance.md | 1 + .../pixiu}/user/quality/stability.md | 1 + .../pixiu}/user/quickstart.md | 1 + .../pixiu}/user/samples/_index.md | 1 + .../pixiu}/user/samples/http_proxy.md | 1 + .../pixiu}/user/samples/http_to_dubbo.md | 1 + .../pixiu}/user/samples/https.md | 1 + .../overview/reference/protoc-installation.md | 73 +++ content/zh-cn/overview/what/_index.md | 2 +- .../core-features/traffic/condition-rule.md | 2 +- data/download/en/1javaReleases.yaml | 11 +- data/download/zh/1javaReleases.yaml | 11 +- static/imgs/golang/architecture/arc.png | Bin 0 -> 2068065 bytes static/imgs/golang/architecture/filter.png | Bin 0 -> 1317083 bytes static/imgs/golang/architecture/language.png | Bin 0 -> 1357725 bytes static/imgs/golang/architecture/protocol.png | Bin 0 -> 360649 bytes static/imgs/golang/architecture/streaming.png | Bin 0 -> 110886 bytes 196 files changed, 2576 insertions(+), 2117 deletions(-) create mode 100644 content/en/blog/proposals/_index.md create mode 100644 content/en/blog/proposals/service-discovery.md create mode 100644 content/en/blog/security-notices/_index.md rename content/en/{docs/notices => blog/security-notices}/security.md (100%) mode change 100755 => 100644 create mode 100644 content/en/blog/security-notices/serialization-security.md delete mode 100755 content/en/docs/notices/_index.md create mode 100644 content/en/docs3-v2/rust-sdk/protocol.md create mode 100644 content/en/overview/quickstart/go.md create mode 100644 content/en/overview/quickstart/rust.md delete mode 100755 content/zh-cn/overview/mannual/dubbo-go-pixiu/_index.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/introduction.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/concept/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/concept/multi_language.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/concept/protocol.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/concept/registry.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/design/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/preface/samples.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/quickstart.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/quickstart/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/quickstart/install.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple_with_customize.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/refer/basic_concept.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/refer/compatible_version.md rename content/zh-cn/overview/mannual/golang-sdk/{preface/concept => refer}/generic.md (96%) rename content/zh-cn/overview/mannual/golang-sdk/{preface => refer/sourcecode}/3.0_feature.md (97%) rename content/zh-cn/overview/mannual/golang-sdk/{ => refer}/sourcecode/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/{preface/design => refer/sourcecode}/aop_and_extension.md (98%) rename content/zh-cn/overview/mannual/golang-sdk/{preface/design => refer/sourcecode}/app_and_interface.md (97%) rename content/zh-cn/overview/mannual/golang-sdk/{preface/design => refer/sourcecode}/architecture.md (93%) rename content/zh-cn/overview/mannual/golang-sdk/{tutorial/develop/features => refer/sourcecode}/generic-2.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/{tutorial/develop/features => refer/sourcecode}/generic.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/{ => refer}/sourcecode/protocol.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/{ => refer}/sourcecode/registry.md (100%) delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/grpc_cli.md delete mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/docker/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/kubernetes/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/practice/_index.md delete mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/context.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/choose_protocol.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/error.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/exception_response.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/template.md rename content/zh-cn/overview/mannual/golang-sdk/{refer/config.md => tutorial/file/_index.md} (74%) mode change 100644 => 100755 rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/config-center => file}/config-center-dynamic.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/features => file}/config_api.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/config-center => file}/desc.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/config-center => file}/remote_config.md (100%) delete mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/aop.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/grafana/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/http/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/logger/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/promethus/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/jaeger/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/opentelmentry/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/skywalking/_index.md delete mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{debugging => healthcheck}/_index.md (66%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/health => healthcheck}/kubernetes.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/health => healthcheck}/start-check.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/health => healthcheck}/triple-health-check.md (100%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/interflow => interop-dubbo}/call_java.md (100%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/interflow => interop-grpc}/call_grpc.md (100%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/monitor => observability}/metrics.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/monitor => observability}/rpc_metrics.md (100%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/_index.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/attachments.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/features/custom-filter.md => rpc/filter.md} (68%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/features/custom-logger.md => rpc/logger.md} (92%) create mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/protocol.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/retry.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/serialization.md create mode 100644 content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/streaming.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance/features => rpc}/timeout.md (87%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/desc.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/multi_registry.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/nacos-2.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/nacos.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/polaris.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/registry.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/service-discovery.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{develop/registry => service-discovery}/zookeeper.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/deploy.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/istio.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/pixiu/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/pixiu/http_triple.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/pixiu/pixiu-nacos-triple.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/proxyless_service_mesh.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/service-mesh/traffic_management.md (100%) create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/tracing/_index.md create mode 100755 content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/_index.md rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/traffic/graceful_shutdown.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/adaptive-service.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/internally/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/polaris/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/sentinel/_index.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => traffic}/limit/tps_limiter.md (100%) rename content/zh-cn/overview/mannual/golang-sdk/tutorial/{governance => }/traffic/mesh_router.md (100%) create mode 100644 content/zh-cn/overview/mannual/golang-sdk/versions.md create mode 100755 content/zh-cn/overview/mannual/nodejs-sdk/_index.md create mode 100644 content/zh-cn/overview/mannual/nodejs-sdk/quick-start.md create mode 100755 content/zh-cn/overview/mannual/web-sdk/_index.md create mode 100644 content/zh-cn/overview/mannual/web-sdk/quick-start.md rename content/zh-cn/overview/{mannual => reference}/erlang-sdk/_index.md (76%) rename content/zh-cn/overview/{mannual => reference}/erlang-sdk/quick-start.md (97%) rename content/zh-cn/overview/{mannual => reference}/erlang-sdk/reference.md (91%) rename content/zh-cn/overview/{mannual => reference}/erlang-sdk/serialization.md (92%) rename content/zh-cn/overview/{mannual => reference}/erlang-sdk/service.md (94%) create mode 100755 content/zh-cn/overview/reference/pixiu/_index.md rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/dev/_index.md (59%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/dev/dubbo-pilot.md (99%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/dev/filter-extension.md (97%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/dev/trie.md (99%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/overview/_index.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/overview/faq.md (91%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/overview/terminology.md (94%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/overview/what-is-pixiu.md (97%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/_index.md (79%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/adapter/_index.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/adapter/dubbo.md (80%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/adapter/springcloud.md (80%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/appendix/_index.md (76%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/appendix/http-to-dubbo-default-stragety.md (99%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/configurations.md (98%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/deployment.md (97%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/httpfilter/_index.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/httpfilter/dubbo.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/httpfilter/hystrix.md (79%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/httpfilter/ratelimit.md (80%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/listener/_index.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/listener/http.md (95%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/listener/http2.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/listener/tcp.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/listener/triple.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/networkfilter/_index.md (79%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/networkfilter/dubbo.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/networkfilter/grpc.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/networkfilter/http.md (87%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/quality/_index.md (77%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/quality/performance.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/quality/stability.md (78%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/quickstart.md (98%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/samples/_index.md (77%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/samples/http_proxy.md (96%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/samples/http_to_dubbo.md (81%) rename content/zh-cn/overview/{mannual/dubbo-go-pixiu => reference/pixiu}/user/samples/https.md (80%) create mode 100644 content/zh-cn/overview/reference/protoc-installation.md create mode 100644 static/imgs/golang/architecture/arc.png create mode 100644 static/imgs/golang/architecture/filter.png create mode 100644 static/imgs/golang/architecture/language.png create mode 100644 static/imgs/golang/architecture/protocol.png create mode 100644 static/imgs/golang/architecture/streaming.png diff --git a/content/en/blog/proposals/_index.md b/content/en/blog/proposals/_index.md new file mode 100644 index 000000000000..343d1fd08c94 --- /dev/null +++ b/content/en/blog/proposals/_index.md @@ -0,0 +1,5 @@ +--- +title: "Proposals About Apache Dubbo" +linkTitle: "Proposals" +weight: 20 +--- \ No newline at end of file diff --git a/content/en/blog/proposals/service-discovery.md b/content/en/blog/proposals/service-discovery.md new file mode 100644 index 000000000000..05cb1a4851ac --- /dev/null +++ b/content/en/blog/proposals/service-discovery.md @@ -0,0 +1,5 @@ +--- +title: "Application-Level Service Discovery" +description: > + The Application-Level Service Discovery +--- \ No newline at end of file diff --git a/content/en/blog/security-notices/_index.md b/content/en/blog/security-notices/_index.md new file mode 100644 index 000000000000..494cef2bc957 --- /dev/null +++ b/content/en/blog/security-notices/_index.md @@ -0,0 +1,9 @@ + +--- +type: docs +title: "Security notices" +linkTitle: "Security notices" +description: "Dubbo security notices" +weight: 90 +--- + diff --git a/content/en/docs/notices/security.md b/content/en/blog/security-notices/security.md old mode 100755 new mode 100644 similarity index 100% rename from content/en/docs/notices/security.md rename to content/en/blog/security-notices/security.md diff --git a/content/en/blog/security-notices/serialization-security.md b/content/en/blog/security-notices/serialization-security.md new file mode 100644 index 000000000000..1ce62dba5005 --- /dev/null +++ b/content/en/blog/security-notices/serialization-security.md @@ -0,0 +1,20 @@ +--- +title: "Serialization Protocol Security" +linkTitle: "Serialization Protocol Security" +weight: 1 +tags: ["Security Vulnerabilities"] +description: "Safer use of serialization protocols in Dubbo" +--- + +Dubbo 3 has enhanced the security aspects of serialization protocols and recommends using the Triple protocol in non-Wrapper mode. This protocol is secure by default but requires developers to write IDL files. + +In the Triple protocol's Wrapper mode, compatibility with other serialization data is allowed, offering good compatibility. However, other protocols may have deserialization security flaws. For the Hessian2 protocol, users who require high-security attributes should enable whitelist mode according to the sample code. The framework will enable blacklist mode by default to block malicious calls. + +Using other serialization protocols is not recommended. When an attacker can access the Provider interface, security flaws in other serialization protocols may lead to command execution through the Provider interface. + +If you must use other serialization protocols and wish to maintain some level of security, you should enable the Token authentication mechanism. This will prevent threats to the Provider's security from unauthenticated and untrusted request sources. When enabling Token authentication, you should also enable the authentication feature in the registry. + +## Notice +The following serializations are proved that not safe enough to transfer on network and not recommend to use. +- native-hessian +- native-java (Java ObjectOutputStream and ObjectInputStream) diff --git a/content/en/docs/notices/_index.md b/content/en/docs/notices/_index.md deleted file mode 100755 index a9a433305c47..000000000000 --- a/content/en/docs/notices/_index.md +++ /dev/null @@ -1,9 +0,0 @@ - ---- -type: docs -title: "Notices" -linkTitle: "Notices" -description: "Dubbo notices" -weight: 90 ---- - diff --git a/content/en/docs3-v2/_index.md b/content/en/docs3-v2/_index.md index 4a5694e41acd..d96137280d9e 100755 --- a/content/en/docs3-v2/_index.md +++ b/content/en/docs3-v2/_index.md @@ -1,4 +1,3 @@ - --- type: docs title: "SDK Manual" diff --git a/content/en/docs3-v2/rust-sdk/protocol.md b/content/en/docs3-v2/rust-sdk/protocol.md new file mode 100644 index 000000000000..bda0867b09f7 --- /dev/null +++ b/content/en/docs3-v2/rust-sdk/protocol.md @@ -0,0 +1,7 @@ +--- +type: docs +title: "Network Protocol" +linkTitle: "Network Protocol" +weight: 3 +description: "Network Protocol" +--- \ No newline at end of file diff --git a/content/en/overview/core-features/ecosystem.md b/content/en/overview/core-features/ecosystem.md index a2280ede6235..fe04fcbf10dd 100644 --- a/content/en/overview/core-features/ecosystem.md +++ b/content/en/overview/core-features/ecosystem.md @@ -1,11 +1,43 @@ --- +description: Microservices Ecosystem +feature: + description: | + One-stop microservice ecosystem adaptation: service registry, gateway, rate limiting and fallback, load balancing, consistent transactions, asynchronous messaging, tracing, and more. + title: Rich Ecosystem +linkTitle: Microservices Ecosystem +title: Microservices Ecosystem type: docs -title: "微服务生态" -linkTitle: "微服务生态" weight: 90 -description: "" -feature: - title: Ecosystem - description: > - One-stop microservice ecological adaptation: registration center, gateway, current limiting and downgrading, load balancing, consistent transactions, asynchronous messages, Tracing, etc. --- + +The Dubbo community, along with numerous outstanding open-source projects, has established a rich microservices ecosystem support around Dubbo. This allows developers to opt for Dubbo as their development framework without worrying about subsequent service governance needs. From day one, Dubbo offers production-level solutions for every common issue. + +The table below shows the support for ecosystem components based on the latest Dubbo Java 3.2.x version, which will be continuously updated based on development progress. The completeness of components supported in each language may vary. For specifics, please refer to the detailed explanations in each [language reference manual](../../mannual/). + + + +| Feature | Component List | Component List | Component List | Component List | Component List | +|-------------------------------------|------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------| +| Service Discovery | [Zookeeper](/en/docs3-v2/java-sdk/reference-manual/registry/zookeeper/) | [Nacos](/en/docs3-v2/java-sdk/reference-manual/registry/nacos/) | [Kubernetes Service](/) | DNS​``oaicite:{"number":1,"invalid_reason":"Malformed citation 【Under Development】"}``​ | [More](https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-registry-extensions) | +| Dynamic Configuration | [Zookeeper](/en/docs3-v2/java-sdk/reference-manual/config-center/zookeeper/) | [Nacos](/en/docs3-v2/java-sdk/reference-manual/config-center/nacos/) | [Apollo](/en/docs3-v2/java-sdk/reference-manual/config-center/apollo/) | Kubernetes​``oaicite:{"number":2,"invalid_reason":"Malformed citation 【Under Development】"}``​ | [More](https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-configcenter-extensions) | +| Metadata Management | [Zookeeper](/en/docs3-v2/java-sdk/reference-manual/metadata-center/zookeeper/) | [Nacos](/en/docs3-v2/java-sdk/reference-manual/metadata-center/nacos/) | [Redis](/zh-cn/overview/mannual/java-sdk/reference-manual/metadata-center/redis/) | Kubernetes​``oaicite:{"number":3,"invalid_reason":"Malformed citation 【Under Development】"}``​ | [More](https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-metadata-report-extensions) | +| RPC Protocols | [HTTP/2 (Triple)](/en/docs3-v2/java-sdk/reference-manual/protocol/triple/) | [TCP](/zh-cn/overview/reference/protocols/tcp/) | [HTTP/REST​``oaicite:{"number":4,"invalid_reason":"Malformed citation 【Alpha】"}``​](/en/docs3-v2/java-sdk/reference-manual/protocol/http) | [gRPC](/en/docs3-v2/java-sdk/reference-manual/protocol/triple) | [More](/en/docs3-v2/java-sdk/reference-manual/protocol/) | +| Visualization & Monitoring Platform | [Admin](/zh-cn/overview/tasks/observability/admin/) | [Grafana](/zh-cn/overview/tasks/observability/grafana/) | [Prometheus](/zh-cn/overview/tasks/observability/prometheus/) | - | - | +| Full-link Tracing | [Zipkin](/zh-cn/overview/tasks/observability/tracing/zipkin/) | [Skywalking](/zh-cn/overview/tasks/observability/tracing/skywalking/) | [OpenTelemetry](https://github.com/apache/dubbo-samples/tree/master/4-governance/dubbo-samples-spring-boot3-tracing#2-adding-micrometer-tracing-bridge-to-your-project) | - | - | +| Rate Limiting & Fallback | [Sentinel](/zh-cn/overview/tasks/rate-limit/sentinel) | [Resilience4j](/zh-cn/overview/tasks/rate-limit/resilience4j) | [Hystrix](/zh-cn/overview/tasks/rate-limit/hystrix) | - | - | +| Distributed Transactions | [Seata](/en/overview/tasks/ecosystem/transaction/) | - | - | - | - | +| Gateway | [Higress] | [APISIX](/zh-cn/overview/tasks/ecosystem/gateway/) | [Shenyu] | [Envoy](https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/dubbo_proxy_filter) | - | +| Service Mesh | Istio​``oaicite:{"number":5,"invalid_reason":"Malformed citation 【Under Development】"}``​ | [Aeraka](https://www.aeraki.net/) | OpenSergo​``oaicite:{"number":6,"invalid_reason":"Malformed citation 【Under Development】"}``​ | Proxyless​``oaicite:{"number":7,"invalid_reason":"Malformed citation 【Alpha】"}``​ | More | + + +## Microservices Ecosystem Example Architecture + +{{< mse >}} + +{{< blocks/section color="white" height="auto" >}} +
+
+
+
+
+{{< /blocks/section >}} diff --git a/content/en/overview/core-features/extensibility.md b/content/en/overview/core-features/extensibility.md index 20c5960528b3..61b755a000fd 100644 --- a/content/en/overview/core-features/extensibility.md +++ b/content/en/overview/core-features/extensibility.md @@ -1,11 +1,102 @@ --- +description: Extensibility Adaptation +feature: + description: | + Everything is extendable. Customize behaviors of invocation and management (like Filters, Routers, Service Discovery, Configuration, etc.) to adapt to the open-source microservices ecosystem. + title: Extensibility +linkTitle: Extensibility Adaptation +title: Extensibility Adaptation type: docs -title: "扩展适配" -linkTitle: "扩展适配" weight: 50 -description: "" -feature: - title: Extensibility - description: > - All key microservice components are defined in the form of plug-ins, and users can connect and adapt to self-built or open source microservice ecosystems based on extension points such as Filter, Router, Service Discovery, and Configuration. --- + +From its design, Dubbo is highly extendable. Through these extension points, you can: +* Intercept traffic and control its behavior. +* Fine-tune some of Dubbo's default strategies and implementations. +* Adapt Dubbo services to internal microservices clusters or other mainstream open-source components. + +## Everything is Extendable + +Dubbo's extensibility allows the project to be conveniently divided into various sub-modules, enabling hot plugging. Users can replace Dubbo's native implementation based on their needs to meet specific business requirements. + +![Admin Screenshot](/imgs/v3/advantages/extensibility.png) + +* **Protocol and Coding Extension**: Communication protocols, serialization protocols, etc. +* **Traffic Control Extension**: Cluster fault tolerance strategies, routing rules, load balancing, rate limiting, fallback, circuit breaking, etc. +* **Service Governance Extension**: Service registry, configuration center, metadata center, distributed transactions, full-link tracing, monitoring systems, etc. +* **Diagnostic and Tuning Extension**: Traffic statistics, thread pool strategies, logging, QoS maintenance commands, health checks, configuration loading, etc. + +## Microservices Ecosystem Based on Extension Points +Numerous extension points and abstractions form the foundation for Dubbo's integration with various microservices ecosystem components and the realization of microservices governance capabilities. + +* [Full-link Tracing](/zh-cn/overview/tasks/observability/tracing/) +* [Data Consistency](/zh-cn/overview/tasks/ecosystem/transaction/) +* [Rate Limiting & Fallback](/zh-cn/overview/core-features/traffic/circuit-breaking/) + +Dubbo's SDKs for various languages adopt the "microkernel + plugin" design pattern. Almost all core nodes in every process are defined as extension points. Officially released components are also released in the form of extension point implementations, so Dubbo can treat all official and third-party component extensions equally. +* Extensibility adaptation is key to realizing Dubbo's microservices ecosystem. Ecosystem components, such as full-link tracing and service registry implementations, are adapted based on extension points like Filter, Registry, and DynamicConfiguration. +* Extensibility adaptation offers users the highest flexibility, allowing developers to integrate with internal components and customize core capabilities as needed. + +![extensibility-echosystem.png](/imgs/v3/feature/extensibility/arc.png) + +The above are some core extension points within Dubbo, categorized by architectural levels: +* Protocol Communication Layer +* Traffic Control Layer +* Service Governance Layer + +## Protocol Communication Layer +As emphasized in the communication protocol section, Dubbo is not bound to any specific protocol. Users can select any combination of RPC and serialization protocols, such as Triple, gRPC, Dubbo2, REST, custom protocols, etc. + +![Protocol and Coding Principles](/imgs/v3/feature/extensibility/protocol.png) + +### Protocol +The Protocol extension point defines the corresponding RPC protocol. By utilizing this extension point, Dubbo can act as a unified microservices development and governance framework, allowing for flexibility in the underlying communication protocol. Officially supported are the most popular RPC communication protocols, and if you wish to use a company-specific RPC communication protocol, provide a custom extension implementation via Protocol. + +### Serialization +The Serialization extension point defines serialization protocol extensions. Officially, Dubbo offers serialization protocols like Fastjson, Protobuf, Hessian2, Kryo, and FST. + +## Traffic Control Layer +Dubbo pre-embeds a significant number of extension points in the service call link, allowing users to control the flow of runtime traffic and change the behavior of runtime calls. + +![Protocol and Coding Principles](/imgs/v3/feature/extensibility/traffic.png) + +### Filter +Filters, traffic interceptors in Dubbo, are based on the AOP design pattern. They preprocess and postprocess each service call, handling tasks like access logs, encryption/decryption, traffic statistics, parameter verification, etc. + +### Router +The Router is a key component for traffic control in Dubbo. It directs traffic that meets certain conditions to a specific group of address subsets, enabling various traffic control modes. + +### Load Balance +In Dubbo, Load Balance works after the router. It ensures that calls are evenly distributed across all machines in the address subset over a period of time. + +## Service Governance Layer +The classic Dubbo deployment architecture consists of a registry (service discovery), configuration center, and metadata center. + +![Service Governance Architecture](/imgs/v3/concepts/threecenters.png) + +This section primarily discusses Dubbo's service governance from an architectural and implementation perspective. + +### Registry +The registry is the foundation for Dubbo's service discovery capability, with official support for registries like Zookeeper, Nacos, Etcd, Consul, and Eureka. + +### Config Center +The configuration center is a key component for dynamically controlling Dubbo's behavior. All rules dispatched in [Traffic Management](../../../../zh-cn/overview/tasks/traffic-management) are first saved in the configuration center. + +### Metadata Center +In contrast to the configuration center, from a user's perspective, the metadata center is read-only. + +## Custom Extension Examples +The following examples demonstrate how to extend Dubbo to address practical problems. + +* [Custom RPC Protocol](/zh-cn/overview/tasks/extensibility/protocol/) +* [Custom Traffic Routing Rule](/zh-cn/overview/tasks/extensibility/router/) +* [Custom Registry](/zh-cn/overview/tasks/extensibility/registry/) +* [Custom Interceptor](/zh-cn/overview/tasks/extensibility/filter/) + +## More Extension Points +This article lists some of the commonly used extension points in Dubbo. However, there are many more extension points available for flexible customization. Each SDK for different languages may have variations in extension definitions and configuration methods. + +* [Java Extension Manual](/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/) +* [Go Extension Manual](/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension/) +* [Java Extension Manual](/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/) +* [Go Extension Manual](/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension/) diff --git a/content/en/overview/core-features/load-balance.md b/content/en/overview/core-features/load-balance.md index 143f1231647b..a903f5408c98 100644 --- a/content/en/overview/core-features/load-balance.md +++ b/content/en/overview/core-features/load-balance.md @@ -1,7 +1,66 @@ --- +description: Load Balancing +linkTitle: Load Balancing +title: Load Balancing type: docs -title: "负载均衡" -linkTitle: "负载均衡" weight: 20 -description: "" --- + +During cluster load balancing, Dubbo provides multiple balancing strategies, with the default being the `weighted random` strategy, which is a weight-based random load balancing strategy. + +In terms of implementation, Dubbo provides client-side load balancing, meaning the Consumer determines which Provider instance to send the request to using a load balancing algorithm. + +## Load Balancing Strategies +Currently, Dubbo has built-in the following load balancing algorithms, which can be enabled through configuration adjustments. + +| Algorithm | Characteristics | Remarks | +| :------------------------------- | :----------------------- | :-------------------------------------------------------------- | +| Weighted Random LoadBalance | Weighted Random | Default algorithm, default weights are the same. | +| RoundRobin LoadBalance | Weighted Round Robin | Inspired by Nginx's smooth weighted round-robin algorithm. | +| LeastActive LoadBalance | Least Active + Weighted Random | The principle of "the more capable, the more work". | +| Shortest-Response LoadBalance | Shortest Response + Weighted Random | Focuses more on response speed. | +| ConsistentHash LoadBalance | Consistent Hashing | Deterministic parameters lead to a deterministic provider, suitable for stateful requests.| +| P2C LoadBalance | Power of Two Choice | After randomly selecting two nodes, choose the one with fewer "connections".| +| Adaptive LoadBalance | Adaptive Load Balancing | Based on P2C algorithm, chooses the node with the least load. | + +### Weighted Random +* **Weighted Random**: The probability of random selection is set according to the weight. +* There's a high collision probability on a cross-section, but as the call volume grows, the distribution becomes more even. After probability-based weighting, it's also fairly even, which facilitates dynamic adjustment of provider weights. +* Downside: There's the problem of slow providers accumulating requests. + +### RoundRobin +* **Weighted Round Robin**: Calls nodes in a circular manner based on proportionate weights. +* Downside: There's the problem of slow providers accumulating requests. + +For the weighted round robin, if a node's weight is too large, there's the problem of concentrated calls in a short time span. + +### LeastActive +* **Weighted Least Active**: The provider with the fewest active calls is preferred. The fewer the active calls, the stronger the provider's processing ability. +* This ensures slower providers receive fewer requests, as slower providers will have a larger difference between requests sent and responses received. + +### ShortestResponse +* **Weighted Shortest Response**: Providers with faster response times handle more requests. +* Downside: This might lead to traffic concentrating too much on high-performance nodes. + +### ConsistentHash +* **Consistent Hashing**: Requests with the same parameters are always sent to the same provider. +* When a provider fails, the requests originally directed to that provider are spread across other providers based on virtual nodes, without causing major disruption. +* For details, refer to: [Consistent Hashing | WIKIPEDIA](http://en.wikipedia.org/wiki/Consistent_hashing) + +### P2C Load Balance +The Power of Two Choice algorithm is simple but classic. + +### Adaptive Load Balance +Adaptive, as the name suggests, is a self-adapting load balancing mechanism that always tries to forward requests to the least loaded node. + +## Configuration +Dubbo allows providers to configure a default load balancing strategy so that all consumers will use the strategy specified by the provider by default. Consumers can also specify their own load balancing strategies. If neither side has any configuration, the random load balancing strategy is used by default. + +Each application can configure different services to use different load balancing strategies and can even specify different strategies for different methods of the same service. + +For configuration details, refer to the implementations in different languages: +* [Java](/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/loadbalance/) +* [Golang](/zh-cn/overview/mannual/golang-sdk/) + +## Custom Extensions +Load balancing strategies support custom extension implementations. For details, please see [Dubbo's Extensibility](/en/overview/core-features/extensibility/). \ No newline at end of file diff --git a/content/en/overview/core-features/more.md b/content/en/overview/core-features/more.md index 8093f4f263e7..aff57e635259 100644 --- a/content/en/overview/core-features/more.md +++ b/content/en/overview/core-features/more.md @@ -1,7 +1,70 @@ --- +description: Advanced Features Guide +linkTitle: More Advanced Features +title: More Advanced Features type: docs -title: "更多高级功能" -linkTitle: "更多高级功能" -weight: 100 -description: "" +weight: 11 --- + +As a microservice framework closely related to application development and aimed at providing enterprise-level service governance capabilities, Dubbo offers a variety of advanced features covering service call behavior control, service diagnostics and tuning, and service governance. + +Different language SDKs may have slight variations in feature implementation and configuration methods. For a specific list of features and usage, refer to the following documents: +* [Java](/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/) +* [Golang](/zh-cn/overview/mannual/golang-sdk/tutorial/) + +## Controlling Service Invocation Behavior +* Service Versions +* Service Groups +* Group Aggregation +* Asynchronous Invocation +* Asynchronous Execution +* Streaming Communication +* Reactive Programming +* Generic Invocation +* Generic Implementation +* Passing Implicit Parameters in Call Chain +* RPC Call Context +* Invocation Event Notifications +* Server Callbacks to Client +* Subscribe Only +* Register Only +* Runtime Dynamic IP Specification +* Direct Provider Connection +* Startup Checks +* Local Invocation +* Parameter Validation +* Local Mocking +* Local Stubs +* Echo Tests +* Invocation Information Logging +* Delayed Exposure +* Cluster Fault Tolerance +* Service Degradation + +## Diagnostics and Tuning +* Port Protocol Multiplexing +* Thread Pool Isolation +* Multiple Protocols +* Multiple Registry Centers +* Request Latency Sampling +* Thread Models +* Service Reference Configuration Object Caching +* Route State Collection +* Load Balancing +* Simplified Registration Information +* Invocation Result Caching +* Concurrency Control +* Connection Control +* Delayed Connections +* Sticky Connections +* Graal VM Support +* Exporting Thread Stack Trace +* Kryo and FST Serialization +* Custom Service Container +* Graceful Shutdown +* Custom Host Address Exposure +* Consistent Hashing +* Logging Framework Adaptation and Runtime Management +* Kubernetes Lifecycle Probes + +These features are designed to provide more control and flexibility in a microservices environment. They can help improve system reliability, enhance performance, and ease the process of deploying, managing, and scaling applications. diff --git a/content/en/overview/core-features/observability.md b/content/en/overview/core-features/observability.md index f2356528329d..9fecaf24d573 100644 --- a/content/en/overview/core-features/observability.md +++ b/content/en/overview/core-features/observability.md @@ -1,7 +1,7 @@ --- type: docs -title: "观测服务" -linkTitle: "观测服务" +title: "Observability" +linkTitle: "Observability" weight: 60 description: "" feature: @@ -10,45 +10,45 @@ feature: Multi-dimensional observable indicators (Metrics, Tracing, Accesslog) help to understand the service running status, Admin console, Grafana, etc. help realize the visual display of data indicators. --- -Dubbo 内部维护了多个纬度的可观测指标,并且支持多种方式的可视化监测。可观测性指标从总体上来说分为三个度量纬度: +Dubbo maintains observability metrics across multiple dimensions and supports various methods of visual monitoring. Observability metrics can be broadly categorized into three measurement dimensions: -* **Admin。** Admin 控制台可视化展示了集群中的应用、服务、实例及依赖关系,支持流量治理规则下发,同时还提供如服务测试、mock、文档管理等提升研发测试效率的工具。 +* **Admin.** The Admin console provides a visual representation of applications, services, instances, and dependency relationships within the cluster. It supports the issuance of traffic governance rules. Additionally, it offers tools such as service testing, mocking, and document management to enhance the efficiency of development and testing processes. -* **Metrics。** Dubbo 统计了一系列的流量指标如 QPS、RT、成功请求数、失败请求数等,还包括一系列的内部组件状态如线程池数、服务健康状态等。 +* **Metrics.** Dubbo collects a range of traffic metrics such as QPS (Queries Per Second), RT (Response Time), successful requests, failed requests, and also includes various internal component statuses like thread pool count, service health status, and more. -* **Tracing。** Dubbo 与业界主流的链路追踪工作做了适配,包括 Skywalking、Zipkin、Jaeger 都支持 Dubbo 服务的链路追踪。 +* **Tracing.** Dubbo has been adapted to work with mainstream industry-level distributed tracing tools, including Skywalking, Zipkin, and Jaeger. These tools all support the tracing of Dubbo services. -* **Logging。** Dubbo 支持多种日志框架适配。以 Java 体系为例,支持包括 Slf4j、Log4j2、Log4j、Logback、Jcl 等,用户可以基于业务需要选择合适的框架;同时 Dubbo 还支持 Access Log 记录请求踪迹。 +* **Logging.** Dubbo supports adaptation to multiple logging frameworks. In the Java ecosystem, it provides support for various frameworks including Slf4j, Log4j2, Log4j, Logback, Jcl, etc. Users can choose the appropriate framework based on their business requirements. Additionally, Dubbo also supports Access Log to record request traces. ## Admin -Admin 控制台可视化展示了集群中的应用、服务、实例及依赖关系,支持流量治理规则下发,同时还提供如服务测试、mock、文档管理等提升研发测试效率的工具 +The Admin console provides a visual representation of applications, services, instances, and dependency relationships within the cluster. It supports the issuance of traffic governance rules. Additionally, it offers tools such as service testing, mocking, and document management to enhance the efficiency of development and testing processes. -![Admin 效果图](/imgs/v3/feature/observability/admin.jpg) +![Admin rendering](/imgs/v3/feature/observability/admin.jpg) -* [Admin 部署与效果演示](#) +* [Admin deployment and effect demonstration](#) ## Metrics -Dubbo 运行时统计了包括 qps、rt、调用总数、成功数、失败数,失败原因统计等在内的核心服务指标,同时,为了更好的监测服务运行状态,Dubbo 还提供了对核心组件状态的监控,如线程池数量、服务健康状态等。 +At runtime, Dubbo collects core service metrics, including QPS (Queries Per Second), RT (Response Time), total invocations, successful invocations, and failure statistics, along with reasons for failures. Additionally, for more effective monitoring of service operation, Dubbo offers monitoring of essential component states such as thread pool count and service health status. -可以通过 Grafana 可视化的查看 Metrics 指标 +You can visualize the metrics using Grafana. -![Grafana 效果图](/imgs/v3/feature/observability/grafana.png) +![Grafana rendering](/imgs/v3/feature/observability/grafana.png) -* [使用 Grafana 可视化展示 Metrics 指标](#) -* [如何从 Prometheus 查询特定 Metrics 指标](#) +* [Use Grafana for visualizing metrics](#) +* [How to Query Specific Metrics from Prometheus](#) ## Tracing -全链路追踪对于监测分布式系统运行状态具有非常重要的价值,Dubbo 通过 Filter 拦截器实现了请求运行时的埋点跟踪,通过将跟踪数据导出到一些主流实现如 Zipkin、Skywalking、Jaeger 等,可以实现全链路跟踪数据的分析与可视化展示。 +Full link tracing holds significant value in monitoring the operational status of distributed systems. Dubbo achieves runtime pointcut tracing through Filter interceptors. By exporting trace data to prominent platforms like Zipkin, Skywalking, Jaeger, etc., comprehensive end-to-end tracking data analysis and visual representation can be accomplished. -![Tracing 效果图](/imgs/v3/feature/observability/tracing.png) +![Tracing rendering](/imgs/v3/feature/observability/tracing.png) -只需要简单的一行配置即可切换链路跟踪的后端实现,并且,你可以随时通过 Dubbo Admin 等治理平台动态调整 Dubbo 的链路追踪采样率,对于问题排查都非常有价值。 +With just a simple line of configuration, you can switch the backend implementation for tracing. Moreover, you have the flexibility to dynamically adjust Dubbo's tracing sampling rate through governance platforms like Dubbo Admin, which proves highly valuable for troubleshooting. -* [基于 Skywalking 实现全链路追踪](#) -* [基于 Zipkin 实现全链路追踪](#) +* [Realize full-link tracking based on Skywalking](#) +* [Full link tracking based on Zipkin](#) ## Logging -访问日志可以帮助分析系统的流量情况,在有些场景下,开启访问日志对于排查问题也非常有帮助。 +Access logs can assist in analyzing system traffic. In certain scenarios, enabling access logs can also be very helpful for troubleshooting issues. -* [开启 Access Log](#) -* [你还在运行态开启 Access Log](#) \ No newline at end of file +* [Enable Access Log](#) +* [Enable Access Log in running state](#) \ No newline at end of file diff --git a/content/en/overview/core-features/protocols.md b/content/en/overview/core-features/protocols.md index 12b906977cc8..616649a70870 100644 --- a/content/en/overview/core-features/protocols.md +++ b/content/en/overview/core-features/protocols.md @@ -1,11 +1,97 @@ --- type: docs -title: "通信协议" -linkTitle: "通信协议" +title: "Protocols" +linkTitle: "Protocols" weight: 40 -description: "" +description: "Protocols" feature: title: Multiple Protocols description: > Dubbo supports almost all the protocols from HTTP/2, gRPC, TCP, REST to Thrift, choose any RPC protocols you need with only one line of configuration. It also allow you to publish different protocols on a single port. --- + +The Dubbo framework offers custom, high-performance RPC communication protocols: the HTTP/2-based Triple protocol and the TCP-based Dubbo2 protocol. Additionally, Dubbo supports any third-party communication protocols, such as officially supported ones like gRPC, Thrift, REST, JsonRPC, Hessian2, and more. Further protocols can be implemented through custom extensions. This is particularly useful for handling multi-protocol communication scenarios, which are common in microservices practices. + +**The Dubbo framework is not tied to any specific communication protocol. In its implementation, Dubbo's support for multiple protocols is highly flexible. It allows you to publish services that use different protocols within a single application. Furthermore, it supports exposing all protocols externally through the same port.** + +![protocols](/imgs/v3/feature/protocols/protocol1.png) + +Through Dubbo framework's support for multiple protocols, you can achieve: +* Seamlessly integrate any communication protocol into the Dubbo service governance system. All communication protocols under the Dubbo ecosystem can leverage Dubbo's programming model, service discovery, and traffic control advantages. For instance, in the case of gRPC over Dubbo, both service governance and programming APIs can be seamlessly integrated into the Dubbo ecosystem at zero cost. +* Compatibility with different technology stacks, allowing for a mix of different service frameworks and RPC frameworks in a business system. For example, some services may be developed using gRPC or Spring Cloud, while others use the Dubbo framework. Through Dubbo's support for multiple protocols, interoperability can be achieved seamlessly. +* Simplifying protocol migration. By coordinating multiple protocols with the registry center, you can quickly meet the company's needs for protocol migration. For example, migrating from a proprietary protocol to the Dubbo protocol, upgrading the Dubbo protocol itself, migrating from the Dubbo protocol to gRPC, or transitioning from HTTP to the Dubbo protocol, and so on. + +## HTTP/2 (Triple) +Triple protocol, introduced in Dubbo 3, is a communication protocol designed for the cloud-native era. It is based on HTTP/2 and fully compatible with the gRPC protocol. Triple natively supports streaming communication semantics. It can run on both HTTP/1 and HTTP/2 transport protocols, allowing you to directly access backend Dubbo services using tools like curl or a web browser. + +Since the introduction of the Triple protocol, Dubbo also supports service definition and data transmission based on Protocol Buffers. However, Triple's implementation is not bound to Interface Definition Language (IDL). For example, you can directly use Java Interface to define and publish Triple services. Triple possesses better gateway and proxy penetration capabilities, making it well-suited for deployment architectures involving cross-gateway and proxy communication, such as service meshes. + +Key features of the Triple protocol include: + +* Support for TLS encryption and plaintext data transmission +* Support for backpressure and flow control +* Support for streaming communication +* Simultaneous support for HTTP/1 and HTTP/2 transport protocols + +In terms of programming and communication models, the Triple protocol supports the following modes: + +* Client-side asynchronous request-response +* Server-side asynchronous request-response +* Client-side request streaming +* Server-side response streaming +* Bidirectional streaming communication + +Development Practice + +* For the usage of the Triple protocol, please refer to the [Triple Protocol Development Tasks](../../tasks/triple/) or the [Java SDK Example Documentation](../../../docs3-v2/java-sdk/reference-manual/protocol/triple/). +* [Triple Design Ideas and Protocol Specifications](/zh-cn/overview/reference/protocols/triple/) + +## Dubbo2 + +The Dubbo2 protocol is an RPC communication protocol built on top of the TCP transport layer protocol. Due to its compact, flexible, and high-performance characteristics, it gained widespread use during the Dubbo2 era. It served as a key communication solution for enterprises to build high-performance, large-scale microservice clusters. In the cloud-native era, we recommend using the Triple protocol for its greater generality and better penetration. + +The Dubbo2 protocol also has built-in support for HTTP, so you can use curl for quick service validation or debugging during development. + +* [Dubbo2 Protocol Development Tasks](../../../docs/v2.7/dev/impls/protocol/) +* [Dubbo2 Design Ideas and Protocol Specifications](/zh-cn/overview/reference/protocols/tcp/) + +## gRPC + +You can develop and manage microservices using Dubbo and then set up underlying communication using the gRPC protocol. But why do this instead of directly using the gRPC framework, and what advantages does it offer in comparison? The simple answer is that this is a common pattern for developing microservices using gRPC. Please read on for more details. + +gRPC is Google's open-source communication protocol based on HTTP/2. As we mentioned in our [Product Comparison](/zh-cn/overview/what/xyz-difference/) document, gRPC is positioned as a communication protocol and its implementation, making it a pure RPC framework. On the other hand, Dubbo is positioned as a microservices framework, providing solutions for microservices practices. Therefore, compared to Dubbo, gRPC lacks abstractions for microservices programming models, service governance, and other capabilities. + +Using the gRPC protocol (gRPC over Dubbo Framework) within the Dubbo ecosystem is a highly efficient and lightweight choice. It allows you to use the native gRPC protocol for communication while avoiding the complexity of customizing and developing based on gRPC (customizing and developing with gRPC is an inevitable step in many enterprise-scale practices, and the Dubbo framework handles this for developers, enabling them to use gRPC in the simplest way possible). + +[gRPC over Dubbo Example](/zh-cn/overview/tasks/protocols/grpc/) + +## REST + +A common communication pattern in the microservices domain is HTTP + JSON. This includes mainstream microservices frameworks like Spring Cloud and Microprofile, which default to using this communication pattern. Dubbo also provides support for programming and communication patterns based on HTTP. + +* [HTTP over Dubbo Example](/zh-cn/overview/tasks/protocols/web/) +* [Interoperability between Dubbo and Spring Cloud Ecosystems](/zh-cn/overview/tasks/protocols/springcloud/) + +## Other Communication Protocols + +In addition to the protocols mentioned above, you can also run the following protocols on top of Dubbo. For Dubbo, it only takes a simple configuration change to switch the underlying service communication protocol, without affecting other peripheral APIs and governance capabilities. + +* Hessian2 +* Thrift +* JsonRPC + +## Interoperability in Heterogeneous Microservice Ecosystems + +For practices related to protocol migration and coexistence of multi-protocol technology stacks, please refer to this [blog post](/zh-cn/blog/2023/01/05/dubbo-连接异构微服务体系-多协议多注册中心/). + +## Configuration Method + +For the configuration and usage methods of the protocols mentioned above, including how to configure `single-port multi-protocol` support, please refer to the following SDK documentation: + +* [Java](../../../docs3-v2/java-sdk/reference-manual/protocol/) +* [Golang](../../../docs3-v2/golang-sdk/preface/concept/protocol/) +* [Rust](../../../docs3-v2/rust-sdk/protocol/) + +## Custom Extensions + +In addition to the communication protocols officially supported, Dubbo supports extending support for new protocols. For specific details, please refer to [【Task】-【Extensibility】-【Protocol】](/zh-cn/overview/tasks/extensibility/protocol/). \ No newline at end of file diff --git a/content/en/overview/core-features/security.md b/content/en/overview/core-features/security.md index a3a9160b1466..deeb6bb21559 100644 --- a/content/en/overview/core-features/security.md +++ b/content/en/overview/core-features/security.md @@ -1,11 +1,98 @@ --- type: docs -title: "认证鉴权" -linkTitle: "认证鉴权" +title: "Authentication" +linkTitle: "Authentication" weight: 70 -description: "" +description: | + Offers TLS-based transport layer authentication and encrypted communication, as well as request-based authorization, to help build a Zero Trust distributed microservices system. feature: title: Zero-trust Security description: > It supports TLS-based transmission link authentication and encrypted communication, as well as permission verification based on request identity, helping to build a zero-trust distributed microservice system. --- + +Dubbo provides comprehensive mechanisms to build a secure microservices communication system, also known as a Zero Trust system. This includes: +* Preventing man-in-the-middle attacks by offering identity authentication (Authentication) and TLS-based encrypted communication. +* Controlling inter-service access authorization (Authorization) with mechanisms like mTLS and permission checks. + +This document will guide you through leveraging Dubbo's security features to build a Zero Trust system for your microservices, focusing on authentication, transparent encryption, authorization, and auditing. Since Zero Trust is a comprehensive approach, you may need another infrastructure, such as certificate management and security policy control. + +> **Note**: The scope of this document does not include certificate generation and distribution. We assume you already have an infrastructure in place for certificate management. Hence, we will focus on Dubbo's authentication and authorization mechanisms and processes. If you lack such infrastructure, we recommend using a service mesh architecture like Istio for certificate management and security policies. + +## Architecture + +A complete Zero Trust system comprises multiple components: + +* A Root Certificate Authority (CA) to manage keys and certificates. +* A security policy management and distribution center to send real-time policies to data plane components: + * Authentication policies + * Authorization policies + * Secure Naming Information +* Data plane components (Dubbo) responsible for identification, encryption, and policy enforcement. +* A suite of tools and ecosystems to complete security audits and data link monitoring. + +In a service mesh deployment like Istio, the control plane typically handles security policies and certificates, interacting with infrastructure like the Kubernetes API Server to distribute configuration data to Dubbo or other data plane components. + +Here is a comprehensive architecture diagram for Dubbo Zero Trust: + +![Authentication](/imgs/v3/feature/security/arch.png) + +## Authentication + +Dubbo provides two modes of authentication: + +* **Channel Authentication**: Dubbo supports TLS-based HTTP/2 and TCP communication. You can enable TLS through Channel Authentication API or control plane policies for server identity authentication and data link encryption. Additionally, you can enable mTLS for client-server mutual authentication. This is a service-to-service mode of authentication. +* **Request Authentication**: Dubbo offers APIs to attach user identity credentials (like JWT tokens) in the request context. Dubbo automatically recognizes these identity tokens for permission checks. You can also customize these tokens, like OAuth2 access tokens. This is an end-user mode of authentication, representing the identity of the user logged into the system. + +### Architecture + +In Istio mode, Dubbo's authentication mechanism automatically interfaces with the Istio control plane through xDS. Certificates and authentication policies generated by the Istio control plane are automatically sent to the Dubbo data plane, which applies them to all subsequent data communications. + +![Authentication](/imgs/v3/feature/security/auth-1.png) + +#### Dubbo mTLS Flow + +In Istio deployments, you can enable or disable Channel Authentication's mutual authentication through control plane policies. The workflow for mutual authentication is as follows: + +1. Istio sends authentication policies to enable mutual authentication. +2. The Dubbo client initiates a mutual TLS handshake with the server, performing a secure naming check to validate the server's identity. +3. A mutual mTLS link is established between the client and server for encrypted communication. +4. The Dubbo server recognizes the client's identity and checks whether it has the permission to access the corresponding resource. + +### Authentication Policies +For specific rules supported by Istio, Dubbo fully supports Istio-defined authentication policies. + +[Read More](https://istio.io/latest/docs/concepts/security/#authentication-policies) + +## Authorization + +Dubbo has abstracted an authorization extension mechanism but currently only supports the Istio system. Thus, its authorization capabilities are equivalent to those described in the official Istio documentation. + +[Read More](https://istio.io/latest/docs/concepts/security/#authorization) + +### Architecture + +Dubbo receives user-configured authorization policies from the Istio control plane through xDS. When a request reaches a Dubbo instance, the built-in authorization engine matches the request parameters and user identity against the policy. If the match is successful, access is granted; otherwise, it's denied. + +![Authorization](/imgs/v3/feature/security/authz-1.png) + +### Authorization Policies +For specific rules supported by Istio, Dubbo fully supports Istio-defined authorization policies. + +[Read More](https://istio.io/latest/docs/concepts/security/#authorization-policies) + +## Dubbo Authentication API + +Dubbo defines an authentication API. For general use cases, developers can enable TLS/mTLS through this API. However, in an Istio control plane deployment, Dubbo automatically recognizes the certificates and authentication policies sent by Istio, so no special configuration is needed on the Dubbo side. + +Whether or not you use the Istio control plane, JWT tokens for Request Authentication still need to be specified programmatically in Dubbo. + +For language-specific API definitions, please refer to the respective SDK documentation: +* [Java](/) +* [Go](/) +* [Rust](/) +* [Node.js](/) + +## Sample Tasks + +Please visit the following [Dubbo Task Examples](/) for hands-on practice with security policies. diff --git a/content/en/overview/core-features/service-definition.md b/content/en/overview/core-features/service-definition.md index 16885279eb3d..18bacab96ebe 100644 --- a/content/en/overview/core-features/service-definition.md +++ b/content/en/overview/core-features/service-definition.md @@ -1,6 +1,151 @@ --- type: docs -title: "Dubbo 微服务开发" -linkTitle: "微服务开发" +title: "Develop microservice with Dubbo" +linkTitle: "Microservice develop" weight: 1 --- +Dubbo addresses a series of challenges from development and deployment to governance and operations in enterprise microservices. Dubbo provides a full suite of services for developers, from project creation, development testing, to deployment, visual monitoring, traffic governance, and ecosystem integration. + +### Development + +* **Language Support**: Dubbo supports various programming languages including Java, Go, Rust, Node.js, and defines a set of paradigms for microservice development. A corresponding scaffold is available for quickly creating a microservice project skeleton. +* **Deployment**: Dubbo applications can be deployed in different environments including virtual machines, Docker containers, Kubernetes, and service mesh architectures. +* **Service Governance**: Dubbo provides capabilities like address discovery, load balancing, and traffic control. It also offers an Admin dashboard for visual control and a rich microservice ecosystem. + +#### Creating a Project +The [Dubbo Microservices Project Scaffold](https://start.dubbo.apache.org/bootstrap.html) can be used to quickly create a microservices project. The scaffold can generate a microservice project with necessary dependencies based on the features or components you want. + +#### Developing Services +**1. Define the Service** + +```java +public interface DemoService { + String hello(String arg); +} +``` + +**2. Implement Business Logic** + +```java +@DubboService +public class DemoServiceImpl implements DemoService { + public String hello(String arg) { + // your microservice logic here + } +} +``` + +#### Publishing Services +**1. Publish the Service Definition** + +The service provider needs to publish the service definition as a Jar package to the Maven central repository. + +**2. Expose the Service** + +Add Dubbo configuration and start the Dubbo server. + +```yaml +dubbo: + application: + name: dubbo-demo + protocol: + name: dubbo + port: -1 + registry: + address: zookeeper://127.0.0.1:2181 +``` + +#### Consuming Services + +First, consumers include the `DemoService` service definition dependency via Maven/Gradle. + +```xml + + org.apache.dubbo + dubbo-demo-interface + 3.2.0 + +``` + +Then, programmatically inject the remote Dubbo service instance. + +```java +@Bean +public class Consumer { + @DubboReference + private DemoService demoService; +} +``` + +### Deployment +Dubbo native services can be packaged and deployed to cloud-native infrastructures like Docker containers, Kubernetes, and service meshes. + +### Governance +For service governance, most applications just need to add the following configuration. Dubbo will then have address discovery and load balancing capabilities. + +```yaml +dubbo: + registry: + address: zookeeper://127.0.0.1:2181 +``` + +Deploy and open the [Dubbo Admin Dashboard](/zh-cn/overview/tasks/deploy/), and you will see the service deployment and invocation data. + +Dubbo Admin can also improve development and testing efficiency through additional capabilities like: +* Document management for regular services and IDL documents +* Service testing & service Mock +* Service status inquiry + +For more complex microservices scenarios, Dubbo also provides more advanced governance features, including: +* Traffic governance +* Dynamic configuration +* Rate limiting and degradation +* Data consistency +* Observability +* Multi-protocol +* Multiple registries +* Service mesh + +This guide provides an overview of the workflow for developing microservices with Dubbo. For detailed step-by-step instructions, please refer to: +* [Getting Started with Java Microservices](/en/overview/quickstart/) +* [Getting Started with Go Microservices](/en/overview/quickstart/go/) +* [Getting Started with Rust Microservices](/en/overview/quickstart/rust/) +* [Getting Started with Node.js Microservices](https://github.com/apache/dubbo-js) + + +### Deployment + +Dubbo's native services can be packaged and deployed in various cloud-native infrastructures and microservices architectures, including Docker containers, Kubernetes, and Service Mesh. + +For examples of deployment in different environments, refer to: +* [Deploying Dubbo services to Docker containers](/zh-cn/overview/tasks/deploy/deploy-on-docker) +* [Deploying Dubbo services to Kubernetes](/en/overview/tasks/kubernetes/) + +### Governance + +For service governance, most applications only need to add the following configuration, and the Dubbo application will have address discovery and load balancing capabilities. + +```yaml +dubbo: + registry: + address: zookeeper://127.0.0.1:2181 +``` + +Once deployed and the [Dubbo Admin Console](/zh-cn/overview/tasks/deploy) is opened, you can see the deployment and invocation data of services in the cluster. + +![Admin](/imgs/v3/what/admin.png) + +In addition, Dubbo Admin can also enhance R&D and testing efficiency through the following capabilities: +* Document management, providing general services and IDL document management. +* Service testing & Service Mock. +* Service status inquiry. + +For more complex microservices practice scenarios, Dubbo also offers many more advanced service governance features. For more details, please refer to the documentation, including: +* Traffic governance +* Dynamic configuration +* Rate limiting and degradation +* Data consistency +* Observability +* Multi-protocol +* Multi-registry centers +* Service Mesh \ No newline at end of file diff --git a/content/en/overview/core-features/service-discovery.md b/content/en/overview/core-features/service-discovery.md index eb0919294745..e023efcc83cb 100644 --- a/content/en/overview/core-features/service-discovery.md +++ b/content/en/overview/core-features/service-discovery.md @@ -9,3 +9,60 @@ feature: description: > Service Discovery with customized design for large-scale cluster with millions of instances and rich builtin registry adaptations such as Nacos and Zookeeper and even more by supporting customized extensions. --- + +Dubbo provides a Client-Based service discovery mechanism, relying on third-party registry components to coordinate the service discovery process. It supports popular registries like Nacos, Consul, and Zookeeper. + +Below is a basic workflow diagram for Dubbo's service discovery mechanism: + +![service-discovery](/imgs/v3/feature/service-discovery/arc.png) + +Service discovery involves three roles: providers, consumers, and the registry. In this setup, Dubbo provider instances register their URL addresses with the registry, which aggregates this data. Dubbo consumers read the address list from the registry and subscribe to changes. Whenever the address list changes, the registry notifies all subscribed consumer instances. + +## Service Discovery for Million-Scale Clusters +Unlike many other microservices frameworks, **Dubbo 3's service discovery is born out of Alibaba's large-scale e-commerce microservices cluster. Therefore, it significantly outperforms most mainstream open-source products in terms of performance, scalability, and ease of use.** It is the best choice for enterprises to build scalable microservices clusters for the future. + +![service-discovery](/imgs/v3/feature/service-discovery/arc2.png) + +* First, Dubbo's registry aggregates instance data at the application granularity level, allowing consumers to subscribe precisely according to their needs, thereby avoiding the performance bottleneck caused by full subscriptions in most open-source frameworks like Istio and Spring Cloud. +* Second, Dubbo SDK has heavily optimized the consumer-side address list processing, adding asynchronous notifications, caching, bitmap, and various parsing optimizations to avoid resource fluctuations commonly seen during address updates. +* Finally, in terms of feature richness and ease of use, besides synchronizing basic endpoint information like IP and port to consumers, Dubbo also synchronizes the metadata information of the server's RPC/HTTP services and their configurations to the consumer side, allowing for finer-grained collaboration between consumers and providers. + +### Efficient Address Push Implementation + +From the registry's perspective, it aggregates the instance addresses of the entire cluster based on the application name (`dubbo.application.name`). Each service-providing instance registers its own application name, instance IP:port address information (usually also containing a small amount of instance metadata, such as the machine's region, environment, etc.) with the registry. + +> Dubbo2's registry aggregates instance addresses at the service granularity, which is finer than application granularity and thus means more data transfer. This has led to some performance issues in large-scale clusters. +> For the inconsistency between the data models of Dubbo2 and Dubbo3, Dubbo3 provides a [smooth migration solution](/zh-cn/overview/mannual/java-sdk/upgrades-and-compatibility/service-discovery/migration-service-discovery/) that makes the model change transparent to users. + +![service-discovery](/imgs/v3/feature/service-discovery/registry-data.png) + +
+Each consumer service instance subscribes to the instance address list from the registry. Unlike some products that load all registry data (application + instance address) into local processes, Dubbo implements precise, on-demand address subscription. For example, if a consumer application depends on app1 and app2, it will only subscribe to the address list updates of app1 and app2, significantly reducing the burden of redundant data pushing and parsing. + +

+
+ +![service-discovery](/imgs/v3/feature/service-discovery/subscription2.png) + +### Rich Metadata Configuration +In addition to interacting with the registry, Dubbo 3's complete address discovery process also has an additional metadata path, known as the Metadata Service. Instance addresses and metadata together form the effective address list on the consumer side. + +![service-discovery](/imgs/v3/feature/service-discovery/metadata.png) + +The complete workflow is shown above. First, the consumer receives the address (IP:port) information from the registry, then establishes a connection with the provider and reads the metadata configuration information from the Metadata Service. These two pieces of information together form the effective, service-oriented address list for Dubbo's consumer side. Both of these steps occur before the actual RPC service invocation takes place. + +> For the definition of MetadataService and a complete analysis of the service discovery process, please refer to [Detailed Application-Level Service Discovery]({{< relref "../../../blog/proposals/service-discovery/" >}}). + +> For data synchronization in microservices' service discovery models, REST has defined a very interesting maturity model. Interested readers can refer to the link here https://www.martinfowler.com/articles/richardsonMaturityModel.html. According to the article's 4-level maturity definition, Dubbo's current model based on interface granularity corresponds to the highest L4 level. + +## Configuration Methods +Dubbo service discovery extends support for multiple registry components, such as Nacos, Zookeeper, Consul, Redis, Kubernetes, etc. It can be switched through configuration and also supports authentication and namespace isolation configurations. For specific configuration methods, please refer to the SDK documentation: + +* [Java](/en/docs3-v2/java-sdk/reference-manual/registry) +* [Golang](/en/docs3-v2/golang-sdk/tutorial/develop/registry) +* [Rust](/en/docs3-v2/rust-sdk/) + +Dubbo also supports scenarios of multiple registries within a single application, such as dual registration, dual subscription, etc. This is very useful for implementing data exchange between different clusters and cluster migration. We will add `Best Practices` examples to future documentation to illustrate this part. + +## Custom Extensions +Registry adaptation supports custom extension implementation. For details, please refer to [Dubbo Extensibility](/en/overview/core-features/extensibility/). \ No newline at end of file diff --git a/content/en/overview/core-features/service-mesh.md b/content/en/overview/core-features/service-mesh.md index 685f2cec8efe..21e50930b194 100644 --- a/content/en/overview/core-features/service-mesh.md +++ b/content/en/overview/core-features/service-mesh.md @@ -1,11 +1,76 @@ --- -type: docs -title: "服务网格" -linkTitle: "服务网格" -weight: 80 -description: "" +description: Service Mesh feature: - title: Service Mesh - description: > - Flexible data plane (Proxy & Proxyless) deployment support, seamless access to the Istio control plane governance system. + description: | + Flexible data plane (Proxy & Proxyless) deployment options, seamlessly integrating with the Istio control plane governance ecosystem. + title: Service Mesh +linkTitle: Service Mesh +title: Service Mesh +type: docs +weight: 9 +working-in-progress: true --- + +Dubbo Mesh is Dubbo's comprehensive microservices solution in a cloud-native context. It helps developers integrate Dubbo services with standard Kubernetes Native Service systems, enabling seamless connectivity with leading service mesh products like Istio. + +Below is the deployment architecture diagram for Dubbo Mesh. + +![Dubbo-Mesh](/imgs/v3/mesh/mix-mesh.png) + +* Control Plane: Istio serves as the unified control plane, providing cluster-wide capabilities like Kubernetes adaptation, service discovery, certificate management, observability, and traffic management. +* Data Plane: Dubbo application instances act as data plane components and support two deployment modes: + * Proxy Mode: Dubbo and Envoy are deployed in the same pod, and all traffic to and from Dubbo is intercepted and managed by Envoy. + * Proxyless Mode: Dubbo instances are deployed independently, communicating directly with each other and interacting directly with the control plane via the xDS protocol. + +For general content on service mesh architecture and why you might want to integrate with the Istio control plane, please refer to the [Istio official website](https://istio.io/). This document will focus on the Dubbo Mesh solution itself. + +## Dubbo Mesh + +### Proxy Mesh +In Proxy mode, Dubbo is deployed alongside a sidecar like Envoy. + +![dubbo-sidecar](/imgs/v3/mesh/dubbo-proxy.png) + +The architecture diagram above depicts Dubbo Proxy Mesh deployment: +* Dubbo and Envoy are deployed in the same pod, with Istio managing traffic and governance. +* Dubbo provides programming APIs and RPC communication capabilities for business applications, while other capabilities like address discovery, load balancing, and routing are delegated to Envoy, which intercepts all incoming and outgoing traffic. +* The control plane distributes configurations to Envoy via the xDS protocol, as indicated by the dashed lines in the diagram. + +In Proxy mode, using Dubbo3 communication layers like Triple, gRPC, and REST that are based on HTTP can result in better gateway penetration and performance. + +### Proxyless Mesh +In Proxyless mode, there are no proxy components like Envoy. Dubbo's processes are deployed independently and communicate directly. Istio's control plane interacts with Dubbo processes for governance via the xDS protocol. + +![dubbo-proxyless](/imgs/v3/mesh/dubbo-proxyless.png) + +In Proxyless mode, Dubbo deployment is basically the same as before, but the Dubbo3 SDKs directly implement xDS protocol parsing. + +#### Why Proxyless Mesh? + +While Proxy mode offers many advantages, such as smooth upgrades, multi-language support, and minimal business intrusion, it also introduces some challenges: +* Sidecar communication adds extra performance overhead, especially noticeable in complex network topologies. +* The presence of a sidecar complicates application lifecycle management. +* Not all environments can accommodate Sidecar deployment and request interception. + +In Proxyless mode, Dubbo processes continue to communicate directly: +* There is no additional Proxy-related overhead, making it more suitable for performance-sensitive applications. +* It simplifies legacy system migration. +* The architecture is simple and easy to manage. +* It is suitable for almost all deployment environments. + +## Sample Tasks +After acquiring sufficient theoretical knowledge, we recommend that you visit the following [examples](/en/overview/tasks/mesh) for hands-on practice. + +## Visualization +We recommend using [Dubbo Admin](/zh-cn/overview/tasks/deploy) as the visualization console for your Dubbo cluster. It is compatible with all Kubernetes, Mesh, and non-Mesh architecture deployments. + +Additionally, you can use [Istio's official recommended visualization tools](https://istio.io/latest/docs/tasks/observability/kiali/) to manage your Dubbo Mesh cluster. + +## Integration with Non-Istio Control Planes +Dubbo Mesh itself is not tied to any control plane product implementation. You can use Istio, Linkerd, Kuma, or any control plane product that supports the xDS protocol. The same applies to Sidecars. + +If you have already experienced the [Dubbo Mesh based on Istio](/) sample tasks and find that Istio meets your governance needs for Dubbo Mesh, then adopting Istio as your control plane is the preferred solution. + +If you find that Dubbo's capabilities are limited in Istio mode and need those capabilities, you may consider integrating Dubbo's control plane to replace Istio for better native Dubbo support and performance. For details, please refer to [Dubbo Mesh Sample Tasks based on Custom Dubbo Control Plane](/). + +> In short, this is a customized version of the control plane released by the Dubbo community based on Istio. For installation and capability differences of Dubbo's control plane, please refer to the sample task link above. diff --git a/content/en/overview/quickstart/go.md b/content/en/overview/quickstart/go.md new file mode 100644 index 000000000000..13f9a1563632 --- /dev/null +++ b/content/en/overview/quickstart/go.md @@ -0,0 +1,6 @@ +--- +type: docs +title: "Quick Start With Golang" +linkTitle: "Quick Start" +weight: 2 +--- \ No newline at end of file diff --git a/content/en/overview/quickstart/rust.md b/content/en/overview/quickstart/rust.md new file mode 100644 index 000000000000..180288629400 --- /dev/null +++ b/content/en/overview/quickstart/rust.md @@ -0,0 +1,6 @@ +--- +type: docs +title: "Quick Start With Rust" +linkTitle: "Quick Start" +weight: 2 +--- \ No newline at end of file diff --git a/content/zh-cn/_index.html b/content/zh-cn/_index.html index 1f078462b9ae..595acf4a1518 100644 --- a/content/zh-cn/_index.html +++ b/content/zh-cn/_index.html @@ -60,25 +60,25 @@

选择编程语言后快速体验!

golang - -
Rust
+
+
Node.js
- rust + node.js
- -
Node.js
+
+
Web
- node.js + web
- -
Python
+
+
rust
- python2 + rust
- +
更多
diff --git a/content/zh-cn/blog/integration/dubbo-graalvm-support.md b/content/zh-cn/blog/integration/dubbo-graalvm-support.md index 286dfa5c3492..aeca0de511fe 100644 --- a/content/zh-cn/blog/integration/dubbo-graalvm-support.md +++ b/content/zh-cn/blog/integration/dubbo-graalvm-support.md @@ -33,7 +33,7 @@ Java 应用在云计算时代面临“冷启动”慢、内存占用高、预热 - **首先是启动速度问题,Java 冷启动的耗时是比较长的**。这对于Serverless需要快速弹起的场景是一个非常大的挑战,因为 Java 应用的拉起时间可能是秒、数十秒级别的; - **第二点,Java应用往往都需要一定的预热时间,才能达到最佳的性能状态**,刚刚拉起的应用如果分配比较大的流量是不合适的,往往会出现请求超时、资源占用过高等问题,这就进一步拉长了 Java 应用的有效拉起时间; -- **第三点是 Java 应用对运行环境的要求,它往往需要较大的内存、计算资源**,而这些真正分配给业务自身的并不多,都消耗在一些JVM运行时上,这与用云降本提效的目标并补匹配; +- **第三点是 Java 应用对运行环境的要求,它往往需要较大的内存、计算资源**,而这些真正分配给业务自身的并不多,都消耗在一些JVM运行时上,这与用云降本提效的目标并不匹配; - **最后,Java应用打出来的包或者镜像也是非常大**,从总体上也影响存储、拉取的效率。 接下来,我们具体看一下针对 Java 应用所面临的这些问题, GraalVM 这样一种打包和运行时技术是如何解决的。 @@ -70,7 +70,7 @@ Java 应用在云计算时代面临“冷启动”慢、内存占用高、预热 ![image.png](/imgs/blog/2023/6/graalvm/graalvm-advantages.png) -总结起来就是这里的关键几项:更快的启动个速度、更少的资源占用、更小的安全漏洞风险、更紧凑的二进制包体积。解决 Java 应用在 Sererless 等云计算应用场景中面临的突出问题。 +总结起来就是这里的关键几项:更快的启动速度、更少的资源占用、更小的安全漏洞风险、更紧凑的二进制包体积。解决 Java 应用在 Sererless 等云计算应用场景中面临的突出问题。 ## GraalVM Native Image 的基本原理与使用 diff --git a/content/zh-cn/overview/mannual/_index.md b/content/zh-cn/overview/mannual/_index.md index eeebd335f2f0..eb0bb4271d55 100755 --- a/content/zh-cn/overview/mannual/_index.md +++ b/content/zh-cn/overview/mannual/_index.md @@ -3,13 +3,12 @@ aliases: - /zh/overview/mannual/ - /zh/docs3-v2/ - /zh-cn/docs3-v2/ -always_unfold: true -description: Dubbo SDK 手册 +description: Dubbo SDK 用户手册 feature: description: | 提供 Java、Golang、Rust、Node.js、Python 等多语言 SDK 实现,支持基于 IDL 的跨语言服务定义和基于 Protobuf、Json 的数据编码 title: 多语言 SDK -linkTitle: SDK 手册 +linkTitle: SDK 用户手册 no_list: true title: Dubbo SDK 用户手册 type: docs @@ -40,7 +39,7 @@ weight: 6

- Golang SDK + Go SDK

Dubbo Golang SDK 手册

@@ -50,9 +49,9 @@ weight: 6

- Erlang SDK + Node.js

-

Dubbo Erlang SDK 手册

+

Dubbo Node.js SDK 手册

@@ -60,9 +59,9 @@ weight: 6

- Dubbo Go Pixiu + Web SDK

-

Dubbo Go Pixiu 手册

+

Dubbo Web SDK 手册

@@ -72,11 +71,10 @@ weight: 6

Rust SDK

-

Rust SDK 手册

+

Dubbo Rust SDK 手册

-
diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/_index.md b/content/zh-cn/overview/mannual/dubbo-go-pixiu/_index.md deleted file mode 100755 index ffc0955c4479..000000000000 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/dubbo-go-pixiu/ - - /zh-cn/docs3-v2/dubbo-go-pixiu/ -description: Dubbo Go Pixiu -linkTitle: Dubbo Go Pixiu -title: Dubbo Go Pixiu -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/introduction.md b/content/zh-cn/overview/mannual/golang-sdk/introduction.md new file mode 100644 index 000000000000..27fb3dd9aa16 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/introduction.md @@ -0,0 +1,122 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/preface/ + - /zh-cn/docs3-v2/golang-sdk/preface/ + - /zh-cn/overview/mannual/golang-sdk/preface/ +description: Dubbo-go 框架 +linkTitle: 框架介绍 +title: 框架介绍 +type: docs +weight: 1 +--- + +## 什么是 dubbo-go +Dubbo-go 是 Apache Dubbo 的 go 语言实现,它完全遵循 Apache Dubbo 设计原则与目标,是 go 语言领域的一款优秀微服务开发框架。dubbo-go 提供: +* **API 与 RPC 协议**:帮助解决组件之间的 RPC 通信问题,提供基于 HTTP/1/2 的通信协议、streaming流式通信模型。 +* **丰富的微服务治理能力**:解决地址发现、流量管控、可观测性、全链路追踪、日志等微服务整体解决方案。 + +## 概念与架构 +以下是 dubbo-go 的整体架构图: +![dubbo-go architecture](/imgs/golang/architecture/arc.png) + +dubbo-go 总体上遵循 `框架内核+插件` 的的设计理念,左侧的 `框架内核` 定义了 dubbo-go 作为微服务框架的一些核心概念,右侧的 `插件` 部分则提供了核心概念扩展实现。 + +`框架内核` 可分为 4 个层次,从上到下依次为: +* API 层:dubbo-go 同时支持基于 IDL、interface/struct 的服务契约定义,兼顾跨语言与易用性诉求;支持基于纯 yaml 文件的微服务配置模式;提供了同步、异步、单次(unary)、流式(streaming) 等 RPC 通信与编码模型。 + +* 服务治理层:dubbo-go 内置了多维度的服务治理能力抽象,确保满足微服务开发与集群治理的核心诉求,这包括地址发现(Service Discovery)、负载均衡(Load Balancing)、可观测指标(Metrics)、流量管控(Traffic Management)、全链路追踪(Tracing)等。 + +* RPC 协议层:dubbo-go 实现的最核心的 RPC 协议是 - triple 协议,triple 可同时工作在 http1/2 之上 (支持 CURL 直接访问),兼容 gRPC;从设计上,dubbo-go 还提供了多协议发布服务的支持,你可以在一个进程内同时发布 triple、dubbo2、rest、jsonRPC 等多种不同通信协议的服务。 + +* 传输层:支持 HTTP1/2、TCP 传输层,兼顾性能与通用性,同时支持多种序列化方式。 + +`插件` 体系极大的丰富了 dubbo-go 功能与生态,社区内置提供了大量的内置扩展实现,同时,开发者可以非常容易的根据需求增加扩展实现。以下是一些典型的插件定义: + +* Protocol:dubbo-go 基于 protocol 插件内置提供了 triple、dubbo2、rest 等协议支持,通过扩展 protocol 可以为 dubbo-go 扩展更多协议 +* Service Discovery:支持 Nacos、Zookeeper、Polaris 等主流注册中心集成 +* Traffic Management:dubbo-go 支持 Dubbo 体系定义的流量规则,可以实现在运行期动态的调整服务行为如超时时间、重试次数、限流参数等,通过控制流量分布可以实现 A/B 测试、金丝雀发布、多版本按比例流量分配、条件匹配路由、黑白名单等 +* Metrics:提供 RPC 调用(RT、QPS、调用量、请求成功数、请求失败数、并发请求数等)、注册中心、元数据中心、配置中心交互统计等丰富的内置采集埋点,支持多维度的指标聚合 +* Logging:提供通用的日志采集接口定义,内置 Zap、Logrus 支持 +* Tracing:提供分布式链路追踪能力,通过此插件扩展可接入 Zipkin、Jaeger、Skywalking 等链路追踪系统。 + +下图是从内核源码视角,给出的框架核心组件以及组件之间的关联关系: + +![img](/imgs/docs3-v2/golang-sdk/concept/more/app_and_interface/dubbogo-concept.png) + +### RPC +#### Triple +基于 Dubbo 定义的 [triple 协议](/zh-cn/overview/reference/protocols/triple/),你可以轻松编写浏览器、gRPC 兼容的 RPC 服务,并让这些服务同时运行在 HTTP/1 和 HTTP/2 上。作为 Apache Dubbo 多语言 RPC体系的一环,dubbo-go 提供了 triple 协议的完整实现,支持使用 IDL 或编程语言特有的方式定义服务,并提供一套轻量的 API 来发布或调用这些服务。triple 协议让 dubbo-go 可以: +* **作为后端服务与 Dubbo 其他语言实现互通** +* **接收浏览器等标准 http 工具发起的请求** +* **与标准的 gRPC 体系互通** + +![dubbo多语言实现](/imgs/golang/architecture/language.png) + +请参考以下链接了解更多 dubbo-go 跨语言或跨产品的互通细节: +* [与 Dubbo 其他多语言体系互通 - 基于 triple+protobuf](../tutorial/interop-dubbo/) +* [与 Dubbo2 Java互通 - 基于 dubbo2+hessian2](../tutorial/interop-dubbo) +* [与 gRPC 体系互通](../tutorial/interop-grpc) + +#### 多协议支持 +除了 triple 协议之外,dubbo-go 支持更多的 RPC 协议和序列化方式: + +| 协议 | 协议名 (用于配置) | 序列化方式 | 默认序列化方式 | +| --------------- | ----------------- | :------------------------: | -------------- | +| Triple 【推荐】 | tri | pb/json/自定义 | pb | +| Dubbo | dubbo | hessian2 | hessian2 | +| jsonRPC | jsonrpc | json | json | +| REST | rest | json | json | + +#### Filter +如下图所示,filter 是一个类似 AOP 的请求拦截机制,每一次 RPC 请求都会被 filter 拦截 + +![dubbo多语言实现](/imgs/golang/architecture/filter.png) + +我们可以在 filter 实现中完成比如请求拦截、记录、预处理、后处理的事情。dubbo-go 的一些核心能力,比如超时时间、访问日志(ccesslog)、metrtics 等都是基于内置 filter 实现的。 + +#### Streaming + +![dubbo多语言实现](/imgs/golang/architecture/streaming.png) + +* Server streaming RPC:一次 server-streaming RPC 请求与 unary RPC 非常类似,不同之处在于,对于单次 client 请求 server 会返回一系列的流式响应。 + +* Client streaming RPC:一次 client-streaming RPC 请求与 unary RPC 非常类似,不同之处在于,client 会发送一系列的流式请求到 server,最终 server 针对所有收到的请求返回一条响应信息。 + +* Bidirectional streaming RPC:在双向流式 RPC 请求中,请求首先由 client 端发起,server 在收到请求信息(方法名、metadata等)后,可以选择立即发送 metadata 作为响应,或者一直等到 client 进一步发起流式请求数据。 + +### 服务治理 +dubbo-go 提供了完善的服务治理能力,包括地址发现、可观测、全链路追踪、流量管控等。你可以使用 dubbo-go 开发与管理微服务集群并实现与 Apache Dubbo 其他语言体系的互通。 + +#### 地址发现 +![img](/imgs/architecture.png) + +Dubbo-go 支持的注册中心类型如下,具体配置方式请参考使用教程 [地址发现](../tutorial/service-discovery/): + +| 注册中心 | 注册中心名(用于配置) | +| --------- | ---------------------- | +| Zookeeper | zookeeper | +| Nacos | nacos | +| Etcd | etcd | +| Polaris | polaris | + +#### 可观测 +dubbo-go 的可视化指标采集遵循 Apache Dubbo 定义的 [metrics 指标规范](/zh-cn/overview/reference/Metrics/standard_metrics/)。在实现 metrics 指标采集后,接下来就是如何可视化展示的问题,当前最常用的式导出到 Prometheus 并通过 Grafana 实现数据可视化展示。 + +具体启用方式请参考使用手册中的 [可视化观测](../tutorial/observability/)。 + +#### 全链路追踪 +dubbo-go 支持通过 Open Telemetry 接入 Zipkin、Jaeger、Skywalking 等全链路追踪系统。 + +具体启用方式请参考使用手册中的 [全链路追踪](../tutorial/tracing/)。 + +#### 流量管控 +dubbo-go 实现的流量治理规则完全遵循 Dubbo 框架设计的流量治理能力,可以通过以下链接了解更多详情: +* [Dubbo 流量治理规则设计](/zh-cn/overview/core-features/traffic/) +* [Dubbo 流量治理示例任务](/zh-cn/overview/tasks/traffic-management/) + + + + + + + diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/_index.md b/content/zh-cn/overview/mannual/golang-sdk/preface/_index.md deleted file mode 100644 index 8a33ed5d5663..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/ - - /zh-cn/docs3-v2/golang-sdk/preface/ -description: Dubbo-go 框架 -linkTitle: 框架介绍 -title: 框架介绍 -type: docs -weight: 1 ---- - -![img](/imgs/docs3-v2/golang-sdk/concept/dubbogo.png) - -Apache/Dubbo-go ([github.com/apache/dubbo-go](https://github.com/apache/dubbo-go)) - -是一款分布式 RPC 框架;是 Apache/Dubbo 的 Go 语言实现。旨在为开发者提供便利的微服务应用开发体验。 - -Dubbo-go 架起 Java 和 Go 语言之间的桥梁,与 gRPC/Dubbo/SpringCloud 生态互联互通,依赖 Go 语言生态发掘云原生时代的技术红利。 diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/_index.md b/content/zh-cn/overview/mannual/golang-sdk/preface/concept/_index.md deleted file mode 100644 index ca1d23bfe5e0..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/concept/ - - /zh-cn/docs3-v2/golang-sdk/preface/concept/ -description: Dubbo-go 框架概念体系 -linkTitle: 概念体系 -title: 概念体系 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/multi_language.md b/content/zh-cn/overview/mannual/golang-sdk/preface/concept/multi_language.md deleted file mode 100644 index 39c91e3d6eab..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/multi_language.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/concept/multi_language/ - - /zh-cn/docs3-v2/golang-sdk/preface/concept/multi_language/ -description: 多语言 RPC -keywords: 多语言 RPC -title: 多语言 RPC -type: docs ---- - - - - - - - -![img](/imgs/docs3-v2/golang-sdk/concept/rpc/multi_language/dubbogo-3.0-invocation.png) - -### 跨语言调用 - -随着微服务场景的大范围应用,多语言场景越来越普遍,开发人员更愿意使用更适合的语言,来实现一个复杂系统的不同模块。例如使用 C 来编写网关,使用 Go 来编写 K8S 资源 operator,使用 Java 来编写业务应用。语言与场景并不是绑定的,企业往往可以结合自身发展的技术栈、开发人员的专长,来选型合适的语言。 - -在多语言场景中,跨语言调用能力就显得十分重要。 - -跨语言能力本质上是 [【网络协议】](../protocol/) 提供的能力。如何方便地让用户使用需要的网络协议、针对合适的跨语言场景进行开发、享受 Dubbo 生态的服务治理能力,是 Dubbo-go 服务框架所关心的。 - -### 跨生态 - -Dubbo-go 服务框架提供了跨生态的能力,开发人员可以使用 Dubbo-go 以及其 [生态项目](../../../refer/ecology/) 建立 HTTP/前端服务、Dubbo/Spring 应用、gRPC 生态应用之间的联系。 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/protocol.md b/content/zh-cn/overview/mannual/golang-sdk/preface/concept/protocol.md deleted file mode 100644 index 475c52f95aeb..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/protocol.md +++ /dev/null @@ -1,117 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/concept/protocol/ - - /zh-cn/docs3-v2/golang-sdk/preface/concept/protocol/ -description: 网络协议 -title: 网络协议 -type: docs ---- - - - - - - -## 1. RPC 服务框架与网络协议 - -网络协议在 RPC 场景十分重要,在微服务场景下,服务进程之间的通信依赖可以连通的网络,以及client与server 端保持一致的网络协议。网络协议是一个抽象的概念,站在 Dubbo-go 应用开发的角度,不妨把我们关注的协议分为三个维度来讨论。 - -### 1.1 打解包协议 - -Dubbo-go 服务框架内置的打解包协议都是基于 TCP/IP 协议栈的,在此基础之上,封装/引入了多种协议,例如 Triple(dubbo3)、Dubbo、gRPC。 - -这一类协议重点关注 TCP 报文的封装和拆解过程,保证点对点的可靠通信。 - -在 dubbo-go 生态中,支持多种网络往往指的这一类协议。 - - - -### 1.2 序列化协议 - -序列化协议负责将内存中的对象以特定格式序列化为二进制流。一些主流的序列化库有:具有较好可读性、应用广泛的 json 序列化方式;较高压缩效率,性能较好的 protobuf 序列化方式;适配与 Java 语言的 hessian2 序列化方式等。Dubbo-go 内置了这三种序列化方式 - -序列化协议是需要开发者在业务开发过程中关注的,序列化协议往往需要特定的对象标注: - -一个由 protoc-gen-go 生成的 protobuf 序列对象的例子: - -```protobuf -type HelloRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` -} -``` - -一个可与 java 服务互通的 hessian2 序列化对象 - -```go -type HelloRequest struct { - Name string `hessian:"name"` -} - -func (u *HelloRequest) JavaClassName() string { - return "org.apache.dubbo.sample.User" -} -``` - -序列化协议与打解包协议的关系 - -- 一种打解包协议可以适配于多种序列化协议支持:例如,您可以使用 dubbogo 的 triple 协议来传递 hessian序列化参数与 Dubbo-java 服务框架互通;传递 pb 序列化参数与原生 gRPC 服务互通;通过实现接口来自定义您的希望的序列化方式例如 json,从而传递具有较强可读性的参数。 - -### 1.3 接口协议 - -接口协议,是由业务开发人员开发并且维护的协议,用于描述服务接口的信息。例如接口名、方法、参数类型。 - -以 Triple/gRPC 为例,开发人员可以使用插件,从 proto 文件中定义的接口生成存根(.pb.go 文件),存根文件内包含接口所有信息,及接口协议。 - -在编写服务时,客户端和服务端同时引入相同的接口,即可保证客户端发起针对特定接口和方法的调用,能被服务端正确识别和响应。 - -一个由 proto 编写的接口描述文件: - -```protobuf -syntax = "proto3"; -package api; - -option go_package = "./;api"; - -// The greeting service definition. -service Greeter { - // Sends a greeting - rpc SayHello (HelloRequest) returns (User) {} - // Sends a greeting via stream - rpc SayHelloStream (stream HelloRequest) returns (stream User) {} -} - -// The request message containing the user's name. -message HelloRequest { - string name = 1; -} - -// The response message containing the greetings -message User { - string name = 1; - string id = 2; - int32 age = 3; -} -``` - -接口协议与序列化协议的关系 - -- 接口协议是抽象的概念,一种接口协议可以使用多种接口描述语言来编写,并且可以转化成多种序列化协议对象。 - -## 2. Dubbo-go 支持的网络协议 - -Dubbo-go 支持的网络协议和序列化方式如下: - -| 协议 | 协议名 (用于配置) | 序列化方式 | 默认序列化方式 | -| --------------- | ----------------- | :------------------------: | -------------- | -| Triple 【推荐】 | tri | pb/hessian2/msgpack/自定义 | pb | -| Dubbo | dubbo | hessian2 | hessian2 | -| gRPC | grpc | pb | pb | -| jsonRPC | jsonrpc | json | json | - - - -相关阅读:[【Dubbo-go 服务代理模型】](https://developer.aliyun.com/article/878252) \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/registry.md b/content/zh-cn/overview/mannual/golang-sdk/preface/concept/registry.md deleted file mode 100644 index 7946c68db198..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/registry.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/concept/registry/ - - /zh-cn/docs3-v2/golang-sdk/preface/concept/registry/ -description: 服务注册发现 -keywords: 服务注册发现 -title: 服务注册发现 -type: docs ---- - - - - - - -## 1. Dubbo 的注册中心 - -注册中心在 RPC 场景下负责保存服务端应用的信息。 - -服务端注册接口信息和到自身地址到注册中心,客户端从注册中心读取和订阅需要调用的地址列表。整个架构如图所示: - -![img](/imgs/architecture.png) - -关于 Dubbo 服务发现细节,详情可参考 [Dubbo 官网的概念介绍](/zh-cn/docs/concepts/service-discovery/) - -## 2. 服务发现概念 - -Dubbo 生态中,服务发现有以下主要概念: - -- 应用 Application - - 应用是一个 dubbo 服务进程,对应一个应用名。 - -- 接口(服务) - - 接口是一个 RPC 接口类,例如一个通过 proto 定义的 Service,再例如一个 Java Interface 类。一个 dubbo 进程可以包含多个服务/接口。 - -- 方法 - - 方法在接口中定义,一个接口可以包含多个方法。 - -- 参数列表 - - 参数列表在方法中定义。由于 Java 支持重载,一个方法可以包含多个参数列表。对于 Go 是一对一的关系。 - -- 注册信息 - - 在“接口级服务发现”的场景下,注册信息主要包含应用名、接口列表、元数据信息、以及服务端的IP地址等。以 URL 的形式保存在注册中心,供客户端发起调用前查询。 - - 在“应用级服务发现”的场景下,注册信息只包含应用名、应用名到接口的映射等少量应用级别的信息,接口级别的信息作为元数据保存在元数据中心。 - -- 元数据 - - 元数据指接口信息,例如接口名、包含的方法、方法对应的参数、序列化方式、协议等等信息。 - -- 注册中心 - - 注册中心用于保存服务端的信息。 - -- 元数据中心 - - 元数据中心用于保存服务端的元数据信息,在“应用级服务发现”场景中,作为“服务自省”阶段的依赖。 - -Dubbo-go 中的服务网格能力,引入以下几个概念 - -- 主机名 - - 主机名当前应用在 k8s 上注册的 Service 名。其他应用可以通过主机名访问本应用实例。 - -- 端点 - - 端点包含实例的 IP 地址、端口。 - -- 集群 - - 集群 ID 保存了从{主机名、集群子集名、端口} - - 集群保存集群 ID 到所有其包含端点的映射关系。 - -- 服务网格元数据 - - 服务网格元数据是接口名到主机名到映射,用于客户端查询所需接口的主机名信息。 - -## 3. Dubbo-go 注册中心 - -Dubbo-go 支持的注册中心类型如下: - -| 注册中心 | 注册中心名(用于配置) | -| --------- | ---------------------- | -| Zookeeper | zookeeper | -| Nacos | nacos | -| Etcd | etcd | -| Consul | consul | - -相关阅读:[【应用级服务发现解析】](https://developer.aliyun.com/article/764173) diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/design/_index.md b/content/zh-cn/overview/mannual/golang-sdk/preface/design/_index.md deleted file mode 100644 index aa0c9edcc9fd..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/design/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/design/ - - /zh-cn/docs3-v2/golang-sdk/preface/design/ -description: Dubbo-go 框架代码架构 -linkTitle: 代码架构 -title: 代码架构 -type: docs -weight: 4 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/samples.md b/content/zh-cn/overview/mannual/golang-sdk/preface/samples.md deleted file mode 100644 index 9f0151e10b7a..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/samples.md +++ /dev/null @@ -1,184 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/preface/samples/ - - /zh-cn/docs3-v2/golang-sdk/preface/samples/ -description: Dubbo-go 示例使用方式 -linkTitle: 快速入门 -title: 快速入门 -type: docs -weight: 5 ---- - - - - - - - -为了方便 Dubbo-go 框架用户的使用,我们提供了 Samples 仓库以供用户参考: - -[【Dubbo-go-samples 仓库地址】](https://github.com/apache/dubbo-go-samples) - -## 1. Samples 仓库包含的例子 - -* config-api: 使用 API 进行配置初始化 -* configcenter: 使用不同的配置中心,目前支持三种:zookeeper、apollo、和 nacos -* context: 如何使用上下文传递 attachment -* direct: 直连模式 -* game: 游戏服务例子 -* generic: 泛化调用 -* rpc: RPC 调用例子, 包含 Triple、Dubbo等协议以及跨语言/gRPC互通示例 -* helloworld: RPC调用入门例子 -* logger: 日志例子 -* registry: 展示与不同注册中心的对接,包含了 zk、nacos、etcd -* metrics: 数据上报 -* filter: 使用提供filter和自定义filter的例子 -* registry/servicediscovery:应用级服务发现例子 -* router: 路由例子 -* tracing: 链路追踪例子 - -## 2. 如何运行 - -目前有三种方式来运行 dubbo-go 的示例: - -1. 通过 bash 命令快速开始: 通过简单的命令行启动样例以及进行单元测试 -2. 在 IDE 中快速开始,这也是**推荐**的方式: 在工程 ".run" 子目录下,提供了所有示例的 GoLand 运行配置文件,因此用户可以简单在 IDE 中单击运行所有的示例。 -3. 在 IDE 中手工配置并运行: 为了完整性的目的,也为了万一您不使用 GoLand 而使用其他的 IDE,这里也提供了如何一步一步的配置的指南,帮助用户理解如何在 IDE 中配置,运行或者调试 dubbo-go 的示例。 - -### 2.1 通过 命令行 快速开始 - -*前置条件:需要 docker 环境就绪* - -下面我们将使用 "helloworld" 作为示例: - -1. **启动注册中心(比如 zookeeper)** - - ```bash - make -f build/Makefile docker-up - ``` - - 当看到类似下面的输出信息时,就表明 zookeeper server 启动就绪了。 - - ```bash - > Starting dependency services with ./integrate_test/dockercompose/docker-compose.yml - Docker Compose is now in the Docker CLI, try `docker compose up` - - Creating network "dockercompose_default" with the default driver - Creating dockercompose_zookeeper_1 ... done - Creating etcd ... done - Creating nacos-standalone ... done - ``` - - 如果要停掉注册中心,可以通过运行以下的命令完成: - - ```bash - make -f build/Makefile docker-down - ``` - -2. **启动服务提供方** - - ```bash - cd helloworld/go-server/cmd - export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" - go run . - ``` - - 当看到类似下面的输出信息时,就表明服务提供方启动就绪了。 - - ```bash - 2021/10/27 00:33:10 Connected to 127.0.0.1:2181 - 2021/10/27 00:33:10 Authenticated: id=72057926938066944, timeout=10000 - 2021/10/27 00:33:10 Re-submitting `0` credentials after reconnect - ``` - -3. **运行服务调用方** - - ```bash - cd helloworld/go-client/cmd - export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" - go run . - ``` - - 当以下的信息输出时,说明 `go-client` 调用 `go-server` 成功。 - - ```bash - 2021-10-27T00:40:44.879+0800 DEBUG triple/dubbo3_client.go:106 TripleClient.Invoke: get reply = name:"Hello laurence" id:"12345" age:21 - 2021-10-27T00:40:44.879+0800 DEBUG proxy/proxy.go:218 [makeDubboCallProxy] result: name:"Hello laurence" id:"12345" age:21 , err: - 2021-10-27T00:40:44.879+0800 INFO cmd/client.go:51 client response result: name:"Hello laurence" id:"12345" age:21 - ``` - -4. **集成测试** - 本项目 dubbo-go-samples 除了用来展示如何使用 dubbo-go 中的功能和特性之外,还被用于 apache/dubbo-go 的集成测试。可以按照以下的步骤来运行针对 `go-server` 设计的集成测试: - - 首先启动服务方 - ```bash - cd helloworld/go-server/cmd - export DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" - go run . - ``` - - 然后切换到单测目录, 设置环境变量,然后执行单测 - ```bash - cd integrate_test/helloworld/tests/integration - export DUBBO_GO_CONFIG_PATH="../../../../helloworld/go-client/conf/dubbogo.yml" - go test -v - ``` - - 当以下信息输出时,说明集成测试通过。 - - ```bash - > Running integration test for application go-server - ... - --- PASS: TestSayHello (0.01s) - PASS - ok github.com/apache/dubbo-go-samples/integrate_test/helloworld/tests/integration 0.119s - ``` - -7. **关闭并清理** - ```bash - make -f build/Makefile clean docker-down - ``` - -*以下的两种运行方式都与 IDE 有关。这里我们以 Intellij GoLand 为例来讨论。* - -### 2.2 在 IDE 中快速开始 - -一旦在 GoLand 中打开本项目,可以发现,在 "Run Configuration" 弹出菜单中已经存在了一系列事先配置好了的用来运行相关服务提供方和调用方的选项,例如:"helloworld-go-server" 和 "helloworld-go-client"。 - -可以选择其中的任意一个快速启动相关示例。当然在运行之前,假设需要的注册中心已经事先启动了,不然用例将会失败。您可以选择手动自行启动的方式,也可以利用工程中提供的 "docker-compose.yml" 在启动注册中心的 docker 实例。 - -### 2.3.在 IDE 中手工运行 - -这里以 *Intellij GoLand* 为例。在 GoLand 中打开 dubbo-go-samples 工程之后,按照以下的步骤来运行/调试本示例: - -1. **启动 zookeeper 服务器** - - 打开 "integrate_test/dockercompose/docker-compose.yml" 这个文件,然后点击位于编辑器左边 gutter 栏位中的 ▶︎▶︎ 图标运行,"Service" Tab 应当会弹出并输出类似下面的文本信息: - ``` - Deploying 'Compose: docker'... - /usr/local/bin/docker-compose -f ...integrate_test/dockercompose/docker-compose.yml up -d - Creating network "docker_default" with the default driver - Creating docker_zookeeper_1 ... - 'Compose: docker' has been deployed successfully. - ``` - -2. **启动服务提供方** - - 打开 "helloworld/go-server/cmd/server.go" 文件,然后点击左边 gutter 栏位中紧挨着 "main" 函数的 ▶︎ 图标,并从弹出的菜单中选择 "Modify Run Configuration...",并确保以下配置的准确: - * Working Directory: "helloworld/go-server" 目录的绝对路径,比如: */home/dubbo-go-samples/helloworld/go-server* - * Environment: DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" - - 这样示例中的服务端就准备就绪,随时可以运行了。 - -3. **运行服务消费方** - - 打开 "helloworld/go-client/cmd/client.go" 这个文件,然后从左边 gutter 栏位中点击紧挨着 "main" 函数的 ▶︎ 图标,然后从弹出的菜单中选择 "Modify Run Configuration...",并确保以下配置的准确: - * Working Directory: "helloworld/go-client" 目录的绝对路径,比如: */home/dubbo-go-samples/helloworld/go-client* - * Environment: DUBBO_GO_CONFIG_PATH="../conf/dubbogo.yml" - - 然后就可以运行并调用远端的服务了,如果调用成功,将会有以下的输出: - ``` - [2021-02-03/16:19:30 main.main: client.go: 66] response result: &{A001 Alex Stocks 18 2020-02-04 16:19:30.422 +0800 CST} - ``` - -如果需要调试该示例或者 dubbo-go 框架,可以在 IDE 中从 "Run" 切换到 "Debug"。如果要结束的话,直接点击 ◼︎ 就好了。 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/quickstart.md b/content/zh-cn/overview/mannual/golang-sdk/quickstart.md new file mode 100644 index 000000000000..6707b5b164ba --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/quickstart.md @@ -0,0 +1,244 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/quickstart/ + - /zh-cn/docs3-v2/golang-sdk/quickstart/ +description: Dubbo-go 快速开始 +linkTitle: 快速开始 +title: 快速开始 +type: docs +weight: 2 +--- + +基于 Dubbo 定义的 Triple 协议,你可以轻松编写浏览器、gRPC 兼容的 RPC 服务,并让这些服务同时运行在 HTTP/1 和 HTTP/2 上。Dubbo Go SDK 支持使用 IDL 或编程语言特有的方式定义服务,并提供一套轻量的 API 来发布或调用这些服务。 + +本示例演示了基于 Triple 协议的 RPC 通信模式,示例使用 Protocol Buffer 定义 RPC 服务,并演示了代码生成、服务发布和服务访问等过程。 + +## 前置条件 + +因为使用 Protocol Buffer 的原因,我们首先需要安装相关的代码生成工具,这包括 `protoc`、`protoc-gen-go`、`protoc-gen-go-triple`。 + +1. 安装 `protoc` + + 查看 Protocol Buffer Compiler 安装指南 + +2. 安装 `protoc` 插件 + + 接下来,我们安装插件 `protoc-gen-go`、`protoc-gen-go-triple`。 + + ```shell + go install google.golang.org/protobuf/cmd/protoc-gen-go@latest + go install github.com/apache/dubbo-go/compiler/protoc-gen-go-triple@latest + ``` + + 确保 `protoc-gen-go`、`protoc-gen-go-triple` 在你的 `PATH` 中。这可以通过 `which protoc-gen-go` 验证,如果该命令不能正常工作的话,请执行以下命令: + + ```shell + [ -n "$(go env GOBIN)" ] && export PATH="$(go env GOBIN):${PATH}" + [ -n "$(go env GOPATH)" ] && export PATH="$(go env GOPATH)/bin:${PATH}" + ``` + +## 快速运行示例 +### 下载示例源码 +我们在 apache/dubbo-go-samples 仓库维护了一系列 dubbo-go 使用示例,用来帮助用户快速学习 dubbo-go 使用方式。 + +你可以 下载示例zip包并解压,或者克隆仓库: + +```shell +$ git clone --depth 1 https://github.com/apache/dubbo-go-samples +``` + +切换到快速开始示例目录: + +```shell +$ cd dubbo-go-samples/helloworld +``` + +### 运行 server +在 `helloworld` 目录: + +运行以下命令,启动 server: + +```shell +$ go run server.go +``` + +使用 `cURL` 验证 server 正常启动: + +```shell +$ curl \ + --header "Content-Type: application/json" \ + --data '{"name": "Dubbo"}' \ + http://localhost:50051/greet.v1.GreetService/Greet + +Greeting: Hello world +``` + +### 运行 client + +打开一个新的 terminal,运行以下命令,启动 client + +```shell +$ go run client.go + +Greeting: Hello world +``` + +以上就是一个完整的 dubbo-go rpc 工作流程。 + +## 源码讲解 +接下来,我们将对 `dubbo-go-samples/helloworld` 示例进行源码层面的讲解。 + +### 定义服务 +示例使用 Protocol Buffer (IDL) 来定义 Dubbo 服务。 + +```protobuf +syntax = "proto3"; + +package greet.v1; + +option go_package = "github.com/apache/dubbo-go-samples/helloworld/greet/v1"; + +message GreetRequest { + string name = 1; +} + +message GreetResponse { + string greeting = 1; +} + +service GreetService { + rpc Greet(GreetRequest) returns (GreetResponse) {} +} +``` + +这个文件声明了一个叫做 `GreetService` 的服务,为这个服务定义了 Greet 方法以及它的请求参数 GreetRequest 和返回值 GreetResponse。 + +### 生成代码 + +在运行 server 或者 client 之前,我们需要使用 `protoc-gen-go`、`protoc-gen-go-triple`生成相关的代码 + +```bash +protoc --go_out=. --go_opt=paths=source_relative \ + --go-triple_out=. --go-triple_opt=paths=source_relative \ + proto/greet.proto +``` + +运行以上命令后,在目标目录中看到以下生成的文件: + +``` +proto +└── greet + └── v1 + ├── greet.pb.go + └── greetv1triple + └── greet.triple.go +``` + +在 proto/greet/v1 包下有两部分内容: + +- `greet.pb.go` 是由谷歌标准的 `protoc-gen-go`生成,它包含 `GreetRequest`、`GreetResponse` 结构体和响应的编解码规则。 +- `greetv1triple` 包下的文件`reet.triple.go`是由 Dubbo 自定义的插件`protoc-gen-triple-go`成,其中关键的信息包括生成的接口 `GreeterClient`、构造器等。 + +### 实现服务 + +接下来我们就需要添加业务逻辑了,实现 `greetv1triple.GreeterClient` 接口即可。 + +```go +type GreeterServer struct { + greet.UnimplementedGreeterServer +} + +func (s *GreeterServer) SayHello(ctx context.Context, in *greet.HelloRequest) (*greet.User, error) { + return &greet.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, nil +} +``` + +### 启动 Server + +创建一个新的 Server,把我们上一步中实现的 `GreeterServer`注册给它,接下来就可以直接初始化和启动 Server 了,它将在指定的端口接收请求。 + +```go +func main() { + srv, err := server.NewServer( + server.WithServerProtocol( + protocol.WithTriple(), + protocol.WithPort(20000), + ), + ) + if err != nil { + panic(err) + } + if err := greetv1triple.RegisterGreetServiceHandler(srv, &api.GreetTripleServer{}); err != nil { + panic(err) + } + if err := srv.Serve(); err != nil { + panic(err) + } +} +``` + +### 访问服务 + +最简单方式是使用 HTTP/1.1 POST 请求访问服务,参数则作以标准 JSON 格式作为 HTTP 负载传递。如下是使用 cURL 命令的访问示例: +```shell +curl \ + --header "Content-Type: application/json" \ + --data '{"name": "Dubbo"}' \ + http://localhost:50051/org.apache.dubbo.demo.DemoService/sayHello +``` + +也可以使用 Dubbo client 请求服务,我们首先需要从生成代码即 `greetv1triple` 包中获取服务代理,为它指定 server 地址并初始化,之后就可以发起 RPC 调用了。 + +```go +func main() { + // for the most brief RPC case + cli, err := client.NewClient( + client.WithURL("tri://127.0.0.1:20000"), + ) + if err != nil { + panic(err) + } + svc, err := greettriple.NewGreetService(cli) + if err != nil { + panic(err) + } + + common.TestClient(svc) +} +``` + +以上即是 dubbo-go rpc 的基本工作原理! + +## 更多内容 +{{< blocks/section color="white" height="auto">}} +
+
+
+
+
+

+ 流式通信 +

+

学习 Streaming 通信模型、配置超时时间、传递headers等更多框架配置。

+
+
+
+
+
+
+

+ 服务发现等治理能力 +

+

学习如何使用 dubbo-go 开发微服务,引入服务发现、可观测性、流量管控等服务治理能力。

+
+
+
+
+
+
+{{< /blocks/section >}} + + + + diff --git a/content/zh-cn/overview/mannual/golang-sdk/quickstart/_index.md b/content/zh-cn/overview/mannual/golang-sdk/quickstart/_index.md deleted file mode 100644 index 502fb0eb9b06..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/quickstart/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/quickstart/ - - /zh-cn/docs3-v2/golang-sdk/quickstart/ -description: Dubbo-go 快速开始 -linkTitle: 快速开始 -title: 快速开始 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/quickstart/install.md b/content/zh-cn/overview/mannual/golang-sdk/quickstart/install.md deleted file mode 100644 index aa9e2e3f64f5..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/quickstart/install.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/quickstart/install/ - - /zh-cn/docs3-v2/golang-sdk/quickstart/install/ -description: 安装 Dubbo-go 开发环境 -title: 安装 Dubbo-go 开发环境 -type: docs -weight: 1 ---- -### 1. 推荐 Go 版本 - -[Go](https://golang.google.cn/) >= `1.15` -> 建议使用最新 `1.19` - -安装成功后将 `$GOPATH/bin` 加入环境变量 - -### 2. 安装序列化工具 - -[protoc](https://github.com/protocolbuffers/protobuf/releases) - -### 3. 安装工具以及相关插件 - -执行以下指令安装 dubbogo-cli 至 `$GOPATH/bin` - -添加 Go 模块代理 -```bash -$ export GOPROXY="https://goproxy.cn" -``` -安装 dubbogo-cli 工具 -```bash -$ go install github.com/dubbogo/dubbogo-cli@latest -``` -执行 dubbogo-cli 命令 -```bash -$ dubbogo-cli -hello -``` - -安装依赖的工具插件 - -```bash -$ dubbogo-cli install all -``` - -确保上述安装的工具位于在系统环境变量内 - -```bash -$ protoc --version -libprotoc 3.14.0 -``` -```bash -$ protoc-gen-go --version -protoc-gen-go v1.26.0 -``` -```bash -$ protoc-gen-go-triple --version -protoc-gen-go-triple 1.0.8 -``` diff --git a/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple.md b/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple.md deleted file mode 100644 index fc7b6ff71b0c..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple.md +++ /dev/null @@ -1,137 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/quickstart/quickstart_triple/ - - /zh-cn/docs3-v2/golang-sdk/quickstart/quickstart_triple/ -description: 完成一次 RPC 调用 -title: 完成一次 RPC 调用 -type: docs -weight: 2 ---- - -## 1. 生成 Demo 项目 - -使用安装好的 dubbogo-cli 工具,创建 demo 工程。 - -创建并切换目录 - -```bash -$ mkdir quickstart && cd quickstart -``` - -使用 dubbogo-cli 工具创建新项目 - -```bash -$ dubbogo-cli newDemo . -``` - -查看项目结构 - -```bash -$ tree . -. -├── api -│   ├── samples_api.pb.go -│   ├── samples_api.proto -│   └── samples_api_triple.pb.go -├── go-client -│   ├── cmd -│   │   └── client.go -│   └── conf -│   └── dubbogo.yaml -├── go-server -│   ├── cmd -│   │   └── server.go -│   └── conf -│   └── dubbogo.yaml -└── go.mod -``` -可看到生成的项目中包含一个 client 项目和一个 server 项目,以及相关的配置文件。 - -### 1.1 查看接口描述文件 sample_api.proto - -```protobuf -syntax = "proto3"; -package api; - -option go_package = "./;api"; - -// The greeting service definition. -service Greeter { - // Sends a greeting - rpc SayHello (HelloRequest) returns (User) {} - // Sends a greeting via stream - rpc SayHelloStream (stream HelloRequest) returns (stream User) {} -} - -// The request message containing the user's name. -message HelloRequest { - string name = 1; -} - -// The response message containing the greetings -message User { - string name = 1; - string id = 2; - int32 age = 3; -} -``` - -demo 项目中,默认生成了一个接口描述文件,接口服务名为 api.Greeter, 包含两个 RPC 方法,入参为 HelloRequest,返回值为 User,两个方法分别为普通 RPC 方法和 Streaming 类型 RPC 方法。 - -### 1.2 编译接口 (可选) - -使用安装好的编译工具编译 pb 接口。 - -```bash -$ cd api -$ protoc --go_out=. --go-triple_out=. ./samples_api.proto -``` - -参数意义:`--go_out=.` 使用上述安装的 `protoc-gen-go` 插件,生成文件到当前目录,`--go-triple_out=.` 使用上述安装的 `protoc-gen-go-triple` 插件,生成文件到当前目录。 - -执行该指令后,会生成两个文件,分别是 sample_api.pb (包含 proto 结构) 和 sample_api_triple.pb.go (包含 triple 协议接口)。 - -在 demo 工程中,预先生成好了这两个文件,修改 .proto 文件后重新执行命令生成,即可覆盖。 - -## 2. 开启一次 RPC 调用 - -项目根目录执行 - -```bash -$ go mod tidy -``` - -拉取到最新的框架依赖(其中 Go SDK 版本和 module 名以个人机器配置为准): - -```go -module helloworld - -go 1.21.1 - -require ( - dubbo.apache.org/dubbo-go/v3 v3.1.0 - github.com/dubbogo/gost v1.14.0 - github.com/dubbogo/grpc-go v1.42.10 - github.com/dubbogo/triple v1.2.2-rc3 - google.golang.org/protobuf v1.31.0 -) - -require ( - ... -) - -``` - -{{% alert title="输出结果" color="info" %}} -先后启动服务端和客户端: 开启两个终端,在 `go-server/cmd` 和 `go-client/cmd` 文件夹下分别执行 `go run .` , 可在客户端看到输出: - -```shell -client response result: name:"Hello laurence" id:"12345" age:21 -``` - -调用成功。 -{{% /alert %}} - -{{% alert title="更多" color="primary" %}} -细心的读者可以发现,以上例子编写的的服务端可以接受来自客户端的普通 RPC、流式 RPC 调用请求。目前只编写了普通调用的 Client,读者可以根据 samples 库中的例子来尝试编写流式客户端和服务端应用。 -{{% /alert %}} diff --git a/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple_with_customize.md b/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple_with_customize.md deleted file mode 100644 index 7550a192790e..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/quickstart/quickstart_triple_with_customize.md +++ /dev/null @@ -1,221 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/quickstart/quickstart_triple_with_customize/ - - /zh-cn/docs3-v2/golang-sdk/quickstart/quickstart_triple_with_customize/ -description: 完成一次 RPC 调用自己定义接口的版本 -title: 完成一次自己定义接口的版本 RPC 调用 -type: docs -weight: 3 ---- - -## 1. 实现概述 -我们本章来实现一个简单的小需求,实现一个分布式ID生成服务,通过该服务可以获取分布式ID -(假设的分布式ID,我们不探讨ID的生成方案和算法,这里直接使用uuid代替,只为演示自定义服务的创建) - -## 2. 服务端实现 -首先使用 dubbogo-cli 创建 IDC 服务 -```bash -dubbogo-cli newApp IDC && cd IDC -``` -查看项目结构 -```bash -tree . - -. -├── Makefile -├── api -│   ├── api.pb.go -│   ├── api.proto -│   └── api_triple.pb.go -├── build -│   └── Dockerfile -├── chart -│   ├── app -│   │   ├── Chart.yaml -│   │   ├── templates -│   │   │   ├── _helpers.tpl -│   │   │   ├── deployment.yaml -│   │   │   ├── service.yaml -│   │   │   └── serviceaccount.yaml -│   │   └── values.yaml -│   └── nacos_env -│   ├── Chart.yaml -│   ├── templates -│   │   ├── _helpers.tpl -│   │   ├── deployment.yaml -│   │   └── service.yaml -│   └── values.yaml -├── cmd -│   └── app.go -├── conf -│   └── dubbogo.yaml -├── go.mod -├── go.sum -└── pkg - └── service - └── service.go - -``` - -我们编辑 proto 定义我们的接口 - -```protobuf -syntax = "proto3"; -package api; - -option go_package = "./;api"; - -service Generator { - rpc GetID (GenReq) returns (GenResp) {} -} - -message GenReq { - string appId = 1; -} - -message GenResp { - string id = 1; -} -``` - -生成代码 - -```bash -$ cd api && protoc --go_out=. --go-triple_out=. ./api.proto -``` - -我们来调整 `service` 目录:`pkg/service/service.go` -修改后的代码如下 - -```go -type GeneratorServerImpl struct { - api.UnimplementedGeneratorServer -} - -func (s *GeneratorServerImpl) GetID(ctx context.Context, in *api.GenReq) (*api.GenResp, error) { - logger.Infof("Dubbo-go GeneratorProvider AppId = %s\n", in.AppId) - uuid, err := uuid.NewV4() - if err != nil { - logger.Infof("Dubbo-go GeneratorProvider get id err = %v\n", err) - return nil, err - } - return &api.GenResp{Id: uuid.String()}, nil -} - -func init() { - config.SetProviderService(&GeneratorServerImpl{}) -} -``` -同时,我们调整 `conf/dubbogo.yaml` 中的 `provider` 部分, -```yaml -dubbo: - registries: - nacos: - protocol: nacos - address: 127.0.0.1:8848 - protocols: - triple: - name: tri - port: 20000 - provider: - services: - GeneratorServerImpl: - interface: "" # read from stub -``` -我们需要拉起一个依赖的注册中心 nacos,如果你有现成的,本步骤可以忽略,我们使用 docker 来快速启动一个 nacos - -```bash -git clone https://github.com/nacos-group/nacos-docker.git && cd nacos-docker -``` - -```bash -docker-compose -f example/standalone-derby.yaml up -``` - -最后,我们启动服务端。 -```go -export DUBBO_GO_CONFIG_PATH=conf/dubbogo.yaml -``` -``` -go run cmd/app.go -``` -打开 nacos 的控制台,可以看到服务已经注册 - -![img](/imgs/docs3-v2/golang-sdk/quickstart/nacos.jpg) - - -## 2. 客户端使用 -首先,我们可以共享我们的服务端的 api 给客户端,并生成相关的代码(这里可以根据实际项目需要,共享 proto,每个 consumer 自行生成代码,或统一生成 sdk 后给依赖的服务引入) -客户端目录如下: -```bash -. -├── api -│   ├── api.pb.go -│   ├── api.proto -│   └── api_triple.pb.go -├── cmd -│   └── client.go -├── conf -│   └── dubbogo.yml -├── go.mod -├── go.sum - -``` -`api` 目录同服务端的 `api` 目录 `client.go` 代码如下: -```go - -var grpcGeneratorImpl = new(api.GeneratorClientImpl) - -func main() { - config.SetConsumerService(grpcGeneratorImpl) - if err := config.Load(); err != nil { - panic(err) - } - - logger.Info("start to test dubbo") - req := &api.GenReq{ - AppId: "laurence", - } - reply, err := grpcGeneratorImpl.GetID(context.Background(), req) - if err != nil { - logger.Error(err) - } - logger.Infof("get id result: %v\n", reply.Id) -} - -``` - -`dubbogo.yml` -```yaml -dubbo: - registries: - nacos: - protocol: nacos - address: 127.0.0.1:8848 - consumer: - references: - GeneratorClientImpl: - protocol: tri - interface: "" -``` - -运行 client,获取 id: - -```bash -export DUBBO_GO_CONFIG_PATH=conf/dubbogo.yml -``` -``` -go run cmd/client.go -``` -{{% alert title="输出结果" color="info" %}} -```shell -…… -…… -2022-12-30T20:59:19.971+0800 INFO cmd/client.go:44 start to test dubbo -2022-12-30T20:59:19.982+0800 INFO cmd/client.go:52 get id result: aafd9c73-4014-4d67-a67f-5d107105647b -``` -{{% /alert %}} - -{{% alert title="更多" color="primary" %}} -可以发现注册中心我们是使用 nacos,当然,我们也可以使用其他的注册中心,更多的使用方式,可以参考 [注册中心](/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/) -{{% /alert %}} diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/_index.md b/content/zh-cn/overview/mannual/golang-sdk/refer/_index.md index 705c664f7e4c..477e144b2eac 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/refer/_index.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/_index.md @@ -2,8 +2,8 @@ aliases: - /zh/docs3-v2/golang-sdk/refer/ - /zh-cn/docs3-v2/golang-sdk/refer/ -description: Dubbo-go 参考手册 -title: 参考手册 +description: Dubbo-go 更多参考资料 +title: 其他 type: docs weight: 5 --- diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/basic_concept.md b/content/zh-cn/overview/mannual/golang-sdk/refer/basic_concept.md deleted file mode 100644 index a9bf33eae24a..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/refer/basic_concept.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/refer/basic_concept/ - - /zh-cn/docs3-v2/golang-sdk/refer/basic_concept/ -description: 配置基本概念 -keywords: 配置基本概念 -title: 配置基本概念 -type: docs ---- - - - - - - -## 1. 框架配置 - -Dubbo-go 框架需要依赖配置进行启动。配置中包含了开发者希望使用框架的各种能力。 - -### 配置格式 - -yaml - -### 配置路径 - -默认从 `../conf/dubbogo.yaml ` 加载框架配置 - -可通过指定环境变量:DUBBO_GO_CONFIG_PATH=$(your_config_path)/dubbogo.yaml 来修改配置文件路径。 - -### 配置根结构 - -位于 [dubbo.apache.org/dubbo-go/v3/config/root_config.go: RootConfig](https://github.com/apache/dubbo-go/blob/e00cf8d6fb2be3cd9c6e42cc3d6efa54e10229d3/config/root_config.go#L50) - -框架加载时,任何形式的配置都会被解析成 RootConfig,在 RootConfig.Init 方法中加载。 - -## 2. 配置API - -开发者可以使用 API 的形式构建配置,从而启动框架。该方法较适合 dubbo-go 作为第三方组件引入的情况。 - -## 3. 配置中心 - -开发者可以将配置放置在配置中心,从而便于配置的管理和修改。 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/compatible_version.md b/content/zh-cn/overview/mannual/golang-sdk/refer/compatible_version.md deleted file mode 100644 index 2330954a4339..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/refer/compatible_version.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/refer/compatible_version/ - - /zh-cn/docs3-v2/golang-sdk/refer/compatible_version/ -description: 依赖适配版本号 -title: 版本号 -type: docs -weight: 4 ---- - - - - - - -Dubbo-go 发布新版本时更新当前依赖的的版本。 - -| 依赖 | Dubbo-go | Triple | protoc-gen-go-triple | -| :--: | ------------ | ------ | -------------------- | -| | v3.0.1 | v1.1.8 | v1.0.8 | -| | v3.0.0 | v1.1.6 | v1.0.5 | -| | v3.0.0-rc4-1 | v1.1.3 | v1.0.2 | -| | v3.0.0-rc3 | v1.0.9 | v1.0.0 | diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/ecology.md b/content/zh-cn/overview/mannual/golang-sdk/refer/ecology.md index aa510b45bdbd..eeaa2d13b06a 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/refer/ecology.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/ecology.md @@ -5,19 +5,35 @@ aliases: description: Dubbo-go 生态组件 title: 生态组件 type: docs -weight: 3 +weight: 1 --- - - - - - -### Dubbo-go / Dubbo-go 3.0 +### Dubbo-go [github.com/apache/dubbo-go](https://github.com/apache/dubbo-go) - Apache Dubbo Go 语言实现,架起 Java 和 Golang 之间的桥梁。 +Apache Dubbo Go 语言实现主仓库 + +### Dubbo-go-samples + +[github.com/apache/dubbo-go-samples](https://github.com/apache/dubbo-go-samples) + +dubbo-go 的使用示例: +* config-api: 使用 API 进行配置初始化 +* configcenter: 使用不同的配置中心,目前支持三种:zookeeper、apollo、和 nacos +* context: 如何使用上下文传递 attachment +* direct: 直连模式 +* game: 游戏服务例子 +* generic: 泛化调用 +* rpc: RPC 调用例子, 包含 Triple、Dubbo等协议以及跨语言/gRPC互通示例 +* helloworld: RPC调用入门例子 +* logger: 日志例子 +* registry: 展示与不同注册中心的对接,包含了 zk、nacos、etcd +* metrics: 数据上报 +* filter: 使用提供filter和自定义filter的例子 +* registry/servicediscovery:应用级服务发现例子 +* router: 路由例子 +* tracing: 链路追踪例子 ### Dubbo-go-pixiu @@ -41,15 +57,8 @@ Dubbo-go-hessian2 是一个Go语言 hessian2 序列化协议库 [github.com/dubbogo/tools](https://github.com/dubbogo/tools) -Dubbogo-tools 包括 - -- dubbo-cli 工具 +包括 +- dubbo-cli 工具(废弃) - imports-formatter Go语言 imports 块格式化工具 - protoc-gen-triple PB编译插件 -- protoc-gen-dubbo3grpc PB编译插件 - -### Triple-go - -[github.com/dubbogo/triple](https://github.com/dubbogo/triple) - -Triple-go 为 Go 语言实现的 Triple (Dubbo3) 网络协议库,基于 HTTP2 协议。 +- protoc-gen-dubbo3grpc PB编译插件 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/generic.md b/content/zh-cn/overview/mannual/golang-sdk/refer/generic.md similarity index 96% rename from content/zh-cn/overview/mannual/golang-sdk/preface/concept/generic.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/generic.md index 886bcacf3bf8..92a2180838b1 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/concept/generic.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/generic.md @@ -2,16 +2,16 @@ aliases: - /zh/docs3-v2/golang-sdk/preface/concept/generic/ - /zh-cn/docs3-v2/golang-sdk/preface/concept/generic/ + - /zh-cn/overview/mannual/golang-sdk/preface/concept/generic/ description: 泛化调用 keywords: 泛化调用 title: 泛化调用 type: docs +weight: 2 --- - - - - - +{{% alert title="废弃警告" color="warning" %}} +dubbo-go 泛化调用仅适用于 dubbo2 协议,不适用 triple 协议 +{{% /alert %}} 泛化调用是一种 Dubbo-Go 的特殊调用方式,它允许中间节点在没有接口信息的情况下传递调用信息,常被用于测试、网关的场景下。泛化调用支持 Dubbo 和 Triple 协议,但是目前序列化方案只支持 Hessian。 diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/3.0_feature.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature.md similarity index 97% rename from content/zh-cn/overview/mannual/golang-sdk/preface/3.0_feature.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature.md index c95fd53c859e..1fde5e38933b 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/3.0_feature.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/3.0_feature.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/golang-sdk/preface/3.0_feature/ - /zh-cn/docs3-v2/golang-sdk/preface/3.0_feature/ + - /zh-cn/overview/mannual/golang-sdk/preface/3.0_feature/ description: Dubbo-go 3.0 新特性 keywords: 新特性 title: 新特性 diff --git a/content/zh-cn/overview/mannual/golang-sdk/sourcecode/_index.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/sourcecode/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension.md similarity index 98% rename from content/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension.md index 936ad6b31565..d7bb5af3a3de 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/aop_and_extension.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/golang-sdk/preface/design/aop_and_extension/ - /zh-cn/docs3-v2/golang-sdk/preface/design/aop_and_extension/ + - /zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension/ description: AOP 与可扩展机制 keywords: AOP 与可扩展机制 title: AOP 与可扩展机制 diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/design/app_and_interface.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface.md similarity index 97% rename from content/zh-cn/overview/mannual/golang-sdk/preface/design/app_and_interface.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface.md index 0f4e2bed1541..80561c645b19 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/design/app_and_interface.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/app_and_interface.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/golang-sdk/preface/design/app_and_interface/ - /zh-cn/docs3-v2/golang-sdk/preface/design/app_and_interface/ + - /zh-cn/overview/mannual/golang-sdk/preface/design/app_and_interface/ description: Dubbo的应用和接口 keywords: 基本概念 title: Dubbo的应用和接口 diff --git a/content/zh-cn/overview/mannual/golang-sdk/preface/design/architecture.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/architecture.md similarity index 93% rename from content/zh-cn/overview/mannual/golang-sdk/preface/design/architecture.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/architecture.md index b10ae48fdcd3..261badbc9213 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/preface/design/architecture.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/architecture.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/golang-sdk/preface/design/architecture/ - /zh-cn/docs3-v2/golang-sdk/preface/design/architecture/ + - /zh-cn/overview/mannual/golang-sdk/preface/design/architecture/ description: 架构 keywords: 架构 title: 架构 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/generic-2.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic-2.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/generic-2.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic-2.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/generic.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/generic.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/generic.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/sourcecode/protocol.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/protocol.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/sourcecode/protocol.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/protocol.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/sourcecode/registry.md b/content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/registry.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/sourcecode/registry.md rename to content/zh-cn/overview/mannual/golang-sdk/refer/sourcecode/registry.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli.md b/content/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli.md index 3fb3d713220c..1524b3def6a0 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli.md +++ b/content/zh-cn/overview/mannual/golang-sdk/refer/use_dubbogo_cli.md @@ -5,13 +5,11 @@ aliases: description: 使用 dubbogo-cli 工具 title: 使用 dubbogo-cli 工具 type: docs -weight: 2 +weight: 3 --- - - - - - +{{% alert title="废弃警告" color="warning" %}} +自 dubbo-go 3.1.0 版本开始,本工具不再适用。本工具已经停止维护,未来将由 dubboctl 代替,请关注社区动态了解 dubboctl 最新进展。 +{{% /alert %}} ## 1. 安装 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/grpc_cli.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/grpc_cli.md deleted file mode 100644 index 35f43e00fc43..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/grpc_cli.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/debugging/grpc_cli/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/grpc_cli/ -description: 使用 grpc_cli 调试 Dubbo-go 服务 -title: 使用 grpc_cli 调试 Dubbo-go 服务 -type: docs -weight: 1 ---- - - - - - - -grpc_cli 工具是 gRPC 生态用于调试服务的工具,在 server 开启[反射服务](https://github.com/grpc/grpc/blob/master/doc/server-reflection.md)的前提下,可以获取到服务的 proto 文件、服务名、方法名、参数列表,以及发起 gRPC 调用。 - -Triple 协议兼容 gRPC 生态,并默认开启 gRPC 反射服务,因此可以直接使用 grpc_cli 调试 triple 服务。 - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 -- 创建一个新的 demo 应用 -- 安装grpc_cli,参考 [grpc_cli 文档](https://github.com/grpc/grpc/blob/master/doc/command_line_tool.md) - -## 2. 使用 grpc_cli 工具进行 Triple 服务调试 - -### 2.1 启动 demo 应用 server - -```bash -$ mkdir grpc_cli_test -$ cd grpc_cli_test -$ dubbogo-cli newDemo . -$ go mod tidy -$ cd go-server/cmd -$ go run . -``` - -### 2.2 使用 grpc_cli 进行服务调试 - -1. 查看 triple 服务的接口定义 - -```shell -$ grpc_cli ls localhost:20000 -l -filename: samples_api.proto -package: api; -service Greeter { - rpc SayHello(api.HelloRequest) returns (api.User) {} - rpc SayHelloStream(stream api.HelloRequest) returns (stream api.User) {} -} -``` - -2. 查看请求参数类型 - - 例如开发者期望测试上述端口的 SayHello 方法,尝试获取 HelloRequest 的具体定义,需要执行如下指令,可查看到对应参数的定义。 - -```shell -$ grpc_cli type localhost:20000 api.HelloRequest -message HelloRequest { - string name = 1 [json_name = "name"]; -} -``` - -3. 请求接口 - - 已经知道了请求参数的具体类型,可以发起调用来测试对应服务。查看返回值是否符合预期。 - -```shell -$ grpc_cli call localhost:20000 SayHello "name: 'laurence'" -connecting to localhost:20000 -name: "Hello laurence" -id: "12345" -age: 21 -Received trailing metadata from server: -accept-encoding : identity,gzip -grpc-accept-encoding : identity,deflate,gzip -Rpc succeeded with OK status -``` - -​ 可看到获得了正确的返回值。在 server 侧可以观察到被正确请求的日志: - -```shell -Dubbo3 GreeterProvider get user name = laurence -``` \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/_index.md deleted file mode 100755 index 413a279fe6fa..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/deployment/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/deployment/ -description: Dubbo-go 部署服务 -title: 部署服务 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/docker/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/docker/_index.md deleted file mode 100644 index 3568b3c33592..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/docker/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/deployment/docker/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/deployment/docker/ -description: Docker 镜像打包教程 -title: Docker 镜像打包教程 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/kubernetes/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/kubernetes/_index.md deleted file mode 100644 index 8f06950b396b..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/kubernetes/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/deployment/kubernetes/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/deployment/kubernetes/ -description: Kubernetes 部署教程 -title: Kubernetes 部署教程 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/practice/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/practice/_index.md deleted file mode 100644 index 5336df575577..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/deployment/practice/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/deployment/practice/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/deployment/practice/ -description: 生产部署的最佳实践介绍 -title: 生产部署的最佳实践介绍 -type: docs -weight: 1 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/_index.md deleted file mode 100755 index 6e822450b432..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/ -description: Dubbo-go 开发服务 -title: 开发服务 -type: docs -weight: 1 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/_index.md deleted file mode 100644 index cc2fc27663f8..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/config-center/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/config-center/ -description: 配置中心 -title: 配置中心 -type: docs -weight: 5 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/_index.md deleted file mode 100644 index c2233ed61313..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/features/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/features/ -description: 高级特性 -title: 高级特性 -type: docs -weight: 6 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/context.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/context.md deleted file mode 100644 index 2a2e84590c04..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/context.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/features/context/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/features/context/ -description: 使用 ctx 传递上下文信息 -title: 使用 ctx 传递上下文信息 -type: docs -weight: 6 ---- - - - - - - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 -- 创建一个新的 demo 应用 - -## 2. 使用 context 传递附加信息 - -参考 [dubbo-go-samples/context](https://github.com/apache/dubbo-go-samples/tree/master/context) \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/_index.md deleted file mode 100644 index 2bdf738eb8d6..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/interflow/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/interflow/ -description: 异构体系互通 -title: 异构体系互通 -type: docs -weight: 4 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/_index.md deleted file mode 100644 index e6636719352b..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/protocol/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/protocol/ -description: 协议配置 -title: 协议配置 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/choose_protocol.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/choose_protocol.md deleted file mode 100644 index 4637dbcfe57d..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/choose_protocol.md +++ /dev/null @@ -1,239 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/protocol/choose_protocol/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/protocol/choose_protocol/ -description: 选择使用的网络协议 -keywords: 选择使用的网络协议 -title: 选择使用的网络协议 -type: docs ---- - - - - - - -# 修改使用的协议 - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 -- 创建一个新的 demo 应用 - -## 2. 如何配置网络协议 - -在快速开始章节可以看到,生成的Demo 将 Protocol 设置为 tri,表明使用 Triple 协议进行服务暴露和服务调用。快速开始章节使用的配置 API 进行配置的写入,这样的好处是无需使用配置文件。我们摘取出和网络协议相关的内容进行说明。 - -### 使用配置文件 - -参考 samples/helloworld - -- 客户端使用配置文件设置网络协议 - -```yaml -dubbo: - consumer: - references: - GreeterClientImpl: - protocol: tri # set protcol to tri - interface: com.apache.dubbo.sample.basic.IGreeter -``` - -- 服务端使用配置文件设置网络协议 - -```yaml -dubbo: - protocols: - triple: # define protcol-id 'triple' - name: tri # set protcol to tri - port: 20000 # set port to be listened - provider: - services: - GreeterProvider: - protocol-ids: triple # use protocol-ids named 'triple' - interface: com.apache.dubbo.sample.basic.IGreeter -``` - - - -## 3. 编写 Dubbo 协议的接口和实现 - -### 3.1 定义接口和传输结构,位于api/api.go - -```go -package api - -import ( - "context" - "dubbo.apache.org/dubbo-go/v3/config" - hessian "github.com/apache/dubbo-go-hessian2" - "time" -) - -//1. 定义传输结构, 如需 Java 互通,字段需要与 Java 侧对应,首字母大写 -type User struct { - ID string - Name string - Age int32 - Time time.Time -} - -func (u *User) JavaClassName() string { - return "org.apache.dubbo.User" // 如果与 Java 互通,需要与 Java 侧 User class全名对应, -} - - -var ( - UserProviderClient = &UserProvider{} // 客户端指针 -) - -// 2。 定义客户端存根类:UserProvider -type UserProvider struct { - // dubbo标签,用于适配go侧客户端大写方法名 -> java侧小写方法名,只有 dubbo 协议客户端才需要使用 - GetUser func(ctx context.Context, req int32) (*User, error) //`dubbo:"getUser"` -} - -func init(){ - hessian.RegisterPOJO(&User{}) // 注册传输结构到 hessian 库 - // 注册客户端存根类到框架,实例化客户端接口指针 userProvider - config.SetConsumerService(UserProviderClient) -} -``` - -### 2.2 编写 Go-Server 配置和代码 - -server/dubbogo.yaml - -```yaml -dubbo: - registries: - demoZK: # 定义服务注册发现中心 - protocol: zookeeper - address: 127.0.0.1:2181 - protocols: - dubbo: - name: dubbo # 协议名 dubbo - port: 20000 # 监听端口 - provider: - services: - UserProvider: # 服务提供结构类名 - interface: org.apache.dubbo.UserProvider # 接口需要与 go/java 客户端对应 -``` - -server/server.go - -```go -package main - -import ( - "context" - "dubbo.apache.org/dubbo-go/v3/common/logger" // dubbogo 框架日志 - "dubbo.apache.org/dubbo-go/v3/config" - _ "dubbo.apache.org/dubbo-go/v3/imports" // dubbogo 框架依赖,所有dubbogo进程都需要隐式引入一次 - "dubbo3-demo/api" - "strconv" - "time" -) - -type UserProvider struct { -} - -// 实现接口方法 -func (u *UserProvider) GetUser(ctx context.Context, req int32) (*api.User, error) { - var err error - logger.Infof("req:%#v", req) - user := &api.User{} - user.ID = strconv.Itoa(int(req)) - user.Name = "laurence" - user.Age = 22 - user.Time = time.Now() - return user, err -} - -//// MethodMapper 定义方法名映射,从 Go 的方法名映射到 Java 小写方法名,只有 dubbo 协议服务接口才需要使用 -//// go -> go 互通无需使用 -//func (s *UserProvider) MethodMapper() map[string]string { -// return map[string]string{ -// "GetUser": "getUser", -// } -//} - -func init(){ - config.SetProviderService(&UserProvider{}) // 注册服务提供者类,类名与配置文件中的 service 对应 -} - -// export DUBBO_GO_CONFIG_PATH=dubbogo.yml 运行前需要设置环境变量,指定配置文件位置 -func main() { - if err := config.Load(); err != nil { - panic(err) - } - select {} -} - -``` - - - -### 2.3 编写 Go-Client 配置和代码 - -client/dubbogo.yaml - -```yaml -dubbo: - registries: - demoZK: # 定义服务注册发现中心 - protocol: zookeeper - address: 127.0.0.1:2181 - consumer: - references: - UserProvider: # 存根类名 - protocol: dubbo # dubbo 协议,默认 hessian2 序列化方式 - interface: org.apache.dubbo.UserProvider # 接口需要与 go/java 客户端对应 -``` - -client/client.go - -```go -package main - -import ( - "context" - "dubbo.apache.org/dubbo-go/v3/common/logger" - "dubbo.apache.org/dubbo-go/v3/config" - _ "dubbo.apache.org/dubbo-go/v3/imports" - "dubbo3-demo/api" -) - -func main(){ - // 启动框架 - if err := config.Load(); err != nil{ - panic(err) - } - var i int32 = 1 - // 发起调用 - user, err := api.UserProviderClient.GetUser(context.TODO(), i) - if err != nil { - panic(err) - } - logger.Infof("response result: %+v", user) -} -``` - -## 4. 启动服务 - -开启两个终端,分别进入server client 目录 - -分别执行; - -```shell -export DUBBO_GO_CONFIG_PATH=dubbogo.yml -go run . -``` - -先后启动服务端和客户端, 可在客户端看到输出: - -```shell -response result: &{ID:1 Name:laurence Age:22 Time:2021-11-12 17:59:39.185 +0800 CST} -``` - -调用成功 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/error.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/error.md deleted file mode 100644 index 2bf5f9c0f5da..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/error.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/protocol/error/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/protocol/error/ -description: 异常信息回传 -title: 异常信息回传 -type: docs -weight: 8 ---- - - - - - - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 -- 创建一个新的 demo 应用 - -## 2. 传递异常信息 - -参考samples [dubbo-go-samples/error](https://github.com/apache/dubbo-go-samples/tree/master/error) - -### 用户异常回传介绍 - -用户可以在 provider 端生成用户定义的异常信息,可以记录异常产生堆栈,triple 协议可保证将用户在客户端获取到异常 message ,并可以查看报错堆栈,便于定位问题。 - -注意返回 error 非 nil 时,框架不负责其他返回值的传递。 - -- 在Triple provider 端返回异常,以 pb 序列化为例: - -```go -package main - -import ( - "context" -) - -import ( - "dubbo.apache.org/dubbo-go/v3/common/logger" - - // 使用可以记录堆栈的异常库,此处以 "github.com/pkg/errors" 为例 - "github.com/pkg/errors" -) - -import ( - triplepb "github.com/apache/dubbo-go-samples/api" -) - - -// 一个实现了 pb 接口的服务提供结构 -type ErrorResponseProvider struct { - triplepb.UnimplementedGreeterServer -} - -// 回传错误的接口 -func (s *ErrorResponseProvider) SayHello(ctx context.Context, in *triplepb.HelloRequest) (*triplepb.User, error) { - logger.Infof("Dubbo3 GreeterProvider get user name = %s\n" + in.Name) - // 返回用户自定义异常 - return &triplepb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, errors.New("user defined error") -} - -``` - - - -- 客户端打印异常和堆栈 - -```go -package main - -import ( - "context" -) - -import ( - "dubbo.apache.org/dubbo-go/v3/common/logger" - "dubbo.apache.org/dubbo-go/v3/config" - _ "dubbo.apache.org/dubbo-go/v3/imports" - - tripleCommon "github.com/dubbogo/triple/pkg/common" -) - -import ( - triplepb "github.com/apache/dubbo-go-samples/api" -) - -var greeterProvider = new(triplepb.GreeterClientImpl) - -func init() { - config.SetConsumerService(greeterProvider) -} - -func main() { - if err := config.Load(); err != nil { - panic(err) - } - - req := triplepb.HelloRequest{ - Name: "laurence", - } - - // 发起调用 - if user, err := greeterProvider.SayHello(context.TODO(), &req); err != nil { - // 打印异常信息,err.Error() 将返回用户定义的 message,即 user defined error - logger.Infof("response result: %v, error = %s", user, err) - - // 打印异常堆栈,需断言为 tripleCommon.TripleError - logger.Infof("error details = %+v", err.(tripleCommon.TripleError).Stacks()) - } -} - -``` - -```text -2021-11-12T18:36:33.730+0800 INFO cmd/client.go:53 response result: , error = user defined error -2021-11-12T18:36:33.730+0800 INFO cmd/client.go:54 error details = [type.googleapis.com/google.rpc.DebugInfo]:{stack_entries:"user defined error -main.(*ErrorResponseProvider).SayHello - /dubbo-go-samples/error/triple/pb/go-server/cmd/error_reponse.go:40 -reflect.Value.call - /usr/local/go/src/reflect/value.go:543 -reflect.Value.Call - /usr/local/go/src/reflect/value.go:339 -dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory.(*ProxyInvoker).Invoke - /Users/laurence/go/pkg/mod/dubbo.apache.org/dubbo-go/v3@v3.0.0-rc4-1/common/proxy/proxy_factory/default.go:145 - ... - -``` - -可看到报错信息和堆栈 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/exception_response.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/exception_response.md deleted file mode 100644 index f67bb749c854..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/protocol/exception_response.md +++ /dev/null @@ -1,124 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/protocol/exception_response/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/protocol/exception_response/ -description: Triple 异常回传 -title: Triple 异常回传 -type: docs -weight: 5 ---- - - - - - - -参考samples [dubbo-go-samples/error](https://github.com/apache/dubbo-go-samples/tree/master/error) - -## 用户异常回传介绍 - -用户可以在 provider 端生成用户定义的异常信息,可以记录异常产生堆栈,triple 协议可保证将用户在客户端获取到异常 message ,并可以查看报错堆栈,便于定位问题。 - -注意返回 error 非 nil 时,框架不负责其他返回值的传递。 - -- 在Triple provider 端返回异常,以 pb 序列化为例: - -```go -package main - -import ( - "context" -) - -import ( - "dubbo.apache.org/dubbo-go/v3/common/logger" - - // 使用可以记录对战信息的异常库,此处以 "github.com/pkg/errors" 为例 - "github.com/pkg/errors" -) - -import ( - triplepb "github.com/apache/dubbo-go-samples/api" -) - - -// 一个实现了 pb 接口的服务提供结构 -type ErrorResponseProvider struct { - triplepb.UnimplementedGreeterServer -} - -// 回传错误的接口 -func (s *ErrorResponseProvider) SayHello(ctx context.Context, in *triplepb.HelloRequest) (*triplepb.User, error) { - logger.Infof("Dubbo3 GreeterProvider get user name = %s\n" + in.Name) - // 返回用户自定义异常 - return &triplepb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, errors.New("user defined error") -} - -``` - - - -- 客户端打印异常和堆栈 - -```go -package main - -import ( - "context" -) - -import ( - "dubbo.apache.org/dubbo-go/v3/common/logger" - "dubbo.apache.org/dubbo-go/v3/config" - _ "dubbo.apache.org/dubbo-go/v3/imports" - - tripleCommon "github.com/dubbogo/triple/pkg/common" -) - -import ( - triplepb "github.com/apache/dubbo-go-samples/api" -) - -var greeterProvider = new(triplepb.GreeterClientImpl) - -func init() { - config.SetConsumerService(greeterProvider) -} - -func main() { - if err := config.Load(); err != nil { - panic(err) - } - - req := triplepb.HelloRequest{ - Name: "laurence", - } - - // 发起调用 - if user, err := greeterProvider.SayHello(context.TODO(), &req); err != nil { - // 打印异常信息,err.Error() 将返回用户定义的 message,即 user defined error - logger.Infof("response result: %v, error = %s", user, err) - - // 打印异常堆栈,需断言为 tripleCommon.TripleError - logger.Infof("error details = %+v", err.(tripleCommon.TripleError).Stacks()) - } -} - -``` - -```text -2021-11-12T18:36:33.730+0800 INFO cmd/client.go:53 response result: , error = user defined error -2021-11-12T18:36:33.730+0800 INFO cmd/client.go:54 error details = [type.googleapis.com/google.rpc.DebugInfo]:{stack_entries:"user defined error -main.(*ErrorResponseProvider).SayHello - /dubbo-go-samples/error/triple/pb/go-server/cmd/error_reponse.go:40 -reflect.Value.call - /usr/local/go/src/reflect/value.go:543 -reflect.Value.Call - /usr/local/go/src/reflect/value.go:339 -dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory.(*ProxyInvoker).Invoke - /Users/laurence/go/pkg/mod/dubbo.apache.org/dubbo-go/v3@v3.0.0-rc4-1/common/proxy/proxy_factory/default.go:145 - ... - -``` - -可看到报错信息和堆栈 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/_index.md deleted file mode 100644 index b1a2dce372cf..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/registry/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/registry/ -description: 注册中心 -title: 注册中心 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/template.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/template.md deleted file mode 100644 index 554dc3008a3e..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/template.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/template/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/template/ -description: 应用模板 -title: 应用模板 -type: docs -weight: 1 ---- - - - - - - - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 - -## 2. 使用 dubbogo-cli 创建项目模板 - -运行 `dubbogo-cli newApp .` - -```plain -$ mkdir cli-create-server -$ cd cli-create-server -$ dubbogo-cli newApp . -$ tree . -. -├── Makefile -├── api -│ └── api.proto -├── build -│ └── Dockerfile -├── chart -│ ├── app -│ │ ├── Chart.yaml -│ │ ├── templates -│ │ │ ├── _helpers.tpl -│ │ │ ├── deployment.yaml -│ │ │ ├── service.yaml -│ │ │ └── serviceaccount.yaml -│ │ └── values.yaml -│ └── nacos_env -│ ├── Chart.yaml -│ ├── templates -│ │ ├── _helpers.tpl -│ │ ├── deployment.yaml -│ │ └── service.yaml -│ └── values.yaml -├── cmd -│ └── app.go -├── conf -│ └── dubbogo.yaml -├── go.mod -├── go.sum -└── pkg - └── service - └── service.go -``` - -生成项目包括几个目录: - -- api:放置接口文件:proto文件和生成的pb.go文件 - -- build:放置构建相关文件 - -- chart:放置发布用 chart 包、基础环境 chart 包:nacos、mesh(开发中) - -- cmd:程序入口 - -- conf:框架配置 - -- pkg/service:RPC 服务实现 - -- Makefile: - - - 镜像、应用名: - - - IMAGE = $(your_repo)/$(namespace)/$(image_name) - TAG = 1.0.0 - - - APPNAME = dubbo-go-app # 用于 helm 发布,对应 chart 名、应用名和服务名(service名) - - - 提供脚本,例如: - - - make build # 打包镜像并推送 - - - make buildx-publish # arm 架构本地打包amd64镜像并推送,依赖 docker buildx - - - make deploy # 通过 helm 发布应用 - - - make remove # 删除已经发布的 helm 应用 - - - make proto-gen # api/ 下生成 pb.go 文件 \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/refer/config.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/_index.md old mode 100644 new mode 100755 similarity index 74% rename from content/zh-cn/overview/mannual/golang-sdk/refer/config.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/file/_index.md index 507c4bd3d29b..6441b73c6dca --- a/content/zh-cn/overview/mannual/golang-sdk/refer/config.md +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/_index.md @@ -1,13 +1,44 @@ --- aliases: - - /zh/docs3-v2/golang-sdk/refer/config/ - - /zh-cn/docs3-v2/golang-sdk/refer/config/ -description: Dubbo-go 配置项 -title: 配置项参考指南 + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/overview/mannual/golang-sdk/refer/basic_concept/ + - /zh-cn/overview/mannual/golang-sdk/refer/config/ +description: 配置文件 +title: 配置文件 type: docs -weight: 1 +weight: 30 --- +## 1. 框架配置 + +Dubbo-go 框架需要依赖配置进行启动。配置中包含了开发者希望使用框架的各种能力。 + +### 配置格式 + +yaml + +### 配置路径 + +默认从 `../conf/dubbogo.yaml ` 加载框架配置 + +可通过指定环境变量:DUBBO_GO_CONFIG_PATH=$(your_config_path)/dubbogo.yaml 来修改配置文件路径。 + +### 配置根结构 + +位于 [dubbo.apache.org/dubbo-go/v3/config/root_config.go: RootConfig](https://github.com/apache/dubbo-go/blob/e00cf8d6fb2be3cd9c6e42cc3d6efa54e10229d3/config/root_config.go#L50) + +框架加载时,任何形式的配置都会被解析成 RootConfig,在 RootConfig.Init 方法中加载。 + +## 2. 配置API + +开发者可以使用 API 的形式构建配置,从而启动框架。该方法较适合 dubbo-go 作为第三方组件引入的情况。 + +## 3. 配置中心 + +开发者可以将配置放置在配置中心,从而便于配置的管理和修改。 + + @@ -90,7 +121,7 @@ rc := config.NewRootConfigBuilder(). Build() ``` -### +### ## 网络协议 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/config-center-dynamic.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/config-center-dynamic.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/config-center-dynamic.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/file/config-center-dynamic.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/config_api.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/config_api.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/config_api.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/file/config_api.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/desc.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/desc.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/desc.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/file/desc.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/remote_config.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/file/remote_config.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/config-center/remote_config.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/file/remote_config.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/_index.md deleted file mode 100755 index 47721ff0418d..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/ -description: Dubbo-go 服务治理 -title: 服务治理 -type: docs -weight: 4 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/_index.md deleted file mode 100644 index 7d7a441ecde3..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/features/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/features/ -description: 高级特性 -title: 高级特性 -type: docs -weight: 6 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/aop.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/aop.md deleted file mode 100644 index 67cd0ea26d56..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/aop.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/features/aop/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/features/aop/ -description: 自定义服务调用中间件 -title: 自定义服务调用中间件 -type: docs -weight: 1 ---- - - - - - - -参考samples [dubbo-go-samples/filter](https://github.com/apache/dubbo-go-samples/tree/master/filter) - -## 1. 准备工作 - -- dubbo-go cli 工具和依赖工具已安装 -- 阅读[【组件加载与可扩展性】](/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension/) -- 创建一个新的 demo 应用 - -## 2. 配置指定 Filter - -指定filter时可用','分隔 - -- Consumer 端 - - ```yaml - dubbo: - consumer: - filter: echo,token,tps,myCustomFilter # 可指定自定义filter - ``` - - - -- Provider 端 - - ```yaml - dubbo: - provider: - services: - GreeterProvider: - filter: myCustomFilter,echo,tps - ``` - -## 3. 自定义Filter - -用户可在代码中自定义 Filter,注册到框架上,并在配置中选择使用。 - -```go -func init() { - extension.SetFilter("myCustomFilter", NewMyClientFilter) -} - -func NewMyClientFilter() filter.Filter { - return &MyClientFilter{} -} - -type MyClientFilter struct { -} - -func (f *MyClientFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { - fmt.Println("MyClientFilter Invoke is called, method Name = ", invocation.MethodName()) - return invoker.Invoke(ctx, invocation) -} -func (f *MyClientFilter) OnResponse(ctx context.Context, result protocol.Result, invoker protocol.Invoker, protocol protocol.Invocation) protocol.Result { - fmt.Println("MyClientFilter OnResponse is called") - return result -} - -``` \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/_index.md deleted file mode 100644 index 00f389dfecb7..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/health/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/health/ -description: 健康检查 -title: 健康检查 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/_index.md deleted file mode 100644 index 61d6bb05bd68..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/monitor/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/monitor/ -description: 服务状态监控 -title: 服务状态监控 -type: docs -weight: 1 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/grafana/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/grafana/_index.md deleted file mode 100644 index 35c395098848..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/grafana/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/monitor/grafana/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/monitor/grafana/ -description: 基于 Grafana 的可视化监控教程 -title: 基于 Grafana 的可视化监控教程 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/http/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/http/_index.md deleted file mode 100644 index ea5b030ef3cf..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/http/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/monitor/http/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/monitor/http/ -description: 基于 http metrics 的指标观测 -title: 基于 http metrics 的指标观测 -type: docs -weight: 1 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/logger/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/logger/_index.md deleted file mode 100644 index 26b6d6502044..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/logger/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/monitor/logger/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/monitor/logger/ -description: Dubbo Go 日志管理 -title: Dubbo Go 日志管理 -type: docs -weight: 4 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/promethus/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/promethus/_index.md deleted file mode 100644 index 9827d79ded66..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/promethus/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/monitor/promethus/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/monitor/promethus/ -description: 数据上报 Promethus 教程 -title: 数据上报 Promethus 教程 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/_index.md deleted file mode 100644 index 8c9d7902003f..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/tracing/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/tracing/ -description: 全链路追踪 -title: 全链路追踪 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/jaeger/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/jaeger/_index.md deleted file mode 100644 index 938b0552f1ac..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/jaeger/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/tracing/jaeger/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/tracing/jaeger/ -description: 基于 Jaeger 的链路追踪 -title: 基于 Jaeger 的链路追踪 -type: docs -weight: 1 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/opentelmentry/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/opentelmentry/_index.md deleted file mode 100644 index 419428df40d0..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/opentelmentry/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/tracing/opentelmentry/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/tracing/opentelmentry/ -description: 使用 OpenTelmentry 协议 -title: 使用 OpenTelmentry 协议 -type: docs -weight: 2 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/skywalking/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/skywalking/_index.md deleted file mode 100644 index 2c5328cda199..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/tracing/skywalking/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/tracing/skywalking/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/tracing/skywalking/ -description: 基于 Skywalking 的追踪 -title: 基于 Skywalking 的追踪 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/_index.md deleted file mode 100644 index 3fab61b3707a..000000000000 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/traffic/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/traffic/ -description: 流量管理 -title: 流量管理 -type: docs -weight: 3 ---- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/_index.md similarity index 66% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/_index.md index 482611e85695..ffae84418bec 100755 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/debugging/_index.md +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/_index.md @@ -2,8 +2,8 @@ aliases: - /zh/docs3-v2/golang-sdk/tutorial/debugging/ - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ -description: Dubbo-go 服务调试 -title: 服务调试 +description: 健康检查 +title: 健康检查 type: docs -weight: 2 +weight: 80 --- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/kubernetes.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/kubernetes.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/kubernetes.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/kubernetes.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/start-check.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/start-check.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/start-check.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/start-check.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/triple-health-check.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/triple-health-check.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/health/triple-health-check.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/healthcheck/triple-health-check.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/_index.md new file mode 100755 index 000000000000..4b84a2e5aac7 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: 与dubbo-java互通 +title: 与dubbo-java互通 +type: docs +weight: 90 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/call_java.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/call_java.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/call_java.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/_index.md new file mode 100755 index 000000000000..e6198fcdaa9f --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: 与grpc互通 +title: 与grpc互通 +type: docs +weight: 100 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/call_grpc.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/call_grpc.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/interflow/call_grpc.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/interop-grpc/call_grpc.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/_index.md new file mode 100755 index 000000000000..ddc1dc6586b9 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: 可视化观测 dubbo-go 应用状态 +title: 可视化观测 +type: docs +weight: 40 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/metrics.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/metrics.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/metrics.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/metrics.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/rpc_metrics.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/monitor/rpc_metrics.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/observability/rpc_metrics.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/_index.md new file mode 100755 index 000000000000..a3d21a2c42e5 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: dubbo-go rpc 调用的一些常用功能与配置方式 +title: RPC框架 +type: docs +weight: 10 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/attachments.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/attachments.md new file mode 100644 index 000000000000..5144d70cd31f --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/attachments.md @@ -0,0 +1,6 @@ +--- +description: 传递附加参数 attachment +title: 传递附加参数 +type: docs +weight: 4 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/custom-filter.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/filter.md similarity index 68% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/custom-filter.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/filter.md index 53cc444a3a0e..e23a97788355 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/custom-filter.md +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/filter.md @@ -1,17 +1,71 @@ --- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/features/custom-filter/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/features/custom-filter/ -description: 自定义Filter组件 -title: 自定义Filter组件 +description: filter拦截器 +title: filter拦截器 type: docs -weight: 3 +weight: 7 --- +参考samples [dubbo-go-samples/filter](https://github.com/apache/dubbo-go-samples/tree/master/filter) + +## 1. 准备工作 + +- dubbo-go cli 工具和依赖工具已安装 +- 阅读[【组件加载与可扩展性】](/zh-cn/overview/mannual/golang-sdk/preface/design/aop_and_extension/) +- 创建一个新的 demo 应用 + +## 2. 配置指定 Filter + +指定filter时可用','分隔 + +- Consumer 端 + + ```yaml + dubbo: + consumer: + filter: echo,token,tps,myCustomFilter # 可指定自定义filter + ``` + + + +- Provider 端 + + ```yaml + dubbo: + provider: + services: + GreeterProvider: + filter: myCustomFilter,echo,tps + ``` +## 3. 自定义Filter + +用户可在代码中自定义 Filter,注册到框架上,并在配置中选择使用。 + +```go +func init() { + extension.SetFilter("myCustomFilter", NewMyClientFilter) +} + +func NewMyClientFilter() filter.Filter { + return &MyClientFilter{} +} + +type MyClientFilter struct { +} + +func (f *MyClientFilter) Invoke(ctx context.Context, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { + fmt.Println("MyClientFilter Invoke is called, method Name = ", invocation.MethodName()) + return invoker.Invoke(ctx, invocation) +} +func (f *MyClientFilter) OnResponse(ctx context.Context, result protocol.Result, invoker protocol.Invoker, protocol protocol.Invocation) protocol.Result { + fmt.Println("MyClientFilter OnResponse is called") + return result +} + +``` 参考samples [dubbo-go-samples/filter](https://github.com/apache/dubbo-go-samples/tree/master/filter) @@ -75,7 +129,7 @@ Filter 采用面向切面设计的思路,通过对 Filter 的合理扩展, filter: echo,token,tps,myCustomFilter # 可指定自定义filter ``` - + - Provider 端 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/custom-logger.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/logger.md similarity index 92% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/custom-logger.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/logger.md index d5f5261dd95a..4912abd9f22a 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/features/custom-logger.md +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/logger.md @@ -1,18 +1,11 @@ --- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/develop/features/custom-logger/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/develop/features/custom-logger/ -description: 日志 -title: 日志 +description: logger +title: logger type: docs -weight: 6 +weight: 5 --- - - - - 参考samples [dubbo-go-samples/logger](https://github.com/apache/dubbo-go-samples/tree/master/logger) ## 1. 日志配置 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/protocol.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/protocol.md new file mode 100644 index 000000000000..0d41a50a7c68 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/protocol.md @@ -0,0 +1,461 @@ +--- +description: 多协议支持 +title: 多协议支持 +type: docs +weight: 5 +--- + +# 修改使用的协议 + +## 1. 准备工作 + +- dubbo-go cli 工具和依赖工具已安装 +- 创建一个新的 demo 应用 + +## 2. 如何配置网络协议 + +在快速开始章节可以看到,生成的Demo 将 Protocol 设置为 tri,表明使用 Triple 协议进行服务暴露和服务调用。快速开始章节使用的配置 API 进行配置的写入,这样的好处是无需使用配置文件。我们摘取出和网络协议相关的内容进行说明。 + +### 使用配置文件 + +参考 samples/helloworld + +- 客户端使用配置文件设置网络协议 + +```yaml +dubbo: + consumer: + references: + GreeterClientImpl: + protocol: tri # set protcol to tri + interface: com.apache.dubbo.sample.basic.IGreeter +``` + +- 服务端使用配置文件设置网络协议 + +```yaml +dubbo: + protocols: + triple: # define protcol-id 'triple' + name: tri # set protcol to tri + port: 20000 # set port to be listened + provider: + services: + GreeterProvider: + protocol-ids: triple # use protocol-ids named 'triple' + interface: com.apache.dubbo.sample.basic.IGreeter +``` + + + +## 3. 编写 Dubbo 协议的接口和实现 + +### 3.1 定义接口和传输结构,位于api/api.go + +```go +package api + +import ( + "context" + "dubbo.apache.org/dubbo-go/v3/config" + hessian "github.com/apache/dubbo-go-hessian2" + "time" +) + +//1. 定义传输结构, 如需 Java 互通,字段需要与 Java 侧对应,首字母大写 +type User struct { + ID string + Name string + Age int32 + Time time.Time +} + +func (u *User) JavaClassName() string { + return "org.apache.dubbo.User" // 如果与 Java 互通,需要与 Java 侧 User class全名对应, +} + + +var ( + UserProviderClient = &UserProvider{} // 客户端指针 +) + +// 2。 定义客户端存根类:UserProvider +type UserProvider struct { + // dubbo标签,用于适配go侧客户端大写方法名 -> java侧小写方法名,只有 dubbo 协议客户端才需要使用 + GetUser func(ctx context.Context, req int32) (*User, error) //`dubbo:"getUser"` +} + +func init(){ + hessian.RegisterPOJO(&User{}) // 注册传输结构到 hessian 库 + // 注册客户端存根类到框架,实例化客户端接口指针 userProvider + config.SetConsumerService(UserProviderClient) +} +``` + +### 2.2 编写 Go-Server 配置和代码 + +server/dubbogo.yaml + +```yaml +dubbo: + registries: + demoZK: # 定义服务注册发现中心 + protocol: zookeeper + address: 127.0.0.1:2181 + protocols: + dubbo: + name: dubbo # 协议名 dubbo + port: 20000 # 监听端口 + provider: + services: + UserProvider: # 服务提供结构类名 + interface: org.apache.dubbo.UserProvider # 接口需要与 go/java 客户端对应 +``` + +server/server.go + +```go +package main + +import ( + "context" + "dubbo.apache.org/dubbo-go/v3/common/logger" // dubbogo 框架日志 + "dubbo.apache.org/dubbo-go/v3/config" + _ "dubbo.apache.org/dubbo-go/v3/imports" // dubbogo 框架依赖,所有dubbogo进程都需要隐式引入一次 + "dubbo3-demo/api" + "strconv" + "time" +) + +type UserProvider struct { +} + +// 实现接口方法 +func (u *UserProvider) GetUser(ctx context.Context, req int32) (*api.User, error) { + var err error + logger.Infof("req:%#v", req) + user := &api.User{} + user.ID = strconv.Itoa(int(req)) + user.Name = "laurence" + user.Age = 22 + user.Time = time.Now() + return user, err +} + +//// MethodMapper 定义方法名映射,从 Go 的方法名映射到 Java 小写方法名,只有 dubbo 协议服务接口才需要使用 +//// go -> go 互通无需使用 +//func (s *UserProvider) MethodMapper() map[string]string { +// return map[string]string{ +// "GetUser": "getUser", +// } +//} + +func init(){ + config.SetProviderService(&UserProvider{}) // 注册服务提供者类,类名与配置文件中的 service 对应 +} + +// export DUBBO_GO_CONFIG_PATH=dubbogo.yml 运行前需要设置环境变量,指定配置文件位置 +func main() { + if err := config.Load(); err != nil { + panic(err) + } + select {} +} + +``` + + + +### 2.3 编写 Go-Client 配置和代码 + +client/dubbogo.yaml + +```yaml +dubbo: + registries: + demoZK: # 定义服务注册发现中心 + protocol: zookeeper + address: 127.0.0.1:2181 + consumer: + references: + UserProvider: # 存根类名 + protocol: dubbo # dubbo 协议,默认 hessian2 序列化方式 + interface: org.apache.dubbo.UserProvider # 接口需要与 go/java 客户端对应 +``` + +client/client.go + +```go +package main + +import ( + "context" + "dubbo.apache.org/dubbo-go/v3/common/logger" + "dubbo.apache.org/dubbo-go/v3/config" + _ "dubbo.apache.org/dubbo-go/v3/imports" + "dubbo3-demo/api" +) + +func main(){ + // 启动框架 + if err := config.Load(); err != nil{ + panic(err) + } + var i int32 = 1 + // 发起调用 + user, err := api.UserProviderClient.GetUser(context.TODO(), i) + if err != nil { + panic(err) + } + logger.Infof("response result: %+v", user) +} +``` + +## 4. 启动服务 + +开启两个终端,分别进入server client 目录 + +分别执行; + +```shell +export DUBBO_GO_CONFIG_PATH=dubbogo.yml +go run . +``` + +先后启动服务端和客户端, 可在客户端看到输出: + +```shell +response result: &{ID:1 Name:laurence Age:22 Time:2021-11-12 17:59:39.185 +0800 CST} +``` + +调用成功 + + +## 1. 准备工作 + +- dubbo-go cli 工具和依赖工具已安装 +- 创建一个新的 demo 应用 + +## 2. 传递异常信息 + +参考samples [dubbo-go-samples/error](https://github.com/apache/dubbo-go-samples/tree/master/error) + +### 用户异常回传介绍 + +用户可以在 provider 端生成用户定义的异常信息,可以记录异常产生堆栈,triple 协议可保证将用户在客户端获取到异常 message ,并可以查看报错堆栈,便于定位问题。 + +注意返回 error 非 nil 时,框架不负责其他返回值的传递。 + +- 在Triple provider 端返回异常,以 pb 序列化为例: + +```go +package main + +import ( + "context" +) + +import ( + "dubbo.apache.org/dubbo-go/v3/common/logger" + + // 使用可以记录堆栈的异常库,此处以 "github.com/pkg/errors" 为例 + "github.com/pkg/errors" +) + +import ( + triplepb "github.com/apache/dubbo-go-samples/api" +) + + +// 一个实现了 pb 接口的服务提供结构 +type ErrorResponseProvider struct { + triplepb.UnimplementedGreeterServer +} + +// 回传错误的接口 +func (s *ErrorResponseProvider) SayHello(ctx context.Context, in *triplepb.HelloRequest) (*triplepb.User, error) { + logger.Infof("Dubbo3 GreeterProvider get user name = %s\n" + in.Name) + // 返回用户自定义异常 + return &triplepb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, errors.New("user defined error") +} + +``` + + + +- 客户端打印异常和堆栈 + +```go +package main + +import ( + "context" +) + +import ( + "dubbo.apache.org/dubbo-go/v3/common/logger" + "dubbo.apache.org/dubbo-go/v3/config" + _ "dubbo.apache.org/dubbo-go/v3/imports" + + tripleCommon "github.com/dubbogo/triple/pkg/common" +) + +import ( + triplepb "github.com/apache/dubbo-go-samples/api" +) + +var greeterProvider = new(triplepb.GreeterClientImpl) + +func init() { + config.SetConsumerService(greeterProvider) +} + +func main() { + if err := config.Load(); err != nil { + panic(err) + } + + req := triplepb.HelloRequest{ + Name: "laurence", + } + + // 发起调用 + if user, err := greeterProvider.SayHello(context.TODO(), &req); err != nil { + // 打印异常信息,err.Error() 将返回用户定义的 message,即 user defined error + logger.Infof("response result: %v, error = %s", user, err) + + // 打印异常堆栈,需断言为 tripleCommon.TripleError + logger.Infof("error details = %+v", err.(tripleCommon.TripleError).Stacks()) + } +} + +``` + +```text +2021-11-12T18:36:33.730+0800 INFO cmd/client.go:53 response result: , error = user defined error +2021-11-12T18:36:33.730+0800 INFO cmd/client.go:54 error details = [type.googleapis.com/google.rpc.DebugInfo]:{stack_entries:"user defined error +main.(*ErrorResponseProvider).SayHello + /dubbo-go-samples/error/triple/pb/go-server/cmd/error_reponse.go:40 +reflect.Value.call + /usr/local/go/src/reflect/value.go:543 +reflect.Value.Call + /usr/local/go/src/reflect/value.go:339 +dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory.(*ProxyInvoker).Invoke + /Users/laurence/go/pkg/mod/dubbo.apache.org/dubbo-go/v3@v3.0.0-rc4-1/common/proxy/proxy_factory/default.go:145 + ... + +``` + +可看到报错信息和堆栈 + + + +参考samples [dubbo-go-samples/error](https://github.com/apache/dubbo-go-samples/tree/master/error) + +## 用户异常回传介绍 + +用户可以在 provider 端生成用户定义的异常信息,可以记录异常产生堆栈,triple 协议可保证将用户在客户端获取到异常 message ,并可以查看报错堆栈,便于定位问题。 + +注意返回 error 非 nil 时,框架不负责其他返回值的传递。 + +- 在Triple provider 端返回异常,以 pb 序列化为例: + +```go +package main + +import ( + "context" +) + +import ( + "dubbo.apache.org/dubbo-go/v3/common/logger" + + // 使用可以记录对战信息的异常库,此处以 "github.com/pkg/errors" 为例 + "github.com/pkg/errors" +) + +import ( + triplepb "github.com/apache/dubbo-go-samples/api" +) + + +// 一个实现了 pb 接口的服务提供结构 +type ErrorResponseProvider struct { + triplepb.UnimplementedGreeterServer +} + +// 回传错误的接口 +func (s *ErrorResponseProvider) SayHello(ctx context.Context, in *triplepb.HelloRequest) (*triplepb.User, error) { + logger.Infof("Dubbo3 GreeterProvider get user name = %s\n" + in.Name) + // 返回用户自定义异常 + return &triplepb.User{Name: "Hello " + in.Name, Id: "12345", Age: 21}, errors.New("user defined error") +} + +``` + + + +- 客户端打印异常和堆栈 + +```go +package main + +import ( + "context" +) + +import ( + "dubbo.apache.org/dubbo-go/v3/common/logger" + "dubbo.apache.org/dubbo-go/v3/config" + _ "dubbo.apache.org/dubbo-go/v3/imports" + + tripleCommon "github.com/dubbogo/triple/pkg/common" +) + +import ( + triplepb "github.com/apache/dubbo-go-samples/api" +) + +var greeterProvider = new(triplepb.GreeterClientImpl) + +func init() { + config.SetConsumerService(greeterProvider) +} + +func main() { + if err := config.Load(); err != nil { + panic(err) + } + + req := triplepb.HelloRequest{ + Name: "laurence", + } + + // 发起调用 + if user, err := greeterProvider.SayHello(context.TODO(), &req); err != nil { + // 打印异常信息,err.Error() 将返回用户定义的 message,即 user defined error + logger.Infof("response result: %v, error = %s", user, err) + + // 打印异常堆栈,需断言为 tripleCommon.TripleError + logger.Infof("error details = %+v", err.(tripleCommon.TripleError).Stacks()) + } +} + +``` + +```text +2021-11-12T18:36:33.730+0800 INFO cmd/client.go:53 response result: , error = user defined error +2021-11-12T18:36:33.730+0800 INFO cmd/client.go:54 error details = [type.googleapis.com/google.rpc.DebugInfo]:{stack_entries:"user defined error +main.(*ErrorResponseProvider).SayHello + /dubbo-go-samples/error/triple/pb/go-server/cmd/error_reponse.go:40 +reflect.Value.call + /usr/local/go/src/reflect/value.go:543 +reflect.Value.Call + /usr/local/go/src/reflect/value.go:339 +dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory.(*ProxyInvoker).Invoke + /Users/laurence/go/pkg/mod/dubbo.apache.org/dubbo-go/v3@v3.0.0-rc4-1/common/proxy/proxy_factory/default.go:145 + ... + +``` + +可看到报错信息和堆栈 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/retry.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/retry.md new file mode 100644 index 000000000000..f42d87420ce9 --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/retry.md @@ -0,0 +1,6 @@ +--- +description: 请求重试 +title: 请求重试 +type: docs +weight: 3 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/serialization.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/serialization.md new file mode 100644 index 000000000000..40ba6b9891eb --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/serialization.md @@ -0,0 +1,6 @@ +--- +description: 序列化协议 +title: 序列化 +type: docs +weight: 6 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/streaming.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/streaming.md new file mode 100644 index 000000000000..0b7c6fbaabcf --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/streaming.md @@ -0,0 +1,6 @@ +--- +description: 流式通信 streaming +title: 流式通信 +type: docs +weight: 1 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/timeout.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/timeout.md similarity index 87% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/timeout.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/timeout.md index d42888d14283..e5cd79503055 100644 --- a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/features/timeout.md +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/timeout.md @@ -1,18 +1,12 @@ --- -aliases: - - /zh/docs3-v2/golang-sdk/tutorial/governance/features/timeout/ - - /zh-cn/docs3-v2/golang-sdk/tutorial/governance/features/timeout/ -description: 配置调用的超时 -title: 配置调用的超时 +description: 配置超时时间 +title: 超时时间 type: docs -weight: 1 +weight: 2 --- - - - ## 1. 准备工作 - dubbo-go cli 工具和依赖工具已安装 diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/_index.md new file mode 100755 index 000000000000..d2821838febf --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: dubbo-go 支持使用 nacos、zookeeper 等作为注册中心,实现地址变更的自动发现。 +title: 地址发现 +type: docs +weight: 20 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/desc.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/desc.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/desc.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/desc.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/multi_registry.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/multi_registry.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/multi_registry.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/multi_registry.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/nacos-2.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/nacos-2.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/nacos-2.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/nacos-2.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/nacos.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/nacos.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/nacos.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/nacos.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/polaris.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/polaris.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/polaris.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/polaris.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/registry.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/registry.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/registry.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/registry.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/service-discovery.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/service-discovery.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/service-discovery.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/service-discovery.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/zookeeper.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/zookeeper.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/develop/registry/zookeeper.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-discovery/zookeeper.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/deploy.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/deploy.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/deploy.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/deploy.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/istio.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/istio.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/istio.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/istio.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/http_triple.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/http_triple.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/http_triple.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/http_triple.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/pixiu-nacos-triple.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/pixiu-nacos-triple.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/pixiu/pixiu-nacos-triple.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/pixiu/pixiu-nacos-triple.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/proxyless_service_mesh.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/proxyless_service_mesh.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/proxyless_service_mesh.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/proxyless_service_mesh.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/traffic_management.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/traffic_management.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/service-mesh/traffic_management.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/service-mesh/traffic_management.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/tracing/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/tracing/_index.md new file mode 100755 index 000000000000..77d24d1f75ec --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/tracing/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: tracing +title: 全链路追踪 +type: docs +weight: 50 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/_index.md new file mode 100755 index 000000000000..779d98d37c2e --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/_index.md @@ -0,0 +1,9 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/tutorial/debugging/ + - /zh-cn/docs3-v2/golang-sdk/tutorial/debugging/ +description: 流量管控 +title: 流量管控 +type: docs +weight: 60 +--- diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/graceful_shutdown.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/graceful_shutdown.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/graceful_shutdown.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/graceful_shutdown.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/adaptive-service.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/adaptive-service.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/adaptive-service.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/adaptive-service.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/internally/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/internally/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/internally/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/internally/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/polaris/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/polaris/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/polaris/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/polaris/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/sentinel/_index.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/sentinel/_index.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/sentinel/_index.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/sentinel/_index.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/tps_limiter.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/tps_limiter.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/limit/tps_limiter.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/limit/tps_limiter.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/mesh_router.md b/content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/mesh_router.md similarity index 100% rename from content/zh-cn/overview/mannual/golang-sdk/tutorial/governance/traffic/mesh_router.md rename to content/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/mesh_router.md diff --git a/content/zh-cn/overview/mannual/golang-sdk/versions.md b/content/zh-cn/overview/mannual/golang-sdk/versions.md new file mode 100644 index 000000000000..d56c9582b62a --- /dev/null +++ b/content/zh-cn/overview/mannual/golang-sdk/versions.md @@ -0,0 +1,40 @@ +--- +aliases: + - /zh/docs3-v2/golang-sdk/refer/compatible_version/ + - /zh-cn/docs3-v2/golang-sdk/refer/compatible_version/ + - /zh-cn/overview/mannual/golang-sdk/preface/refer/compatible_version/ +description: 依赖适配版本号 +title: 版本信息 +type: docs +weight: 1 +--- + +## 推荐版本 +当前网站文档适用于以下版本,如果您正使用 dubbo-go 其他版本,请参考对应历史版本文档。 + +| Go | Dubbo-go | Triple | protoc-gen-go-triple | 说明 | +| :--: | ------------ | ------ | -------------------- | -------------------- | +| | v3.2.0-rc1 | v3.0.0 | v3.0.0 | | + +## 历史版本 + +### 3.x +查看 3.1.x 及之前版本文档。 + +| Go | Dubbo-go | Triple | protoc-gen-go-triple | 说明 | +| :--: | ------------ | ------ | -------------------- | -------------------- | +| | v3.1.0 | v1.1.8 | v1.0.8 | | +| | v3.0.4 | v1.1.8 | v1.0.8 | | +| | v3.0.3 | v1.1.8 | v1.0.8 | | +| | v3.0.2 | v1.1.8 | v1.0.8 | | +| | v3.0.1 | v1.1.8 | v1.0.8 | | +| | v3.0.0 | v1.1.6 | v1.0.5 | | +| | v3.0.0-rc4-1 | v1.1.3 | v1.0.2 | | +| | v3.0.0-rc3 | v1.0.9 | v1.0.0 | | + +### 1.x + +| Go | Dubbo-go | Triple | protoc-gen-go-triple | 说明 | +| :--: | ------------ | ------ | -------------------- | -------------------- | +| | v1.5.0 | v1.1.8 | v1.0.8 | | + diff --git a/content/zh-cn/overview/mannual/java-sdk/quick-start/idl.md b/content/zh-cn/overview/mannual/java-sdk/quick-start/idl.md index 4ba38f360527..d64674fd115c 100755 --- a/content/zh-cn/overview/mannual/java-sdk/quick-start/idl.md +++ b/content/zh-cn/overview/mannual/java-sdk/quick-start/idl.md @@ -4,7 +4,7 @@ aliases: - /zh-cn/docs3-v2/java-sdk/quick-start/idl/ description: 从零演示如何基于 IDL 方式来定义 Dubbo 服务并使用 Triple 协议 linkTitle: IDL 定义跨语言服务 -title: IDL 定义跨语言服务 +title: 5 - IDL 定义跨语言服务 type: docs weight: 11 --- diff --git a/content/zh-cn/overview/mannual/nodejs-sdk/_index.md b/content/zh-cn/overview/mannual/nodejs-sdk/_index.md new file mode 100755 index 000000000000..294410b450f9 --- /dev/null +++ b/content/zh-cn/overview/mannual/nodejs-sdk/_index.md @@ -0,0 +1,7 @@ +--- +description: Node.js SDK 使用手册 +linkTitle: Node.js SDK +title: Node.js SDK 手册 +type: docs +weight: 3 +--- diff --git a/content/zh-cn/overview/mannual/nodejs-sdk/quick-start.md b/content/zh-cn/overview/mannual/nodejs-sdk/quick-start.md new file mode 100644 index 000000000000..891d12eee854 --- /dev/null +++ b/content/zh-cn/overview/mannual/nodejs-sdk/quick-start.md @@ -0,0 +1,186 @@ +--- +aliases: + - /zh/docs3-v2/rust-sdk/quick-start/ + - /zh-cn/docs3-v2/rust-sdk/quick-start/ +description: 使用 Node.js 开发后端微服务 +linkTitle: 快速开始 +title: 快速开始 +type: docs +weight: 1 +--- + +基于 Dubbo 定义的 Triple 协议,你可以轻松编写浏览器、gRPC 兼容的 RPC 服务,并让这些服务同时运行在 HTTP/1 和 HTTP/2 上。Dubbo Node.js SDK 支持使用 IDL 或编程语言特有的方式定义服务,并提供一套轻量的 API 来发布或调用这些服务。 + +本示例演示了基于 Triple 协议的 RPC 通信模式,示例使用 Protocol Buffer 定义 RPC 服务,并演示了代码生成、服务发布和服务访问等过程。 + +## 前置条件 + +因为使用 Protocol Buffer 的原因,我们首先需要安装相关的代码生成工具,这包括 `@bufbuild/protoc-gen-es`、`@bufbuild/protobuf`、`@apachedubbo/protoc-gen-apache-dubbo-es`、`@apachedubbo/dubbo`。 + +```Shell +npm install @bufbuild/protoc-gen-es @bufbuild/protobuf @apachedubbo/protoc-gen-apache-dubbo-es @apachedubbo/dubbo +``` + +## 定义服务 + +现在,使用 Protocol Buffer (IDL) 来定义一个 Dubbo 服务。 + +创建目录,并生成文件 + +```Shell +mkdir -p proto && touch proto/example.proto +``` + +写入内容 + +```Protobuf +syntax = "proto3"; + +package apache.dubbo.demo.example.v1; + +message SayRequest { + string sentence = 1; +} + +message SayResponse { + string sentence = 1; +} + +service ExampleService { + rpc Say(SayRequest) returns (SayResponse) {} +} +``` + +这个文件声明了一个叫做 `ExampleService` 的服务,为这个服务定义了 `Say` 方法以及它的请求参数 `SayRequest` 和返回值 `SayResponse`。 + +## 生成代码 + +创建 gen 目录,做为生成文件放置的目标目录 + +``` +mkdir -p gen +``` + +运行以下命令,在 gen 目录下生成代码文件 + +```Shell +PATH=$PATH:$(pwd)/node_modules/.bin \ + protoc -I proto \ + --es_out gen \ + --es_opt target=ts \ + --apache-dubbo-es_out gen \ + --apache-dubbo-es_opt target=ts \ + example.proto +``` + +运行命令后,应该可以在目标目录中看到以下生成的文件: + +```Plain Text +├── gen +│ ├── example_dubbo.ts +│ └── example_pb.ts +├── proto +│ └── example.proto +``` + +## 实现服务 + +接下来我们就需要添加业务逻辑了,实现 ExampleService ,并将其注册到 DubboRouter 中。 + +创建 dubbo.ts 文件 + +```typescript +import { DubboRouter } from "@apachedubbo/dubbo"; +import { ExampleService } from "./gen/example_dubbo"; + +export default (router: DubboRouter) => + // registers apache.dubbo.demo.example.v1 + router.service(ExampleService, { + // implements rpc Say + async say(req) { + return { + sentence: `You said: ${req.sentence}`, + }; + }, + }, { serviceGroup: 'dubbo', serviceVersion: '1.0.0' }); +``` + +## 启动 Server + +Dubbo 服务可以嵌入到普通的 Node.js 服务器、Next.js、Express 或 Fastify 中。 +在这里我们将使用 Fastify,所以让我们安装 Fastify 以及我们为 Fastify 准备的插件。 + +```Shell +npm install fastify @apachedubbo/dubbo-fastify +``` + +创建 server.ts 文件,新建一个 Server,把上一步中实现的 `ExampleService` 注册给它。 +接下来就可以直接初始化和启动 Server 了,它将在指定的端口接收请求。 + +```typescript +import { fastify } from "fastify"; +import { fastifyDubboPlugin } from "@apachedubbo/dubbo-fastify"; +import routes from "./dubbo"; + +async function main() { + const server = fastify(); + await server.register(fastifyDubboPlugin, { + routes, + }); + server.get("/", (_, reply) => { + reply.type("text/plain"); + reply.send("Hello World!"); + }); + await server.listen({ host: "localhost", port: 8080 }); + console.log("server is listening at", server.addresses()); +} + +void main(); +``` + +最后,运行代码启动服务 + +```Shell +npx tsx server.ts +``` + +## 访问服务 + +最简单方式是使用 HTTP/1.1 POST 请求访问服务,参数则作以标准 JSON 格式作为 HTTP 负载传递。如下是使用 cURL 命令的访问示例: + +```Shell +curl \ + --header 'Content-Type: application/json' \ + --header 'TRI-Service-Version: 1.0.0' \ + --header 'TRI-Service-group: dubbo' \ + --data '{"sentence": "Hello World"}' \ + http://localhost:8080/apache.dubbo.demo.example.v1.ExampleService/Say +``` + +也可以使用标准的 Dubbo client 请求服务,我们首先需要从生成代码即 dubbo-node 包中获取服务代理,为它指定 server 地址并初始化,之后就可以发起起 RPC 调用了。 + +创建 client.ts 文件。 + +```typescript +import { createPromiseClient } from "@apachedubbo/dubbo"; +import { ExampleService } from "./gen/example_dubbo"; +import { createDubboTransport } from "@apachedubbo/dubbo-node"; + +const transport = createDubboTransport({ + baseUrl: "http://localhost:8080", + httpVersion: "1.1", +}); + +async function main() { + const client = createPromiseClient(ExampleService, transport, { serviceVersion: '1.0.0', serviceGroup: 'dubbo' }); + const res = await client.say({ sentence: "Hello World" }); + console.log(res); +} +void main(); +``` + +运行客户端 + +```Shell +npx tsx client.ts +``` \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/rust-sdk/_index.md b/content/zh-cn/overview/mannual/rust-sdk/_index.md index 70c2ad64c8cd..cc146fb0aa73 100755 --- a/content/zh-cn/overview/mannual/rust-sdk/_index.md +++ b/content/zh-cn/overview/mannual/rust-sdk/_index.md @@ -6,5 +6,5 @@ description: Rust SDK 使用手册 linkTitle: Rust SDK title: Rust SDK 手册 type: docs -weight: 4 +weight: 5 --- diff --git a/content/zh-cn/overview/mannual/rust-sdk/quick-start.md b/content/zh-cn/overview/mannual/rust-sdk/quick-start.md index 1d0c07369454..fcd34993f7bb 100644 --- a/content/zh-cn/overview/mannual/rust-sdk/quick-start.md +++ b/content/zh-cn/overview/mannual/rust-sdk/quick-start.md @@ -219,4 +219,36 @@ $ ./target/debug/greeter-server ```sh $ ./target/debug/greeter-client Response: GreeterReply { message: "hello, dubbo-rust" } -``` \ No newline at end of file +``` + +## 7 更多示例 + +{{< blocks/section color="white" height="auto">}} +
+
+
+
+
+

+ Streaming 通信模式 +

+

使用 Dubbo Rust 实现 Streaming 通信模型。

+
+
+
+
+
+
+

+ 与 Dubbo Java 互通 +

+

实现与其他 Dubbo 多语言服务的互通

+
+
+
+
+
+
+ +{{< /blocks/section >}} \ No newline at end of file diff --git a/content/zh-cn/overview/mannual/web-sdk/_index.md b/content/zh-cn/overview/mannual/web-sdk/_index.md new file mode 100755 index 000000000000..0c16b02ac2d5 --- /dev/null +++ b/content/zh-cn/overview/mannual/web-sdk/_index.md @@ -0,0 +1,7 @@ +--- +description: Web SDK 使用手册 +linkTitle: Web SDK +title: Web SDK 手册 +type: docs +weight: 4 +--- diff --git a/content/zh-cn/overview/mannual/web-sdk/quick-start.md b/content/zh-cn/overview/mannual/web-sdk/quick-start.md new file mode 100644 index 000000000000..b3690167fabb --- /dev/null +++ b/content/zh-cn/overview/mannual/web-sdk/quick-start.md @@ -0,0 +1,267 @@ +--- +aliases: + - /zh/docs3-v2/rust-sdk/quick-start/ + - /zh-cn/docs3-v2/rust-sdk/quick-start/ +description: 使用 dubbo-js 开发运行在浏览器页面的微服务。 +linkTitle: Web浏览器访问Dubbo服务 +title: Web 浏览器访问 Dubbo 服务 +type: docs +weight: 1 +--- + +基于 Dubbo3 定义的 Triple 协议,你可以轻松编写浏览器、gRPC 兼容的 RPC 服务,并让这些服务同时运行在 HTTP/1 和 HTTP/2 上。[Dubbo TypeScript SDK](https://github.com/apache/dubbo-js/) 支持使用 IDL 或编程语言特有的方式定义服务,并提供一套轻量的 API 来发布或调用这些服务。 + +Dubbo-js 已于 9 月份发布支持 Dubbo3 协议的首个 alpha 版本,它的发布将有机会彻底改变微服务前后端的架构与通信模式,让你能直接在浏览器页面或web服务器中访问后端 Dubbo RPC 服务。 + +![dubbo-web.png](/imgs/v3/web/web-1.png) + +# 浏览器 Web 应用示例 + +本示例演示了如何使用 dubbo-js 开发运行在浏览器上的 web 应用程序,web 页面将调用 dubbo node.js 开发的后端服务并生成页面内容。本示例演示基于 IDL 和非 IDL 两种编码模式。 + +![dubbo-web.png](/imgs/v3/web/web-2.png) + +## IDL 模式 + +### 前置条件 + +首先,我们将使用 Vite 来生成我们的前端项目模板,它内置了我们稍后需要的所有功能支持。 + +```shell +npm create vite@latest -- dubbo-web-example --template react-ts +cd dubbo-web-example +npm install +``` + +因为使用 Protocol Buffer 的原因,我们首先需要安装相关的代码生成工具,这包括 `@bufbuild/protoc-gen-es`、`@bufbuild/protobuf`、`@apachedubbo/protoc-gen-apache-dubbo-es`、`@apachedubbo/dubbo`。 + +```shell +npm install @bufbuild/protoc-gen-es @bufbuild/protobuf @apachedubbo/protoc-gen-apache-dubbo-es @apachedubbo/dubbo +``` + +### 使用 Proto 定义服务 + +现在,使用 Protocol Buffer (IDL) 来定义一个 Dubbo 服务。 + +src 下创建 util/proto 目录,并生成文件 + +```shell +mkdir -p src/util/proto && touch src/util/proto/example.proto +``` + +写入内容 + +```protobuf +syntax = "proto3"; + +package apache.dubbo.demo.example.v1; + +message SayRequest { + string sentence = 1; +} + +message SayResponse { + string sentence = 1; +} + +service ExampleService { + rpc Say(SayRequest) returns (SayResponse) {} +} +``` + +这个文件声明了一个叫做 `ExampleService` 的服务,为这个服务定义了 `Say` 方法以及它的请求参数 `SayRequest` 和返回值 `SayResponse`。 + +### 生成代码 + +创建 gen 目录,作为生成文件放置的目标目录 + +```shell +mkdir -p src/util/gen +``` + +运行以下命令,利用 `protoc-gen-es`、`protoc-gen-apache-dubbo-es` 等插件在 gen 目录下生成代码文件 + +```shell +PATH=$PATH:$(pwd)/node_modules/.bin \ + protoc -I src/util/proto \ + --es_out src/util/gen \ + --es_opt target=ts \ + --apache-dubbo-es_out src/util/gen \ + --apache-dubbo-es_opt target=ts \ + example.proto +``` + +运行命令后,应该可以在目标目录中看到以下生成的文件: + +``` +├── src +│ ├── util +│ │ ├── gen +│ │ │ ├── example_dubbo.ts +│ │ │ └── example_pb.ts +│ │ └── proto +│ │ └── example.proto +``` + +### 创建 App + +需要先下载 `@apachedubbo/dubbo-web` + +```shell +npm install @apachedubbo/dubbo-web +``` + +现在我们可以从包中导入服务并设置一个客户端。在 App.tsx 中添加以下内容: + +```typescript +import { useState } from "react"; +import "./App.css"; + +import { createPromiseClient } from "@apachedubbo/dubbo"; +import { createDubboTransport } from "@apachedubbo/dubbo-web"; + +// Import service definition that you want to connect to. +import { ExampleService } from "./util/gen/example_dubbo"; + +// The transport defines what type of endpoint we're hitting. +// In our example we'll be communicating with a Dubbo endpoint. +const transport = createDubboTransport({ + baseUrl: "http://localhost:8080", +}); + +// Here we make the client itself, combining the service +// definition with the transport. +const client = createPromiseClient(ExampleService, transport, { serviceGroup: 'dubbo', serviceVersion: '1.0.0' }); + +function App() { + const [inputValue, setInputValue] = useState(""); + const [messages, setMessages] = useState< + { + fromMe: boolean; + message: string; + }[] + >([]); + return ( + <> +
    + {messages.map((msg, index) => ( +
  1. {`${msg.fromMe ? "ME:" : "Dubbo Server:"} ${msg.message}`}
  2. + ))} +
+
{ + e.preventDefault(); + // Clear inputValue since the user has submitted. + setInputValue(""); + // Store the inputValue in the chain of messages and + // mark this message as coming from "me" + setMessages((prev) => [ + ...prev, + { + fromMe: true, + message: inputValue, + }, + ]); + const response = await client.say({ + sentence: inputValue, + }); + setMessages((prev) => [ + ...prev, + { + fromMe: false, + message: response.sentence, + }, + ]); + }} + > + setInputValue(e.target.value)} /> + +
+ + ); +} + +export default App; +``` + +执行以下命令,即可得到样例页面 + +```shell +npm run dev +``` + +### 启动 Server + +接下来我们需要启动 Server,可以使用 Java、Go、Node.js 等 Dubbo 支持的任一语言开发 Server。这里我们采用 Dubbo 服务嵌入的 Node.js 服务器,具体可参考 [Node.js 开发 Dubbo 后端服务](https://github.com/apache/dubbo-js/tree/dubbo3/example/dubbo-node-example) 中的操作步骤。 + +不过需要注意,我们额外需要修改 Node.js 示例:引入 @fastify/cors 来解决前端请求的跨域问题 + +```shell +npm install @fastify/cors +``` + +需要在 server.ts 文件下修改 + +```typescript +... +import cors from "@fastify/cors"; + +... +async function main() { + const server = fastify(); + ... + await server.register(cors, { + origin: true, + }); + ... + await server.listen({ host: "localhost", port: 8080 }); + ... +} + +void main(); +``` + +最后,运行代码启动服务 + +```shell +npx tsx server.ts +``` + +## 无 IDL 模式 + +在接下来的版本中,我们将继续提供无 IDL 模式的通信支持,这样就可以更方便的访问无 IDL 的后端服务。在这里,我们先快速的看一下无 IDL 模式的使用方式。 + +同样需要先安装 `@apachedubbo/dubbo`、`@apachedubbo/dubbo-web` + +```shell +npm install @apachedubbo/dubbo @apachedubbo/dubbo-web +``` + +现在就可以一个启动一个客户端,并发起调用了。App.tsx 中的代码与 IDL 模式基本一致,区别点在于以下内容: + +```typescript +// ... +// set backend server to connect +const transport = createDubboTransport({ + baseUrl: "http://localhost:8080", +}); +// init client +const client = createPromiseClient(transport); + +function App() { + // ... + // call remote Dubbo service + const response = await client.call( + "apache.dubbo.demo.example.v1.ExampleService", + "say", + { + sentence: inputValue, + }); +} +``` + +执行以下命令,即可得到样例页面 + +```shell +npm run dev +``` diff --git a/content/zh-cn/overview/quickstart/java/spring-boot.md b/content/zh-cn/overview/quickstart/java/spring-boot.md index e1187518c88b..03aeb18796ce 100644 --- a/content/zh-cn/overview/quickstart/java/spring-boot.md +++ b/content/zh-cn/overview/quickstart/java/spring-boot.md @@ -3,7 +3,7 @@ aliases: - /zh/overview/quickstart/java/spring-boot/ description: 本文将基于 Dubbo Samples 示例演示如何通过 Dubbo x Spring Boot 快速开发微服务应用。 linkTitle: Dubbo Spring Boot Starter 开发微服务应用 -title: 3 - Dubbo Spring Boot Starter 开发微服务应用 +title: 2 - Dubbo Spring Boot Starter 开发微服务应用 type: docs weight: 3 --- diff --git a/content/zh-cn/overview/mannual/erlang-sdk/_index.md b/content/zh-cn/overview/reference/erlang-sdk/_index.md similarity index 76% rename from content/zh-cn/overview/mannual/erlang-sdk/_index.md rename to content/zh-cn/overview/reference/erlang-sdk/_index.md index fb1ec3e6297e..45802c44dee4 100755 --- a/content/zh-cn/overview/mannual/erlang-sdk/_index.md +++ b/content/zh-cn/overview/reference/erlang-sdk/_index.md @@ -2,9 +2,10 @@ aliases: - /zh/docs3-v2/erlang-sdk/ - /zh-cn/docs3-v2/erlang-sdk/ + - /zh-cn/overview/mannual/erlang-sdk/ description: Erlang 支持 linkTitle: Erlang SDK title: Erlang SDK 手册 type: docs -weight: 5 +weight: 8 --- diff --git a/content/zh-cn/overview/mannual/erlang-sdk/quick-start.md b/content/zh-cn/overview/reference/erlang-sdk/quick-start.md similarity index 97% rename from content/zh-cn/overview/mannual/erlang-sdk/quick-start.md rename to content/zh-cn/overview/reference/erlang-sdk/quick-start.md index 381e300195e0..45892132201a 100644 --- a/content/zh-cn/overview/mannual/erlang-sdk/quick-start.md +++ b/content/zh-cn/overview/reference/erlang-sdk/quick-start.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/erlang-sdk/quick-start/ - /zh-cn/docs3-v2/erlang-sdk/quick-start/ + - /zh-cn/overview/mannual/erlang-sdk/quick-start/ description: Erlang 快速开始 linkTitle: 快速开始 title: 快速开始 @@ -9,11 +10,6 @@ type: docs weight: 1 --- - - - - - 建议先使用 java 定义接口 jar,并使用 [erlanalysis](https://github.com/apache/dubbo-erlang/tree/master/tools/erlanalysis) 工具解析java接口至Erlang lib ## 导入依赖库 diff --git a/content/zh-cn/overview/mannual/erlang-sdk/reference.md b/content/zh-cn/overview/reference/erlang-sdk/reference.md similarity index 91% rename from content/zh-cn/overview/mannual/erlang-sdk/reference.md rename to content/zh-cn/overview/reference/erlang-sdk/reference.md index 411946130e84..c6a62bf1d36d 100644 --- a/content/zh-cn/overview/mannual/erlang-sdk/reference.md +++ b/content/zh-cn/overview/reference/erlang-sdk/reference.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/erlang-sdk/reference/ - /zh-cn/docs3-v2/erlang-sdk/reference/ + - /zh-cn/overview/mannual/erlang-sdk/reference/ description: 在 erlang 中配置消费者 linkTitle: 消费者配置 title: 消费者配置 diff --git a/content/zh-cn/overview/mannual/erlang-sdk/serialization.md b/content/zh-cn/overview/reference/erlang-sdk/serialization.md similarity index 92% rename from content/zh-cn/overview/mannual/erlang-sdk/serialization.md rename to content/zh-cn/overview/reference/erlang-sdk/serialization.md index 3cc9748e429d..42d2c6b75a81 100644 --- a/content/zh-cn/overview/mannual/erlang-sdk/serialization.md +++ b/content/zh-cn/overview/reference/erlang-sdk/serialization.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/erlang-sdk/serialization/ - /zh-cn/docs3-v2/erlang-sdk/serialization/ + - /zh-cn/overview/mannual/erlang-sdk/serialization/ description: 在 erlang 中配置序列化方式 linkTitle: 序列化配置项 title: 序列化配置项 diff --git a/content/zh-cn/overview/mannual/erlang-sdk/service.md b/content/zh-cn/overview/reference/erlang-sdk/service.md similarity index 94% rename from content/zh-cn/overview/mannual/erlang-sdk/service.md rename to content/zh-cn/overview/reference/erlang-sdk/service.md index f70fc88ee49f..e89e9af1d2d5 100644 --- a/content/zh-cn/overview/mannual/erlang-sdk/service.md +++ b/content/zh-cn/overview/reference/erlang-sdk/service.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/erlang-sdk/service/ - /zh-cn/docs3-v2/erlang-sdk/service/ + - /zh-cn/overview/mannual/erlang-sdk/service/ description: 在 erlang 中配置服务提供者 linkTitle: 提供者配置 title: 提供者配置 diff --git a/content/zh-cn/overview/reference/pixiu/_index.md b/content/zh-cn/overview/reference/pixiu/_index.md new file mode 100755 index 000000000000..1ce75c5919f9 --- /dev/null +++ b/content/zh-cn/overview/reference/pixiu/_index.md @@ -0,0 +1,11 @@ +--- +aliases: + - /zh/docs3-v2/dubbo-go-pixiu/ + - /zh-cn/docs3-v2/dubbo-go-pixiu/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/ +description: Dubbo Go Pixiu 简介 +linkTitle: Pixiu gateway +title: Dubbo Go Pixiu 简介 +type: docs +weight: 8 +--- diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/_index.md b/content/zh-cn/overview/reference/pixiu/dev/_index.md similarity index 59% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/_index.md rename to content/zh-cn/overview/reference/pixiu/dev/_index.md index 498afec54a5d..d64766019b3f 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/_index.md +++ b/content/zh-cn/overview/reference/pixiu/dev/_index.md @@ -1,7 +1,6 @@ --- aliases: - - /zh/docs3-v2/dubbo-go-pixiu/dev/ - - /zh-cn/docs3-v2/dubbo-go-pixiu/dev/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/dev/ description: 开发者指南 linkTitle: 开发者指南 title: 开发者指南 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/dubbo-pilot.md b/content/zh-cn/overview/reference/pixiu/dev/dubbo-pilot.md similarity index 99% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/dubbo-pilot.md rename to content/zh-cn/overview/reference/pixiu/dev/dubbo-pilot.md index d58402f5ea4d..6a6c3863938e 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/dubbo-pilot.md +++ b/content/zh-cn/overview/reference/pixiu/dev/dubbo-pilot.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/dev/dubbo-pilot/ - /zh-cn/docs3-v2/dubbo-go-pixiu/dev/dubbo-pilot/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/dev/dubbo-pilot/ description: dubbo-pilot Control Plane 部署 linkTitle: dubbo-pilot Control Plane 部署 title: dubbo-pilot Control Plane 部署 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/filter-extension.md b/content/zh-cn/overview/reference/pixiu/dev/filter-extension.md similarity index 97% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/filter-extension.md rename to content/zh-cn/overview/reference/pixiu/dev/filter-extension.md index f6f857d5f16c..d26cfa842061 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/filter-extension.md +++ b/content/zh-cn/overview/reference/pixiu/dev/filter-extension.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/dev/filter-extension/ - /zh-cn/docs3-v2/dubbo-go-pixiu/dev/filter-extension/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/dev/filter-extension/ description: Pixiu Filter体系介绍 linkTitle: Pixiu Filter体系介绍 title: Pixiu Filter体系介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/trie.md b/content/zh-cn/overview/reference/pixiu/dev/trie.md similarity index 99% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/trie.md rename to content/zh-cn/overview/reference/pixiu/dev/trie.md index fa76be362cca..221a8947719e 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/dev/trie.md +++ b/content/zh-cn/overview/reference/pixiu/dev/trie.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/dev/trie/ - /zh-cn/docs3-v2/dubbo-go-pixiu/dev/trie/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/dev/trie/ description: Trie 前缀树介绍 linkTitle: Trie 前缀树介绍 title: Trie 前缀树介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/_index.md b/content/zh-cn/overview/reference/pixiu/overview/_index.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/_index.md rename to content/zh-cn/overview/reference/pixiu/overview/_index.md index 201ba51b761c..a4c884620654 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/_index.md +++ b/content/zh-cn/overview/reference/pixiu/overview/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/overview/ - /zh-cn/docs3-v2/dubbo-go-pixiu/overview/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/overview description: 入门概述 linkTitle: 入门概述 title: 入门概述 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/faq.md b/content/zh-cn/overview/reference/pixiu/overview/faq.md similarity index 91% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/faq.md rename to content/zh-cn/overview/reference/pixiu/overview/faq.md index fccd3c0142ad..d0fcb43ccb5a 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/faq.md +++ b/content/zh-cn/overview/reference/pixiu/overview/faq.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/overview/faq/ - /zh-cn/docs3-v2/dubbo-go-pixiu/overview/faq/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/overview/faq description: Pixiu 常见问题 linkTitle: Pixiu 常见问题 title: Pixiu 常见问题 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/terminology.md b/content/zh-cn/overview/reference/pixiu/overview/terminology.md similarity index 94% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/terminology.md rename to content/zh-cn/overview/reference/pixiu/overview/terminology.md index 20b040a906ca..618df1795710 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/terminology.md +++ b/content/zh-cn/overview/reference/pixiu/overview/terminology.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/overview/terminology/ - /zh-cn/docs3-v2/dubbo-go-pixiu/overview/terminology/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/overview/terminology/ description: Pixiu 术语 linkTitle: Pixiu 术语 title: Pixiu 术语 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/what-is-pixiu.md b/content/zh-cn/overview/reference/pixiu/overview/what-is-pixiu.md similarity index 97% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/what-is-pixiu.md rename to content/zh-cn/overview/reference/pixiu/overview/what-is-pixiu.md index 3c9de721b0dd..1ba36cc76a9b 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/overview/what-is-pixiu.md +++ b/content/zh-cn/overview/reference/pixiu/overview/what-is-pixiu.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/overview/what-is-pixiu/ - /zh-cn/docs3-v2/dubbo-go-pixiu/overview/what-is-pixiu/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/overview/what-is-pixiu/ description: Pixiu 是一款开源的 Dubbo 生态的 API 网关和 接入 dubbo 集群的语言解决方案。作为 API 网关形态。 linkTitle: Pixiu 是什么 title: Pixiu 是什么 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/_index.md b/content/zh-cn/overview/reference/pixiu/user/_index.md similarity index 79% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/_index.md rename to content/zh-cn/overview/reference/pixiu/user/_index.md index be140f46f130..68b935f3db46 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/ description: 用户文档 linkTitle: 用户文档 title: 用户文档 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/_index.md b/content/zh-cn/overview/reference/pixiu/user/adapter/_index.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/_index.md rename to content/zh-cn/overview/reference/pixiu/user/adapter/_index.md index 4ec10d599cd1..54cbfe59833e 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/adapter/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/adapter/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/adapter/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/ description: Adapter 介绍 linkTitle: Adapter 介绍 title: Adapter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/dubbo.md b/content/zh-cn/overview/reference/pixiu/user/adapter/dubbo.md similarity index 80% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/dubbo.md rename to content/zh-cn/overview/reference/pixiu/user/adapter/dubbo.md index 9f20c49fea76..24f6b301810d 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/dubbo.md +++ b/content/zh-cn/overview/reference/pixiu/user/adapter/dubbo.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/adapter/dubbo/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/adapter/dubbo/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/dubbo/ description: Dubbo 集群中心 Adapter linkTitle: Dubbo 集群中心 Adapter title: Dubbo 集群中心 Adapter diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/springcloud.md b/content/zh-cn/overview/reference/pixiu/user/adapter/springcloud.md similarity index 80% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/springcloud.md rename to content/zh-cn/overview/reference/pixiu/user/adapter/springcloud.md index 03e9bd52d100..0ece37fab6ca 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/springcloud.md +++ b/content/zh-cn/overview/reference/pixiu/user/adapter/springcloud.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/adapter/springcloud/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/adapter/springcloud/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/adapter/springcloud/ description: Spring Cloud 集群中心 Adapter linkTitle: Spring Cloud 集群中心 Adapter title: Spring Cloud 集群中心 Adapter diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/_index.md b/content/zh-cn/overview/reference/pixiu/user/appendix/_index.md similarity index 76% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/_index.md rename to content/zh-cn/overview/reference/pixiu/user/appendix/_index.md index fd47ce60c8a0..11bfd9738f56 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/appendix/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/appendix/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/appendix/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/ description: 附录 linkTitle: 附录 title: 附录 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety.md b/content/zh-cn/overview/reference/pixiu/user/appendix/http-to-dubbo-default-stragety.md similarity index 99% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety.md rename to content/zh-cn/overview/reference/pixiu/user/appendix/http-to-dubbo-default-stragety.md index 1c4e499619b4..8c5e98fcf0b1 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety.md +++ b/content/zh-cn/overview/reference/pixiu/user/appendix/http-to-dubbo-default-stragety.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/appendix/http-to-dubbo-default-stragety/ description: HTTP to Dubbo 默认转换协议 linkTitle: HTTP to Dubbo 默认转换协议 title: HTTP to Dubbo 默认转换协议 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations.md b/content/zh-cn/overview/reference/pixiu/user/configurations.md similarity index 98% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations.md rename to content/zh-cn/overview/reference/pixiu/user/configurations.md index b1996999e9fc..5bb23c21c4ed 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations.md +++ b/content/zh-cn/overview/reference/pixiu/user/configurations.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/configurations/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/configurations/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/configurations/ description: 启动和配置 linkTitle: 启动和配置 title: 启动和配置 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment.md b/content/zh-cn/overview/reference/pixiu/user/deployment.md similarity index 97% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment.md rename to content/zh-cn/overview/reference/pixiu/user/deployment.md index 86095a98ad8c..fb447e2bc622 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment.md +++ b/content/zh-cn/overview/reference/pixiu/user/deployment.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/deployment/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/deployment/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/deployment/ description: 部署操作 linkTitle: 部署操作 title: 部署操作 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/_index.md b/content/zh-cn/overview/reference/pixiu/user/httpfilter/_index.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/_index.md rename to content/zh-cn/overview/reference/pixiu/user/httpfilter/_index.md index 290ba4d38c3e..43d32631a81f 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/httpfilter/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/httpfilter/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/httpfilter/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/ description: Http Filter 介绍 linkTitle: Http Filter 介绍 title: Http Filter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/dubbo.md b/content/zh-cn/overview/reference/pixiu/user/httpfilter/dubbo.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/dubbo.md rename to content/zh-cn/overview/reference/pixiu/user/httpfilter/dubbo.md index 27027737ed8b..298e3dd69ac8 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/dubbo.md +++ b/content/zh-cn/overview/reference/pixiu/user/httpfilter/dubbo.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/httpfilter/dubbo/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/httpfilter/dubbo/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/dubbo/ description: Dubbo HttpFilter 介绍 linkTitle: Dubbo HttpFilter 介绍 title: Dubbo HttpFilter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/hystrix.md b/content/zh-cn/overview/reference/pixiu/user/httpfilter/hystrix.md similarity index 79% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/hystrix.md rename to content/zh-cn/overview/reference/pixiu/user/httpfilter/hystrix.md index 6326c35a0007..632197735d6e 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/hystrix.md +++ b/content/zh-cn/overview/reference/pixiu/user/httpfilter/hystrix.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/httpfilter/hystrix/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/httpfilter/hystrix/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/hystrix/ description: 断路器介绍 linkTitle: 断路器介绍 title: 断路器介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/ratelimit.md b/content/zh-cn/overview/reference/pixiu/user/httpfilter/ratelimit.md similarity index 80% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/ratelimit.md rename to content/zh-cn/overview/reference/pixiu/user/httpfilter/ratelimit.md index 0787544cd573..5778ba7a8dc6 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/ratelimit.md +++ b/content/zh-cn/overview/reference/pixiu/user/httpfilter/ratelimit.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/httpfilter/ratelimit/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/httpfilter/ratelimit/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/httpfilter/ratelimit/ description: RateLimiter 介绍 linkTitle: RateLimiter 介绍 title: RateLimiter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/_index.md b/content/zh-cn/overview/reference/pixiu/user/listener/_index.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/_index.md rename to content/zh-cn/overview/reference/pixiu/user/listener/_index.md index ca07556a9eb4..db3e4e8e1ccd 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/listener/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/listener/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/listener/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/ description: Listener 介绍 linkTitle: Listener 介绍 title: Listener 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http.md b/content/zh-cn/overview/reference/pixiu/user/listener/http.md similarity index 95% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http.md rename to content/zh-cn/overview/reference/pixiu/user/listener/http.md index b28e8dfaadb8..a3f6f7408871 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http.md +++ b/content/zh-cn/overview/reference/pixiu/user/listener/http.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/listener/http/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/listener/http/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http/ description: Http Listener 介绍 linkTitle: Http Listener 介绍 title: Http Listener 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http2.md b/content/zh-cn/overview/reference/pixiu/user/listener/http2.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http2.md rename to content/zh-cn/overview/reference/pixiu/user/listener/http2.md index cd7c82ba7d0d..858e3d880950 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http2.md +++ b/content/zh-cn/overview/reference/pixiu/user/listener/http2.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/listener/http2/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/listener/http2/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/http2/ description: Http2 Listener 介绍 linkTitle: Http2 Listener 介绍 title: Http2 Listener 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/tcp.md b/content/zh-cn/overview/reference/pixiu/user/listener/tcp.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/tcp.md rename to content/zh-cn/overview/reference/pixiu/user/listener/tcp.md index 6ebb172b27e5..8f92612956ad 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/tcp.md +++ b/content/zh-cn/overview/reference/pixiu/user/listener/tcp.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/listener/tcp/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/listener/tcp/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/tcp/ description: TCP Listener 介绍 linkTitle: TCP Listener 介绍 title: TCP Listener 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/triple.md b/content/zh-cn/overview/reference/pixiu/user/listener/triple.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/triple.md rename to content/zh-cn/overview/reference/pixiu/user/listener/triple.md index 051f6ef177f3..e22e5c910b8e 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/triple.md +++ b/content/zh-cn/overview/reference/pixiu/user/listener/triple.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/listener/triple/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/listener/triple/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/listener/triple/ description: Triple Listener 介绍 linkTitle: Triple Listener 介绍 title: Triple Listener 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/_index.md b/content/zh-cn/overview/reference/pixiu/user/networkfilter/_index.md similarity index 79% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/_index.md rename to content/zh-cn/overview/reference/pixiu/user/networkfilter/_index.md index f75123a0bcf3..fa6327769b7a 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/networkfilter/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/networkfilter/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/networkfilter/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/ description: Network Filter 介绍 linkTitle: Network Filter 介绍 title: Network Filter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/dubbo.md b/content/zh-cn/overview/reference/pixiu/user/networkfilter/dubbo.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/dubbo.md rename to content/zh-cn/overview/reference/pixiu/user/networkfilter/dubbo.md index 4dcfbca3dd00..bbd22fe400dd 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/dubbo.md +++ b/content/zh-cn/overview/reference/pixiu/user/networkfilter/dubbo.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/networkfilter/dubbo/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/networkfilter/dubbo/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/dubbo/ description: Dubbo NetWorkFilter 介绍 linkTitle: Dubbo NetWorkFilter 介绍 title: Dubbo NetWorkFilter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/grpc.md b/content/zh-cn/overview/reference/pixiu/user/networkfilter/grpc.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/grpc.md rename to content/zh-cn/overview/reference/pixiu/user/networkfilter/grpc.md index 66fcde677eac..a81a53a181ce 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/grpc.md +++ b/content/zh-cn/overview/reference/pixiu/user/networkfilter/grpc.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/networkfilter/grpc/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/networkfilter/grpc/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/grpc/ description: Grpc NetWorkFilter 介绍 linkTitle: Grpc NetWorkFilter 介绍 title: Grpc NetWorkFilter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/http.md b/content/zh-cn/overview/reference/pixiu/user/networkfilter/http.md similarity index 87% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/http.md rename to content/zh-cn/overview/reference/pixiu/user/networkfilter/http.md index c58aec4c004f..e003e86b6e04 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/http.md +++ b/content/zh-cn/overview/reference/pixiu/user/networkfilter/http.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/networkfilter/http/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/networkfilter/http/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/networkfilter/http/ description: Http NetWorkFilter 介绍 linkTitle: Http NetWorkFilter 介绍 title: Http NetWorkFilter 介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/_index.md b/content/zh-cn/overview/reference/pixiu/user/quality/_index.md similarity index 77% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/_index.md rename to content/zh-cn/overview/reference/pixiu/user/quality/_index.md index 8422e88acf82..dda1d5020693 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/quality/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/quality/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/quality/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/ description: 质量指标 linkTitle: 质量指标 title: 质量指标 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/performance.md b/content/zh-cn/overview/reference/pixiu/user/quality/performance.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/performance.md rename to content/zh-cn/overview/reference/pixiu/user/quality/performance.md index 082d8f901f80..2fafa0f54271 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/performance.md +++ b/content/zh-cn/overview/reference/pixiu/user/quality/performance.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/quality/performance/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/quality/performance/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/stability/ description: 性能 linkTitle: 性能 title: 性能 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/stability.md b/content/zh-cn/overview/reference/pixiu/user/quality/stability.md similarity index 78% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/stability.md rename to content/zh-cn/overview/reference/pixiu/user/quality/stability.md index 6687acf1657e..bb1eaae6b107 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/stability.md +++ b/content/zh-cn/overview/reference/pixiu/user/quality/stability.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/quality/stability/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/quality/stability/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/quality/stability/ description: 稳定性 linkTitle: 稳定性 title: 稳定性 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart.md b/content/zh-cn/overview/reference/pixiu/user/quickstart.md similarity index 98% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart.md rename to content/zh-cn/overview/reference/pixiu/user/quickstart.md index ca26ef40e2b0..98b7e06f470b 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart.md +++ b/content/zh-cn/overview/reference/pixiu/user/quickstart.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/quickstart/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/quickstart/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/quickstart/ description: 快速开始 linkTitle: 快速开始 title: 快速开始 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/_index.md b/content/zh-cn/overview/reference/pixiu/user/samples/_index.md similarity index 77% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/_index.md rename to content/zh-cn/overview/reference/pixiu/user/samples/_index.md index 24d2c344bdce..1f6eb6be4c59 100755 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/_index.md +++ b/content/zh-cn/overview/reference/pixiu/user/samples/_index.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/samples/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/samples/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/ description: 案例介绍 linkTitle: 案例介绍 title: 案例介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_proxy.md b/content/zh-cn/overview/reference/pixiu/user/samples/http_proxy.md similarity index 96% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_proxy.md rename to content/zh-cn/overview/reference/pixiu/user/samples/http_proxy.md index 5f9d091c1a47..938e0c2542b9 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_proxy.md +++ b/content/zh-cn/overview/reference/pixiu/user/samples/http_proxy.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/samples/http_proxy/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/samples/http_proxy/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_proxy/ description: Http Proxy 案例介绍 linkTitle: Http Proxy 案例介绍 title: Http Proxy 案例介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_to_dubbo.md b/content/zh-cn/overview/reference/pixiu/user/samples/http_to_dubbo.md similarity index 81% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_to_dubbo.md rename to content/zh-cn/overview/reference/pixiu/user/samples/http_to_dubbo.md index 9ee572397f62..a610d52a82e4 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_to_dubbo.md +++ b/content/zh-cn/overview/reference/pixiu/user/samples/http_to_dubbo.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/samples/http_to_dubbo/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/samples/http_to_dubbo/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/http_to_dubbo description: Http to Dubbo 案例介绍 linkTitle: Http to Dubbo 案例介绍 title: Http to Dubbo 案例介绍 diff --git a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/https.md b/content/zh-cn/overview/reference/pixiu/user/samples/https.md similarity index 80% rename from content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/https.md rename to content/zh-cn/overview/reference/pixiu/user/samples/https.md index 3d8a389a4c53..d7e25411bf31 100644 --- a/content/zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/https.md +++ b/content/zh-cn/overview/reference/pixiu/user/samples/https.md @@ -2,6 +2,7 @@ aliases: - /zh/docs3-v2/dubbo-go-pixiu/user/samples/https/ - /zh-cn/docs3-v2/dubbo-go-pixiu/user/samples/https/ + - /zh-cn/overview/mannual/dubbo-go-pixiu/user/samples/https/ description: Https 案例介绍 linkTitle: Https 案例介绍 title: Https 案例介绍 diff --git a/content/zh-cn/overview/reference/protoc-installation.md b/content/zh-cn/overview/reference/protoc-installation.md new file mode 100644 index 000000000000..c06bd064ef81 --- /dev/null +++ b/content/zh-cn/overview/reference/protoc-installation.md @@ -0,0 +1,73 @@ +--- +title: 如何安装 Protocol Buffer Compiler +linkTitle: Protoc安装 +description: 如何安装 protocol buffer 编译器。 +protoc-version: 3.15.8 +toc_hide: true +type: docs +--- + +虽然不是强制性的,但 Apache Dubbo 支持使用 [Protocol Buffers (proto3版本)](https://protobuf.dev/programming-guides/proto3) 作为服务定义和序列化协议。 + +在 Protocol buffer 体系下,我们使用 `.proto` 文件定义服务和消息体格式,使用 `protoc` 编译器编译 `.proto` 文件,你可以使用以下几种方式安装 `protoc`。 + +### 使用包管理器安装 + +在 Linux 或 macOS 环境下,你可以使用包管理器安装 `protoc`。 + +{{% alert title="Warning" color="warning" %}} +**一定要注意检查所安装 `protoc` 的版本!** 检查方法如下文说述,因为有时一些包管理器安装的 `protoc` 版本是严重过时的。 + +下一节所展示的 [使用预先编译好的二进制文件安装](#binary-install) 可以确保你安装正确的 `protoc` 版本。 +{{% /alert %}} + +- Linux,使用 `apt` 或者 `apt-get`,比如: + + ```sh + $ apt install -y protobuf-compiler + $ protoc --version # Ensure compiler version is 3+ + ``` + +- MacOS,使用 [Homebrew](https://brew.sh): + + ```sh + $ brew install protobuf + $ protoc --version # Ensure compiler version is 3+ + ``` + + + +### 使用预先编译好的二进制文件安装(适用任何操作系统) + +参考以下步骤安装 [最新版本](https://protobuf.dev/downloads#release-packages) 的 protoc 二进制包: + + 1. 根据你的操作系统类型,手动下载 [github.com/google/protobuf/releases](https://github.com/google/protobuf/releases) 二进制文件 + (`protoc---.zip`),你也可以使用以下命令直接下载: + + ```sh + $ PB_REL="https://github.com/protocolbuffers/protobuf/releases" + $ curl -LO $PB_REL/download/v{{< param protoc-version >}}/protoc-{{< param protoc-version >}}-linux-x86_64.zip + ``` + + 2. 将文件解压到`$HOME/.local` 目录,或者任意你想要的目录也可以。比如: + + ```sh + $ unzip protoc-{{< param protoc-version >}}-linux-x86_64.zip -d $HOME/.local + ``` + + 3. 修改系统 `PATH` 路径,将 `protoc` 加入可执行文件路径。比如: + + ```sh + $ export PATH="$PATH:$HOME/.local/bin" + ``` + +### 其他安装方法 + +如果你想要自行编译源码安装,或者想要安装老版本的二进制包。请参考 [下载 Protocol Buffers](https://protobuf.dev/downloads) + +[download]: https://protobuf.dev/downloads +[github.com/google/protobuf/releases]: https://github.com/google/protobuf/releases +[Homebrew]: https://brew.sh +[latest release]: https://protobuf.dev/downloads#release-packages +[pb]: https://developers.google.com/protocol-buffers +[proto3]: https://protobuf.dev/programming-guides/proto3 diff --git a/content/zh-cn/overview/what/_index.md b/content/zh-cn/overview/what/_index.md index 0f65325d258d..162383c39792 100644 --- a/content/zh-cn/overview/what/_index.md +++ b/content/zh-cn/overview/what/_index.md @@ -20,7 +20,7 @@ Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下 ## Dubbo 的开源故事 -Apache Dubbo 最初是为了解决阿里巴巴内部的微服务架构问题而设计并开发的,在十多年的时间里,它在阿里巴巴公司内部的很多业务系统的到了非常广泛的应用。最早在 2008 年,阿里巴巴就将 Dubbo 捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用。在 2017 年,Dubbo 被正式捐献 Apache 软件基金会并成为 Apache 顶级项目,开始了一段新的征程。 +Apache Dubbo 最初是为了解决阿里巴巴内部的微服务架构问题而设计并开发的,在十多年的时间里,它在阿里巴巴公司内部的很多业务系统得到了非常广泛的应用。最早在 2008 年,阿里巴巴就将 Dubbo 捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用。在 2017 年,Dubbo 被正式捐献 Apache 软件基金会并成为 Apache 顶级项目,开始了一段新的征程。 Dubbo 被证实能很好的满足企业的大规模微服务实践,并且能有效降低微服务建设的开发与管理成本,不论是阿里巴巴还是工商银行、中国平安、携程、海尔等社区用户,它们都通过多年的大规模生产环境流量对 Dubbo 的稳定性与性能进行了充分验证。后来 Dubbo 在很多大企业内部衍生出了独立版本,比如在阿里巴巴内部就基于 Dubbo 衍生出了 HSF,HSF 见证了阿里巴巴以电商业务为首的微服务系统的快速发展。自云原生概念推广以来,各大厂商都开始拥抱开源标准实现,阿里巴巴将其内部 HSF 系统与开源社区 Dubbo 相融合,与社区一同推出了云原生时代的 Dubbo3 架构,截止 2022 年双十一结束,**Dubbo3 已经在阿里巴巴内部全面取代 HSF 系统,包括电商核心、阿里云等核心系统已经全面运行在 Dubbo3 之上**。 diff --git a/content/zh-cn/overview/what/core-features/traffic/condition-rule.md b/content/zh-cn/overview/what/core-features/traffic/condition-rule.md index 8856c1c892fa..4f0c6a7749d2 100644 --- a/content/zh-cn/overview/what/core-features/traffic/condition-rule.md +++ b/content/zh-cn/overview/what/core-features/traffic/condition-rule.md @@ -37,7 +37,7 @@ weight: 1 | key | string | The identifier of the target service or application that this rule is about to apply to.

- If `scope:service`is set, then `key`should be specified as the Dubbo service key that this rule targets to control.
- If `scope:application` is set, then `key`should be specified as the name of the application that this rule targets to control, application should always be a Dubbo Consumer. | Yes | | enabled | bool | Whether enable this rule or not, set `enabled:false` to disable this rule. | Yes | | conditions | string[] | The condition routing rule definition of this configuration. Check [Condition](./#condition) for details | Yes | -| force | bool | The behaviour when the instance subset is empty after after routing. `true` means return no provider exception while `false` means ignore this rule. | No | +| force | bool | The behavior when the instance subset is empty after routing. `true` means return no provider exception while `false` means ignore this rule. | No | | runtime | bool | Whether run routing rule for every rpc invocation or use routing cache if available. | No | ## Condition diff --git a/data/download/en/1javaReleases.yaml b/data/download/en/1javaReleases.yaml index fe0b8ad5b131..09ed39abb238 100644 --- a/data/download/en/1javaReleases.yaml +++ b/data/download/en/1javaReleases.yaml @@ -3,16 +3,23 @@ type: java extra_message: extra_link: list: + - name: 3.3.0-beta.1 + description: > + The latest feature version of Dubbo 3 includes JDK 21 Project Loom, the new Triple protocol, etc. + changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.3.0-beta.1 + archive: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip + hash: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip.sha512 + signature: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip.asc - name: 3.2.7 description: > - The latest feature version of Dubbo 3, including Spring Boot 3, JDK 17, thread pool isolation at service granularity, etc. + Dubbo 3 is the latest stable version. It is recommended that all 3.x users upgrade to this version. changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.2.7 archive: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip hash: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip.sha512 signature: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip.asc - name: 3.1.11 description: > - The latest stable version of Dubbo 3, it is recommended that all 3.x users upgrade to this version. + Dubbo 3.1.x is currently only undergoing security maintenance. It is recommended that all 3.x users upgrade to version 3.2.x. changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.1.11 archive: https://www.apache.org/dyn/closer.lua/dubbo/3.1.11/apache-dubbo-3.1.11-src.zip hash: https://www.apache.org/dyn/closer.lua/dubbo/3.1.11/apache-dubbo-3.1.11-src.zip.sha512 diff --git a/data/download/zh/1javaReleases.yaml b/data/download/zh/1javaReleases.yaml index 710f8cc65f25..8287765874ea 100644 --- a/data/download/zh/1javaReleases.yaml +++ b/data/download/zh/1javaReleases.yaml @@ -3,16 +3,23 @@ type: java extra_message: extra_link: list: + - name: 3.3.0-beta.1 + description: > + Dubbo 3 最新特性版本,包含了如 JDK 21 Project Loom、全新 Triple 协议等。 + changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.3.0-beta.1 + archive: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip + hash: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip.sha512 + signature: https://www.apache.org/dyn/closer.lua/dubbo/3.3.0-beta.1/apache-dubbo-3.3.0-beta.1-src.zip.asc - name: 3.2.7 description: > - Dubbo 3 最新特性版本,包含了如 Spring Boot 3、JDK 17、服务粒度的线程池隔离等。 + Dubbo 3 最新稳定版本,建议所有的 3.x 用户都升级到该版本。 changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.2.7 archive: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip hash: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip.sha512 signature: https://www.apache.org/dyn/closer.lua/dubbo/3.2.7/apache-dubbo-3.2.7-src.zip.asc - name: 3.1.11 description: > - Dubbo 3 最新稳定版本,建议所有的 3.x 用户都升级到该版本。 + Dubbo 3.1.x 目前仅进行安全维护,建议所有的 3.x 用户都升级到 3.2.x 版本。 changelog: https://github.com/apache/dubbo/releases/tag/dubbo-3.1.11 archive: https://www.apache.org/dyn/closer.lua/dubbo/3.1.11/apache-dubbo-3.1.11-src.zip hash: https://www.apache.org/dyn/closer.lua/dubbo/3.1.11/apache-dubbo-3.1.11-src.zip.sha512 diff --git a/static/imgs/golang/architecture/arc.png b/static/imgs/golang/architecture/arc.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ea10991e534363f2d2a054c0ace862fba02fc1 GIT binary patch literal 2068065 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 z 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

4i+9^A4M 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