You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gi...@apache.org on 2024/09/13 07:34:54 UTC
(dubbo-website) branch asf-site-v2 updated: deploy: 1a4b998f54b52e78101a851e840c71737410976c
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch asf-site-v2
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/asf-site-v2 by this push:
new a120afec64d deploy: 1a4b998f54b52e78101a851e840c71737410976c
a120afec64d is described below
commit a120afec64d1927c22ce6f68962034093c42d98c
Author: AlbumenJ <Al...@users.noreply.github.com>
AuthorDate: Fri Sep 13 07:34:15 2024 +0000
deploy: 1a4b998f54b52e78101a851e840c71737410976c
---
css/language.css | 84 +-
en/404.html | 17 +-
.../application-level-service-discovery/index.html | 23 +-
.../index.html | 25 +-
.../index.html | 23 +-
.../the-gsocgoogle-summer-of-code-2018/index.html | 23 +-
.../index.html | 23 +-
.../index.html | 21 +-
.../index.html | 21 +-
.../2018/07/01/your-first-dubbo-filter/index.html | 25 +-
.../2018/07/12/tracking-with-pinpoint/index.html | 25 +-
.../index.html | 25 +-
.../index.html | 21 +-
en/blog/2018/08/07/dubbo-101/index.html | 25 +-
.../2018/08/07/use-annotations-in-dubbo/index.html | 25 +-
.../2018/08/07/using-zookeeper-in-dubbo/index.html | 25 +-
en/blog/2018/08/10/dubbos-load-balance/index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../asynchronous-invoke/index.html | 25 +-
.../2018/08/14/generic-invoke-of-dubbo/index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../08/14/native-image-using-graalvm/index.html | 25 +-
.../index.html | 25 +-
.../index.html | 21 +-
.../index.html | 25 +-
.../02/how-to-prepare-an-apache-release/index.html | 25 +-
.../30/integrate-dubbo-with-kubernetes/index.html | 25 +-
.../introduction-to-the-dubbo-protocol/index.html | 23 +-
.../index.html | 23 +-
.../index.html | 21 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../index.html | 25 +-
en/blog/2019/08/26/service-test/index.html | 25 +-
en/blog/2020/05/18/past-releases/index.html | 25 +-
en/blog/2021/07/02/3.0.1-release-note/index.html | 25 +-
en/blog/2021/08/18/3.0.2-release-note/index.html | 25 +-
en/blog/2021/08/23/3.0.2.1-release-note/index.html | 25 +-
en/blog/2021/09/20/2.7.14-release-note/index.html | 23 +-
.../index.html | 23 +-
.../index.html | 23 +-
.../index.html | 25 +-
.../index.html | 25 +-
.../31/tracing-dubbo-with-opentelemetry/index.html | 23 +-
en/blog/index.html | 29 +-
en/blog/index.xml | 7361 +--------
en/blog/news/index.html | 27 +-
en/blog/news/index.xml | 6708 +-------
en/blog/news/page/2/index.html | 31 +-
en/blog/news/page/3/index.html | 27 +-
en/blog/news/page/4/index.html | 31 +-
en/blog/page/2/index.html | 35 +-
en/blog/page/3/index.html | 29 +-
en/blog/page/4/index.html | 31 +-
en/blog/page/5/index.html | 29 +-
en/blog/proposals/index.html | 23 +-
en/blog/proposals/index.xml | 123 +-
en/blog/releases/index.html | 25 +-
en/blog/releases/index.xml | 581 +-
.../committer/apache-dubbo-page_dev/index.html | 25 +-
.../contribution-guidelines/committer/index.html | 23 +-
.../contribution-guidelines/committer/index.xml | 565 +-
.../committer/label-an-issue-guide_dev/index.html | 25 +-
.../committer/new-committer-guide_dev/index.html | 25 +-
.../committer/release-guide_dev/index.html | 25 +-
.../committer/website-guide_dev/index.html | 23 +-
.../contributor/become-a-committer_dev/index.html | 25 +-
.../contributor/cla-signing-guide_dev/index.html | 25 +-
.../dubbo-extension-guide_dev/index.html | 25 +-
.../contribution-guidelines/contributor/index.html | 23 +-
.../contribution-guidelines/contributor/index.xml | 336 +-
.../mailing-list-subscription-guide_dev/index.html | 25 +-
.../new-contributor-guide_dev/index.html | 25 +-
.../reporting-security-issues_dev/index.html | 25 +-
.../software-donation-guide_dev/index.html | 25 +-
.../contributor/test-coverage-guide_dev/index.html | 23 +-
en/docs/contribution-guidelines/index.html | 23 +-
en/docs/contribution-guidelines/index.xml | 2 +-
en/docs/faq/index.html | 23 +-
en/docs/faq/index.xml | 2 +-
en/docs/index.html | 23 +-
en/docs/index.xml | 4174 +----
en/docs/v2.7/admin/index.html | 23 +-
en/docs/v2.7/admin/index.xml | 7 +-
.../v2.7/admin/install/admin-console/index.html | 25 +-
.../v2.7/admin/install/consumer-demo/index.html | 25 +-
en/docs/v2.7/admin/install/index.html | 23 +-
en/docs/v2.7/admin/install/index.xml | 169 +-
.../v2.7/admin/install/monitor-center/index.html | 23 +-
.../v2.7/admin/install/provider-demo/index.html | 25 +-
en/docs/v2.7/admin/install/redis/index.html | 25 +-
en/docs/v2.7/admin/install/zookeeper/index.html | 25 +-
en/docs/v2.7/admin/ops/apidocs/index.html | 25 +-
en/docs/v2.7/admin/ops/functions/index.html | 25 +-
en/docs/v2.7/admin/ops/governance/index.html | 25 +-
en/docs/v2.7/admin/ops/index.html | 23 +-
en/docs/v2.7/admin/ops/index.xml | 691 +-
en/docs/v2.7/admin/ops/introduction/index.html | 25 +-
en/docs/v2.7/admin/ops/pinpoint/index.html | 23 +-
en/docs/v2.7/admin/ops/search/index.html | 25 +-
en/docs/v2.7/admin/ops/skywalking/index.html | 25 +-
en/docs/v2.7/admin/ops/test/index.html | 23 +-
en/docs/v2.7/dev/build/index.html | 23 +-
en/docs/v2.7/dev/checklist/index.html | 23 +-
en/docs/v2.7/dev/code-smell/index.html | 23 +-
en/docs/v2.7/dev/coding/index.html | 23 +-
en/docs/v2.7/dev/contract/index.html | 23 +-
en/docs/v2.7/dev/design/index.html | 23 +-
en/docs/v2.7/dev/implementation/index.html | 23 +-
en/docs/v2.7/dev/impls/cache/index.html | 25 +-
en/docs/v2.7/dev/impls/cluster/index.html | 25 +-
en/docs/v2.7/dev/impls/compiler/index.html | 25 +-
en/docs/v2.7/dev/impls/config-center/index.html | 25 +-
en/docs/v2.7/dev/impls/container/index.html | 25 +-
en/docs/v2.7/dev/impls/dispatcher/index.html | 25 +-
en/docs/v2.7/dev/impls/exchanger/index.html | 25 +-
.../v2.7/dev/impls/exporter-listener/index.html | 25 +-
.../v2.7/dev/impls/extension-factory/index.html | 25 +-
en/docs/v2.7/dev/impls/filter/index.html | 25 +-
en/docs/v2.7/dev/impls/index.html | 23 +-
en/docs/v2.7/dev/impls/index.xml | 1651 +-
en/docs/v2.7/dev/impls/invoker-listener/index.html | 25 +-
en/docs/v2.7/dev/impls/load-balance/index.html | 25 +-
en/docs/v2.7/dev/impls/logger-adapter/index.html | 25 +-
en/docs/v2.7/dev/impls/merger/index.html | 25 +-
en/docs/v2.7/dev/impls/monitor/index.html | 25 +-
en/docs/v2.7/dev/impls/networker/index.html | 25 +-
en/docs/v2.7/dev/impls/page/index.html | 25 +-
en/docs/v2.7/dev/impls/protocol/index.html | 25 +-
en/docs/v2.7/dev/impls/proxy-factory/index.html | 25 +-
en/docs/v2.7/dev/impls/registry/index.html | 25 +-
en/docs/v2.7/dev/impls/remoting/index.html | 25 +-
en/docs/v2.7/dev/impls/router/index.html | 25 +-
en/docs/v2.7/dev/impls/serialize/index.html | 25 +-
en/docs/v2.7/dev/impls/status-checker/index.html | 25 +-
en/docs/v2.7/dev/impls/telnet-handler/index.html | 25 +-
en/docs/v2.7/dev/impls/threadpool/index.html | 25 +-
en/docs/v2.7/dev/impls/validation/index.html | 25 +-
en/docs/v2.7/dev/index.html | 23 +-
en/docs/v2.7/dev/index.xml | 732 +-
en/docs/v2.7/dev/principals/code-detail/index.html | 23 +-
.../v2.7/dev/principals/configuration/index.html | 25 +-
en/docs/v2.7/dev/principals/dummy/index.html | 25 +-
.../v2.7/dev/principals/expansibility/index.html | 25 +-
en/docs/v2.7/dev/principals/extension/index.html | 25 +-
.../dev/principals/general-knowledge/index.html | 25 +-
en/docs/v2.7/dev/principals/index.html | 23 +-
en/docs/v2.7/dev/principals/index.xml | 418 +-
en/docs/v2.7/dev/principals/robustness/index.html | 25 +-
en/docs/v2.7/dev/release/index.html | 23 +-
en/docs/v2.7/dev/spi/index.html | 23 +-
en/docs/v2.7/dev/tck/index.html | 23 +-
en/docs/v2.7/index.html | 23 +-
en/docs/v2.7/index.xml | 3 +-
en/docs/v2.7/user/benchmark-tool/index.html | 23 +-
en/docs/v2.7/user/best-practice/index.html | 23 +-
en/docs/v2.7/user/capacity-plan/index.html | 23 +-
.../v2.7/user/configuration/annotation/index.html | 23 +-
en/docs/v2.7/user/configuration/api/index.html | 23 +-
.../configuration-load-process/index.html | 23 +-
en/docs/v2.7/user/configuration/index.html | 23 +-
en/docs/v2.7/user/configuration/index.xml | 450 +-
.../v2.7/user/configuration/properties/index.html | 23 +-
en/docs/v2.7/user/configuration/xml/index.html | 23 +-
en/docs/v2.7/user/coveragence/index.html | 23 +-
en/docs/v2.7/user/dependencies/index.html | 23 +-
en/docs/v2.7/user/examples/accesslog/index.html | 23 +-
en/docs/v2.7/user/examples/async-call/index.html | 23 +-
.../examples/async-execute-on-provider/index.html | 23 +-
en/docs/v2.7/user/examples/attachment/index.html | 23 +-
.../examples/broadcast-resp-collect/index.html | 23 +-
.../user/examples/callback-parameter/index.html | 23 +-
.../user/examples/concurrency-control/index.html | 23 +-
.../user/examples/config-connections/index.html | 23 +-
en/docs/v2.7/user/examples/config-rule/index.html | 23 +-
en/docs/v2.7/user/examples/context/index.html | 23 +-
.../v2.7/user/examples/delay-publish/index.html | 23 +-
.../examples/distributed-transaction/index.html | 23 +-
en/docs/v2.7/user/examples/dump/index.html | 23 +-
en/docs/v2.7/user/examples/echo-service/index.html | 23 +-
.../v2.7/user/examples/events-notify/index.html | 23 +-
.../v2.7/user/examples/explicit-target/index.html | 23 +-
.../examples/fault-tolerent-strategy/index.html | 23 +-
.../examples/generic-invoke-with-json/index.html | 23 +-
.../user/examples/generic-reference/index.html | 23 +-
.../v2.7/user/examples/generic-service/index.html | 23 +-
.../user/examples/graceful-shutdown/index.html | 23 +-
en/docs/v2.7/user/examples/group-merger/index.html | 23 +-
.../v2.7/user/examples/hostname-binding/index.html | 23 +-
en/docs/v2.7/user/examples/index.html | 23 +-
en/docs/v2.7/user/examples/index.xml | 2172 +--
.../examples/invoke-with-specified-ip/index.html | 23 +-
en/docs/v2.7/user/examples/lazy-connect/index.html | 23 +-
en/docs/v2.7/user/examples/loadbalance/index.html | 23 +-
en/docs/v2.7/user/examples/local-call/index.html | 23 +-
en/docs/v2.7/user/examples/local-mock/index.html | 23 +-
en/docs/v2.7/user/examples/local-stub/index.html | 23 +-
.../v2.7/user/examples/logger-strategy/index.html | 23 +-
.../user/examples/msgpack-serialization/index.html | 23 +-
.../v2.7/user/examples/multi-protocols/index.html | 23 +-
.../v2.7/user/examples/multi-registry/index.html | 23 +-
.../v2.7/user/examples/multi-versions/index.html | 23 +-
en/docs/v2.7/user/examples/netty4/index.html | 23 +-
.../user/examples/parameter-validation/index.html | 23 +-
.../v2.7/user/examples/preflight-check/index.html | 23 +-
.../examples/provider-timeout-release/index.html | 23 +-
.../examples/reference-config-cache/index.html | 23 +-
.../v2.7/user/examples/registry-only/index.html | 23 +-
en/docs/v2.7/user/examples/result-cache/index.html | 23 +-
en/docs/v2.7/user/examples/routing-rule/index.html | 23 +-
.../v2.7/user/examples/serialization/index.html | 23 +-
.../user/examples/service-container/index.html | 23 +-
.../user/examples/service-downgrade/index.html | 23 +-
.../v2.7/user/examples/service-group/index.html | 23 +-
.../v2.7/user/examples/static-service/index.html | 23 +-
en/docs/v2.7/user/examples/stickiness/index.html | 23 +-
.../v2.7/user/examples/subscribe-only/index.html | 23 +-
en/docs/v2.7/user/examples/thread-model/index.html | 23 +-
.../user/examples/token-authorization/index.html | 23 +-
en/docs/v2.7/user/index.html | 23 +-
en/docs/v2.7/user/index.xml | 2401 +--
en/docs/v2.7/user/languages/erlang/index.html | 23 +-
en/docs/v2.7/user/languages/erlang/index.xml | 127 +-
.../user/languages/erlang/quick-start/index.html | 23 +-
.../user/languages/erlang/reference/index.html | 23 +-
.../user/languages/erlang/serialization/index.html | 23 +-
.../v2.7/user/languages/erlang/service/index.html | 23 +-
en/docs/v2.7/user/languages/index.html | 23 +-
en/docs/v2.7/user/languages/index.xml | 2 +-
en/docs/v2.7/user/maturity/index.html | 23 +-
en/docs/v2.7/user/perf-test/index.html | 23 +-
en/docs/v2.7/user/preface/architecture/index.html | 23 +-
en/docs/v2.7/user/preface/background/index.html | 23 +-
en/docs/v2.7/user/preface/index.html | 23 +-
en/docs/v2.7/user/preface/index.xml | 154 +-
en/docs/v2.7/user/preface/requirements/index.html | 23 +-
en/docs/v2.7/user/preface/usage/index.html | 23 +-
en/docs/v2.7/user/quick-start/index.html | 23 +-
en/docs/v2.7/user/recommend/index.html | 23 +-
en/docs/v2.7/user/references/api/index.html | 23 +-
en/docs/v2.7/user/references/index.html | 23 +-
en/docs/v2.7/user/references/index.xml | 627 +-
en/docs/v2.7/user/references/maven/index.html | 23 +-
en/docs/v2.7/user/references/metadata/index.html | 23 +-
.../v2.7/user/references/protocol/dubbo/index.html | 23 +-
.../user/references/protocol/hessian/index.html | 23 +-
.../v2.7/user/references/protocol/http/index.html | 23 +-
en/docs/v2.7/user/references/protocol/index.html | 23 +-
en/docs/v2.7/user/references/protocol/index.xml | 795 +-
.../user/references/protocol/memcached/index.html | 23 +-
.../v2.7/user/references/protocol/redis/index.html | 23 +-
.../v2.7/user/references/protocol/rest/index.html | 23 +-
.../v2.7/user/references/protocol/rmi/index.html | 23 +-
.../user/references/protocol/thrift/index.html | 23 +-
.../user/references/protocol/webservice/index.html | 23 +-
en/docs/v2.7/user/references/qos/index.html | 23 +-
en/docs/v2.7/user/references/registry/index.html | 23 +-
en/docs/v2.7/user/references/registry/index.xml | 291 +-
.../user/references/registry/multicast/index.html | 23 +-
.../v2.7/user/references/registry/nacos/index.html | 23 +-
.../v2.7/user/references/registry/redis/index.html | 23 +-
.../user/references/registry/simple/index.html | 23 +-
.../user/references/registry/zookeeper/index.html | 23 +-
en/docs/v2.7/user/references/telnet/index.html | 23 +-
.../references/xml/dubbo-application/index.html | 23 +-
.../user/references/xml/dubbo-argument/index.html | 23 +-
.../references/xml/dubbo-config-center/index.html | 23 +-
.../user/references/xml/dubbo-consumer/index.html | 23 +-
.../user/references/xml/dubbo-method/index.html | 23 +-
.../user/references/xml/dubbo-module/index.html | 23 +-
.../user/references/xml/dubbo-monitor/index.html | 23 +-
.../user/references/xml/dubbo-parameter/index.html | 23 +-
.../user/references/xml/dubbo-protocol/index.html | 23 +-
.../user/references/xml/dubbo-provider/index.html | 23 +-
.../user/references/xml/dubbo-reference/index.html | 23 +-
.../user/references/xml/dubbo-registry/index.html | 23 +-
.../user/references/xml/dubbo-service/index.html | 23 +-
en/docs/v2.7/user/references/xml/index.html | 23 +-
en/docs/v2.7/user/references/xml/index.xml | 2342 +--
en/docs/v2.7/user/rest/index.html | 23 +-
en/docs/v2.7/user/simple-monitor/index.html | 23 +-
en/docs/v3.0/index.html | 23 +-
en/docs/v3.0/index.xml | 151 +-
en/docs/v3.0/languages/erlang/index.html | 23 +-
en/docs/v3.0/languages/erlang/index.xml | 128 +-
.../v3.0/languages/erlang/quick-start/index.html | 23 +-
en/docs/v3.0/languages/erlang/reference/index.html | 23 +-
.../v3.0/languages/erlang/serialization/index.html | 23 +-
en/docs/v3.0/languages/erlang/service/index.html | 23 +-
.../v3.0/languages/golang/go-specific/index.html | 23 +-
en/docs/v3.0/languages/golang/index.html | 23 +-
en/docs/v3.0/languages/golang/index.xml | 186 +-
.../v3.0/languages/golang/quick-start/index.html | 25 +-
en/docs/v3.0/languages/index.html | 23 +-
en/docs/v3.0/languages/index.xml | 2 +-
en/docs/v3.0/languages/rust/index.html | 23 +-
en/docs/v3.0/languages/rust/index.xml | 2 +-
en/docs/v3.0/loadbalance/index.html | 23 +-
en/docs/v3.0/loadbalance/index.xml | 2 +-
en/docs/v3.0/references/graalvm/index.html | 23 +-
en/docs/v3.0/references/graalvm/index.xml | 131 +-
.../references/graalvm/support-graalvm/index.html | 25 +-
en/docs/v3.0/references/index.html | 23 +-
en/docs/v3.0/references/index.xml | 2 +-
en/docs/v3.0/references/lifecycle/brief/index.html | 23 +-
en/docs/v3.0/references/lifecycle/index.html | 23 +-
en/docs/v3.0/references/lifecycle/index.xml | 160 +-
.../v3.0/references/lifecycle/liveness/index.html | 25 +-
.../v3.0/references/lifecycle/readiness/index.html | 25 +-
.../v3.0/references/lifecycle/startup/index.html | 25 +-
en/docs/v3.0/whats-new-in-dubbo3/index.html | 23 +-
en/docs/v3.0/whats-new-in-dubbo3/index.xml | 2 +-
en/docs3-v2/erlang-sdk/index.html | 27 +-
en/docs3-v2/erlang-sdk/index.xml | 2 +-
en/docs3-v2/golang-sdk/index.html | 27 +-
en/docs3-v2/golang-sdk/index.xml | 6 +-
.../golang-sdk/preface/3.0_feature/index.html | 29 +-
.../golang-sdk/preface/concept/generic/index.html | 29 +-
en/docs3-v2/golang-sdk/preface/concept/index.html | 27 +-
en/docs3-v2/golang-sdk/preface/concept/index.xml | 276 +-
.../preface/concept/multi_language/index.html | 27 +-
.../golang-sdk/preface/concept/protocol/index.html | 27 +-
.../golang-sdk/preface/concept/registry/index.html | 27 +-
.../preface/design/aop_and_extension/index.html | 27 +-
.../preface/design/app_and_interface/index.html | 27 +-
.../preface/design/architecture/index.html | 27 +-
en/docs3-v2/golang-sdk/preface/design/index.html | 27 +-
en/docs3-v2/golang-sdk/preface/design/index.xml | 154 +-
en/docs3-v2/golang-sdk/preface/index.html | 27 +-
en/docs3-v2/golang-sdk/preface/index.xml | 181 +-
en/docs3-v2/golang-sdk/preface/samples/index.html | 27 +-
en/docs3-v2/golang-sdk/preface/what/index.html | 27 +-
en/docs3-v2/golang-sdk/quickstart/index.html | 27 +-
en/docs3-v2/golang-sdk/quickstart/index.xml | 272 +-
.../golang-sdk/quickstart/install/index.html | 29 +-
.../quickstart/quickstart_triple/index.html | 29 +-
.../quickstart_triple_with_customize/index.html | 29 +-
.../golang-sdk/refer/basic_concept/index.html | 29 +-
.../golang-sdk/refer/compatible_version/index.html | 29 +-
en/docs3-v2/golang-sdk/refer/config/index.html | 29 +-
en/docs3-v2/golang-sdk/refer/ecology/index.html | 29 +-
en/docs3-v2/golang-sdk/refer/index.html | 27 +-
en/docs3-v2/golang-sdk/refer/index.xml | 550 +-
.../golang-sdk/refer/use_dubbogo_cli/index.html | 29 +-
en/docs3-v2/golang-sdk/sourcecode/index.html | 27 +-
en/docs3-v2/golang-sdk/sourcecode/index.xml | 57 +-
.../golang-sdk/sourcecode/protocol/index.html | 29 +-
.../golang-sdk/sourcecode/registry/index.html | 29 +-
.../tutorial/debugging/grpc_cli/index.html | 29 +-
.../golang-sdk/tutorial/debugging/index.html | 27 +-
.../golang-sdk/tutorial/debugging/index.xml | 58 +-
.../tutorial/deployment/docker/index.html | 27 +-
.../tutorial/deployment/docker/index.xml | 2 +-
.../golang-sdk/tutorial/deployment/index.html | 27 +-
.../golang-sdk/tutorial/deployment/index.xml | 2 +-
.../tutorial/deployment/kubernetes/index.html | 27 +-
.../tutorial/deployment/kubernetes/index.xml | 2 +-
.../tutorial/deployment/practice/index.html | 27 +-
.../tutorial/deployment/practice/index.xml | 2 +-
.../config-center/config-center-dynamic/index.html | 29 +-
.../tutorial/develop/config-center/desc/index.html | 27 +-
.../tutorial/develop/config-center/index.html | 27 +-
.../tutorial/develop/config-center/index.xml | 154 +-
.../develop/config-center/remote_config/index.html | 27 +-
.../develop/features/config_api/index.html | 29 +-
.../tutorial/develop/features/context/index.html | 27 +-
.../develop/features/custom-logger/index.html | 29 +-
.../tutorial/develop/features/generic-2/index.html | 29 +-
.../tutorial/develop/features/generic/index.html | 29 +-
.../tutorial/develop/features/index.html | 27 +-
.../golang-sdk/tutorial/develop/features/index.xml | 305 +-
en/docs3-v2/golang-sdk/tutorial/develop/index.html | 27 +-
en/docs3-v2/golang-sdk/tutorial/develop/index.xml | 102 +-
.../develop/interflow/call_grpc/index.html | 27 +-
.../develop/interflow/call_java/index.html | 29 +-
.../tutorial/develop/interflow/index.html | 27 +-
.../tutorial/develop/interflow/index.xml | 713 +-
.../develop/protocol/choose_protocol/index.html | 19 +-
.../tutorial/develop/protocol/error/index.html | 29 +-
.../develop/protocol/exception_response/index.html | 29 +-
.../tutorial/develop/protocol/index.html | 27 +-
.../golang-sdk/tutorial/develop/protocol/index.xml | 374 +-
.../tutorial/develop/registry/desc/index.html | 27 +-
.../tutorial/develop/registry/index.html | 27 +-
.../golang-sdk/tutorial/develop/registry/index.xml | 440 +-
.../develop/registry/multi_registry/index.html | 29 +-
.../tutorial/develop/registry/nacos-2/index.html | 29 +-
.../tutorial/develop/registry/nacos/index.html | 29 +-
.../tutorial/develop/registry/polaris/index.html | 27 +-
.../tutorial/develop/registry/registry/index.html | 29 +-
.../develop/registry/service-discovery/index.html | 29 +-
.../tutorial/develop/registry/zookeeper/index.html | 27 +-
.../tutorial/develop/template/index.html | 29 +-
.../tutorial/governance/features/aop/index.html | 29 +-
.../governance/features/custom-filter/index.html | 29 +-
.../tutorial/governance/features/index.html | 27 +-
.../tutorial/governance/features/index.xml | 179 +-
.../governance/features/timeout/index.html | 27 +-
.../tutorial/governance/health/index.html | 27 +-
.../tutorial/governance/health/index.xml | 111 +-
.../governance/health/kubernetes/index.html | 27 +-
.../governance/health/start-check/index.html | 27 +-
.../health/triple-health-check/index.html | 29 +-
.../golang-sdk/tutorial/governance/index.html | 27 +-
.../golang-sdk/tutorial/governance/index.xml | 2 +-
.../governance/limit/adaptive-service/index.html | 17 +-
.../tutorial/governance/limit/index.html | 27 +-
.../golang-sdk/tutorial/governance/limit/index.xml | 91 +-
.../governance/limit/internally/index.html | 27 +-
.../tutorial/governance/limit/internally/index.xml | 2 +-
.../tutorial/governance/limit/polaris/index.html | 27 +-
.../tutorial/governance/limit/polaris/index.xml | 2 +-
.../tutorial/governance/limit/sentinel/index.html | 27 +-
.../tutorial/governance/limit/sentinel/index.xml | 2 +-
.../governance/limit/tps_limiter/index.html | 29 +-
.../tutorial/governance/monitor/grafana/index.html | 27 +-
.../tutorial/governance/monitor/grafana/index.xml | 2 +-
.../tutorial/governance/monitor/http/index.html | 27 +-
.../tutorial/governance/monitor/http/index.xml | 2 +-
.../tutorial/governance/monitor/index.html | 27 +-
.../tutorial/governance/monitor/index.xml | 213 +-
.../tutorial/governance/monitor/logger/index.html | 27 +-
.../tutorial/governance/monitor/logger/index.xml | 2 +-
.../tutorial/governance/monitor/metrics/index.html | 29 +-
.../governance/monitor/promethus/index.html | 27 +-
.../governance/monitor/promethus/index.xml | 2 +-
.../governance/monitor/rpc_metrics/index.html | 29 +-
.../governance/service-mesh/deploy/index.html | 29 +-
.../tutorial/governance/service-mesh/index.html | 27 +-
.../tutorial/governance/service-mesh/index.xml | 755 +-
.../governance/service-mesh/istio/index.html | 27 +-
.../service-mesh/pixiu/http_triple/index.html | 29 +-
.../governance/service-mesh/pixiu/index.html | 27 +-
.../governance/service-mesh/pixiu/index.xml | 88 +-
.../pixiu/pixiu-nacos-triple/index.html | 29 +-
.../service-mesh/proxyless_service_mesh/index.html | 29 +-
.../service-mesh/traffic_management/index.html | 29 +-
.../tutorial/governance/tracing/index.html | 27 +-
.../tutorial/governance/tracing/index.xml | 2 +-
.../tutorial/governance/tracing/jaeger/index.html | 27 +-
.../tutorial/governance/tracing/jaeger/index.xml | 2 +-
.../governance/tracing/opentelmentry/index.html | 27 +-
.../governance/tracing/opentelmentry/index.xml | 2 +-
.../governance/tracing/skywalking/index.html | 27 +-
.../governance/tracing/skywalking/index.xml | 2 +-
.../traffic/graceful_shutdown/index.html | 27 +-
.../tutorial/governance/traffic/index.html | 27 +-
.../tutorial/governance/traffic/index.xml | 118 +-
.../governance/traffic/mesh_router/index.html | 29 +-
en/docs3-v2/golang-sdk/tutorial/index.html | 27 +-
en/docs3-v2/golang-sdk/tutorial/index.xml | 2 +-
en/docs3-v2/index.html | 27 +-
en/docs3-v2/index.xml | 191 +-
.../advanced-features-and-usage/index.html | 27 +-
.../java-sdk/advanced-features-and-usage/index.xml | 36 +-
.../observability/doc/index.html | 27 +-
.../observability/health-information/index.html | 27 +-
.../observability/index.html | 27 +-
.../observability/index.xml | 613 +-
.../observability/kubernetes-probes/index.html | 27 +-
.../observability/logging/index.html | 27 +-
.../observability/meter/index.html | 27 +-
.../observability/tracing/index.html | 29 +-
.../others/docker/index.html | 27 +-
.../others/dubbo-kubernetes-probe/index.html | 27 +-
.../others/graceful-shutdown/index.html | 27 +-
.../advanced-features-and-usage/others/index.html | 27 +-
.../advanced-features-and-usage/others/index.xml | 478 +-
.../others/logger-howto/index.html | 27 +-
.../others/logger-management/index.html | 29 +-
.../others/service-container/index.html | 27 +-
.../others/set-host/index.html | 27 +-
.../performance/concurrency-control/index.html | 27 +-
.../performance/config-connections/index.html | 27 +-
.../performance/dump/index.html | 27 +-
.../performance/index.html | 27 +-
.../performance/index.xml | 1171 +-
.../performance/lazy-connect/index.html | 27 +-
.../performance/loadbalance/index.html | 27 +-
.../performance/profiler/index.html | 29 +-
.../performance/reference-config-cache/index.html | 27 +-
.../performance/result-cache/index.html | 27 +-
.../performance/router-snapshot/index.html | 29 +-
.../performance/serialization/index.html | 27 +-
.../performance/simplify-registry-data/index.html | 27 +-
.../performance/stickiness/index.html | 27 +-
.../performance/support-graalvm/index.html | 29 +-
.../threading-model/consumer/index.html | 27 +-
.../performance/threading-model/index.html | 27 +-
.../performance/threading-model/index.xml | 156 +-
.../threading-model/provider/index.html | 27 +-
.../security/auth/index.html | 27 +-
.../security/class-check/index.html | 27 +-
.../security/index.html | 27 +-
.../advanced-features-and-usage/security/index.xml | 211 +-
.../security/tls/index.html | 27 +-
.../security/token-authorization/index.html | 27 +-
.../service/accesslog/index.html | 27 +-
.../service/async-call/index.html | 27 +-
.../service/async-execute-on-provider/index.html | 27 +-
.../service/attachment/index.html | 27 +-
.../service/callback-parameter/index.html | 27 +-
.../service/consistent-hash/index.html | 27 +-
.../service/context/index.html | 27 +-
.../service/delay-publish/index.html | 27 +-
.../service/distributed-transaction/index.html | 27 +-
.../service/echo-service/index.html | 27 +-
.../service/events-notify/index.html | 27 +-
.../service/explicit-target/index.html | 27 +-
.../service/fault-tolerent-strategy/index.html | 27 +-
.../service/generic-reference/index.html | 27 +-
.../service/generic-service/index.html | 27 +-
.../service/group-merger/index.html | 29 +-
.../advanced-features-and-usage/service/index.html | 27 +-
.../advanced-features-and-usage/service/index.xml | 2686 +--
.../service/isolation-executor/index.html | 27 +-
.../service/local-call/index.html | 27 +-
.../service/local-mock/index.html | 27 +-
.../service/local-stub/index.html | 27 +-
.../service/multi-protocols/index.html | 27 +-
.../service/multi-registry/index.html | 29 +-
.../service/multi-versions/index.html | 27 +-
.../service/parameter-validation/index.html | 29 +-
.../service/port-unification/index.html | 27 +-
.../service/preflight-check/index.html | 27 +-
.../service/reactive/index.html | 27 +-
.../service/registry-only/index.html | 27 +-
.../service/service-downgrade/index.html | 27 +-
.../service/service-group/index.html | 27 +-
.../service/specify-ip/index.html | 27 +-
.../service/streaming/index.html | 27 +-
.../service/subscribe-only/index.html | 27 +-
.../service/transaction/index.html | 27 +-
.../traffic/config-rule/index.html | 27 +-
.../advanced-features-and-usage/traffic/index.html | 29 +-
.../advanced-features-and-usage/traffic/index.xml | 592 +-
.../mesh-style/ab-testing-deployment/index.html | 27 +-
.../mesh-style/blue-green-deployment/index.html | 27 +-
.../mesh-style/canary-deployment/index.html | 29 +-
.../mesh-style/demo-rule-deployment/index.html | 27 +-
.../traffic/mesh-style/destination-rule/index.html | 27 +-
.../mesh-style/dynamic-rule-deployment/index.html | 27 +-
.../traffic/mesh-style/index.html | 27 +-
.../traffic/mesh-style/index.xml | 1526 +-
.../traffic/mesh-style/virtualservice/index.html | 27 +-
.../mesh-style/weight-rule-deployment/index.html | 27 +-
.../traffic/routing-rule/index.html | 27 +-
.../code-architecture/index.html | 29 +-
.../java-sdk/concepts-and-architecture/index.html | 27 +-
.../java-sdk/concepts-and-architecture/index.xml | 412 +-
.../concepts-and-architecture/mesh/index.html | 27 +-
.../overall-architecture/index.html | 27 +-
.../service-discovery/index.html | 29 +-
.../service-invocation/index.html | 27 +-
.../concepts-and-architecture/triple/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/1/index.html | 33 +-
en/docs3-v2/java-sdk/faq/0/10/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/11/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/12/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/13/index.html | 33 +-
en/docs3-v2/java-sdk/faq/0/14/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/15/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/16/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/17/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/18/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/19/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/2/index.html | 33 +-
en/docs3-v2/java-sdk/faq/0/20/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/21/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/22/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/23/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/24/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/25/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/26/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/27/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/4/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/5/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/6/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/8/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/9/index.html | 29 +-
en/docs3-v2/java-sdk/faq/0/index.html | 27 +-
en/docs3-v2/java-sdk/faq/0/index.xml | 281 +-
en/docs3-v2/java-sdk/faq/1/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/10/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/11/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/12/index.html | 35 +-
en/docs3-v2/java-sdk/faq/1/13/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/14/index.html | 33 +-
en/docs3-v2/java-sdk/faq/1/15/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/16/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/17/index.html | 33 +-
en/docs3-v2/java-sdk/faq/1/18/index.html | 33 +-
en/docs3-v2/java-sdk/faq/1/19/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/20/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/21/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/22/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/23/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/24/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/25/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/26/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/27/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/28/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/29/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/3/index.html | 33 +-
en/docs3-v2/java-sdk/faq/1/30/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/31/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/32/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/33/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/34/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/35/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/36/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/37/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/38/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/39/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/4/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/40/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/41/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/42/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/5/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/6/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/8/index.html | 29 +-
en/docs3-v2/java-sdk/faq/1/9/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/index.html | 27 +-
en/docs3-v2/java-sdk/faq/1/index.xml | 396 +-
en/docs3-v2/java-sdk/faq/2/1/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/10/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/11/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/12/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/13/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/14/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/15/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/16/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/17/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/18/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/19/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/2/index.html | 29 +-
en/docs3-v2/java-sdk/faq/2/20/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/3/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/4/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/5/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/6/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/8/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/9/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/index.html | 27 +-
en/docs3-v2/java-sdk/faq/2/index.xml | 197 +-
en/docs3-v2/java-sdk/faq/3/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/3/2/index.html | 27 +-
en/docs3-v2/java-sdk/faq/3/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/3/4/index.html | 27 +-
en/docs3-v2/java-sdk/faq/3/5/index.html | 27 +-
en/docs3-v2/java-sdk/faq/3/6/index.html | 27 +-
en/docs3-v2/java-sdk/faq/3/7/index.html | 29 +-
en/docs3-v2/java-sdk/faq/3/8/index.html | 29 +-
en/docs3-v2/java-sdk/faq/3/index.html | 27 +-
en/docs3-v2/java-sdk/faq/3/index.xml | 99 +-
en/docs3-v2/java-sdk/faq/4/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/10/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/11/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/12/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/13/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/14/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/15/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/16/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/17/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/18/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/19/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/2/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/20/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/21/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/4/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/5/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/6/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/8/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/9/index.html | 29 +-
en/docs3-v2/java-sdk/faq/4/index.html | 27 +-
en/docs3-v2/java-sdk/faq/4/index.xml | 160 +-
en/docs3-v2/java-sdk/faq/5/1/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/10/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/11/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/12/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/13/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/14/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/15/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/16/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/17/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/18/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/19/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/2/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/20/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/21/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/22/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/23/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/24/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/25/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/26/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/27/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/28/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/29/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/30/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/31/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/32/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/33/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/34/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/35/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/36/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/37/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/38/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/39/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/4/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/40/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/41/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/42/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/43/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/5/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/6/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/8/index.html | 29 +-
en/docs3-v2/java-sdk/faq/5/9/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/index.html | 27 +-
en/docs3-v2/java-sdk/faq/5/index.xml | 349 +-
en/docs3-v2/java-sdk/faq/6/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/10/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/11/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/12/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/13/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/14/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/15/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/16/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/2/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/4/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/5/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/6/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/7/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/8/index.html | 29 +-
en/docs3-v2/java-sdk/faq/6/9/index.html | 27 +-
en/docs3-v2/java-sdk/faq/6/index.html | 27 +-
en/docs3-v2/java-sdk/faq/6/index.xml | 132 +-
en/docs3-v2/java-sdk/faq/7/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/7/2/index.html | 29 +-
en/docs3-v2/java-sdk/faq/7/3/index.html | 29 +-
en/docs3-v2/java-sdk/faq/7/4/index.html | 29 +-
en/docs3-v2/java-sdk/faq/7/5/index.html | 27 +-
en/docs3-v2/java-sdk/faq/7/6/index.html | 27 +-
en/docs3-v2/java-sdk/faq/7/7/index.html | 29 +-
en/docs3-v2/java-sdk/faq/7/index.html | 27 +-
en/docs3-v2/java-sdk/faq/7/index.xml | 53 +-
en/docs3-v2/java-sdk/faq/99/0/index.html | 29 +-
en/docs3-v2/java-sdk/faq/99/1/index.html | 29 +-
en/docs3-v2/java-sdk/faq/99/index.html | 27 +-
en/docs3-v2/java-sdk/faq/99/index.xml | 26 +-
en/docs3-v2/java-sdk/faq/index.html | 27 +-
en/docs3-v2/java-sdk/faq/index.xml | 24 +-
en/docs3-v2/java-sdk/faq/intro/index.html | 29 +-
en/docs3-v2/java-sdk/index.html | 27 +-
en/docs3-v2/java-sdk/index.xml | 3 +-
en/docs3-v2/java-sdk/quick-start/api/index.html | 27 +-
en/docs3-v2/java-sdk/quick-start/brief/index.html | 27 +-
en/docs3-v2/java-sdk/quick-start/idl/index.html | 27 +-
en/docs3-v2/java-sdk/quick-start/index.html | 27 +-
en/docs3-v2/java-sdk/quick-start/index.xml | 1329 +-
.../java-sdk/quick-start/spring-boot/index.html | 27 +-
.../java-sdk/quick-start/spring-xml/index.html | 27 +-
.../config-center/apollo/index.html | 27 +-
.../reference-manual/config-center/index.html | 29 +-
.../reference-manual/config-center/index.xml | 214 +-
.../config-center/nacos/index.html | 27 +-
.../config-center/zookeeper/index.html | 27 +-
.../reference-manual/config/annotation/index.html | 27 +-
.../reference-manual/config/api/index.html | 27 +-
.../java-sdk/reference-manual/config/index.html | 27 +-
.../java-sdk/reference-manual/config/index.xml | 4320 +----
.../reference-manual/config/overview/index.html | 27 +-
.../reference-manual/config/principle/index.html | 27 +-
.../reference-manual/config/properties/index.html | 27 +-
.../reference-manual/config/xml/index.html | 27 +-
.../java-sdk/reference-manual/graalvm/index.html | 29 +-
.../java-sdk/reference-manual/graalvm/index.xml | 2 +-
en/docs3-v2/java-sdk/reference-manual/index.html | 27 +-
en/docs3-v2/java-sdk/reference-manual/index.xml | 191 +-
.../java-sdk/reference-manual/mesh/index.html | 27 +-
.../java-sdk/reference-manual/mesh/index.xml | 92 +-
.../java-sdk/reference-manual/mesh/mesh/index.html | 27 +-
.../reference-manual/metadata-center/index.html | 27 +-
.../reference-manual/metadata-center/index.xml | 357 +-
.../metadata-center/nacos/index.html | 27 +-
.../metadata-center/overview/index.html | 29 +-
.../metadata-center/redis/index.html | 27 +-
.../metadata-center/zookeeper/index.html | 27 +-
.../performance/benchmarking/index.html | 29 +-
.../reference-manual/performance/index.html | 27 +-
.../reference-manual/performance/index.xml | 69 +-
.../performance/rpc-benchmarking/index.html | 27 +-
.../reference-manual/protocol/dubbo/index.html | 29 +-
.../reference-manual/protocol/grpc/index.html | 29 +-
.../reference-manual/protocol/hessian/index.html | 29 +-
.../reference-manual/protocol/http/index.html | 45 +-
.../java-sdk/reference-manual/protocol/index.html | 27 +-
.../java-sdk/reference-manual/protocol/index.xml | 1113 +-
.../reference-manual/protocol/memcached/index.html | 29 +-
.../reference-manual/protocol/overview/index.html | 29 +-
.../reference-manual/protocol/redis/index.html | 29 +-
.../reference-manual/protocol/rest/index.html | 45 +-
.../reference-manual/protocol/rmi/index.html | 29 +-
.../reference-manual/protocol/thrift/index.html | 29 +-
.../reference-manual/protocol/tripe-3.3/index.html | 662 +
.../protocol/tripe-rest-manual/index.html | 843 +
.../protocol/triple/guide/index.html | 29 +-
.../protocol/triple/idl/index.html | 29 +-
.../reference-manual/protocol/triple/index.html | 27 +-
.../reference-manual/protocol/triple/index.xml | 865 +-
.../protocol/triple/migration/index.html | 29 +-
.../protocol/triple/overview/index.html | 29 +-
.../protocol/triple/pojo/index.html | 29 +-
.../protocol/triple/streaming/index.html | 29 +-
.../protocol/webservice/index.html | 29 +-
.../reference-manual/qos/command/index.html | 27 +-
.../java-sdk/reference-manual/qos/index.html | 27 +-
.../java-sdk/reference-manual/qos/index.xml | 550 +-
.../qos/logger-management/index.html | 27 +-
.../reference-manual/qos/overview/index.html | 27 +-
.../java-sdk/reference-manual/qos/probe/index.html | 27 +-
.../reference-manual/qos/profiler/index.html | 27 +-
.../qos/router-snapshot/index.html | 27 +-
.../reference-manual/qos/security/index.html | 27 +-
.../qos/service-management/index.html | 27 +-
.../java-sdk/reference-manual/registry/index.html | 27 +-
.../java-sdk/reference-manual/registry/index.xml | 640 +-
.../reference-manual/registry/multicast/index.html | 27 +-
.../reference-manual/registry/multicast/index.xml | 2 +-
.../registry/multiple-registry/index.html | 27 +-
.../registry/multiple-registry/index.xml | 2 +-
.../reference-manual/registry/nacos/index.html | 27 +-
.../reference-manual/registry/nacos/index.xml | 2 +-
.../reference-manual/registry/overview/index.html | 27 +-
.../reference-manual/registry/overview/index.xml | 2 +-
.../reference-manual/registry/redis/index.html | 27 +-
.../reference-manual/registry/redis/index.xml | 2 +-
.../reference-manual/registry/simple/index.html | 27 +-
.../reference-manual/registry/zookeeper/index.html | 27 +-
.../reference-manual/registry/zookeeper/index.xml | 2 +-
.../spi/description/cache/index.html | 29 +-
.../spi/description/cluster/index.html | 29 +-
.../spi/description/compiler/index.html | 29 +-
.../spi/description/config-center/index.html | 29 +-
.../spi/description/container/index.html | 29 +-
.../spi/description/dispatcher/index.html | 29 +-
.../spi/description/dubbo-spi/index.html | 27 +-
.../spi/description/exchanger/index.html | 29 +-
.../spi/description/exporter-listener/index.html | 29 +-
.../spi/description/extension-factory/index.html | 29 +-
.../spi/description/filter/index.html | 29 +-
.../reference-manual/spi/description/index.html | 27 +-
.../reference-manual/spi/description/index.xml | 2453 +--
.../spi/description/invoker-listener/index.html | 29 +-
.../spi/description/liveness/index.html | 29 +-
.../spi/description/load-balance/index.html | 29 +-
.../spi/description/logger-adapter/index.html | 29 +-
.../spi/description/merger/index.html | 29 +-
.../spi/description/metadata-report/index.html | 29 +-
.../spi/description/monitor/index.html | 29 +-
.../spi/description/networker/index.html | 29 +-
.../spi/description/page/index.html | 29 +-
.../spi/description/protocol/index.html | 29 +-
.../spi/description/proxy-factory/index.html | 29 +-
.../spi/description/qos-permission/index.html | 29 +-
.../spi/description/readiness/index.html | 29 +-
.../spi/description/registry/index.html | 29 +-
.../spi/description/remoting/index.html | 29 +-
.../spi/description/router/index.html | 29 +-
.../spi/description/serialize/index.html | 29 +-
.../spi/description/startup/index.html | 29 +-
.../spi/description/status-checker/index.html | 29 +-
.../spi/description/telnet-handler/index.html | 29 +-
.../spi/description/threadpool/index.html | 29 +-
.../spi/description/validation/index.html | 29 +-
.../java-sdk/reference-manual/spi/index.html | 27 +-
.../java-sdk/reference-manual/spi/index.xml | 68 +-
.../reference-manual/spi/overview/index.html | 27 +-
.../2.x-to-3.x-compatibility-guide/index.html | 27 +-
.../3.0-to-3.1-compatibility-guide/index.html | 27 +-
.../3.1-to-3.2-compatibility-guide/index.html | 27 +-
.../java-sdk/upgrades-and-compatibility/index.html | 27 +-
.../java-sdk/upgrades-and-compatibility/index.xml | 739 +-
.../migration-triple/index.html | 27 +-
.../protobufinterface/index.html | 27 +-
.../serialization-upgrade/index.html | 27 +-
.../service-discovery/index.html | 27 +-
.../service-discovery/index.xml | 281 +-
.../migration-service-discovery/index.html | 27 +-
.../service-discovery-rule/index.html | 27 +-
.../service-discovery-samples/index.html | 27 +-
en/docs3-v2/rust-sdk/index.html | 27 +-
en/docs3-v2/rust-sdk/index.xml | 472 +-
.../rust-sdk/java-interoperability/index.html | 27 +-
en/docs3-v2/rust-sdk/protocol/index.html | 27 +-
en/docs3-v2/rust-sdk/quick-start/index.html | 27 +-
en/download/index.html | 23 +-
en/download/index.xml | 5 +-
en/download/spi-extensions/index.html | 23 +-
en/featured-background.jpg | Bin 83079 -> 331001 bytes
...d8a_331001_1440x640_fill_q75_catmullrom_top.jpg | Bin 0 -> 20390 bytes
...1d8a_331001_500x500_fill_q75_catmullrom_top.jpg | Bin 0 -> 5525 bytes
en/index.html | 38 +-
en/index.xml | 8578 ++--------
en/latest/admin/index.html | 17 +-
en/latest/admin/index.xml | 2 +-
en/latest/community/index.html | 21 +-
en/latest/community/index.xml | 2 +-
.../committer/apache-dubbo-page_dev/index.html | 25 +-
.../contribution-guidelines/committer/index.html | 23 +-
.../contribution-guidelines/committer/index.xml | 507 +-
.../committer/label-an-issue-guide_dev/index.html | 25 +-
.../committer/new-committer-guide_dev/index.html | 25 +-
.../committer/release-guide_dev/index.html | 25 +-
.../committer/website-guide_dev/index.html | 23 +-
.../contributor/become-a-committer_dev/index.html | 25 +-
.../contributor/cla-signing-guide_dev/index.html | 25 +-
.../dubbo-extension-guide_dev/index.html | 25 +-
.../contribution-guidelines/contributor/index.html | 23 +-
.../contribution-guidelines/contributor/index.xml | 400 +-
.../mailing-list-subscription-guide_dev/index.html | 25 +-
.../new-contributor-guide_dev/index.html | 25 +-
.../reporting-security-issues_dev/index.html | 25 +-
.../software-donation-guide_dev/index.html | 25 +-
.../contributor/test-coverage-guide_dev/index.html | 23 +-
en/latest/contribution-guidelines/index.html | 23 +-
en/latest/contribution-guidelines/index.xml | 2 +-
en/latest/download/index.html | 23 +-
en/latest/download/index.xml | 2 +-
en/latest/facade-docs/contact/index.html | 23 +-
en/latest/facade-docs/contact/index.xml | 2 +-
en/latest/facade-docs/how/index.html | 23 +-
en/latest/facade-docs/how/index.xml | 31 +-
en/latest/facade-docs/how/quick-start/index.html | 25 +-
en/latest/facade-docs/index.html | 23 +-
en/latest/facade-docs/index.xml | 2 +-
.../facade-docs/what/core-concepts/index.html | 23 +-
en/latest/facade-docs/what/ecosystem/index.html | 23 +-
en/latest/facade-docs/what/index.html | 23 +-
en/latest/facade-docs/what/index.xml | 2 +-
en/latest/facade-docs/what/overview/index.html | 23 +-
en/latest/facade-docs/why/advantage/index.html | 23 +-
en/latest/facade-docs/why/index.html | 23 +-
en/latest/facade-docs/why/index.xml | 2 +-
en/latest/golang-sdk/index.html | 17 +-
en/latest/golang-sdk/index.xml | 2 +-
en/latest/index.html | 17 +-
en/latest/index.xml | 2 +-
en/latest/java-sdk/index.html | 17 +-
en/latest/java-sdk/index.xml | 2 +-
.../v2.x/advanced-features-and-usage/index.html | 17 +-
.../v2.x/advanced-features-and-usage/index.xml | 2 +-
.../v2.x/concepts-and-architecture/index.html | 17 +-
.../v2.x/concepts-and-architecture/index.xml | 2 +-
.../concepts-and-architecture/users/index.html | 17 +-
en/latest/java-sdk/v2.x/contributing/index.html | 17 +-
en/latest/java-sdk/v2.x/contributing/index.xml | 2 +-
en/latest/java-sdk/v2.x/index.html | 17 +-
en/latest/java-sdk/v2.x/index.xml | 2 +-
en/latest/java-sdk/v2.x/introduction/index.html | 17 +-
en/latest/java-sdk/v2.x/introduction/index.xml | 2 +-
.../java-sdk/v2.x/introduction/users/index.html | 17 +-
en/latest/java-sdk/v2.x/quick-start/index.html | 17 +-
en/latest/java-sdk/v2.x/quick-start/index.xml | 3 +-
.../v2.x/quick-start/quick-start/index.html | 17 +-
.../java-sdk/v2.x/reference-manual/index.html | 17 +-
en/latest/java-sdk/v2.x/reference-manual/index.xml | 2 +-
.../v2.x/upgrades-and-compatibility/index.html | 17 +-
.../v2.x/upgrades-and-compatibility/index.xml | 2 +-
.../v3.x/advanced-features-and-usage/index.html | 17 +-
.../v3.x/advanced-features-and-usage/index.xml | 2 +-
.../v3.x/concepts-and-architecture/index.html | 17 +-
.../v3.x/concepts-and-architecture/index.xml | 2 +-
.../concepts-and-architecture/users/index.html | 17 +-
en/latest/java-sdk/v3.x/contributing/index.html | 17 +-
en/latest/java-sdk/v3.x/contributing/index.xml | 2 +-
en/latest/java-sdk/v3.x/index.html | 17 +-
en/latest/java-sdk/v3.x/index.xml | 2 +-
en/latest/java-sdk/v3.x/introduction/index.html | 17 +-
en/latest/java-sdk/v3.x/introduction/index.xml | 2 +-
.../java-sdk/v3.x/introduction/users/index.html | 17 +-
en/latest/java-sdk/v3.x/quick-start/index.html | 17 +-
en/latest/java-sdk/v3.x/quick-start/index.xml | 2 +-
.../java-sdk/v3.x/reference-manual/index.html | 17 +-
en/latest/java-sdk/v3.x/reference-manual/index.xml | 2 +-
.../v3.x/upgrades-and-compatibility/index.html | 17 +-
.../v3.x/upgrades-and-compatibility/index.xml | 2 +-
en/latest/notices/index.html | 23 +-
en/latest/notices/index.xml | 58 +-
en/latest/notices/security/index.html | 23 +-
en/latest/pixiu/index.html | 17 +-
en/latest/pixiu/index.xml | 2 +-
en/overview/core-features/ecosystem/index.html | 25 +-
en/overview/core-features/extensibility/index.html | 25 +-
en/overview/core-features/index.html | 25 +-
en/overview/core-features/index.xml | 740 +-
en/overview/core-features/load-balance/index.html | 25 +-
en/overview/core-features/more/index.html | 25 +-
en/overview/core-features/observability/index.html | 27 +-
en/overview/core-features/protocols/index.html | 25 +-
en/overview/core-features/security/index.html | 27 +-
.../core-features/service-definition/index.html | 27 +-
.../core-features/service-discovery/index.html | 27 +-
en/overview/core-features/service-mesh/index.html | 25 +-
.../traffic/condition-rule/index.html | 27 +-
.../traffic/configuration-rule/index.html | 25 +-
en/overview/core-features/traffic/index.html | 25 +-
en/overview/core-features/traffic/index.xml | 106 +-
.../core-features/traffic/mesh-rule/index.html | 23 +-
.../core-features/traffic/script-rule/index.html | 25 +-
.../core-features/traffic/tag-rule/index.html | 25 +-
en/overview/demo/index.html | 17 +
en/overview/demo/index.xml | 1 +
en/overview/index.html | 25 +-
en/overview/index.xml | 2 +-
en/overview/mannual/index.html | 25 +-
en/overview/mannual/index.xml | 2 +-
en/overview/notices/admin/index.html | 23 +-
en/overview/notices/index.html | 23 +-
en/overview/notices/index.xml | 182 +-
en/overview/notices/log4j/index.html | 23 +-
en/overview/notices/protocol/index.html | 23 +-
en/overview/notices/registry/index.html | 23 +-
en/overview/notices/serialization/index.html | 23 +-
en/overview/quickstart/go/index.html | 23 +-
en/overview/quickstart/index.html | 27 +-
en/overview/quickstart/index.xml | 2 +-
en/overview/quickstart/rust/index.html | 23 +-
en/overview/tasks/ecosystem/index.html | 25 +-
en/overview/tasks/ecosystem/index.xml | 273 +-
en/overview/tasks/ecosystem/rate-limit/index.html | 23 +-
en/overview/tasks/ecosystem/transaction/index.html | 25 +-
en/overview/tasks/extensibility/filter/index.html | 25 +-
en/overview/tasks/extensibility/index.html | 25 +-
en/overview/tasks/extensibility/index.xml | 367 +-
.../tasks/extensibility/protocol/index.html | 25 +-
.../tasks/extensibility/registry/index.html | 25 +-
en/overview/tasks/extensibility/router/index.html | 25 +-
en/overview/tasks/index.html | 25 +-
en/overview/tasks/index.xml | 363 +-
.../tasks/kubernetes/deploy-on-k8s/index.html | 23 +-
en/overview/tasks/kubernetes/index.html | 23 +-
en/overview/tasks/kubernetes/index.xml | 244 +-
en/overview/tasks/mesh/dubbo-mesh/index.html | 23 +-
en/overview/tasks/mesh/index.html | 25 +-
en/overview/tasks/mesh/index.xml | 390 +-
en/overview/tasks/mesh/proxyless/index.html | 25 +-
en/overview/tasks/migration/2to3/index.html | 23 +-
en/overview/tasks/migration/index.html | 23 +-
en/overview/tasks/migration/index.xml | 119 +-
.../tasks/migration/migration-triple/index.html | 23 +-
.../migration/service-discovery-samples/index.html | 23 +-
en/overview/tasks/traffic-management/index.html | 25 +-
en/overview/tasks/traffic-management/index.xml | 450 +-
.../tasks/traffic-management/isolation/index.html | 25 +-
.../tasks/traffic-management/timeout/index.html | 25 +-
.../traffic-condition/index.html | 23 +-
.../traffic-management/traffic-gray/index.html | 23 +-
.../traffic-management/traffic-routing/index.html | 23 +-
.../tasks/traffic-management/weight/index.html | 25 +-
.../tasks/traffic-management/zone/index.html | 23 +-
en/overview/tasks/triple/idl/index.html | 23 +-
en/overview/tasks/triple/index.html | 23 +-
en/overview/tasks/triple/index.xml | 635 +-
en/overview/tasks/triple/streaming/index.html | 25 +-
en/overview/tasks/triple/wrap/index.html | 25 +-
en/overview/what/architecture/index.html | 25 +-
en/overview/what/dubbo3/index.html | 25 +-
en/overview/what/ecosystem/index.html | 25 +-
en/overview/what/extensibility/index.html | 25 +-
en/overview/what/index.html | 25 +-
en/overview/what/index.xml | 429 +-
en/overview/what/overview/index.html | 23 +-
en/sitemap.xml | 2 +-
en/tags/ecosystem/index.html | 17 +-
en/tags/ecosystem/index.xml | 93 +-
en/tags/index.html | 17 +-
en/tags/index.xml | 2 +-
en/tags/news/index.html | 17 +-
en/tags/news/index.xml | 33 +-
en/tags/opentelemetry/index.html | 17 +-
en/tags/opentelemetry/index.xml | 93 +-
en/tags/tracing/index.html | 17 +-
en/tags/tracing/index.xml | 93 +-
.../0e6b75c3-3340-4bed-a566-88c46a03ada6.png | Bin 0 -> 70351 bytes
.../53a6f3c7-20ad-49f6-abc0-4e2d80a9597d.png | Bin 0 -> 638971 bytes
.../5f8ebef5-08f3-463a-bb86-14b32a09ebb2.png | Bin 0 -> 750937 bytes
.../68b69954-9df2-48b2-bd63-fe07ba8cb25b.png | Bin 0 -> 878159 bytes
.../78d6744b-928a-41d4-857c-ff91ad69c896.png | Bin 0 -> 1109403 bytes
.../7e4f3ced-9932-472f-bb8f-272ec97a7fbe.png | Bin 0 -> 898694 bytes
.../c7d4f983-f619-4d39-94b6-5d62fd5a430e.png | Bin 0 -> 675717 bytes
.../ee5812e0-a90b-4a02-abab-b658cdddefc1.png | Bin 0 -> 438261 bytes
imgs/demo/img.png | Bin 0 -> 201433 bytes
imgs/demo/online-boutique-arch.png | Bin 0 -> 201433 bytes
imgs/docs3-v2/java-sdk/seata/flow.png | Bin 0 -> 62564 bytes
imgs/golang/architecture/arc.png | Bin 0 -> 2068065 bytes
imgs/golang/architecture/filter.png | Bin 0 -> 1317083 bytes
imgs/golang/architecture/language.png | Bin 0 -> 1357725 bytes
imgs/golang/architecture/protocol.png | Bin 0 -> 360649 bytes
imgs/golang/architecture/streaming.png | Bin 0 -> 110886 bytes
imgs/golang/metrics/dashboard.png | Bin 0 -> 250099 bytes
imgs/golang/metrics/datasource.png | Bin 0 -> 97773 bytes
imgs/golang/metrics/import-datasource.png | Bin 0 -> 91148 bytes
imgs/golang/metrics/import-json.png | Bin 0 -> 104299 bytes
imgs/golang/metrics/import.png | Bin 0 -> 65239 bytes
imgs/golang/metrics/podmonitor.png | Bin 0 -> 85451 bytes
imgs/v3/manual/java/migration/dubbo-to-triple.png | Bin 0 -> 145511 bytes
imgs/v3/manual/java/multi-instance/arch.png | Bin 0 -> 193476 bytes
imgs/v3/manual/java/protocol/http3-arch.jpg | Bin 0 -> 136852 bytes
imgs/v3/manual/java/protocol/http3-qps.jpg | Bin 0 -> 92227 bytes
imgs/v3/manual/java/protocol/http3-rt.jpg | Bin 0 -> 80611 bytes
imgs/v3/manual/java/protocol/rest-arg.jpg | Bin 0 -> 57283 bytes
.../tutorial/kubernetes/kubernetes-service.png | Bin 0 -> 352920 bytes
.../manual/java/tutorial/kubernetes/kubernetes.png | Bin 0 -> 368691 bytes
imgs/v3/quickstart/samples.jpg | Bin 0 -> 133568 bytes
imgs/v3/quickstart/start.jpg | Bin 0 -> 486805 bytes
imgs/v3/tasks/framework/cluster-filter.png | Bin 0 -> 188681 bytes
imgs/v3/tasks/framework/filter.png | Bin 0 -> 107064 bytes
imgs/v3/tasks/framework/timeout-deadline.png | Bin 0 -> 534309 bytes
imgs/v3/tasks/framework/timeout.png | Bin 0 -> 548684 bytes
imgs/v3/tasks/gateway/apisix-nacos-dubbo.png | Bin 0 -> 898494 bytes
imgs/v3/tasks/gateway/arch-centralized-bff.png | Bin 0 -> 926820 bytes
imgs/v3/tasks/gateway/arch-decentralized-dubbo.png | Bin 0 -> 723982 bytes
imgs/v3/tasks/gateway/dubbo-gateway.png | Bin 0 -> 371913 bytes
imgs/v3/tasks/gateway/dubbo-rest.png | Bin 0 -> 933454 bytes
imgs/v3/tasks/gateway/http-to-dubbo.png | Bin 0 -> 859261 bytes
imgs/v3/tasks/gateway/http-to-triple.png | Bin 0 -> 872627 bytes
imgs/v3/tasks/gateway/nacos.png | Bin 0 -> 2216 bytes
imgs/v3/tasks/gateway/triple-gateway.png | Bin 0 -> 460958 bytes
imgs/v3/tasks/gateway/triple-higress.png | Bin 0 -> 801237 bytes
.../protocol/multiple-protocols-on-same-port.png | Bin 0 -> 663037 bytes
imgs/v3/tasks/protocol/multiple-protocols.png | Bin 0 -> 762412 bytes
imgs/v3/tasks/protocol/triple-grpc.png | Bin 0 -> 1998879 bytes
imgs/v3/tasks/registry/formula.png | Bin 0 -> 32889 bytes
imgs/v3/tasks/registry/zookeeper-hierarchy.png | Bin 0 -> 369144 bytes
imgs/v3/tasks/registry/zookeeper-mapping.png | Bin 0 -> 228418 bytes
imgs/v3/tasks/registry/zookeeper-metadata.png | Bin 0 -> 608221 bytes
imgs/v3/tasks/sentinel/dashboard-1.png | Bin 0 -> 225866 bytes
imgs/v3/tasks/sentinel/dashboard-2.png | Bin 0 -> 735258 bytes
imgs/v3/tasks/sentinel/dashboard-3.png | Bin 0 -> 2031102 bytes
imgs/v3/tasks/sentinel/dashboard-4.png | Bin 0 -> 293534 bytes
imgs/v3/tasks/sentinel/dashboard-5.png | Bin 0 -> 234367 bytes
...4d4917e8143cd76ebd5107d560151e0032c52c3b1d16.js | 1 +
js/script.js | 3 +-
js/tabpane-persist.js | 129 +-
release/downloadDubbo.sh | 100 +
release/downloadDubboCtl.sh | 100 +
...45f85430b8e5ba3a44795042eb92b436eb5a2892db2.css | 9 +
sitemap.xml | 2 +-
webfonts/fa-brands-400.ttf | Bin 186112 -> 209128 bytes
webfonts/fa-brands-400.woff2 | Bin 107460 -> 117860 bytes
webfonts/fa-regular-400.ttf | Bin 62048 -> 67860 bytes
webfonts/fa-regular-400.woff2 | Bin 25084 -> 25392 bytes
webfonts/fa-solid-900.ttf | Bin 397728 -> 420332 bytes
webfonts/fa-solid-900.woff2 | Bin 150468 -> 156404 bytes
webfonts/fa-v4compatibility.ttf | Bin 10136 -> 10832 bytes
webfonts/fa-v4compatibility.woff2 | Bin 4584 -> 4792 bytes
zh-cn/404.html | 18 +-
zh-cn/blog/-web/index.html | 236 +
zh-cn/blog/-web/index.xml | 5 +
zh-cn/blog/-web/page/1/index.html | 2 +
.../index.html" | 62 +-
zh-cn/blog/1/01/01/dubbo-go-1.5.1/index.html | 64 +-
.../1/01/01/dubbo-go-hessian2-v1.7.0/index.html | 64 +-
.../index.html" | 274 +
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 60 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 60 +-
zh-cn/blog/2018/08/07/dubbo-101/index.html | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 60 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../01/07/\346\265\205\350\260\210-rpc/index.html" | 64 +-
.../index.html" | 64 +-
.../26/\351\201\207\350\247\201dubbo/index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
zh-cn/blog/2019/08/26/service-test/index.html | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../2-grpc-\345\222\214-protobuf/index.html" | 72 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
zh-cn/blog/2021/01/12/dubbo-go-1.4.0/index.html | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
zh-cn/blog/2021/01/14/dubbo-go-1.5.0/index.html | 62 +-
.../2021/01/14/dubbo-go-hessian2-v1.6.0/index.html | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../26/rest-\345\215\217\350\256\256/index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 66 +-
.../index.html" | 62 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 66 +-
.../index.html" | 64 +-
.../index.html" | 66 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../04/28/\345\274\225\350\250\200/index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 64 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 60 +-
.../index.html" | 62 +-
.../index.html" | 60 +-
.../index.html" | 60 +-
.../index.html" | 64 +-
.../index.html" | 329 +
.../index.html" | 235 +
.../index.html" | 241 +
.../index.html" | 64 +-
.../index.html" | 426 +
.../index.html" | 295 +
.../index.html" | 380 +
.../index.html" | 337 +
.../index.html" | 301 +
.../index.html" | 302 +
.../index.html" | 263 +
zh-cn/blog/golang/index.html | 78 +-
zh-cn/blog/golang/index.xml | 5148 +-----
zh-cn/blog/golang/page/2/index.html | 80 +-
zh-cn/blog/golang/page/3/index.html | 70 +-
zh-cn/blog/index.html | 93 +-
zh-cn/blog/index.xml | 5793 +------
zh-cn/blog/integration/index.html | 79 +-
zh-cn/blog/integration/index.xml | 3877 +----
zh-cn/blog/integration/page/2/index.html | 76 +-
zh-cn/blog/java/codeanalysis/3.0.8/index.html | 78 +-
zh-cn/blog/java/codeanalysis/3.0.8/index.xml | 9622 +----------
.../blog/java/codeanalysis/3.0.8/page/2/index.html | 80 +-
.../blog/java/codeanalysis/3.0.8/page/3/index.html | 64 +-
zh-cn/blog/java/codeanalysis/index.html | 73 +-
zh-cn/blog/java/codeanalysis/index.xml | 941 +-
zh-cn/blog/java/codeanalysis/metrics/index.html | 70 +-
zh-cn/blog/java/codeanalysis/metrics/index.xml | 913 +-
zh-cn/blog/java/demos/index.html | 80 +-
zh-cn/blog/java/demos/index.xml | 10719 +-----------
zh-cn/blog/java/demos/page/2/index.html | 78 +-
zh-cn/blog/java/demos/page/3/index.html | 82 +-
zh-cn/blog/java/demos/page/4/index.html | 82 +-
zh-cn/blog/java/demos/page/5/index.html | 77 +-
zh-cn/blog/java/index.html | 60 +-
zh-cn/blog/java/index.xml | 2 +-
zh-cn/blog/java/proposals/index.html | 241 +
zh-cn/blog/java/proposals/index.xml | 21 +
zh-cn/blog/java/proposals/page/1/index.html | 2 +
zh-cn/blog/news/index.html | 82 +-
zh-cn/blog/news/index.xml | 4228 +----
zh-cn/blog/news/page/2/index.html | 79 +-
zh-cn/blog/news/page/3/index.html | 74 +-
zh-cn/blog/news/page/4/index.html | 79 +-
zh-cn/blog/news/page/5/index.html | 74 +-
zh-cn/blog/nodejs/index.html | 236 +
zh-cn/blog/nodejs/index.xml | 4 +
zh-cn/blog/nodejs/page/1/index.html | 2 +
zh-cn/blog/page/10/index.html | 93 +-
zh-cn/blog/page/11/index.html | 94 +-
zh-cn/blog/page/12/index.html | 88 +-
zh-cn/blog/page/13/index.html | 81 +-
zh-cn/blog/page/14/index.html | 86 +-
zh-cn/blog/page/15/index.html | 92 +-
zh-cn/blog/page/16/index.html | 92 +-
zh-cn/blog/page/17/index.html | 91 +-
zh-cn/blog/page/18/index.html | 90 +-
zh-cn/blog/page/19/index.html | 88 +-
zh-cn/blog/page/2/index.html | 92 +-
zh-cn/blog/page/20/index.html | 254 +
zh-cn/blog/page/3/index.html | 91 +-
zh-cn/blog/page/4/index.html | 90 +-
zh-cn/blog/page/5/index.html | 87 +-
zh-cn/blog/page/6/index.html | 85 +-
zh-cn/blog/page/7/index.html | 85 +-
zh-cn/blog/page/8/index.html | 91 +-
zh-cn/blog/page/9/index.html | 92 +-
zh-cn/blog/pixiu/index.html | 64 +-
zh-cn/blog/pixiu/index.xml | 338 +-
zh-cn/blog/proposals/index.html | 66 +-
zh-cn/blog/proposals/index.xml | 1037 +-
zh-cn/blog/rust/index.html | 62 +-
zh-cn/blog/rust/index.xml | 202 +-
zh-cn/blog/users/index.html | 76 +-
zh-cn/blog/users/index.xml | 905 +-
zh-cn/contact/books/index.html | 42 +-
zh-cn/contact/books/index.xml | 2 +-
.../committer/apache-dubbo-page_dev/index.html | 24 +-
.../committer/cla-signing-guide_dev/index.html | 24 +-
zh-cn/contact/committer/index.html | 24 +-
zh-cn/contact/committer/index.xml | 175 +-
.../committer/label-an-issue-guide_dev/index.html | 24 +-
.../committer/new-committer-guide_dev/index.html | 24 +-
.../committer/release-guide/common/index.html | 24 +-
zh-cn/contact/committer/release-guide/index.html | 24 +-
zh-cn/contact/committer/release-guide/index.xml | 468 +-
.../committer/release-guide/java-sdk/index.html | 24 +-
.../contact/committer/website-guide_dev/index.html | 24 +-
.../contributor/become-a-committer_dev/index.html | 24 +-
.../dubbo-extension-guide_dev/index.html | 24 +-
zh-cn/contact/contributor/index.html | 24 +-
zh-cn/contact/contributor/index.xml | 380 +-
.../mailing-list-subscription-guide_dev/index.html | 24 +-
.../new-contributor-guide_dev/index.html | 24 +-
.../reporting-security-issues_dev/index.html | 24 +-
.../software-donation-guide_dev/index.html | 24 +-
.../contributor/test-coverage-guide_dev/index.html | 24 +-
zh-cn/contact/index.html | 26 +-
zh-cn/contact/index.xml | 2 +-
zh-cn/demo/index.html | 21 +
zh-cn/demo/index.xml | 1 +
zh-cn/docs/advanced/accesslog/index.html | 24 +-
zh-cn/docs/advanced/async-call/index.html | 24 +-
.../advanced/async-execute-on-provider/index.html | 24 +-
zh-cn/docs/advanced/attachment/index.html | 24 +-
zh-cn/docs/advanced/auth/index.html | 24 +-
zh-cn/docs/advanced/callback-parameter/index.html | 24 +-
zh-cn/docs/advanced/concurrency-control/index.html | 24 +-
zh-cn/docs/advanced/config-connections/index.html | 24 +-
.../advanced/config-rule-deprecated/index.html | 24 +-
zh-cn/docs/advanced/config-rule/index.html | 24 +-
zh-cn/docs/advanced/consumer-threadpool/index.html | 24 +-
zh-cn/docs/advanced/context/index.html | 24 +-
zh-cn/docs/advanced/delay-publish/index.html | 24 +-
.../advanced/distributed-transaction/index.html | 24 +-
zh-cn/docs/advanced/dump/index.html | 24 +-
zh-cn/docs/advanced/echo-service/index.html | 24 +-
zh-cn/docs/advanced/events-notify/index.html | 24 +-
zh-cn/docs/advanced/explicit-target/index.html | 24 +-
.../advanced/fault-tolerent-strategy/index.html | 24 +-
zh-cn/docs/advanced/generic-reference/index.html | 24 +-
zh-cn/docs/advanced/generic-service/index.html | 24 +-
zh-cn/docs/advanced/graceful-shutdown/index.html | 24 +-
zh-cn/docs/advanced/group-merger/index.html | 24 +-
zh-cn/docs/advanced/hostname-binding/index.html | 24 +-
zh-cn/docs/advanced/index.html | 24 +-
zh-cn/docs/advanced/index.xml | 3138 +---
zh-cn/docs/advanced/lazy-connect/index.html | 24 +-
zh-cn/docs/advanced/loadbalance/index.html | 24 +-
zh-cn/docs/advanced/local-call/index.html | 24 +-
zh-cn/docs/advanced/local-mock/index.html | 24 +-
zh-cn/docs/advanced/local-stub/index.html | 24 +-
zh-cn/docs/advanced/logger-strategy/index.html | 24 +-
zh-cn/docs/advanced/migration-invoker/index.html | 24 +-
zh-cn/docs/advanced/multi-protocols/index.html | 24 +-
zh-cn/docs/advanced/multi-registry/index.html | 24 +-
zh-cn/docs/advanced/multi-versions/index.html | 24 +-
zh-cn/docs/advanced/netty4/index.html | 24 +-
.../docs/advanced/parameter-validation/index.html | 24 +-
.../docs/advanced/pb-generic-reference/index.html | 24 +-
zh-cn/docs/advanced/preflight-check/index.html | 24 +-
zh-cn/docs/advanced/protobuf-idl/index.html | 24 +-
zh-cn/docs/advanced/protobufinterface/index.html | 24 +-
.../advanced/reference-config-cache/index.html | 24 +-
zh-cn/docs/advanced/registry-only/index.html | 24 +-
zh-cn/docs/advanced/result-cache/index.html | 24 +-
.../advanced/routing-rule-deprecated/index.html | 24 +-
zh-cn/docs/advanced/routing-rule/index.html | 24 +-
.../advanced/serialization-security/index.html | 24 +-
zh-cn/docs/advanced/serialization/index.html | 24 +-
zh-cn/docs/advanced/service-container/index.html | 24 +-
zh-cn/docs/advanced/service-downgrade/index.html | 24 +-
zh-cn/docs/advanced/service-group/index.html | 24 +-
zh-cn/docs/advanced/set-host/index.html | 24 +-
.../advanced/simplify-registry-data/index.html | 24 +-
zh-cn/docs/advanced/static-service/index.html | 24 +-
zh-cn/docs/advanced/stickiness/index.html | 24 +-
zh-cn/docs/advanced/subscribe-only/index.html | 24 +-
zh-cn/docs/advanced/thread-model/index.html | 24 +-
zh-cn/docs/advanced/tls/index.html | 24 +-
zh-cn/docs/advanced/token-authorization/index.html | 24 +-
zh-cn/docs/concepts/configuration/index.html | 24 +-
zh-cn/docs/concepts/extensibility/index.html | 24 +-
zh-cn/docs/concepts/index.html | 24 +-
zh-cn/docs/concepts/index.xml | 504 +-
.../registry-configcenter-metadata/index.html | 24 +-
zh-cn/docs/concepts/rpc-protocol/index.html | 24 +-
zh-cn/docs/concepts/service-discovery/index.html | 24 +-
zh-cn/docs/concepts/traffic-management/index.html | 24 +-
.../examples/configuration-override/index.html | 24 +-
zh-cn/docs/examples/index.html | 24 +-
zh-cn/docs/examples/index.xml | 147 +-
.../routing/ab-testing-deployment/index.html | 24 +-
.../routing/blue-green-deployment/index.html | 24 +-
.../examples/routing/canary-deployment/index.html | 24 +-
.../routing/demo-rule-deployment/index.html | 24 +-
.../routing/dynamic-rule-deployment/index.html | 24 +-
zh-cn/docs/examples/routing/index.html | 24 +-
zh-cn/docs/examples/routing/index.xml | 448 +-
.../routing/weight-rule-deployment/index.html | 24 +-
zh-cn/docs/examples/service-discovery/index.html | 24 +-
zh-cn/docs/index.html | 26 +-
zh-cn/docs/index.xml | 6560 +-------
zh-cn/docs/introduction/index.html | 24 +-
zh-cn/docs/languages/erlang/index.html | 24 +-
zh-cn/docs/languages/erlang/index.xml | 144 +-
zh-cn/docs/languages/erlang/quick-start/index.html | 24 +-
zh-cn/docs/languages/erlang/reference/index.html | 24 +-
.../docs/languages/erlang/serialization/index.html | 24 +-
zh-cn/docs/languages/erlang/service/index.html | 24 +-
.../dubbo-go-1.5/configuration/client/index.html | 24 +-
.../dubbo-go-1.5/configuration/provider/index.html | 24 +-
.../docs/languages/golang/dubbo-go-1.5/index.html | 24 +-
zh-cn/docs/languages/golang/dubbo-go-1.5/index.xml | 546 +-
.../golang/dubbo-go-1.5/quick-start/index.html | 24 +-
.../concept/app_and_interface/index.html | 24 +-
.../dubbo-go-3.0/concept/configuration/index.html | 24 +-
.../golang/dubbo-go-3.0/concept/index.html | 24 +-
.../golang/dubbo-go-3.0/concept/index.xml | 564 +-
.../dubbo-go-3.0/concept/protocol/index.html | 24 +-
.../dubbo-go-3.0/concept/registry/index.html | 24 +-
.../dubbo-go-3.0/developer/design/index.html | 24 +-
.../golang/dubbo-go-3.0/developer/index.html | 24 +-
.../golang/dubbo-go-3.0/developer/index.xml | 10 +-
.../docs/languages/golang/dubbo-go-3.0/index.html | 24 +-
zh-cn/docs/languages/golang/dubbo-go-3.0/index.xml | 17 +-
.../dubbo-go-3.0/preface/3.0_feature/index.html | 24 +-
.../dubbo-go-3.0/preface/architecture/index.html | 24 +-
.../golang/dubbo-go-3.0/preface/index.html | 24 +-
.../golang/dubbo-go-3.0/preface/index.xml | 83 +-
.../golang/dubbo-go-3.0/quickstart/index.html | 24 +-
.../golang/dubbo-go-3.0/quickstart/index.xml | 471 +-
.../quickstart/quickstart_dubbo/index.html | 24 +-
.../quickstart/quickstart_triple/index.html | 24 +-
.../samples/config-center-dynamic/index.html | 24 +-
.../dubbo-go-3.0/samples/custom-filter/index.html | 24 +-
.../dubbo-go-3.0/samples/custom-logger/index.html | 24 +-
.../samples/exception_response/index.html | 24 +-
.../golang/dubbo-go-3.0/samples/generic/index.html | 24 +-
.../samples/go_java_interactive/index.html | 24 +-
.../golang/dubbo-go-3.0/samples/index.html | 24 +-
.../golang/dubbo-go-3.0/samples/index.xml | 1801 +--
.../dubbo-go-3.0/samples/mesh_router/index.html | 24 +-
.../golang/dubbo-go-3.0/samples/metrics/index.html | 24 +-
.../dubbo-go-3.0/samples/registry/index.html | 24 +-
.../dubbo-go-3.0/samples/samples_repo/index.html | 24 +-
.../samples/service-discovery/index.html | 24 +-
.../dubbo-go-3.0/samples/start-check/index.html | 24 +-
zh-cn/docs/languages/golang/go-specific/index.html | 24 +-
zh-cn/docs/languages/golang/index.html | 24 +-
zh-cn/docs/languages/golang/index.xml | 199 +-
zh-cn/docs/languages/golang/quick-start/index.html | 26 +-
zh-cn/docs/languages/index.html | 24 +-
zh-cn/docs/languages/index.xml | 11 +-
zh-cn/docs/languages/java/index.html | 24 +-
zh-cn/docs/languages/java/index.xml | 239 +-
zh-cn/docs/languages/java/java-specific/index.html | 26 +-
zh-cn/docs/languages/java/quick-start/index.html | 26 +-
zh-cn/docs/migration/index.html | 24 +-
zh-cn/docs/migration/index.xml | 437 +-
.../migration-and-compatibility-guide/index.html | 24 +-
.../migration/migration-routingrule/index.html | 24 +-
.../migration-service-discovery/index.html | 24 +-
zh-cn/docs/migration/migration-triple/index.html | 24 +-
zh-cn/docs/new-in-dubbo3/index.html | 24 +-
zh-cn/docs/performance/benchmarking/index.html | 26 +-
zh-cn/docs/performance/index.html | 24 +-
zh-cn/docs/performance/index.xml | 146 +-
zh-cn/docs/quick-start/index.html | 24 +-
zh-cn/docs/references/api/index.html | 24 +-
zh-cn/docs/references/config-center/index.html | 24 +-
.../references/configuration/annotation/index.html | 24 +-
zh-cn/docs/references/configuration/api/index.html | 24 +-
.../configuration/environment-variables/index.html | 24 +-
.../configuration/external-config/index.html | 24 +-
zh-cn/docs/references/configuration/index.html | 24 +-
zh-cn/docs/references/configuration/index.xml | 1056 +-
.../references/configuration/overview/index.html | 24 +-
.../references/configuration/properties/index.html | 24 +-
zh-cn/docs/references/configuration/xml/index.html | 24 +-
zh-cn/docs/references/graalvm/index.html | 24 +-
zh-cn/docs/references/graalvm/index.xml | 194 +-
.../references/graalvm/support-graalvm/index.html | 24 +-
zh-cn/docs/references/index.html | 24 +-
zh-cn/docs/references/index.xml | 1135 +-
zh-cn/docs/references/lifecycle/brief/index.html | 24 +-
zh-cn/docs/references/lifecycle/index.html | 24 +-
zh-cn/docs/references/lifecycle/index.xml | 1043 +-
.../docs/references/lifecycle/liveness/index.html | 24 +-
.../docs/references/lifecycle/readiness/index.html | 24 +-
zh-cn/docs/references/lifecycle/rest/index.html | 24 +-
zh-cn/docs/references/lifecycle/startup/index.html | 24 +-
zh-cn/docs/references/maven/index.html | 24 +-
zh-cn/docs/references/metadata/index.html | 24 +-
zh-cn/docs/references/protobuf/idl/index.html | 24 +-
zh-cn/docs/references/protobuf/index.html | 24 +-
zh-cn/docs/references/protobuf/index.xml | 8 +-
zh-cn/docs/references/protocols/dubbo/index.html | 24 +-
zh-cn/docs/references/protocols/grpc/index.html | 24 +-
zh-cn/docs/references/protocols/hessian/index.html | 24 +-
zh-cn/docs/references/protocols/http/index.html | 24 +-
zh-cn/docs/references/protocols/index.html | 26 +-
zh-cn/docs/references/protocols/index.xml | 1659 +-
.../docs/references/protocols/memcached/index.html | 24 +-
zh-cn/docs/references/protocols/redis/index.html | 24 +-
zh-cn/docs/references/protocols/rest/index.html | 24 +-
zh-cn/docs/references/protocols/rmi/index.html | 24 +-
zh-cn/docs/references/protocols/thrift/index.html | 24 +-
zh-cn/docs/references/protocols/tri/index.html | 24 +-
.../references/protocols/webservice/index.html | 24 +-
zh-cn/docs/references/qos/index.html | 24 +-
zh-cn/docs/references/registry/index.html | 24 +-
zh-cn/docs/references/registry/index.xml | 326 +-
.../docs/references/registry/multicast/index.html | 24 +-
zh-cn/docs/references/registry/nacos/index.html | 24 +-
zh-cn/docs/references/registry/redis/index.html | 24 +-
zh-cn/docs/references/registry/simple/index.html | 24 +-
.../docs/references/registry/zookeeper/index.html | 24 +-
.../references/routers/destination-rule/index.html | 24 +-
zh-cn/docs/references/routers/index.html | 24 +-
zh-cn/docs/references/routers/index.xml | 1116 +-
.../references/routers/virtualservice/index.html | 24 +-
zh-cn/docs/references/spis/cache/index.html | 24 +-
zh-cn/docs/references/spis/cluster/index.html | 24 +-
zh-cn/docs/references/spis/compiler/index.html | 24 +-
.../docs/references/spis/config-center/index.html | 24 +-
zh-cn/docs/references/spis/container/index.html | 24 +-
zh-cn/docs/references/spis/dispatcher/index.html | 24 +-
zh-cn/docs/references/spis/dubbo-spi/index.html | 24 +-
zh-cn/docs/references/spis/exchanger/index.html | 24 +-
.../references/spis/exporter-listener/index.html | 24 +-
.../references/spis/extension-factory/index.html | 24 +-
zh-cn/docs/references/spis/filter/index.html | 24 +-
zh-cn/docs/references/spis/index.html | 24 +-
zh-cn/docs/references/spis/index.xml | 2361 +--
.../references/spis/invoker-listener/index.html | 24 +-
zh-cn/docs/references/spis/load-balance/index.html | 24 +-
.../docs/references/spis/logger-adapter/index.html | 24 +-
zh-cn/docs/references/spis/merger/index.html | 24 +-
zh-cn/docs/references/spis/monitor/index.html | 24 +-
zh-cn/docs/references/spis/networker/index.html | 24 +-
zh-cn/docs/references/spis/page/index.html | 24 +-
zh-cn/docs/references/spis/protocol/index.html | 24 +-
.../docs/references/spis/proxy-factory/index.html | 24 +-
zh-cn/docs/references/spis/registry/index.html | 24 +-
zh-cn/docs/references/spis/remoting/index.html | 24 +-
zh-cn/docs/references/spis/router/index.html | 24 +-
zh-cn/docs/references/spis/serialize/index.html | 24 +-
.../docs/references/spis/status-checker/index.html | 24 +-
.../docs/references/spis/telnet-handler/index.html | 24 +-
zh-cn/docs/references/spis/threadpool/index.html | 24 +-
zh-cn/docs/references/spis/validation/index.html | 24 +-
zh-cn/docs/references/telnet/index.html | 24 +-
.../references/xml/dubbo-application/index.html | 24 +-
.../docs/references/xml/dubbo-argument/index.html | 24 +-
.../references/xml/dubbo-config-center/index.html | 24 +-
.../docs/references/xml/dubbo-consumer/index.html | 24 +-
zh-cn/docs/references/xml/dubbo-method/index.html | 24 +-
zh-cn/docs/references/xml/dubbo-module/index.html | 24 +-
zh-cn/docs/references/xml/dubbo-monitor/index.html | 24 +-
.../docs/references/xml/dubbo-parameter/index.html | 24 +-
.../docs/references/xml/dubbo-protocol/index.html | 24 +-
.../docs/references/xml/dubbo-provider/index.html | 24 +-
.../docs/references/xml/dubbo-reference/index.html | 24 +-
.../docs/references/xml/dubbo-registry/index.html | 24 +-
zh-cn/docs/references/xml/dubbo-service/index.html | 24 +-
zh-cn/docs/references/xml/index.html | 24 +-
zh-cn/docs/references/xml/index.xml | 2421 +--
.../dubbo-go-pixiu/dev/dubbo-pilot/index.html | 4 +-
.../dubbo-go-pixiu/dev/filter-extension/index.html | 4 +-
zh-cn/docs3-v2/dubbo-go-pixiu/dev/trie/index.html | 4 +-
zh-cn/docs3-v2/dubbo-go-pixiu/index.html | 4 +-
.../dubbo-go-pixiu/overview/faq/index.html | 4 +-
zh-cn/docs3-v2/dubbo-go-pixiu/overview/index.html | 4 +-
.../dubbo-go-pixiu/overview/terminology/index.html | 4 +-
.../overview/what-is-pixiu/index.html | 4 +-
.../dubbo-go-pixiu/user/adapter/dubbo/index.html | 4 +-
.../dubbo-go-pixiu/user/adapter/index.html | 4 +-
.../user/adapter/springcloud/index.html | 4 +-
.../http-to-dubbo-default-stragety/index.html | 4 +-
.../dubbo-go-pixiu/user/appendix/index.html | 4 +-
.../dubbo-go-pixiu/user/configurations/index.html | 4 +-
.../dubbo-go-pixiu/user/deployment/index.html | 4 +-
.../user/httpfilter/dubbo/index.html | 4 +-
.../user/httpfilter/hystrix/index.html | 4 +-
.../dubbo-go-pixiu/user/httpfilter/index.html | 4 +-
.../user/httpfilter/ratelimit/index.html | 4 +-
zh-cn/docs3-v2/dubbo-go-pixiu/user/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/http/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/http2/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/tcp/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/triple/index.html | 4 +-
.../user/networkfilter/dubbo/index.html | 4 +-
.../user/networkfilter/grpc/index.html | 4 +-
.../user/networkfilter/http/index.html | 4 +-
.../dubbo-go-pixiu/user/networkfilter/index.html | 4 +-
.../dubbo-go-pixiu/user/quality/index.html | 4 +-
.../user/quality/performance/index.html | 4 +-
.../user/quality/stability/index.html | 4 +-
.../dubbo-go-pixiu/user/quickstart/index.html | 4 +-
.../user/samples/http_proxy/index.html | 4 +-
.../user/samples/http_to_dubbo/index.html | 4 +-
.../dubbo-go-pixiu/user/samples/https/index.html | 4 +-
.../dubbo-go-pixiu/user/samples/index.html | 4 +-
zh-cn/docs3-v2/erlang-sdk/index.html | 4 +-
zh-cn/docs3-v2/erlang-sdk/quick-start/index.html | 4 +-
zh-cn/docs3-v2/erlang-sdk/reference/index.html | 4 +-
zh-cn/docs3-v2/erlang-sdk/serialization/index.html | 4 +-
zh-cn/docs3-v2/erlang-sdk/service/index.html | 4 +-
.../golang-sdk/preface/3.0_feature/index.html | 4 +-
.../golang-sdk/preface/concept/generic/index.html | 4 +-
.../preface/design/aop_and_extension/index.html | 4 +-
.../preface/design/app_and_interface/index.html | 4 +-
.../preface/design/architecture/index.html | 4 +-
zh-cn/docs3-v2/golang-sdk/preface/index.html | 4 +-
.../golang-sdk/refer/compatible_version/index.html | 4 +-
zh-cn/docs3-v2/golang-sdk/sourcecode/index.html | 4 +-
.../golang-sdk/sourcecode/protocol/index.html | 4 +-
.../golang-sdk/sourcecode/registry/index.html | 4 +-
.../golang-sdk/tutorial/debugging/index.html | 4 +-
.../develop/config-center/remote_config/index.html | 4 +-
.../tutorial/develop/features/generic-2/index.html | 4 +-
.../tutorial/develop/features/generic/index.html | 4 +-
.../develop/interflow/call_grpc/index.html | 4 +-
.../develop/interflow/call_java/index.html | 4 +-
.../develop/registry/multi_registry/index.html | 4 +-
.../tutorial/develop/registry/nacos-2/index.html | 4 +-
.../tutorial/develop/registry/nacos/index.html | 4 +-
.../tutorial/develop/registry/zookeeper/index.html | 4 +-
.../governance/health/start-check/index.html | 4 +-
.../governance/monitor/rpc_metrics/index.html | 4 +-
.../governance/service-mesh/deploy/index.html | 4 +-
.../tutorial/governance/service-mesh/index.html | 4 +-
.../governance/service-mesh/istio/index.html | 4 +-
.../service-mesh/pixiu/http_triple/index.html | 4 +-
.../pixiu/pixiu-nacos-triple/index.html | 4 +-
.../service-mesh/proxyless_service_mesh/index.html | 4 +-
.../service-mesh/traffic_management/index.html | 4 +-
.../traffic/graceful_shutdown/index.html | 4 +-
.../governance/traffic/mesh_router/index.html | 4 +-
.../observability/index.html | 4 +-
.../observability/logging/index.html | 4 +-
.../observability/meter/index.html | 4 +-
.../observability/tracing/index.html | 4 +-
.../advanced-features-and-usage/others/index.html | 4 +-
.../performance/concurrency-control/index.html | 4 +-
.../performance/config-connections/index.html | 4 +-
.../performance/loadbalance/index.html | 4 +-
.../performance/profiler/index.html | 4 +-
.../performance/reference-config-cache/index.html | 4 +-
.../performance/result-cache/index.html | 4 +-
.../performance/router-snapshot/index.html | 4 +-
.../performance/serialization/index.html | 4 +-
.../performance/support-graalvm/index.html | 4 +-
.../threading-model/consumer/index.html | 4 +-
.../security/auth/index.html | 4 +-
.../security/class-check/index.html | 4 +-
.../security/tls/index.html | 4 +-
.../security/token-authorization/index.html | 4 +-
.../service/attachment/index.html | 4 +-
.../service/callback-parameter/index.html | 4 +-
.../service/distributed-transaction/index.html | 4 +-
.../service/echo-service/index.html | 4 +-
.../service/events-notify/index.html | 4 +-
.../service/explicit-target/index.html | 4 +-
.../service/local-call/index.html | 4 +-
.../service/local-mock/index.html | 4 +-
.../service/local-stub/index.html | 4 +-
.../service/multi-protocols/index.html | 4 +-
.../service/parameter-validation/index.html | 4 +-
.../service/reactive/index.html | 4 +-
.../service/service-downgrade/index.html | 4 +-
.../service/specify-ip/index.html | 4 +-
.../v3.2_rest_protocol_design/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/17/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/18/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/19/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/20/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/21/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/22/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/23/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/24/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/25/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/26/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/27/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/28/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/29/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/99/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/0/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/17/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/18/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/19/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/20/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/21/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/22/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/26/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/27/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/28/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/29/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/30/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/31/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/32/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/33/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/34/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/35/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/36/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/37/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/38/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/39/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/40/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/41/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/42/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/17/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/18/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/19/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/20/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/17/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/18/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/19/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/20/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/21/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/17/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/18/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/20/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/21/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/22/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/23/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/24/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/25/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/26/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/27/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/28/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/29/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/30/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/31/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/32/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/33/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/34/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/35/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/36/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/37/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/38/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/39/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/40/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/41/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/42/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/43/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/10/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/11/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/12/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/13/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/14/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/15/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/16/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/8/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/9/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/5/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/6/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/7/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/81/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/81/2/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/81/3/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/81/4/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/81/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/99/0/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/99/1/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/99/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/faq/intro/index.html | 4 +-
.../reference-manual/config/annotation/index.html | 4 +-
.../reference-manual/config/api/index.html | 4 +-
.../java-sdk/reference-manual/config/index.html | 4 +-
.../reference-manual/config/overview/index.html | 4 +-
.../reference-manual/config/xml/index.html | 4 +-
.../metadata-center/redis/index.html | 4 +-
.../reference-manual/protocol/hessian/index.html | 4 +-
.../java-sdk/reference-manual/protocol/index.html | 4 +-
.../reference-manual/protocol/rmi/index.html | 4 +-
.../protocol/triple/3.3/index.html | 2 +
.../protocol/triple/migration/index.html | 4 +-
.../protocol/triple/overview/index.html | 4 +-
.../protocol/triple/pojo/index.html | 4 +-
.../protocol/triple/rest/manual/index.html | 2 +
.../protocol/triple/streaming/index.html | 4 +-
.../protocol/webservice/index.html | 4 +-
.../reference-manual/qos/command/index.html | 4 +-
.../qos/logger-management/index.html | 4 +-
.../java-sdk/reference-manual/qos/probe/index.html | 4 +-
.../reference-manual/qos/profiler/index.html | 4 +-
.../qos/router-snapshot/index.html | 4 +-
.../reference-manual/qos/security/index.html | 4 +-
.../qos/service-management/index.html | 4 +-
.../reference-manual/registry/multicast/index.html | 4 +-
.../reference-manual/registry/redis/index.html | 4 +-
.../spi/description/dubbo-spi/index.html | 4 +-
.../2.x-to-3.x-compatibility-guide/index.html | 4 +-
.../3.0-to-3.1-compatibility-guide/index.html | 4 +-
.../3.1-to-3.2-compatibility-guide/index.html | 4 +-
.../3.2-to-3.3-compatibility-guide/index.html | 4 +-
.../java-sdk/upgrades-and-compatibility/index.html | 4 +-
.../migration-triple/index.html | 4 +-
.../serialization-upgrade/index.html | 4 +-
.../service-discovery-rule/index.html | 4 +-
.../service-discovery-samples/index.html | 4 +-
zh-cn/docs3-v2/java-sdk/version/index.html | 4 +-
zh-cn/docs3-v2/rust-sdk/quick-start/index.html | 4 +-
zh-cn/docsv2.7/admin/index.html | 24 +-
zh-cn/docsv2.7/admin/index.xml | 16 +-
.../admin/install/admin-console/index.html | 24 +-
.../admin/install/consumer-demo/index.html | 24 +-
zh-cn/docsv2.7/admin/install/index.html | 24 +-
zh-cn/docsv2.7/admin/install/index.xml | 175 +-
.../admin/install/monitor-center/index.html | 24 +-
.../admin/install/provider-demo/index.html | 24 +-
zh-cn/docsv2.7/admin/install/redis/index.html | 24 +-
zh-cn/docsv2.7/admin/install/zookeeper/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/apidocs/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/functions/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/governance/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/index.xml | 739 +-
zh-cn/docsv2.7/admin/ops/introduction/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/pinpoint/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/search/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/skywalking/index.html | 24 +-
zh-cn/docsv2.7/admin/ops/test/index.html | 24 +-
zh-cn/docsv2.7/dev/build/index.html | 24 +-
zh-cn/docsv2.7/dev/checklist/index.html | 24 +-
zh-cn/docsv2.7/dev/code-smell/index.html | 24 +-
zh-cn/docsv2.7/dev/coding/index.html | 24 +-
zh-cn/docsv2.7/dev/contract/index.html | 24 +-
zh-cn/docsv2.7/dev/design/index.html | 24 +-
zh-cn/docsv2.7/dev/implementation/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/cache/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/cluster/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/compiler/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/config-center/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/container/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/dispatcher/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/exchanger/index.html | 24 +-
.../dev/impls/exporter-listener/index.html | 24 +-
.../dev/impls/extension-factory/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/filter/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/index.xml | 1681 +-
.../docsv2.7/dev/impls/invoker-listener/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/load-balance/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/logger-adapter/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/merger/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/monitor/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/networker/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/page/index.html | 22 +-
zh-cn/docsv2.7/dev/impls/protocol/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/proxy-factory/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/registry/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/remoting/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/router/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/serialize/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/status-checker/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/telnet-handler/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/threadpool/index.html | 24 +-
zh-cn/docsv2.7/dev/impls/validation/index.html | 24 +-
zh-cn/docsv2.7/dev/index.html | 24 +-
zh-cn/docsv2.7/dev/index.xml | 771 +-
.../docsv2.7/dev/principals/code-detail/index.html | 24 +-
.../dev/principals/configuration/index.html | 24 +-
zh-cn/docsv2.7/dev/principals/dummy/index.html | 24 +-
.../dev/principals/expansibility/index.html | 24 +-
zh-cn/docsv2.7/dev/principals/extension/index.html | 24 +-
.../dev/principals/general-knowledge/index.html | 24 +-
zh-cn/docsv2.7/dev/principals/index.html | 24 +-
zh-cn/docsv2.7/dev/principals/index.xml | 466 +-
.../dev/principals/introduction/index.html | 18 +-
.../docsv2.7/dev/principals/robustness/index.html | 24 +-
zh-cn/docsv2.7/dev/release/index.html | 24 +-
.../dev/source/adaptive-extension/index.html | 24 +-
zh-cn/docsv2.7/dev/source/cluster/index.html | 24 +-
zh-cn/docsv2.7/dev/source/directory/index.html | 24 +-
zh-cn/docsv2.7/dev/source/dubbo-spi/index.html | 24 +-
.../docsv2.7/dev/source/export-service/index.html | 24 +-
zh-cn/docsv2.7/dev/source/index.html | 24 +-
zh-cn/docsv2.7/dev/source/index.xml | 7104 +-------
zh-cn/docsv2.7/dev/source/loadbalance/index.html | 24 +-
zh-cn/docsv2.7/dev/source/refer-service/index.html | 24 +-
zh-cn/docsv2.7/dev/source/router/index.html | 24 +-
.../dev/source/service-invoking-process/index.html | 24 +-
zh-cn/docsv2.7/dev/spi/index.html | 24 +-
zh-cn/docsv2.7/dev/tck/index.html | 24 +-
zh-cn/docsv2.7/index.html | 24 +-
zh-cn/docsv2.7/index.xml | 180 +-
zh-cn/docsv2.7/user/benchmark-tool/index.html | 24 +-
zh-cn/docsv2.7/user/best-practice/index.html | 24 +-
zh-cn/docsv2.7/user/capacity-plan/index.html | 24 +-
.../user/configuration/annotation/index.html | 24 +-
zh-cn/docsv2.7/user/configuration/api/index.html | 24 +-
.../user/configuration/config-center/index.html | 24 +-
.../configuration-load-process/index.html | 24 +-
.../configuration/environment-variables/index.html | 24 +-
zh-cn/docsv2.7/user/configuration/index.html | 24 +-
zh-cn/docsv2.7/user/configuration/index.xml | 599 +-
.../user/configuration/properties/index.html | 24 +-
zh-cn/docsv2.7/user/configuration/xml/index.html | 24 +-
zh-cn/docsv2.7/user/coveragence/index.html | 24 +-
zh-cn/docsv2.7/user/dependencies/index.html | 24 +-
zh-cn/docsv2.7/user/examples/accesslog/index.html | 24 +-
zh-cn/docsv2.7/user/examples/async-call/index.html | 24 +-
.../examples/async-execute-on-provider/index.html | 24 +-
zh-cn/docsv2.7/user/examples/attachment/index.html | 24 +-
zh-cn/docsv2.7/user/examples/auth/index.html | 22 +-
.../examples/broadcast-resp-collect/index.html | 24 +-
.../user/examples/callback-parameter/index.html | 24 +-
.../user/examples/concurrency-control/index.html | 24 +-
.../user/examples/config-connections/index.html | 24 +-
.../examples/config-rule-deprecated/index.html | 24 +-
.../docsv2.7/user/examples/config-rule/index.html | 24 +-
.../user/examples/consumer-threadpool/index.html | 24 +-
zh-cn/docsv2.7/user/examples/context/index.html | 24 +-
.../user/examples/delay-publish/index.html | 24 +-
.../examples/distributed-transaction/index.html | 24 +-
zh-cn/docsv2.7/user/examples/dump/index.html | 24 +-
.../docsv2.7/user/examples/echo-service/index.html | 24 +-
.../user/examples/events-notify/index.html | 24 +-
.../user/examples/explicit-target/index.html | 24 +-
.../examples/fault-tolerent-strategy/index.html | 24 +-
.../examples/generic-invoke-with-json/index.html | 24 +-
.../user/examples/generic-reference/index.html | 24 +-
.../user/examples/generic-service/index.html | 24 +-
.../user/examples/graceful-shutdown/index.html | 24 +-
.../docsv2.7/user/examples/group-merger/index.html | 24 +-
.../user/examples/hostname-binding/index.html | 24 +-
zh-cn/docsv2.7/user/examples/index.html | 24 +-
zh-cn/docsv2.7/user/examples/index.xml | 2911 +---
.../examples/invoke-with-specified-ip/index.html | 24 +-
.../docsv2.7/user/examples/lazy-connect/index.html | 24 +-
.../docsv2.7/user/examples/loadbalance/index.html | 24 +-
zh-cn/docsv2.7/user/examples/local-call/index.html | 24 +-
zh-cn/docsv2.7/user/examples/local-mock/index.html | 24 +-
zh-cn/docsv2.7/user/examples/local-stub/index.html | 24 +-
.../user/examples/logger-strategy/index.html | 24 +-
.../user/examples/msgpack-serialization/index.html | 24 +-
.../user/examples/multi-protocols/index.html | 24 +-
.../user/examples/multi-registry/index.html | 24 +-
.../user/examples/multi-versions/index.html | 24 +-
zh-cn/docsv2.7/user/examples/netty4/index.html | 24 +-
.../user/examples/parameter-validation/index.html | 24 +-
.../user/examples/pb-generic-reference/index.html | 24 +-
.../user/examples/preflight-check/index.html | 24 +-
.../docsv2.7/user/examples/protobuf-idl/index.html | 24 +-
.../examples/provider-timeout-release/index.html | 24 +-
.../examples/reference-config-cache/index.html | 24 +-
.../user/examples/registry-only/index.html | 24 +-
.../docsv2.7/user/examples/result-cache/index.html | 24 +-
.../examples/routing-rule-deprecated/index.html | 24 +-
.../docsv2.7/user/examples/routing-rule/index.html | 24 +-
.../user/examples/serialization/index.html | 24 +-
.../user/examples/service-container/index.html | 24 +-
.../user/examples/service-downgrade/index.html | 24 +-
.../user/examples/service-group/index.html | 24 +-
zh-cn/docsv2.7/user/examples/set-host/index.html | 24 +-
.../examples/simplify-registry-data/index.html | 24 +-
.../user/examples/static-service/index.html | 24 +-
zh-cn/docsv2.7/user/examples/stickiness/index.html | 24 +-
.../user/examples/subscribe-only/index.html | 24 +-
.../docsv2.7/user/examples/thread-model/index.html | 24 +-
zh-cn/docsv2.7/user/examples/tls/index.html | 24 +-
.../user/examples/token-authorization/index.html | 24 +-
.../index.html" | 24 +-
zh-cn/docsv2.7/user/index.html | 24 +-
zh-cn/docsv2.7/user/index.xml | 2707 +---
zh-cn/docsv2.7/user/languages/erlang/index.html | 24 +-
zh-cn/docsv2.7/user/languages/erlang/index.xml | 128 +-
.../user/languages/erlang/quick-start/index.html | 24 +-
.../user/languages/erlang/reference/index.html | 24 +-
.../user/languages/erlang/serialization/index.html | 24 +-
.../user/languages/erlang/service/index.html | 24 +-
zh-cn/docsv2.7/user/languages/index.html | 24 +-
zh-cn/docsv2.7/user/languages/index.xml | 2 +-
zh-cn/docsv2.7/user/maturity/index.html | 24 +-
.../user/new-features-in-a-glance/index.html | 20 +-
zh-cn/docsv2.7/user/perf-test/index.html | 24 +-
.../docsv2.7/user/preface/architecture/index.html | 24 +-
zh-cn/docsv2.7/user/preface/background/index.html | 24 +-
zh-cn/docsv2.7/user/preface/index.html | 24 +-
zh-cn/docsv2.7/user/preface/index.xml | 166 +-
.../docsv2.7/user/preface/requirements/index.html | 24 +-
zh-cn/docsv2.7/user/preface/usage/index.html | 24 +-
zh-cn/docsv2.7/user/quick-start/index.html | 24 +-
zh-cn/docsv2.7/user/recommend/index.html | 24 +-
zh-cn/docsv2.7/user/references/api/index.html | 24 +-
zh-cn/docsv2.7/user/references/index.html | 24 +-
zh-cn/docsv2.7/user/references/index.xml | 667 +-
zh-cn/docsv2.7/user/references/maven/index.html | 24 +-
zh-cn/docsv2.7/user/references/metadata/index.html | 24 +-
.../user/references/protocol/dubbo/index.html | 24 +-
.../user/references/protocol/grpc/index.html | 24 +-
.../user/references/protocol/hessian/index.html | 24 +-
.../user/references/protocol/http/index.html | 24 +-
zh-cn/docsv2.7/user/references/protocol/index.html | 24 +-
zh-cn/docsv2.7/user/references/protocol/index.xml | 947 +-
.../user/references/protocol/memcached/index.html | 24 +-
.../user/references/protocol/redis/index.html | 24 +-
.../user/references/protocol/rest/index.html | 24 +-
.../user/references/protocol/rmi/index.html | 24 +-
.../user/references/protocol/thrift/index.html | 24 +-
.../user/references/protocol/webservice/index.html | 24 +-
zh-cn/docsv2.7/user/references/qos/index.html | 24 +-
zh-cn/docsv2.7/user/references/registry/index.html | 24 +-
zh-cn/docsv2.7/user/references/registry/index.xml | 307 +-
.../user/references/registry/multicast/index.html | 24 +-
.../user/references/registry/nacos/index.html | 24 +-
.../user/references/registry/redis/index.html | 24 +-
.../user/references/registry/simple/index.html | 24 +-
.../user/references/registry/zookeeper/index.html | 24 +-
zh-cn/docsv2.7/user/references/telnet/index.html | 24 +-
.../references/xml/dubbo-application/index.html | 24 +-
.../user/references/xml/dubbo-argument/index.html | 24 +-
.../references/xml/dubbo-config-center/index.html | 24 +-
.../user/references/xml/dubbo-consumer/index.html | 24 +-
.../user/references/xml/dubbo-method/index.html | 24 +-
.../user/references/xml/dubbo-module/index.html | 24 +-
.../user/references/xml/dubbo-monitor/index.html | 24 +-
.../user/references/xml/dubbo-parameter/index.html | 24 +-
.../user/references/xml/dubbo-protocol/index.html | 24 +-
.../user/references/xml/dubbo-provider/index.html | 24 +-
.../user/references/xml/dubbo-reference/index.html | 24 +-
.../user/references/xml/dubbo-registry/index.html | 24 +-
.../user/references/xml/dubbo-service/index.html | 24 +-
zh-cn/docsv2.7/user/references/xml/index.html | 24 +-
zh-cn/docsv2.7/user/references/xml/index.xml | 2349 +--
zh-cn/docsv2.7/user/rest/index.html | 24 +-
zh-cn/docsv2.7/user/serialization/index.html | 24 +-
zh-cn/docsv2.7/user/simple-monitor/index.html | 24 +-
zh-cn/docsv2.7/user/versions/index.html | 24 +-
zh-cn/docsv2.7/user/versions/index.xml | 307 +-
.../docsv2.7/user/versions/version-270/index.html | 24 +-
zh-cn/download/index.html | 24 +-
zh-cn/download/index.xml | 4 +-
zh-cn/download/spi-extensions/index.html | 24 +-
zh-cn/featured-background.jpg | Bin 83079 -> 331001 bytes
...d8a_331001_1440x640_fill_q75_catmullrom_top.jpg | Bin 0 -> 20390 bytes
...1d8a_331001_500x500_fill_q75_catmullrom_top.jpg | Bin 0 -> 5525 bytes
zh-cn/github/index.html | 63 +-
zh-cn/github/index.xml | 2 +-
zh-cn/index.html | 33 +-
zh-cn/index.xml | 11132 ++++++-------
zh-cn/overview/core-features/ecosystem/index.html | 689 +-
.../core-features/extensibility/index.html | 689 +-
zh-cn/overview/core-features/index.html | 689 +-
.../overview/core-features/load-balance/index.html | 692 +-
zh-cn/overview/core-features/more/index.html | 689 +-
.../core-features/observability/index.html | 689 +-
zh-cn/overview/core-features/protocols/index.html | 689 +-
zh-cn/overview/core-features/security/index.html | 690 +-
.../core-features/service-definition/index.html | 719 +-
.../core-features/service-discovery/index.html | 690 +-
.../overview/core-features/service-mesh/index.html | 689 +-
.../traffic/circuit-breaking/index.html | 725 +-
.../traffic/condition-rule/index.html | 727 +-
.../traffic/configuration-rule/index.html | 731 +-
zh-cn/overview/core-features/traffic/index.html | 757 +-
.../core-features/traffic/script-rule/index.html | 736 +-
.../core-features/traffic/tag-rule/index.html | 735 +-
zh-cn/overview/demo/index.html | 18 +
zh-cn/overview/demo/index.xml | 1 +
zh-cn/overview/home/index.html | 1167 +-
zh-cn/overview/home/index.xml | 2 +-
zh-cn/overview/index.html | 1169 +-
zh-cn/overview/index.xml | 14 +-
.../java-sdk/reference-manual/faq/intro/index.html | 2 +
.../mannual/control-plane/architecture/index.html | 844 +
.../mannual/control-plane/documentation/index.html | 636 +
zh-cn/overview/mannual/control-plane/index.html | 636 +
zh-cn/overview/mannual/control-plane/index.xml | 29 +
.../overview/mannual/control-plane/mock/index.html | 717 +
.../mannual/control-plane/search/index.html | 672 +
.../overview/mannual/control-plane/test/index.html | 818 +
.../dubbo-go-pixiu/dev/dubbo-pilot/index.html | 760 +-
.../dubbo-go-pixiu/dev/filter-extension/index.html | 780 +-
.../overview/mannual/dubbo-go-pixiu/dev/index.html | 689 +-
.../mannual/dubbo-go-pixiu/dev/trie/index.html | 717 +-
zh-cn/overview/mannual/dubbo-go-pixiu/index.html | 689 +-
.../mannual/dubbo-go-pixiu/overview/faq/index.html | 691 +-
.../mannual/dubbo-go-pixiu/overview/index.html | 689 +-
.../dubbo-go-pixiu/overview/terminology/index.html | 689 +-
.../overview/what-is-pixiu/index.html | 691 +-
.../dubbo-go-pixiu/user/adapter/dubbo/index.html | 689 +-
.../mannual/dubbo-go-pixiu/user/adapter/index.html | 689 +-
.../user/adapter/springcloud/index.html | 689 +-
.../http-to-dubbo-default-stragety/index.html | 689 +-
.../dubbo-go-pixiu/user/appendix/index.html | 689 +-
.../dubbo-go-pixiu/user/configurations/index.html | 762 +-
.../dubbo-go-pixiu/user/deployment/index.html | 698 +-
.../user/httpfilter/hystrix/index.html | 689 +-
.../dubbo-go-pixiu/user/httpfilter/index.html | 689 +-
.../user/httpfilter/ratelimit/index.html | 689 +-
.../mannual/dubbo-go-pixiu/user/index.html | 689 +-
.../dubbo-go-pixiu/user/listener/http/index.html | 707 +-
.../dubbo-go-pixiu/user/listener/http2/index.html | 689 +-
.../dubbo-go-pixiu/user/listener/index.html | 689 +-
.../dubbo-go-pixiu/user/listener/tcp/index.html | 689 +-
.../dubbo-go-pixiu/user/listener/triple/index.html | 689 +-
.../user/networkfilter/dubbo/index.html | 689 +-
.../user/networkfilter/http/index.html | 689 +-
.../dubbo-go-pixiu/user/networkfilter/index.html | 689 +-
.../mannual/dubbo-go-pixiu/user/quality/index.html | 689 +-
.../user/quality/stability/index.html | 689 +-
.../dubbo-go-pixiu/user/quickstart/index.html | 795 +-
.../user/samples/http_proxy/index.html | 724 +-
.../user/samples/http_to_dubbo/index.html | 689 +-
.../dubbo-go-pixiu/user/samples/https/index.html | 689 +-
.../mannual/dubbo-go-pixiu/user/samples/index.html | 689 +-
zh-cn/overview/mannual/erlang-sdk/index.html | 689 +-
.../mannual/erlang-sdk/quick-start/index.html | 705 +-
.../mannual/erlang-sdk/reference/index.html | 697 +-
.../mannual/erlang-sdk/serialization/index.html | 693 +-
.../overview/mannual/erlang-sdk/service/index.html | 697 +-
zh-cn/overview/mannual/golang-sdk/index.html | 1173 +-
zh-cn/overview/mannual/golang-sdk/index.xml | 13 +-
.../mannual/golang-sdk/introduction/index.html | 637 +
.../golang-sdk/preface/3.0_feature/index.html | 689 +-
.../golang-sdk/preface/concept/generic/index.html | 742 +-
.../mannual/golang-sdk/preface/concept/index.html | 689 +-
.../golang-sdk/preface/concept/protocol/index.html | 727 +-
.../preface/design/aop_and_extension/index.html | 730 +-
.../preface/design/app_and_interface/index.html | 689 +-
.../preface/design/architecture/index.html | 689 +-
.../overview/mannual/golang-sdk/preface/index.html | 689 +-
.../preface/refer/compatible_version/index.html | 2 +
.../mannual/golang-sdk/preface/samples/index.html | 729 +-
.../mannual/golang-sdk/quickstart/index.html | 1169 +-
.../mannual/golang-sdk/quickstart/index.xml | 297 +-
.../golang-sdk/quickstart/microservices/index.html | 680 +
.../quickstart/quickstart_triple/index.html | 751 +-
.../mannual/golang-sdk/quickstart/rpc/index.html | 724 +
.../golang-sdk/refer/basic_concept/index.html | 689 +-
.../mannual/golang-sdk/refer/config/index.html | 751 +-
.../mannual/golang-sdk/refer/ecology/index.html | 1169 +-
.../mannual/golang-sdk/refer/generic/index.html | 689 +
zh-cn/overview/mannual/golang-sdk/refer/index.html | 1169 +-
zh-cn/overview/mannual/golang-sdk/refer/index.xml | 561 +-
.../mannual/golang-sdk/refer/nacos/index.html | 717 +
.../refer/sourcecode/3.0_feature/index.html | 636 +
.../refer/sourcecode/aop_and_extension/index.html | 677 +
.../refer/sourcecode/app_and_interface/index.html | 636 +
.../refer/sourcecode/architecture/index.html | 636 +
.../refer/sourcecode/generic-2/index.html | 697 +
.../golang-sdk/refer/sourcecode/generic/index.html | 697 +
.../mannual/golang-sdk/refer/sourcecode/index.html | 636 +
.../mannual/golang-sdk/refer/sourcecode/index.xml | 55 +
.../refer/sourcecode/protocol/index.html | 644 +
.../refer/sourcecode/registry/index.html | 674 +
.../golang-sdk/refer/use_dubbogo_cli/index.html | 1169 +-
.../mannual/golang-sdk/sourcecode/index.html | 689 +-
.../tutorial/configuration/file/index.html | 794 +
.../golang-sdk/tutorial/configuration/index.html | 698 +
.../golang-sdk/tutorial/configuration/index.xml | 9 +
.../tutorial/configuration/remote/index.html | 671 +
.../tutorial/debugging/grpc_cli/index.html | 716 +-
.../golang-sdk/tutorial/deploy2/deploy/index.html | 815 +
.../tutorial/deploy2/graceful_shutdown/index.html | 647 +
.../mannual/golang-sdk/tutorial/deploy2/index.html | 636 +
.../mannual/golang-sdk/tutorial/deploy2/index.xml | 22 +
.../golang-sdk/tutorial/deploy2/istio/index.html | 641 +
.../deploy2/proxyless_service_mesh/index.html | 636 +
.../tutorial/deploy2/traffic_management/index.html | 832 +
.../tutorial/develop/config-center/index.html | 689 +-
.../develop/features/custom-logger/index.html | 746 +-
.../tutorial/develop/features/generic/index.html | 4 +-
.../tutorial/develop/features/index.html | 689 +-
.../develop/interflow/call_java/index.html | 1214 +-
.../develop/protocol/exception_response/index.html | 771 +-
.../tutorial/develop/registry/index.html | 689 +-
.../develop/registry/service-discovery/index.html | 720 +-
.../tutorial/gateway/http_triple/index.html | 661 +
.../mannual/golang-sdk/tutorial/gateway/index.html | 636 +
.../mannual/golang-sdk/tutorial/gateway/index.xml | 12 +
.../tutorial/gateway/pixiu-nacos-triple/index.html | 661 +
.../governance/features/custom-filter/index.html | 724 +-
.../governance/health/start-check/index.html | 696 +-
.../tutorial/governance/monitor/index.html | 689 +-
.../governance/traffic/mesh_router/index.html | 760 +-
.../mannual/golang-sdk/tutorial/index.html | 1169 +-
.../overview/mannual/golang-sdk/tutorial/index.xml | 2 +-
.../index.html | 659 +
.../call_java_protocol_triple_protobuf/index.html | 676 +
.../golang-sdk/tutorial/interop-dubbo/index.html | 636 +
.../golang-sdk/tutorial/interop-dubbo/index.xml | 15 +
.../interop-dubbo/service-discovery/index.html | 654 +
.../tutorial/interop-grpc/call_grpc/index.html | 804 +
.../golang-sdk/tutorial/interop-grpc/index.html | 636 +
.../golang-sdk/tutorial/interop-grpc/index.xml | 5 +
.../golang-sdk/tutorial/load-balance/index.html | 636 +
.../golang-sdk/tutorial/load-balance/index.xml | 3 +
.../tutorial/load-balance/loadbalance/index.html | 652 +
.../golang-sdk/tutorial/observability/index.html | 636 +
.../golang-sdk/tutorial/observability/index.xml | 12 +
.../tutorial/observability/logger/index.html | 663 +
.../tutorial/observability/rpc_metrics/index.html | 703 +
.../tutorial/observability/tracing/index.html | 664 +
.../golang-sdk/tutorial/rpc/attachments/index.html | 747 +
.../golang-sdk/tutorial/rpc/error/index.html | 738 +
.../golang-sdk/tutorial/rpc/filter/index.html | 663 +
.../golang-sdk/tutorial/rpc/healthcheck/index.html | 682 +
.../mannual/golang-sdk/tutorial/rpc/index.html | 636 +
.../mannual/golang-sdk/tutorial/rpc/index.xml | 42 +
.../golang-sdk/tutorial/rpc/protocol/index.html | 704 +
.../golang-sdk/tutorial/rpc/retry/index.html | 757 +
.../golang-sdk/tutorial/rpc/start-check/index.html | 647 +
.../golang-sdk/tutorial/rpc/streaming/index.html | 803 +
.../golang-sdk/tutorial/rpc/timeout/index.html | 726 +
.../tutorial/service-discovery/index.html | 636 +
.../tutorial/service-discovery/index.xml | 13 +
.../service-discovery/multi_registry/index.html | 675 +
.../tutorial/service-discovery/nacos/index.html | 656 +
.../service-discovery/zookeeper/index.html | 660 +
.../mannual/golang-sdk/tutorial/traffic/index.html | 636 +
.../mannual/golang-sdk/tutorial/traffic/index.xml | 4 +
.../golang-sdk/tutorial/traffic/router/index.html | 636 +
.../tutorial/traffic/sentinel/index.html | 642 +
.../golang-sdk/tutorial/transaction/index.html | 636 +
.../golang-sdk/tutorial/transaction/index.xml | 3 +
.../tutorial/transaction/seata/index.html | 638 +
.../mannual/golang-sdk/versions/index.html | 636 +
zh-cn/overview/mannual/index.html | 1169 +-
zh-cn/overview/mannual/index.xml | 64 +-
.../advanced-features-and-usage/index.html | 689 +-
.../others/graceful-shutdown/index.html | 697 +-
.../others/logger-management/index.html | 736 +-
.../others/set-host/index.html | 696 +-
.../performance/concurrency-control/index.html | 703 +-
.../performance/config-connections/index.html | 693 +-
.../performance/dump/index.html | 703 +-
.../performance/lazy-connect/index.html | 690 +-
.../performance/loadbalance/index.html | 697 +-
.../performance/reference-config-cache/index.html | 703 +-
.../performance/result-cache/index.html | 727 +-
.../performance/serialization/index.html | 746 +-
.../performance/simplify-registry-data/index.html | 805 +-
.../performance/stickiness/index.html | 693 +-
.../performance/support-graalvm/index.html | 785 +-
.../threading-model/consumer/index.html | 689 +-
.../performance/threading-model/index.html | 689 +-
.../security/auth/index.html | 692 +-
.../security/class-check/index.html | 763 +-
.../security/index.html | 689 +-
.../security/tls/index.html | 707 +-
.../security/token-authorization/index.html | 699 +-
.../service/accesslog/index.html | 691 +-
.../service/async-call/index.html | 766 +-
.../service/async-execute-on-provider/index.html | 730 +-
.../service/async/index.html | 2 +
.../service/attachment/index.html | 750 +-
.../service/callback-parameter/index.html | 764 +-
.../service/config-connections/index.html | 2 +
.../service/consistent-hash/index.html | 697 +-
.../service/context/index.html | 714 +-
.../service/delay-publish/index.html | 692 +-
.../service/distributed-transaction/index.html | 689 +-
.../service/echo-service/index.html | 701 +-
.../service/events-notify/index.html | 737 +-
.../service/explicit-target/index.html | 693 +-
.../service/fault-tolerent-strategy/index.html | 705 +-
.../service/generic-reference/index.html | 918 +-
.../service/generic-service/index.html | 714 +-
.../service/generic/index.html | 2 +
.../service/group-merger/index.html | 703 +-
.../service/lazy-connect/index.html | 2 +
.../service/local-call/index.html | 699 +-
.../service/local-mock/index.html | 736 +-
.../service/local-stub/index.html | 710 +-
.../service/multi-protocols/index.html | 717 +-
.../service/multi-registry/index.html | 740 +-
.../service/multi-versions/index.html | 695 +-
.../service/parameter-validation/index.html | 823 +-
.../service/preflight-check/index.html | 698 +-
.../service/registry-only/index.html | 693 +-
.../service/service-downgrade/index.html | 697 +-
.../service/service-group/index.html | 777 +-
.../service/service-version/index.html | 2 +
.../service/stickiness/index.html | 2 +
.../service/subscribe-only/index.html | 691 +-
.../advanced-features-and-usage/traffic/index.html | 689 +-
.../concepts-and-architecture/mesh/index.html | 4 +-
.../service-discovery/index.html | 4 +-
zh-cn/overview/mannual/java-sdk/faq/0/1/index.html | 691 +-
.../overview/mannual/java-sdk/faq/0/10/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/11/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/12/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/14/index.html | 690 +-
.../overview/mannual/java-sdk/faq/0/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/16/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/17/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/18/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/19/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/0/2/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/20/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/21/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/22/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/23/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/24/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/25/index.html | 690 +-
.../overview/mannual/java-sdk/faq/0/26/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/27/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/28/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/29/index.html | 701 +-
zh-cn/overview/mannual/java-sdk/faq/0/3/index.html | 700 +-
zh-cn/overview/mannual/java-sdk/faq/0/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/0/5/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/0/6/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/0/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/0/8/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/0/9/index.html | 689 +-
.../overview/mannual/java-sdk/faq/0/99/index.html | 689 +-
.../mannual/java-sdk/faq/0/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/1/1/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/10/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/11/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/12/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/14/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/16/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/17/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/18/index.html | 691 +-
.../overview/mannual/java-sdk/faq/1/19/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/20/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/21/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/22/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/26/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/27/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/28/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/29/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/1/3/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/30/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/31/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/32/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/33/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/34/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/35/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/36/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/37/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/38/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/39/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/1/4/index.html | 690 +-
.../overview/mannual/java-sdk/faq/1/40/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/41/index.html | 689 +-
.../overview/mannual/java-sdk/faq/1/42/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/1/5/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/1/6/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/1/7/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/1/8/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/1/9/index.html | 692 +-
.../mannual/java-sdk/faq/1/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/2/1/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/10/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/11/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/12/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/14/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/16/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/17/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/18/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/19/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/2/index.html | 689 +-
.../overview/mannual/java-sdk/faq/2/20/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/3/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/8/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/2/9/index.html | 689 +-
.../mannual/java-sdk/faq/2/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/3/1/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/2/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/3/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/3/8/index.html | 691 +-
.../mannual/java-sdk/faq/3/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/4/1/index.html | 690 +-
.../overview/mannual/java-sdk/faq/4/10/index.html | 691 +-
.../overview/mannual/java-sdk/faq/4/11/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/12/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/14/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/16/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/17/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/18/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/19/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/2/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/20/index.html | 689 +-
.../overview/mannual/java-sdk/faq/4/21/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/3/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/8/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/4/9/index.html | 695 +-
.../mannual/java-sdk/faq/4/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/5/1/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/10/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/11/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/12/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/14/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/16/index.html | 690 +-
.../overview/mannual/java-sdk/faq/5/17/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/18/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/2/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/20/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/21/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/22/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/23/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/24/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/25/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/26/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/27/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/28/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/29/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/3/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/30/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/31/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/32/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/33/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/34/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/35/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/36/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/37/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/38/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/39/index.html | 690 +-
zh-cn/overview/mannual/java-sdk/faq/5/4/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/40/index.html | 690 +-
.../overview/mannual/java-sdk/faq/5/41/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/42/index.html | 689 +-
.../overview/mannual/java-sdk/faq/5/43/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/8/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/5/9/index.html | 689 +-
.../mannual/java-sdk/faq/5/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/6/1/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/10/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/11/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/12/index.html | 690 +-
.../overview/mannual/java-sdk/faq/6/13/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/14/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/15/index.html | 689 +-
.../overview/mannual/java-sdk/faq/6/16/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/2/index.html | 691 +-
zh-cn/overview/mannual/java-sdk/faq/6/3/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/7/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/8/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/6/9/index.html | 690 +-
.../mannual/java-sdk/faq/6/_index/index.html | 2 +
zh-cn/overview/mannual/java-sdk/faq/7/1/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/2/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/3/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/4/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/5/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/6/index.html | 689 +-
zh-cn/overview/mannual/java-sdk/faq/7/7/index.html | 689 +-
.../mannual/java-sdk/faq/7/_index/index.html | 2 +
.../overview/mannual/java-sdk/faq/81/1/index.html | 689 +-
.../overview/mannual/java-sdk/faq/81/2/index.html | 690 +-
.../overview/mannual/java-sdk/faq/81/3/index.html | 689 +-
.../overview/mannual/java-sdk/faq/81/4/index.html | 689 +-
.../mannual/java-sdk/faq/81/_index/index.html | 2 +
.../overview/mannual/java-sdk/faq/99/0/index.html | 690 +-
.../overview/mannual/java-sdk/faq/99/1/index.html | 691 +-
.../mannual/java-sdk/faq/99/_index/index.html | 2 +
.../mannual/java-sdk/faq/_index/index.html | 2 +
.../overview/mannual/java-sdk/faq/intro/index.html | 693 +-
zh-cn/overview/mannual/java-sdk/index.html | 1167 +-
zh-cn/overview/mannual/java-sdk/index.xml | 208 +-
.../mannual/java-sdk/quick-start/deploy/index.html | 659 +
.../mannual/java-sdk/quick-start/index.html | 1169 +-
.../mannual/java-sdk/quick-start/index.xml | 1298 +-
.../java-sdk/quick-start/spring-boot/index.html | 957 +-
.../java-sdk/quick-start/starter/index.html | 703 +
.../architecture/code-architecture/index.html | 1169 +-
.../architecture/dubbo-spi/index.html | 1270 ++
.../reference-manual/architecture/index.html | 1169 +-
.../reference-manual/architecture/index.xml | 215 +-
.../architecture/multi-instance/develop/index.html | 710 +
.../architecture/multi-instance/index.html | 636 +
.../architecture/multi-instance/index.xml | 20 +
.../architecture/multi-instance/model/index.html | 676 +
.../multi-instance/multi-instance/index.html | 693 +
.../multi-instance/workflow/index.html | 643 +
.../architecture/multi-protocol/index.html | 669 +
.../architecture/service-invocation/index.html | 1169 +-
.../config-center/apollo/index.html | 1169 +-
.../reference-manual/config-center/index.html | 1169 +-
.../reference-manual/config-center/index.xml | 234 +-
.../config-center/introduction/index.html | 636 +
.../config-center/nacos/index.html | 1169 +-
.../config-center/others/index.html | 652 +
.../config-center/zookeeper/index.html | 1173 +-
.../reference-manual/config/annotation/index.html | 804 +-
.../reference-manual/config/api/api/index.html | 933 ++
.../reference-manual/config/api/index.html | 1420 +-
.../java-sdk/reference-manual/config/api/index.xml | 5 +
.../java-sdk/reference-manual/config/index.html | 1169 +-
.../java-sdk/reference-manual/config/index.xml | 4936 +-----
.../config/maven-plugin/index.html | 749 +
.../reference-manual/config/overview/index.html | 747 +-
.../reference-manual/config/principle/index.html | 1235 +-
.../reference-manual/config/properties/index.html | 1191 +-
.../reference-manual/config/properties3.md.bak | 578 +
.../reference-manual/config/spring/index.html | 636 +
.../reference-manual/config/spring/index.xml | 6 +
.../config/spring/spring-boot/index.html | 645 +
.../reference-manual/config/spring/xml/index.html | 746 +
.../reference-manual/config/xml/index.html | 753 +-
.../java-sdk/reference-manual/faq/0/1/index.html | 638 +
.../java-sdk/reference-manual/faq/0/10/index.html | 636 +
.../java-sdk/reference-manual/faq/0/11/index.html | 636 +
.../java-sdk/reference-manual/faq/0/12/index.html | 636 +
.../java-sdk/reference-manual/faq/0/13/index.html | 636 +
.../java-sdk/reference-manual/faq/0/14/index.html | 637 +
.../java-sdk/reference-manual/faq/0/15/index.html | 636 +
.../java-sdk/reference-manual/faq/0/16/index.html | 636 +
.../java-sdk/reference-manual/faq/0/17/index.html | 636 +
.../java-sdk/reference-manual/faq/0/18/index.html | 636 +
.../java-sdk/reference-manual/faq/0/19/index.html | 636 +
.../java-sdk/reference-manual/faq/0/2/index.html | 636 +
.../java-sdk/reference-manual/faq/0/20/index.html | 636 +
.../java-sdk/reference-manual/faq/0/21/index.html | 636 +
.../java-sdk/reference-manual/faq/0/22/index.html | 636 +
.../java-sdk/reference-manual/faq/0/23/index.html | 636 +
.../java-sdk/reference-manual/faq/0/24/index.html | 636 +
.../java-sdk/reference-manual/faq/0/25/index.html | 637 +
.../java-sdk/reference-manual/faq/0/26/index.html | 636 +
.../java-sdk/reference-manual/faq/0/27/index.html | 636 +
.../java-sdk/reference-manual/faq/0/28/index.html | 636 +
.../java-sdk/reference-manual/faq/0/29/index.html | 648 +
.../java-sdk/reference-manual/faq/0/3/index.html | 647 +
.../java-sdk/reference-manual/faq/0/4/index.html | 636 +
.../java-sdk/reference-manual/faq/0/5/index.html | 637 +
.../java-sdk/reference-manual/faq/0/6/index.html | 637 +
.../java-sdk/reference-manual/faq/0/7/index.html | 636 +
.../java-sdk/reference-manual/faq/0/8/index.html | 636 +
.../java-sdk/reference-manual/faq/0/9/index.html | 636 +
.../java-sdk/reference-manual/faq/0/99/index.html | 636 +
.../java-sdk/reference-manual/faq/0/index.html | 636 +
.../java-sdk/reference-manual/faq/0/index.xml | 32 +
.../java-sdk/reference-manual/faq/1/1/index.html | 636 +
.../java-sdk/reference-manual/faq/1/10/index.html | 637 +
.../java-sdk/reference-manual/faq/1/11/index.html | 637 +
.../java-sdk/reference-manual/faq/1/12/index.html | 637 +
.../java-sdk/reference-manual/faq/1/13/index.html | 636 +
.../java-sdk/reference-manual/faq/1/14/index.html | 636 +
.../java-sdk/reference-manual/faq/1/15/index.html | 636 +
.../java-sdk/reference-manual/faq/1/16/index.html | 637 +
.../java-sdk/reference-manual/faq/1/17/index.html | 637 +
.../java-sdk/reference-manual/faq/1/18/index.html | 638 +
.../java-sdk/reference-manual/faq/1/19/index.html | 636 +
.../java-sdk/reference-manual/faq/1/20/index.html | 636 +
.../java-sdk/reference-manual/faq/1/21/index.html | 636 +
.../java-sdk/reference-manual/faq/1/22/index.html | 636 +
.../java-sdk/reference-manual/faq/1/26/index.html | 636 +
.../java-sdk/reference-manual/faq/1/27/index.html | 636 +
.../java-sdk/reference-manual/faq/1/28/index.html | 636 +
.../java-sdk/reference-manual/faq/1/29/index.html | 636 +
.../java-sdk/reference-manual/faq/1/3/index.html | 636 +
.../java-sdk/reference-manual/faq/1/30/index.html | 636 +
.../java-sdk/reference-manual/faq/1/31/index.html | 636 +
.../java-sdk/reference-manual/faq/1/32/index.html | 636 +
.../java-sdk/reference-manual/faq/1/33/index.html | 636 +
.../java-sdk/reference-manual/faq/1/34/index.html | 636 +
.../java-sdk/reference-manual/faq/1/35/index.html | 636 +
.../java-sdk/reference-manual/faq/1/36/index.html | 636 +
.../java-sdk/reference-manual/faq/1/37/index.html | 636 +
.../java-sdk/reference-manual/faq/1/38/index.html | 636 +
.../java-sdk/reference-manual/faq/1/39/index.html | 636 +
.../java-sdk/reference-manual/faq/1/4/index.html | 637 +
.../java-sdk/reference-manual/faq/1/40/index.html | 636 +
.../java-sdk/reference-manual/faq/1/41/index.html | 636 +
.../java-sdk/reference-manual/faq/1/42/index.html | 636 +
.../java-sdk/reference-manual/faq/1/5/index.html | 637 +
.../java-sdk/reference-manual/faq/1/6/index.html | 637 +
.../java-sdk/reference-manual/faq/1/7/index.html | 637 +
.../java-sdk/reference-manual/faq/1/8/index.html | 637 +
.../java-sdk/reference-manual/faq/1/9/index.html | 639 +
.../java-sdk/reference-manual/faq/1/index.html | 636 +
.../java-sdk/reference-manual/faq/1/index.xml | 33 +
.../java-sdk/reference-manual/faq/2/1/index.html | 636 +
.../java-sdk/reference-manual/faq/2/10/index.html | 636 +
.../java-sdk/reference-manual/faq/2/11/index.html | 636 +
.../java-sdk/reference-manual/faq/2/12/index.html | 636 +
.../java-sdk/reference-manual/faq/2/13/index.html | 636 +
.../java-sdk/reference-manual/faq/2/14/index.html | 636 +
.../java-sdk/reference-manual/faq/2/15/index.html | 636 +
.../java-sdk/reference-manual/faq/2/16/index.html | 636 +
.../java-sdk/reference-manual/faq/2/17/index.html | 636 +
.../java-sdk/reference-manual/faq/2/18/index.html | 636 +
.../java-sdk/reference-manual/faq/2/19/index.html | 636 +
.../java-sdk/reference-manual/faq/2/2/index.html | 636 +
.../java-sdk/reference-manual/faq/2/20/index.html | 636 +
.../java-sdk/reference-manual/faq/2/3/index.html | 636 +
.../java-sdk/reference-manual/faq/2/4/index.html | 636 +
.../java-sdk/reference-manual/faq/2/5/index.html | 636 +
.../java-sdk/reference-manual/faq/2/6/index.html | 636 +
.../java-sdk/reference-manual/faq/2/7/index.html | 636 +
.../java-sdk/reference-manual/faq/2/8/index.html | 636 +
.../java-sdk/reference-manual/faq/2/9/index.html | 636 +
.../java-sdk/reference-manual/faq/2/index.html | 636 +
.../java-sdk/reference-manual/faq/2/index.xml | 5 +
.../java-sdk/reference-manual/faq/3/1/index.html | 636 +
.../java-sdk/reference-manual/faq/3/2/index.html | 636 +
.../java-sdk/reference-manual/faq/3/3/index.html | 636 +
.../java-sdk/reference-manual/faq/3/4/index.html | 636 +
.../java-sdk/reference-manual/faq/3/5/index.html | 636 +
.../java-sdk/reference-manual/faq/3/6/index.html | 636 +
.../java-sdk/reference-manual/faq/3/7/index.html | 636 +
.../java-sdk/reference-manual/faq/3/8/index.html | 638 +
.../java-sdk/reference-manual/faq/3/index.html | 636 +
.../java-sdk/reference-manual/faq/3/index.xml | 4 +
.../java-sdk/reference-manual/faq/4/1/index.html | 637 +
.../java-sdk/reference-manual/faq/4/10/index.html | 638 +
.../java-sdk/reference-manual/faq/4/11/index.html | 636 +
.../java-sdk/reference-manual/faq/4/12/index.html | 636 +
.../java-sdk/reference-manual/faq/4/13/index.html | 636 +
.../java-sdk/reference-manual/faq/4/14/index.html | 636 +
.../java-sdk/reference-manual/faq/4/15/index.html | 636 +
.../java-sdk/reference-manual/faq/4/16/index.html | 636 +
.../java-sdk/reference-manual/faq/4/17/index.html | 636 +
.../java-sdk/reference-manual/faq/4/18/index.html | 636 +
.../java-sdk/reference-manual/faq/4/19/index.html | 636 +
.../java-sdk/reference-manual/faq/4/2/index.html | 636 +
.../java-sdk/reference-manual/faq/4/20/index.html | 636 +
.../java-sdk/reference-manual/faq/4/21/index.html | 636 +
.../java-sdk/reference-manual/faq/4/3/index.html | 636 +
.../java-sdk/reference-manual/faq/4/4/index.html | 636 +
.../java-sdk/reference-manual/faq/4/5/index.html | 636 +
.../java-sdk/reference-manual/faq/4/6/index.html | 636 +
.../java-sdk/reference-manual/faq/4/7/index.html | 636 +
.../java-sdk/reference-manual/faq/4/8/index.html | 636 +
.../java-sdk/reference-manual/faq/4/9/index.html | 642 +
.../java-sdk/reference-manual/faq/4/index.html | 636 +
.../java-sdk/reference-manual/faq/4/index.xml | 30 +
.../java-sdk/reference-manual/faq/5/1/index.html | 636 +
.../java-sdk/reference-manual/faq/5/10/index.html | 636 +
.../java-sdk/reference-manual/faq/5/11/index.html | 636 +
.../java-sdk/reference-manual/faq/5/12/index.html | 636 +
.../java-sdk/reference-manual/faq/5/13/index.html | 636 +
.../java-sdk/reference-manual/faq/5/14/index.html | 636 +
.../java-sdk/reference-manual/faq/5/15/index.html | 636 +
.../java-sdk/reference-manual/faq/5/16/index.html | 637 +
.../java-sdk/reference-manual/faq/5/17/index.html | 636 +
.../java-sdk/reference-manual/faq/5/18/index.html | 636 +
.../java-sdk/reference-manual/faq/5/2/index.html | 636 +
.../java-sdk/reference-manual/faq/5/20/index.html | 636 +
.../java-sdk/reference-manual/faq/5/21/index.html | 636 +
.../java-sdk/reference-manual/faq/5/22/index.html | 636 +
.../java-sdk/reference-manual/faq/5/23/index.html | 636 +
.../java-sdk/reference-manual/faq/5/24/index.html | 636 +
.../java-sdk/reference-manual/faq/5/25/index.html | 636 +
.../java-sdk/reference-manual/faq/5/26/index.html | 636 +
.../java-sdk/reference-manual/faq/5/27/index.html | 636 +
.../java-sdk/reference-manual/faq/5/28/index.html | 636 +
.../java-sdk/reference-manual/faq/5/29/index.html | 636 +
.../java-sdk/reference-manual/faq/5/3/index.html | 636 +
.../java-sdk/reference-manual/faq/5/30/index.html | 636 +
.../java-sdk/reference-manual/faq/5/31/index.html | 636 +
.../java-sdk/reference-manual/faq/5/32/index.html | 636 +
.../java-sdk/reference-manual/faq/5/33/index.html | 636 +
.../java-sdk/reference-manual/faq/5/34/index.html | 636 +
.../java-sdk/reference-manual/faq/5/35/index.html | 636 +
.../java-sdk/reference-manual/faq/5/36/index.html | 636 +
.../java-sdk/reference-manual/faq/5/37/index.html | 636 +
.../java-sdk/reference-manual/faq/5/38/index.html | 636 +
.../java-sdk/reference-manual/faq/5/39/index.html | 637 +
.../java-sdk/reference-manual/faq/5/4/index.html | 636 +
.../java-sdk/reference-manual/faq/5/40/index.html | 637 +
.../java-sdk/reference-manual/faq/5/41/index.html | 636 +
.../java-sdk/reference-manual/faq/5/42/index.html | 636 +
.../java-sdk/reference-manual/faq/5/43/index.html | 636 +
.../java-sdk/reference-manual/faq/5/5/index.html | 636 +
.../java-sdk/reference-manual/faq/5/6/index.html | 636 +
.../java-sdk/reference-manual/faq/5/7/index.html | 636 +
.../java-sdk/reference-manual/faq/5/8/index.html | 636 +
.../java-sdk/reference-manual/faq/5/9/index.html | 636 +
.../java-sdk/reference-manual/faq/5/index.html | 636 +
.../java-sdk/reference-manual/faq/5/index.xml | 37 +
.../java-sdk/reference-manual/faq/6/1/index.html | 636 +
.../java-sdk/reference-manual/faq/6/10/index.html | 636 +
.../java-sdk/reference-manual/faq/6/11/index.html | 636 +
.../java-sdk/reference-manual/faq/6/12/index.html | 637 +
.../java-sdk/reference-manual/faq/6/13/index.html | 636 +
.../java-sdk/reference-manual/faq/6/14/index.html | 636 +
.../java-sdk/reference-manual/faq/6/15/index.html | 636 +
.../java-sdk/reference-manual/faq/6/16/index.html | 636 +
.../java-sdk/reference-manual/faq/6/2/index.html | 638 +
.../java-sdk/reference-manual/faq/6/3/index.html | 636 +
.../java-sdk/reference-manual/faq/6/4/index.html | 636 +
.../java-sdk/reference-manual/faq/6/5/index.html | 636 +
.../java-sdk/reference-manual/faq/6/6/index.html | 636 +
.../java-sdk/reference-manual/faq/6/7/index.html | 636 +
.../java-sdk/reference-manual/faq/6/8/index.html | 636 +
.../java-sdk/reference-manual/faq/6/9/index.html | 637 +
.../java-sdk/reference-manual/faq/6/index.html | 636 +
.../java-sdk/reference-manual/faq/6/index.xml | 18 +
.../java-sdk/reference-manual/faq/7/1/index.html | 636 +
.../java-sdk/reference-manual/faq/7/2/index.html | 636 +
.../java-sdk/reference-manual/faq/7/3/index.html | 636 +
.../java-sdk/reference-manual/faq/7/4/index.html | 636 +
.../java-sdk/reference-manual/faq/7/5/index.html | 636 +
.../java-sdk/reference-manual/faq/7/6/index.html | 636 +
.../java-sdk/reference-manual/faq/7/7/index.html | 636 +
.../java-sdk/reference-manual/faq/7/index.html | 636 +
.../java-sdk/reference-manual/faq/7/index.xml | 10 +
.../java-sdk/reference-manual/faq/81/1/index.html | 636 +
.../java-sdk/reference-manual/faq/81/2/index.html | 637 +
.../java-sdk/reference-manual/faq/81/3/index.html | 636 +
.../java-sdk/reference-manual/faq/81/4/index.html | 636 +
.../java-sdk/reference-manual/faq/81/index.html | 636 +
.../java-sdk/reference-manual/faq/81/index.xml | 2 +
.../java-sdk/reference-manual/faq/99/0/index.html | 637 +
.../java-sdk/reference-manual/faq/99/1/index.html | 638 +
.../java-sdk/reference-manual/faq/99/index.html | 636 +
.../java-sdk/reference-manual/faq/99/index.xml | 5 +
.../java-sdk/reference-manual/faq/index.html | 636 +
.../java-sdk/reference-manual/faq/index.xml | 6 +
.../java-sdk/reference-manual/faq/intro/index.html | 640 +
.../java-sdk/reference-manual/graalvm/index.html | 1173 +-
.../java-sdk/reference-manual/graalvm/index.xml | 13 +-
.../graalvm/support-graalvm/index.html | 732 +
.../mannual/java-sdk/reference-manual/index.html | 1169 +-
.../mannual/java-sdk/reference-manual/index.xml | 190 +-
.../java-sdk/reference-manual/merics/index.html | 636 +
.../java-sdk/reference-manual/merics/index.xml | 7 +
.../reference-manual/merics/meter/index.html | 828 +
.../java-sdk/reference-manual/mesh/index.html | 1169 +-
.../java-sdk/reference-manual/mesh/index.xml | 94 +-
.../java-sdk/reference-manual/mesh/mesh/index.html | 1169 +-
.../reference-manual/metadata-center/index.html | 1169 +-
.../reference-manual/metadata-center/index.xml | 364 +-
.../metadata-center/nacos/index.html | 1169 +-
.../metadata-center/others/index.html | 663 +
.../metadata-center/overview/index.html | 1173 +-
.../metadata-center/zookeeper/index.html | 1171 +-
.../performance/benchmarking/index.html | 1175 +-
.../reference-manual/performance/index.html | 1169 +-
.../reference-manual/performance/index.xml | 158 +-
.../performance/page-benchmarking/index.html | 20 +-
.../performance/rpc-benchmarking/index.html | 1171 +-
.../reference-manual/protocol/dubbo/index.html | 1171 +-
.../reference-manual/protocol/grpc/index.html | 690 +-
.../reference-manual/protocol/hessian/index.html | 705 +-
.../reference-manual/protocol/http/index.html | 706 +-
.../java-sdk/reference-manual/protocol/index.html | 1169 +-
.../java-sdk/reference-manual/protocol/index.xml | 1721 +-
.../reference-manual/protocol/memcached/index.html | 701 +-
.../protocol/multi-protocols/index.html | 677 +
.../protocol/others/hessian/index.html | 652 +
.../reference-manual/protocol/others/http.md.bak | 81 +
.../reference-manual/protocol/others/index.html | 636 +
.../reference-manual/protocol/others/index.xml | 45 +
.../protocol/others/memcached/index.html | 643 +
.../protocol/others/redis/index.html | 643 +
.../protocol/others/rmi/index.html | 650 +
.../protocol/others/thrift/index.html | 642 +
.../others/v3.2_rest_protocol_design/index.html | 1095 ++
.../protocol/others/webservice/index.html | 669 +
.../v3.2_rest_protocol_design/index.html | 2 +
.../reference-manual/protocol/overview/index.html | 1174 +-
.../reference-manual/protocol/redis/index.html | 701 +-
.../java-sdk/reference-manual/protocol/rest.md.bak | 815 +
.../reference-manual/protocol/rest/index.html | 968 +-
.../reference-manual/protocol/rmi/index.html | 703 +-
.../reference-manual/protocol/thrift/index.html | 700 +-
.../reference-manual/protocol/tls/index.html | 2 +
.../protocol/tripe-rest-manual/index.html | 943 ++
.../protocol/triple-3.3/index.html | 761 +
.../reference-manual/protocol/triple.md.bak | 170 +
.../protocol/triple/guide/index.html | 894 +-
.../protocol/triple/idl/index.html | 865 +-
.../reference-manual/protocol/triple/index.html | 1249 +-
.../protocol/triple/migration/index.html | 709 +-
.../protocol/triple/overview/index.html | 694 +-
.../protocol/v3.2_rest_protocol_design/index.html | 1147 +-
.../protocol/webservice/index.html | 722 +-
.../reference-manual/qos/command/index.html | 709 +-
.../java-sdk/reference-manual/qos/index.html | 1169 +-
.../java-sdk/reference-manual/qos/index.xml | 574 +-
.../qos/introduction/command/index.html | 656 +
.../qos/introduction/default_metrics/index.html | 660 +
.../reference-manual/qos/introduction/index.html | 636 +
.../reference-manual/qos/introduction/index.xml | 38 +
.../qos/introduction/logger-management/index.html | 677 +
.../qos/introduction/probe/index.html | 648 +
.../qos/introduction/profiler/index.html | 658 +
.../qos/introduction/router-snapshot/index.html | 688 +
.../qos/introduction/security/index.html | 678 +
.../qos/introduction/service-management/index.html | 665 +
.../reference-manual/qos/overview/index.html | 1171 +-
.../reference-manual/qos/profiler/index.html | 711 +-
.../reference-manual/qos/qos-list/index.html | 636 +
.../qos/router-snapshot/index.html | 741 +-
.../java-sdk/reference-manual/registry/index.html | 1173 +-
.../java-sdk/reference-manual/registry/index.xml | 667 +-
.../reference-manual/registry/multicast/index.html | 698 +-
.../registry/multiple-registry/index.html | 1177 +-
.../reference-manual/registry/nacos/index.html | 1210 +-
.../registry/others/consul/index.html | 645 +
.../registry/others/etcd/index.html | 645 +
.../reference-manual/registry/others/index.html | 636 +
.../reference-manual/registry/others/index.xml | 19 +
.../registry/others/multicast/index.html | 645 +
.../registry/others/redis/index.html | 645 +
.../reference-manual/registry/overview/index.html | 1255 +-
.../reference-manual/registry/redis/index.html | 693 +-
.../index.html | 769 +
.../reference-manual/registry/zookeeper/index.html | 1218 +-
.../reference-manual/routing-rule/index.html | 636 +
.../reference-manual/routing-rule/index.xml | 1 +
.../serialization/dubbo/avro/index.html | 667 +
.../serialization/dubbo/fastjson/index.html | 667 +
.../serialization/dubbo/fastjson2/index.html | 662 +
.../serialization/dubbo/fst/index.html | 711 +
.../serialization/dubbo/gson/index.html | 667 +
.../serialization/dubbo/hessian/index.html | 655 +
.../serialization/dubbo/index.html | 636 +
.../reference-manual/serialization/dubbo/index.xml | 31 +
.../serialization/dubbo/kryo/index.html | 716 +
.../serialization/dubbo/msgpack/index.html | 673 +
.../reference-manual/serialization/index.html | 1169 +-
.../reference-manual/serialization/index.xml | 370 +-
.../serialization/serialization-upgrade/index.html | 638 +
.../serialization/serialization/index.html | 716 +
.../serialization/triple/index.html | 636 +
.../serialization/triple/index.xml | 10 +
.../serialization/triple/protobuf/index.html | 674 +
.../serialization/triple/wrapper/index.html | 661 +
.../spi/description/cache/index.html | 1169 +-
.../spi/description/cluster/index.html | 1169 +-
.../spi/description/compiler/index.html | 1169 +-
.../spi/description/config-center/index.html | 1169 +-
.../spi/description/container/index.html | 1169 +-
.../spi/description/dispatcher/index.html | 1169 +-
.../spi/description/exchanger/index.html | 1169 +-
.../spi/description/exporter-listener/index.html | 1169 +-
.../spi/description/extension-factory/index.html | 1169 +-
.../spi/description/filter/index.html | 1169 +-
.../reference-manual/spi/description/index.html | 1173 +-
.../reference-manual/spi/description/index.xml | 2486 +--
.../spi/description/invoker-listener/index.html | 1169 +-
.../spi/description/liveness/index.html | 1169 +-
.../spi/description/load-balance/index.html | 1169 +-
.../spi/description/logger-adapter/index.html | 1169 +-
.../spi/description/merger/index.html | 1169 +-
.../spi/description/metadata-report/index.html | 1169 +-
.../spi/description/monitor/index.html | 1169 +-
.../spi/description/networker/index.html | 1169 +-
.../spi/description/page/index.html | 1169 +-
.../spi/description/protocol/index.html | 1169 +-
.../spi/description/proxy-factory/index.html | 1169 +-
.../spi/description/qos-permission/index.html | 1169 +-
.../spi/description/readiness/index.html | 1169 +-
.../spi/description/registry/index.html | 1169 +-
.../spi/description/remoting/index.html | 1169 +-
.../spi/description/router/index.html | 1169 +-
.../spi/description/serialize/index.html | 1169 +-
.../spi/description/startup/index.html | 1169 +-
.../spi/description/status-checker/index.html | 1169 +-
.../spi/description/telnet-handler/index.html | 1169 +-
.../spi/description/threadpool/index.html | 1169 +-
.../spi/description/validation/index.html | 1169 +-
.../java-sdk/reference-manual/spi/index.html | 1173 +-
.../java-sdk/reference-manual/spi/index.xml | 71 +-
.../reference-manual/spi/overview/index.html | 1176 +-
.../reference-manual/spi/spi-list/index.html | 636 +
.../upgrades-and-compatibility/index.html | 636 +
.../upgrades-and-compatibility/index.xml | 18 +
.../migration-service-discovery/index.html | 646 +
.../migration-triple.md.bak | 346 +
.../migration-triple/index.html | 649 +
.../upgrades-and-compatibility/migration.md.bak | 97 +
.../migration/index.html | 717 +
.../2.x-to-3.x-compatibility-guide/index.html | 651 +
.../3.0-to-3.1-compatibility-guide/index.html | 636 +
.../3.1-to-3.2-compatibility-guide/index.html | 657 +
.../3.2-to-3.3-compatibility-guide/index.html | 770 +
.../upgrades-and-compatibility/version/index.html | 636 +
.../upgrades-and-compatibility/version/index.xml | 19 +
.../deploy/deploy-on-kubernetes-service/index.html | 658 +
.../tasks/deploy/deploy-on-kubernetes/index.html | 647 +
.../java-sdk/tasks/deploy/deploy-on-vm/index.html | 650 +
.../mannual/java-sdk/tasks/deploy/index.html | 636 +
.../mannual/java-sdk/tasks/deploy/index.xml | 23 +
.../mannual/java-sdk/tasks/develop/api/index.html | 784 +
.../mannual/java-sdk/tasks/develop/index.html | 636 +
.../mannual/java-sdk/tasks/develop/index.xml | 8 +
.../java-sdk/tasks/develop/springboot/index.html | 721 +
.../java-sdk/tasks/develop/template/index.html | 2 +
.../java-sdk/tasks/extensibility/filter/index.html | 678 +
.../java-sdk/tasks/extensibility/index.html | 636 +
.../mannual/java-sdk/tasks/extensibility/index.xml | 21 +
.../tasks/extensibility/protocol/index.html | 738 +
.../tasks/extensibility/registry/index.html | 721 +
.../java-sdk/tasks/extensibility/router/index.html | 734 +
.../java-sdk/tasks/extensibility/spi/index.html | 650 +
.../java-sdk/tasks/framework/async/index.html | 766 +
.../java-sdk/tasks/framework/attachment/index.html | 673 +
.../framework/fault-tolerent-strategy/index.html | 647 +
.../java-sdk/tasks/framework/filter/index.html | 682 +
.../java-sdk/tasks/framework/generic/index.html | 710 +
.../mannual/java-sdk/tasks/framework/index.html | 636 +
.../mannual/java-sdk/tasks/framework/index.xml | 56 +
.../tasks/framework/lightweight-rpc/index.html | 685 +
.../framework/more/callback-parameter/index.html | 711 +
.../framework/more/concurrency-control/index.html | 650 +
.../framework/more/config-connections/index.html | 645 +
.../tasks/framework/more/echo-service/index.html | 642 +
.../tasks/framework/more/events-notify/index.html | 684 +
.../framework/more/explicit-target/index.html | 642 +
.../tasks/framework/more/generic-impl/index.html | 662 +
.../tasks/framework/more/generic/index.html | 2 +
.../java-sdk/tasks/framework/more/index.html | 636 +
.../java-sdk/tasks/framework/more/index.xml | 110 +
.../tasks/framework/more/local-call/index.html | 646 +
.../tasks/framework/more/local-mock/index.html | 683 +
.../tasks/framework/more/local-stub/index.html | 657 +
.../framework/more/parameter-validation/index.html | 770 +
.../tasks/framework/more/reactive/index.html | 799 +
.../more/reference-config-cache/index.html | 650 +
.../tasks/framework/more/result-cache/index.html | 674 +
.../framework/more/router-snapshot/index.html | 666 +
.../tasks/framework/more/set-host/index.html | 643 +
.../tasks/framework/more/specify-ip/index.html | 687 +
.../tasks/framework/threading-model/index.html | 841 +
.../java-sdk/tasks/framework/timeout/index.html | 653 +
.../tasks/framework/version_group/index.html | 796 +
.../java-sdk/tasks/gateway/architecture/index.html | 642 +
.../java-sdk/tasks/gateway/dubbo/index.html | 657 +
.../mannual/java-sdk/tasks/gateway/index.html | 636 +
.../mannual/java-sdk/tasks/gateway/index.xml | 15 +
.../java-sdk/tasks/gateway/triple/index.html | 742 +
zh-cn/overview/mannual/java-sdk/tasks/index.html | 636 +
zh-cn/overview/mannual/java-sdk/tasks/index.xml | 1 +
.../tasks/mesh/bookinfo-proxyless/index.html | 636 +
.../tasks/mesh/bookinfo-proxyless/index.xml | 1 +
.../mesh/bookinfo-proxyless/security/index.html | 636 +
.../mesh/bookinfo-proxyless/security/index.xml | 4 +
.../security/request-routing/index.html | 699 +
.../mesh/bookinfo-proxyless/traffic/index.html | 636 +
.../mesh/bookinfo-proxyless/traffic/index.xml | 4 +
.../traffic/request-routing/index.html | 699 +
.../tasks/mesh/bookinfo-sidecar/index.html | 636 +
.../java-sdk/tasks/mesh/bookinfo-sidecar/index.xml | 1 +
.../mesh/bookinfo-sidecar/security/index.html | 636 +
.../tasks/mesh/bookinfo-sidecar/security/index.xml | 4 +
.../security/request-routing/index.html | 699 +
.../tasks/mesh/bookinfo-sidecar/traffic/index.html | 636 +
.../tasks/mesh/bookinfo-sidecar/traffic/index.xml | 4 +
.../traffic/request-routing/index.html | 699 +
.../mannual/java-sdk/tasks/mesh/index.html | 636 +
.../overview/mannual/java-sdk/tasks/mesh/index.xml | 1 +
.../tasks/mesh/migration/deploy-on-k8s/index.html | 820 +
.../tasks/mesh/migration/dubbo-mesh/index.html | 763 +
.../java-sdk/tasks/mesh/migration/index.html | 636 +
.../java-sdk/tasks/mesh/migration/index.xml | 13 +
.../tasks/mesh/migration/proxyless/index.html | 761 +
.../tasks/observability/console/index.html | 649 +
.../tasks/observability/grafana/index.html | 669 +
.../java-sdk/tasks/observability/index.html | 636 +
.../mannual/java-sdk/tasks/observability/index.xml | 16 +
.../tasks/observability/logging/index.html | 848 +
.../tasks/observability/prometheus/index.html | 660 +
.../tasks/observability/tracing/index.html | 636 +
.../java-sdk/tasks/observability/tracing/index.xml | 25 +
.../tasks/observability/tracing/otlp/index.html | 690 +
.../observability/tracing/skywalking/index.html | 664 +
.../tasks/observability/tracing/tracing/index.html | 692 +
.../tasks/observability/tracing/zipkin/index.html | 689 +
.../mannual/java-sdk/tasks/protocol/index.html | 2 +
.../java-sdk/tasks/protocols/dubbo/index.html | 666 +
.../mannual/java-sdk/tasks/protocols/index.html | 636 +
.../mannual/java-sdk/tasks/protocols/index.xml | 13 +
.../java-sdk/tasks/protocols/protocol/index.html | 705 +
.../java-sdk/tasks/protocols/rest/index.html | 738 +
.../tasks/protocols/triple/grpc/index.html | 642 +
.../java-sdk/tasks/protocols/triple/idl/index.html | 797 +
.../java-sdk/tasks/protocols/triple/index.html | 636 +
.../java-sdk/tasks/protocols/triple/index.xml | 28 +
.../tasks/protocols/triple/interface/index.html | 688 +
.../tasks/protocols/triple/streaming/index.html | 813 +
.../adaptive-concurrency-control/index.html | 641 +
.../rate-limit/concurrency-control/index.html | 654 +
.../mannual/java-sdk/tasks/rate-limit/index.html | 636 +
.../mannual/java-sdk/tasks/rate-limit/index.xml | 22 +
.../java-sdk/tasks/rate-limit/sentinel/index.html | 701 +
.../java-sdk/tasks/security/auth/index.html | 639 +
.../java-sdk/tasks/security/class-check/index.html | 710 +
.../mannual/java-sdk/tasks/security/index.html | 636 +
.../mannual/java-sdk/tasks/security/index.xml | 29 +
.../mannual/java-sdk/tasks/security/tls/index.html | 654 +
.../tasks/security/token-authorization/index.html | 646 +
.../java-sdk/tasks/service-discovery/index.html | 636 +
.../java-sdk/tasks/service-discovery/index.xml | 18 +
.../tasks/service-discovery/kubernetes/index.html | 636 +
.../tasks/service-discovery/loadbalance/index.html | 684 +
.../tasks/service-discovery/nacos/index.html | 705 +
.../tasks/service-discovery/registry/index.html | 694 +
.../tasks/service-discovery/zookeeper/index.html | 707 +
.../tasks/traffic-management/accesslog/index.html | 681 +
.../traffic-management/architecture/index.html | 644 +
.../tasks/traffic-management/arguments/index.html | 685 +
.../tasks/traffic-management/host/index.html | 686 +
.../java-sdk/tasks/traffic-management/index.html | 636 +
.../java-sdk/tasks/traffic-management/index.xml | 84 +
.../tasks/traffic-management/isolation/index.html | 705 +
.../tasks/traffic-management/mock/index.html | 708 +
.../tasks/traffic-management/region/index.html | 644 +
.../tasks/traffic-management/retry/index.html | 710 +
.../tasks/traffic-management/route/index.html | 637 +
.../tasks/traffic-management/timeout/index.html | 644 +
.../tasks/traffic-management/weight/index.html | 685 +
.../trasaction/distributed-transaction/index.html | 694 +
.../mannual/java-sdk/tasks/trasaction/index.html | 636 +
.../mannual/java-sdk/tasks/trasaction/index.xml | 8 +
.../mannual/java-sdk/tasks/troubleshoot/index.html | 636 +
.../mannual/java-sdk/tasks/troubleshoot/index.xml | 19 +
.../tasks/troubleshoot/no-provider/index.html | 864 +
.../tasks/troubleshoot/profiler/index.html | 765 +
.../tasks/troubleshoot/request-failed/index.html | 688 +
.../tasks/troubleshoot/start-failed/index.html | 766 +
.../2.x-to-3.x-compatibility-guide/index.html | 704 +-
.../java-sdk/upgrades-and-compatibility/index.html | 689 +-
.../migration-triple/index.html | 841 +-
.../protobufinterface/index.html | 716 +-
.../serialization-upgrade/index.html | 691 +-
.../service-discovery/index.html | 689 +-
.../migration-service-discovery/index.html | 706 +-
.../service-discovery-rule/index.html | 755 +-
.../service-discovery-samples/index.html | 708 +-
zh-cn/overview/mannual/java-sdk/version/index.html | 4 +-
.../overview/mannual/java-sdk/versions/index.html | 636 +
zh-cn/overview/mannual/nodejs-sdk/index.html | 636 +
zh-cn/overview/mannual/nodejs-sdk/index.xml | 7 +
.../mannual/nodejs-sdk/quick-start/index.html | 723 +
zh-cn/overview/mannual/rust-sdk/index.html | 1169 +-
zh-cn/overview/mannual/rust-sdk/index.xml | 838 +-
.../rust-sdk/java-interoperability/index.html | 1169 +-
.../mannual/rust-sdk/quick-start/index.html | 1171 +-
.../mannual/rust-sdk/router-module/index.html | 1169 +-
.../mannual/rust-sdk/service-discovery/index.html | 1169 +-
.../overview/mannual/rust-sdk/streaming/index.html | 1169 +-
.../mannual/rust-sdk/unix-transport/index.html | 1169 +-
zh-cn/overview/mannual/web-sdk/index.html | 636 +
zh-cn/overview/mannual/web-sdk/index.xml | 6 +
.../mannual/web-sdk/quick-start/index.html | 779 +
zh-cn/overview/notices/admin/index.html | 1169 +-
zh-cn/overview/notices/index.html | 1169 +-
zh-cn/overview/notices/index.xml | 191 +-
zh-cn/overview/notices/log4j/index.html | 1169 +-
zh-cn/overview/notices/protocol/index.html | 1169 +-
zh-cn/overview/notices/registry/index.html | 1169 +-
zh-cn/overview/notices/serialization/index.html | 1169 +-
zh-cn/overview/quickstart/go/index.html | 689 +-
zh-cn/overview/quickstart/index.html | 689 +-
zh-cn/overview/quickstart/java/index.html | 689 +-
zh-cn/overview/quickstart/nodejs/index.html | 2 +
zh-cn/overview/quickstart/rust/index.html | 831 +-
.../reference/Metrics/standard_metrics/index.html | 2 +
.../reference/admin/architecture/index.html | 897 +-
.../reference/admin/documentation/index.html | 689 +-
zh-cn/overview/reference/admin/index.html | 689 +-
zh-cn/overview/reference/admin/mock/index.html | 770 +-
zh-cn/overview/reference/admin/search/index.html | 725 +-
zh-cn/overview/reference/admin/test/index.html | 871 +-
zh-cn/overview/reference/erlang-sdk/index.html | 636 +
zh-cn/overview/reference/erlang-sdk/index.xml | 10 +
.../reference/erlang-sdk/quick-start/index.html | 652 +
.../reference/erlang-sdk/reference/index.html | 644 +
.../reference/erlang-sdk/serialization/index.html | 640 +
.../reference/erlang-sdk/service/index.html | 644 +
zh-cn/overview/reference/index.html | 1178 +-
zh-cn/overview/reference/index.xml | 9 +-
.../reference/integrations/grafana/index.html | 1169 +-
.../reference/integrations/higress/index.html | 640 +
zh-cn/overview/reference/integrations/index.html | 1169 +-
zh-cn/overview/reference/integrations/index.xml | 119 +-
.../reference/integrations/nacos/index.html | 648 +
.../reference/integrations/prometheus/index.html | 1169 +-
.../reference/integrations/skywalking/index.html | 1169 +-
.../reference/integrations/zipkin/index.html | 1169 +-
.../reference/integrations/zookeeper/index.html | 653 +
zh-cn/overview/reference/metrics/index.html | 1169 +-
zh-cn/overview/reference/metrics/index.xml | 808 +-
.../reference/metrics/standard_metrics/index.html | 1175 +-
.../reference/pixiu/dev/dubbo-pilot/index.html | 707 +
.../pixiu/dev/filter-extension/index.html | 727 +
zh-cn/overview/reference/pixiu/dev/index.html | 636 +
zh-cn/overview/reference/pixiu/dev/index.xml | 11 +
zh-cn/overview/reference/pixiu/dev/trie/index.html | 664 +
zh-cn/overview/reference/pixiu/index.html | 636 +
zh-cn/overview/reference/pixiu/index.xml | 1 +
.../reference/pixiu/overview/faq/index.html | 638 +
zh-cn/overview/reference/pixiu/overview/index.html | 636 +
zh-cn/overview/reference/pixiu/overview/index.xml | 12 +
.../pixiu/overview/terminology/index.html | 636 +
.../pixiu/overview/what-is-pixiu/index.html | 638 +
.../reference/pixiu/user/adapter/dubbo/index.html | 636 +
.../reference/pixiu/user/adapter/index.html | 636 +
.../reference/pixiu/user/adapter/index.xml | 1 +
.../pixiu/user/adapter/springcloud/index.html | 636 +
.../http-to-dubbo-default-stragety/index.html | 636 +
.../reference/pixiu/user/appendix/index.html | 636 +
.../reference/pixiu/user/appendix/index.xml | 10 +
.../reference/pixiu/user/configurations/index.html | 709 +
.../reference/pixiu/user/deployment/index.html | 645 +
.../pixiu/user/httpfilter/dubbo/index.html | 697 +
.../pixiu/user/httpfilter/hystrix/index.html | 636 +
.../reference/pixiu/user/httpfilter/index.html | 636 +
.../reference/pixiu/user/httpfilter/index.xml | 1 +
.../pixiu/user/httpfilter/ratelimit/index.html | 636 +
zh-cn/overview/reference/pixiu/user/index.html | 636 +
zh-cn/overview/reference/pixiu/user/index.xml | 18 +
.../reference/pixiu/user/listener/http/index.html | 654 +
.../reference/pixiu/user/listener/http2/index.html | 636 +
.../reference/pixiu/user/listener/index.html | 636 +
.../reference/pixiu/user/listener/index.xml | 5 +
.../reference/pixiu/user/listener/tcp/index.html | 636 +
.../pixiu/user/listener/triple/index.html | 636 +
.../pixiu/user/networkfilter/dubbo/index.html | 636 +
.../pixiu/user/networkfilter/grpc/index.html | 687 +
.../pixiu/user/networkfilter/http/index.html | 636 +
.../reference/pixiu/user/networkfilter/index.html | 636 +
.../reference/pixiu/user/networkfilter/index.xml | 2 +
.../reference/pixiu/user/quality/index.html | 636 +
.../reference/pixiu/user/quality/index.xml | 1 +
.../pixiu/user/quality/performance/index.html | 636 +
.../pixiu/user/quality/stability/index.html | 636 +
.../reference/pixiu/user/quickstart/index.html | 742 +
.../pixiu/user/samples/http_proxy/index.html | 671 +
.../pixiu/user/samples/http_to_dubbo/index.html | 636 +
.../reference/pixiu/user/samples/https/index.html | 636 +
.../reference/pixiu/user/samples/index.html | 636 +
.../reference/pixiu/user/samples/index.xml | 4 +
.../overview/reference/proposals/admin/index.html | 1171 +-
.../proposals/heuristic-flow-control/index.html | 1169 +-
zh-cn/overview/reference/proposals/index.html | 1169 +-
zh-cn/overview/reference/proposals/index.xml | 1716 +-
.../reference/proposals/metrics/index.html | 1169 +-
.../reference/proposals/protocol-http/index.html | 1169 +-
.../proposals/registry-config-meta/index.html | 1169 +-
.../proposals/service-discovery/index.html | 1169 +-
.../support-more-content-types/index.html | 1171 +-
.../reference/protoc-installation/index.html | 645 +
zh-cn/overview/reference/protocols/http/index.html | 1170 +-
zh-cn/overview/reference/protocols/index.html | 1169 +-
zh-cn/overview/reference/protocols/index.xml | 1121 +-
zh-cn/overview/reference/protocols/tcp/index.html | 1169 +-
.../reference/protocols/triple-spec/index.html | 1169 +-
.../overview/reference/protocols/triple/index.html | 1169 +-
zh-cn/overview/reference/setup/index.html | 1169 +-
zh-cn/overview/reference/setup/index.xml | 160 +-
zh-cn/overview/reference/setup/install/index.html | 1169 +-
.../overview/tasks/deploy/deploy-on-vm/index.html | 794 +-
zh-cn/overview/tasks/deploy/index.html | 689 +-
zh-cn/overview/tasks/develop/index.html | 689 +-
zh-cn/overview/tasks/develop/template/index.html | 731 +-
zh-cn/overview/tasks/ecosystem/gateway/index.html | 822 +-
.../overview/tasks/ecosystem/rate-limit/index.html | 4 +-
.../overview/tasks/extensibility/filter/index.html | 781 +-
zh-cn/overview/tasks/extensibility/index.html | 689 +-
.../tasks/extensibility/protocol/index.html | 854 +-
.../tasks/extensibility/registry/index.html | 689 +-
.../overview/tasks/extensibility/router/index.html | 837 +-
zh-cn/overview/tasks/index.html | 689 +-
.../tasks/mesh/bookinfo-proxyless/index.html | 689 +-
.../mesh/bookinfo-proxyless/security/index.html | 689 +-
.../security/request-routing/index.html | 752 +-
.../mesh/bookinfo-proxyless/traffic/index.html | 689 +-
.../traffic/request-routing/index.html | 752 +-
.../tasks/mesh/bookinfo-sidecar/index.html | 689 +-
.../mesh/bookinfo-sidecar/security/index.html | 689 +-
.../security/request-routing/index.html | 752 +-
.../tasks/mesh/bookinfo-sidecar/traffic/index.html | 689 +-
.../traffic/request-routing/index.html | 752 +-
zh-cn/overview/tasks/mesh/index.html | 689 +-
.../tasks/mesh/migration/deploy-on-k8s/index.html | 873 +-
.../tasks/mesh/migration/dubbo-mesh/index.html | 816 +-
zh-cn/overview/tasks/mesh/migration/index.html | 689 +-
.../tasks/mesh/migration/proxyless/index.html | 814 +-
.../tasks/observability/grafana/index.html | 714 +-
zh-cn/overview/tasks/observability/index.html | 689 +-
.../tasks/observability/prometheus/index.html | 717 +-
.../tasks/observability/tracing/index.html | 764 +-
.../tasks/observability/tracing/otlp/index.html | 791 +-
.../observability/tracing/skywalking/index.html | 735 +-
.../tasks/observability/tracing/zipkin/index.html | 790 +-
zh-cn/overview/tasks/protocols/dubbo/index.html | 689 +-
zh-cn/overview/tasks/protocols/index.html | 689 +-
.../tasks/protocols/multi-protocols/index.html | 781 +-
zh-cn/overview/tasks/rate-limit/hystrix/index.html | 783 +-
zh-cn/overview/tasks/rate-limit/index.html | 689 +-
.../tasks/rate-limit/resilience4j/index.html | 689 +-
.../overview/tasks/rate-limit/sentinel/index.html | 725 +-
.../tasks/traffic-management/accesslog/index.html | 734 +-
.../tasks/traffic-management/arguments/index.html | 738 +-
.../tasks/traffic-management/host/index.html | 739 +-
zh-cn/overview/tasks/traffic-management/index.html | 697 +-
.../tasks/traffic-management/isolation/index.html | 754 +-
.../tasks/traffic-management/mock/index.html | 761 +-
.../tasks/traffic-management/region/index.html | 697 +-
.../tasks/traffic-management/retry/index.html | 763 +-
.../tasks/traffic-management/timeout/index.html | 697 +-
.../tasks/traffic-management/weight/index.html | 738 +-
zh-cn/overview/tasks/troubleshoot/index.html | 689 +-
.../tasks/troubleshoot/no-provider/index.html | 917 +-
.../tasks/troubleshoot/request-failed/index.html | 741 +-
.../tasks/troubleshoot/start-failed/index.html | 819 +-
.../overview/what/advantages/governance/index.html | 1169 +-
zh-cn/overview/what/advantages/index.html | 1169 +-
zh-cn/overview/what/advantages/index.xml | 241 +-
.../what/advantages/performance/index.html | 1169 +-
.../what/advantages/production-ready/index.html | 1169 +-
.../overview/what/advantages/usability/index.html | 1169 +-
.../what/core-features/ecosystem/index.html | 636 +
.../what/core-features/extensibility/index.html | 636 +
zh-cn/overview/what/core-features/index.html | 636 +
zh-cn/overview/what/core-features/index.xml | 52 +
.../what/core-features/load-balance/index.html | 639 +
zh-cn/overview/what/core-features/more/index.html | 636 +
.../what/core-features/observability/index.html | 636 +
.../what/core-features/protocols/index.html | 636 +
.../what/core-features/security/index.html | 637 +
.../what/core-features/service-definition.md.bak | 497 +
.../core-features/service-definition/index.html | 666 +
.../core-features/service-discovery/index.html | 637 +
.../what/core-features/service-mesh/index.html | 636 +
.../traffic/circuit-breaking/index.html | 672 +
.../traffic/condition-rule/index.html | 674 +
.../traffic/configuration-rule/index.html | 678 +
.../overview/what/core-features/traffic/index.html | 704 +
.../overview/what/core-features/traffic/index.xml | 42 +
.../core-features/traffic/introduction/index.html | 704 +
.../core-features/traffic/mesh-rule/index.html | 935 ++
.../core-features/traffic/script-rule/index.html | 683 +
.../what/core-features/traffic/tag-rule/index.html | 682 +
zh-cn/overview/what/ecosystem/index.html | 4 +-
.../ecosystem/metadata-center/redis/index.html | 4 +-
.../what/ecosystem/rate-limit/hystrix/index.html | 4 +-
.../overview/what/ecosystem/rate-limit/index.html | 4 +-
.../what/ecosystem/rate-limit/sentinel/index.html | 4 +-
.../what/ecosystem/registry/redis/index.html | 4 +-
.../what/ecosystem/serialization/avro/index.html | 4 +-
.../ecosystem/serialization/fastjson/index.html | 4 +-
.../ecosystem/serialization/fastjson2/index.html | 4 +-
.../what/ecosystem/serialization/fst/index.html | 4 +-
.../what/ecosystem/serialization/gson/index.html | 4 +-
.../ecosystem/serialization/hessian/index.html | 4 +-
.../what/ecosystem/serialization/kryo/index.html | 4 +-
.../ecosystem/serialization/msgpack/index.html | 4 +-
zh-cn/overview/what/index.html | 1171 +-
zh-cn/overview/what/index.xml | 173 +-
zh-cn/overview/what/overview/index.html | 1171 +-
zh-cn/overview/what/xyz-difference/index.html | 1171 +-
zh-cn/sitemap.xml | 2 +-
zh-cn/tags/apachecon2023/index.html | 18 +-
zh-cn/tags/apachecon2023/index.xml | 946 +-
zh-cn/tags/browser/index.html | 18 +-
zh-cn/tags/browser/index.xml | 189 +-
zh-cn/tags/dubbo-aot/index.html | 18 +-
zh-cn/tags/dubbo-aot/index.xml | 174 +-
zh-cn/tags/dubbo-js/index.html | 18 +-
zh-cn/tags/dubbo-js/index.xml | 318 +-
zh-cn/tags/ecosystem/index.html | 18 +-
zh-cn/tags/ecosystem/index.xml | 284 +-
zh-cn/tags/go/index.html | 18 +-
zh-cn/tags/go/index.xml | 5484 +------
zh-cn/tags/graalvm/index.html | 18 +-
zh-cn/tags/graalvm/index.xml | 238 +-
zh-cn/tags/hystrix/index.html | 18 +
zh-cn/tags/hystrix/index.xml | 8 +
zh-cn/tags/index.html | 18 +-
zh-cn/tags/index.xml | 2 +-
zh-cn/tags/java/index.html | 18 +-
zh-cn/tags/java/index.xml | 16170 +------------------
zh-cn/tags/metrics/index.html | 18 +-
zh-cn/tags/metrics/index.xml | 241 +-
zh-cn/tags/native-image/index.html | 18 +-
zh-cn/tags/native-image/index.xml | 410 +-
zh-cn/tags/node.js/index.html | 20 +-
zh-cn/tags/node.js/index.xml | 334 +-
zh-cn/tags/observability/index.html | 18 +-
zh-cn/tags/observability/index.xml | 241 +-
zh-cn/tags/opensergo/index.html | 18 +-
zh-cn/tags/opensergo/index.xml | 155 +-
zh-cn/tags/pixiu/index.html | 18 +-
zh-cn/tags/pixiu/index.xml | 338 +-
zh-cn/tags/proposals/index.html | 18 +-
zh-cn/tags/proposals/index.xml | 161 +-
zh-cn/tags/protocol/index.html | 18 +-
zh-cn/tags/protocol/index.xml | 92 +-
zh-cn/tags/release-notes/index.html | 18 +-
zh-cn/tags/release-notes/index.xml | 856 +-
zh-cn/tags/resilience4j/index.html | 18 +
zh-cn/tags/resilience4j/index.xml | 2 +
zh-cn/tags/rust/index.html | 18 +-
zh-cn/tags/rust/index.xml | 202 +-
zh-cn/tags/seata/index.html | 18 +-
zh-cn/tags/seata/index.xml | 131 +-
zh-cn/tags/spring-cloud/index.html | 18 +-
zh-cn/tags/spring-cloud/index.xml | 153 +-
zh-cn/tags/tracing/index.html | 18 +-
zh-cn/tags/tracing/index.xml | 241 +-
zh-cn/tags/triple/index.html | 18 +-
zh-cn/tags/triple/index.xml | 92 +-
zh-cn/tags/web/index.html | 18 +-
zh-cn/tags/web/index.xml | 189 +-
"zh-cn/tags/\345\215\217\350\256\256/index.html" | 18 +
"zh-cn/tags/\345\215\217\350\256\256/index.xml" | 11 +
.../index.html" | 18 +-
.../index.xml" | 163 +-
.../index.html" | 18 +-
.../index.xml" | 1951 +--
.../index.html" | 18 +
.../index.xml" | 21 +
.../index.html" | 18 +-
.../index.xml" | 12211 +-------------
"zh-cn/tags/\347\224\237\346\200\201/index.html" | 18 +-
"zh-cn/tags/\347\224\237\346\200\201/index.xml" | 3668 +----
.../index.html" | 18 +-
.../index.xml" | 1288 +-
"zh-cn/tags/\347\275\221\345\205\263/index.html" | 18 +-
"zh-cn/tags/\347\275\221\345\205\263/index.xml" | 881 +-
.../index.html" | 18 +
.../index.xml" | 9 +
zh-cn/users/index.html | 22 +-
zh-cn/users/index.xml | 2 +-
.../dubbo-go-pixiu/dev/dubbo-pilot/index.html | 4 +-
.../dubbo-go-pixiu/dev/filter-extension/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/dev/trie/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/overview/faq/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/overview/index.html | 4 +-
.../dubbo-go-pixiu/overview/terminology/index.html | 4 +-
.../overview/what-is-pixiu/index.html | 4 +-
.../dubbo-go-pixiu/user/adapter/dubbo/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/user/adapter/index.html | 4 +-
.../user/adapter/springcloud/index.html | 4 +-
.../http-to-dubbo-default-stragety/index.html | 4 +-
.../dubbo-go-pixiu/user/appendix/index.html | 4 +-
.../dubbo-go-pixiu/user/configurations/index.html | 4 +-
.../dubbo-go-pixiu/user/deployment/index.html | 4 +-
.../user/httpfilter/dubbo/index.html | 4 +-
.../user/httpfilter/hystrix/index.html | 4 +-
.../dubbo-go-pixiu/user/httpfilter/index.html | 4 +-
.../user/httpfilter/ratelimit/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/user/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/http/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/http2/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/tcp/index.html | 4 +-
.../dubbo-go-pixiu/user/listener/triple/index.html | 4 +-
.../user/networkfilter/dubbo/index.html | 4 +-
.../user/networkfilter/grpc/index.html | 4 +-
.../user/networkfilter/http/index.html | 4 +-
.../dubbo-go-pixiu/user/networkfilter/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/user/quality/index.html | 4 +-
.../user/quality/performance/index.html | 4 +-
.../user/quality/stability/index.html | 4 +-
.../dubbo-go-pixiu/user/quickstart/index.html | 4 +-
.../user/samples/http_proxy/index.html | 4 +-
.../user/samples/http_to_dubbo/index.html | 4 +-
.../dubbo-go-pixiu/user/samples/https/index.html | 4 +-
zh/docs3-v2/dubbo-go-pixiu/user/samples/index.html | 4 +-
zh/docs3-v2/erlang-sdk/index.html | 4 +-
zh/docs3-v2/erlang-sdk/quick-start/index.html | 4 +-
zh/docs3-v2/erlang-sdk/reference/index.html | 4 +-
zh/docs3-v2/erlang-sdk/serialization/index.html | 4 +-
zh/docs3-v2/erlang-sdk/service/index.html | 4 +-
.../golang-sdk/preface/3.0_feature/index.html | 4 +-
.../golang-sdk/preface/concept/generic/index.html | 4 +-
.../preface/design/aop_and_extension/index.html | 4 +-
.../preface/design/app_and_interface/index.html | 4 +-
.../preface/design/architecture/index.html | 4 +-
zh/docs3-v2/golang-sdk/preface/index.html | 4 +-
.../golang-sdk/refer/compatible_version/index.html | 4 +-
zh/docs3-v2/golang-sdk/sourcecode/index.html | 4 +-
.../golang-sdk/sourcecode/protocol/index.html | 4 +-
.../golang-sdk/sourcecode/registry/index.html | 4 +-
.../golang-sdk/tutorial/debugging/index.html | 4 +-
.../develop/config-center/remote_config/index.html | 4 +-
.../tutorial/develop/features/generic-2/index.html | 4 +-
.../tutorial/develop/features/generic/index.html | 4 +-
.../develop/interflow/call_grpc/index.html | 4 +-
.../develop/interflow/call_java/index.html | 4 +-
.../develop/registry/multi_registry/index.html | 4 +-
.../tutorial/develop/registry/nacos-2/index.html | 4 +-
.../tutorial/develop/registry/nacos/index.html | 4 +-
.../tutorial/develop/registry/zookeeper/index.html | 4 +-
.../governance/health/start-check/index.html | 4 +-
.../governance/monitor/rpc_metrics/index.html | 4 +-
.../governance/service-mesh/deploy/index.html | 4 +-
.../tutorial/governance/service-mesh/index.html | 4 +-
.../governance/service-mesh/istio/index.html | 4 +-
.../service-mesh/pixiu/http_triple/index.html | 4 +-
.../pixiu/pixiu-nacos-triple/index.html | 4 +-
.../service-mesh/proxyless_service_mesh/index.html | 4 +-
.../service-mesh/traffic_management/index.html | 4 +-
.../traffic/graceful_shutdown/index.html | 4 +-
.../governance/traffic/mesh_router/index.html | 4 +-
.../observability/index.html | 4 +-
.../observability/logging/index.html | 4 +-
.../observability/meter/index.html | 4 +-
.../observability/tracing/index.html | 4 +-
.../advanced-features-and-usage/others/index.html | 4 +-
.../performance/concurrency-control/index.html | 4 +-
.../performance/config-connections/index.html | 4 +-
.../performance/lazy-connect/index.html | 4 +-
.../performance/loadbalance/index.html | 4 +-
.../performance/profiler/index.html | 4 +-
.../performance/reference-config-cache/index.html | 4 +-
.../performance/result-cache/index.html | 4 +-
.../performance/router-snapshot/index.html | 4 +-
.../performance/serialization/index.html | 4 +-
.../performance/stickiness/index.html | 4 +-
.../performance/support-graalvm/index.html | 4 +-
.../threading-model/consumer/index.html | 4 +-
.../security/auth/index.html | 4 +-
.../security/class-check/index.html | 4 +-
.../security/tls/index.html | 4 +-
.../security/token-authorization/index.html | 4 +-
.../service/async-call/index.html | 4 +-
.../service/attachment/index.html | 4 +-
.../service/callback-parameter/index.html | 4 +-
.../service/distributed-transaction/index.html | 4 +-
.../service/echo-service/index.html | 4 +-
.../service/events-notify/index.html | 4 +-
.../service/explicit-target/index.html | 4 +-
.../service/generic-reference/index.html | 4 +-
.../service/generic-service/index.html | 4 +-
.../service/group-merger/index.html | 4 +-
.../service/local-call/index.html | 4 +-
.../service/local-mock/index.html | 4 +-
.../service/local-stub/index.html | 4 +-
.../service/multi-protocols/index.html | 4 +-
.../service/multi-versions/index.html | 4 +-
.../service/parameter-validation/index.html | 4 +-
.../service/reactive/index.html | 4 +-
.../service/service-downgrade/index.html | 4 +-
.../service/service-group/index.html | 4 +-
.../service/specify-ip/index.html | 4 +-
.../service/version_group/index.html | 2 +
.../v3.2_rest_protocol_design/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/17/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/18/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/19/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/20/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/21/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/22/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/23/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/24/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/25/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/26/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/27/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/28/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/29/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/99/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/0/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/17/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/18/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/19/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/20/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/21/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/22/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/26/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/27/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/28/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/29/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/30/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/31/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/32/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/33/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/34/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/35/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/36/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/37/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/38/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/39/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/40/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/41/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/42/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/17/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/18/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/19/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/20/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/17/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/18/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/19/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/20/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/21/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/17/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/18/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/20/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/21/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/22/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/23/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/24/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/25/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/26/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/27/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/28/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/29/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/30/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/31/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/32/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/33/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/34/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/35/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/36/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/37/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/38/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/39/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/40/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/41/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/42/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/43/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/10/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/11/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/12/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/13/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/14/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/15/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/16/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/8/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/9/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/5/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/6/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/7/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/81/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/81/2/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/81/3/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/81/4/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/81/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/99/0/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/99/1/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/99/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/index.html | 4 +-
zh/docs3-v2/java-sdk/faq/intro/index.html | 4 +-
.../reference-manual/config/annotation/index.html | 4 +-
.../reference-manual/config/api/index.html | 4 +-
.../java-sdk/reference-manual/config/index.html | 4 +-
.../reference-manual/config/overview/index.html | 4 +-
.../reference-manual/config/xml/index.html | 4 +-
.../metadata-center/redis/index.html | 4 +-
.../reference-manual/protocol/hessian/index.html | 4 +-
.../java-sdk/reference-manual/protocol/index.html | 4 +-
.../reference-manual/protocol/rmi/index.html | 4 +-
.../protocol/triple/3.3/index.html | 2 +
.../protocol/triple/migration/index.html | 4 +-
.../protocol/triple/overview/index.html | 4 +-
.../protocol/triple/pojo/index.html | 4 +-
.../protocol/triple/rest/manual/index.html | 2 +
.../protocol/triple/streaming/index.html | 4 +-
.../protocol/webservice/index.html | 4 +-
.../reference-manual/qos/command/index.html | 4 +-
.../qos/logger-management/index.html | 4 +-
.../java-sdk/reference-manual/qos/probe/index.html | 4 +-
.../reference-manual/qos/profiler/index.html | 4 +-
.../qos/router-snapshot/index.html | 4 +-
.../reference-manual/qos/security/index.html | 4 +-
.../qos/service-management/index.html | 4 +-
.../reference-manual/registry/multicast/index.html | 4 +-
.../reference-manual/registry/redis/index.html | 4 +-
.../spi/description/dubbo-spi/index.html | 4 +-
.../2.x-to-3.x-compatibility-guide/index.html | 4 +-
.../3.0-to-3.1-compatibility-guide/index.html | 4 +-
.../3.1-to-3.2-compatibility-guide/index.html | 4 +-
.../3.2-to-3.3-compatibility-guide/index.html | 4 +-
.../java-sdk/upgrades-and-compatibility/index.html | 4 +-
.../migration-triple/index.html | 4 +-
.../serialization-upgrade/index.html | 4 +-
.../service-discovery-rule/index.html | 4 +-
.../service-discovery-samples/index.html | 4 +-
zh/docs3-v2/java-sdk/version/index.html | 4 +-
zh/docs3-v2/rust-sdk/quick-start/index.html | 4 +-
.../examples/fault-tolerent-strategy/index.html | 4 +-
zh/overview/core-features/extensibility/index.html | 4 +-
zh/overview/core-features/index.html | 4 +-
zh/overview/core-features/load-balance/index.html | 4 +-
zh/overview/core-features/more/index.html | 4 +-
zh/overview/core-features/observability/index.html | 4 +-
zh/overview/core-features/protocols/index.html | 4 +-
zh/overview/core-features/security/index.html | 4 +-
.../core-features/service-definition/index.html | 4 +-
.../core-features/service-discovery/index.html | 4 +-
zh/overview/core-features/service-mesh/index.html | 4 +-
.../traffic/condition-rule/index.html | 4 +-
.../traffic/configuration-rule/index.html | 4 +-
zh/overview/core-features/traffic/index.html | 4 +-
.../core-features/traffic/script-rule/index.html | 4 +-
.../core-features/traffic/tag-rule/index.html | 4 +-
zh/overview/quickstart/go/index.html | 4 +-
zh/overview/quickstart/index.html | 4 +-
zh/overview/quickstart/java/index.html | 4 +-
zh/overview/quickstart/nodejs/index.html | 2 +
zh/overview/quickstart/rust/index.html | 4 +-
.../reference/admin/architecture/index.html | 2 +
.../reference/admin/documentation/index.html | 2 +
zh/overview/reference/admin/index.html | 2 +
zh/overview/reference/admin/mock/index.html | 2 +
zh/overview/reference/admin/search/index.html | 2 +
zh/overview/reference/admin/test/index.html | 2 +
.../reference/integrations/skywalking/index.html | 4 +-
zh/overview/tasks/deploy/deploy-on-vm/index.html | 4 +-
zh/overview/tasks/deploy/index.html | 4 +-
zh/overview/tasks/develop/async/index.html | 4 +-
zh/overview/tasks/develop/context/index.html | 4 +-
zh/overview/tasks/develop/generic/index.html | 4 +-
zh/overview/tasks/develop/index.html | 4 +-
zh/overview/tasks/develop/template/index.html | 4 +-
zh/overview/tasks/develop/version_group/index.html | 4 +-
zh/overview/tasks/ecosystem/gateway/index.html | 4 +-
zh/overview/tasks/extensibility/filter/index.html | 4 +-
zh/overview/tasks/extensibility/index.html | 4 +-
.../tasks/extensibility/protocol/index.html | 4 +-
.../tasks/extensibility/registry/index.html | 4 +-
zh/overview/tasks/extensibility/router/index.html | 4 +-
zh/overview/tasks/index.html | 4 +-
.../tasks/mesh/bookinfo-proxyless/index.html | 4 +-
.../mesh/bookinfo-proxyless/security/index.html | 4 +-
.../security/request-routing/index.html | 4 +-
.../mesh/bookinfo-proxyless/traffic/index.html | 4 +-
.../traffic/request-routing/index.html | 4 +-
zh/overview/tasks/mesh/bookinfo-sidecar/index.html | 4 +-
.../mesh/bookinfo-sidecar/security/index.html | 4 +-
.../security/request-routing/index.html | 4 +-
.../tasks/mesh/bookinfo-sidecar/traffic/index.html | 4 +-
.../traffic/request-routing/index.html | 4 +-
zh/overview/tasks/mesh/index.html | 4 +-
.../tasks/mesh/migration/deploy-on-k8s/index.html | 4 +-
.../tasks/mesh/migration/dubbo-mesh/index.html | 4 +-
zh/overview/tasks/mesh/migration/index.html | 4 +-
.../tasks/mesh/migration/proxyless/index.html | 4 +-
zh/overview/tasks/observability/grafana/index.html | 4 +-
zh/overview/tasks/observability/index.html | 4 +-
.../tasks/observability/prometheus/index.html | 4 +-
zh/overview/tasks/observability/tracing/index.html | 4 +-
.../tasks/observability/tracing/otlp/index.html | 4 +-
.../observability/tracing/skywalking/index.html | 4 +-
.../tasks/observability/tracing/zipkin/index.html | 4 +-
zh/overview/tasks/protocols/dubbo/index.html | 2 +
zh/overview/tasks/protocols/grpc/index.html | 4 +-
zh/overview/tasks/protocols/index.html | 4 +-
.../tasks/protocols/multi-protocols/index.html | 4 +-
zh/overview/tasks/rate-limit/hystrix/index.html | 2 +
zh/overview/tasks/rate-limit/index.html | 2 +
.../tasks/rate-limit/resilience4j/index.html | 2 +
zh/overview/tasks/rate-limit/sentinel/index.html | 2 +
.../tasks/traffic-management/accesslog/index.html | 4 +-
.../tasks/traffic-management/arguments/index.html | 4 +-
.../tasks/traffic-management/host/index.html | 4 +-
zh/overview/tasks/traffic-management/index.html | 4 +-
.../tasks/traffic-management/isolation/index.html | 4 +-
.../tasks/traffic-management/mock/index.html | 4 +-
.../tasks/traffic-management/region/index.html | 4 +-
.../tasks/traffic-management/retry/index.html | 4 +-
.../tasks/traffic-management/timeout/index.html | 4 +-
.../tasks/traffic-management/weight/index.html | 4 +-
zh/overview/tasks/troubleshoot/index.html | 4 +-
.../tasks/troubleshoot/no-provider/index.html | 4 +-
.../tasks/troubleshoot/request-failed/index.html | 4 +-
.../tasks/troubleshoot/start-failed/index.html | 4 +-
.../what/ecosystem/gateway/higress/index.html | 4 +-
zh/overview/what/ecosystem/protocol/index.html | 4 +-
zh/overview/what/ecosystem/protocol/rmi/index.html | 4 +-
.../what/ecosystem/serialization/avro/index.html | 4 +-
.../ecosystem/serialization/fastjson/index.html | 4 +-
.../ecosystem/serialization/fastjson2/index.html | 4 +-
.../what/ecosystem/serialization/fst/index.html | 4 +-
.../what/ecosystem/serialization/gson/index.html | 4 +-
.../ecosystem/serialization/hessian/index.html | 4 +-
.../what/ecosystem/serialization/index.html | 4 +-
.../what/ecosystem/serialization/kryo/index.html | 4 +-
.../ecosystem/serialization/msgpack/index.html | 4 +-
zh/overview/what/gateway/apisix/index.html | 4 +-
zh/overview/what/gateway/higress/index.html | 4 +-
4047 files changed, 481980 insertions(+), 619826 deletions(-)
diff --git a/css/language.css b/css/language.css
index ddc8df7f632..74d9b898236 100644
--- a/css/language.css
+++ b/css/language.css
@@ -1,18 +1,67 @@
#language {
width: 100%;
- padding: 4rem;
+ margin-top: 30px;
+ margin-left: 0;
+ margin-right: 0;
display: flex;
flex-direction: column;
- align-items: center;
- background-color: #ededed;
+
+ @media only screen and (min-width: 768px) {
+ width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 60px;
+ }
+
+ @media only screen and (min-width: 1100px) {
+ width: 1016px;
+ }
+
+ h3 {
+ font-size: 1rem;
+ }
+
+ @media only screen and (min-width: 768px) {
+ h3 {
+ font-size: 1.5rem;
+ }
+ }
}
#language .language-content {
+ height: 100%;
display: flex;
- flex-wrap: wrap;
justify-content: space-around;
- width: 80%;
+ width: 100%;
margin-top: 20px;
+ flex-wrap: wrap;
+ @media only screen and (min-width: 768px) {
+ margin-top: 41px;
+ }
+
+}
+
+#language .btn {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ background-color: #FFF;
+ color: #121717;
+ box-shadow: 0px 4px 10px 0px rgba(54, 50, 114, 0.1);
+ font-size: 12px;
+}
+#language .language-content .btn-language {
+ width: 108px;
+ height: 40px;
+ margin-right: 16px;
+ margin-bottom: 12px;
+ border-radius: 24px;
+ @media only screen and (min-width: 768px) {
+ width: 156px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
}
#language .language-content .language-card {
@@ -25,10 +74,10 @@
background-color: #fff;
}
-#language .language-content .language-card .card-title{
- color: #222 !important;
- margin-bottom: 0px;
- margin-left: 12px;
+#language .language-content .language-card .card-title {
+ color: #222 !important;
+ margin-bottom: 0px;
+ margin-left: 12px;
}
#language .language-content .language-card .card-img {
@@ -38,15 +87,16 @@
justify-content: center;
align-items: center;
}
+
.img-go {
width: 100px;
}
-.language-card-more{
- color: #222;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 24px;
-}
+.language-card-more {
+ color: #222;
+ height: 100%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ font-size: 24px;
+}
\ No newline at end of file
diff --git a/en/404.html b/en/404.html
index 90ef372f5c1..2208ce61fe4 100644
--- a/en/404.html
+++ b/en/404.html
@@ -1,2 +1,17 @@
<!doctype html><html lang=en class=no-js><head class=live-site><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/404.html><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=manifest href=/manif [...]
-<meta property="og:description" content="Apache Dubbo Official Website"><meta property="og:type" content="website"><meta property="og:url" content="https://dubbo.apache.org/en/404.html"><meta itemprop=name content="404 Page not found"><meta itemprop=description content="Apache Dubbo Official Website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Apache Dubbo Official Website"><script async src="http [...]
\ No newline at end of file
+<meta property="og:description" content="Apache Dubbo Official Website"><meta property="og:type" content="website"><meta property="og:url" content="https://dubbo.apache.org/en/404.html"><meta itemprop=name content="404 Page not found"><meta itemprop=description content="Apache Dubbo Official Website"><meta name=twitter:card content="summary"><meta name=twitter:title content="404 Page not found"><meta name=twitter:description content="Apache Dubbo Official Website"><script async src="http [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>ECOSYSTE [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-controls=collapseMenu>ECOSYSTE [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/1/01/01/application-level-service-discovery/index.html b/en/blog/1/01/01/application-level-service-discovery/index.html
index 2c061c943ff..1eb04b065d4 100644
--- a/en/blog/1/01/01/application-level-service-discovery/index.html
+++ b/en/blog/1/01/01/application-level-service-discovery/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The Application-Level Service Discovery
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/application-level-service-discovery/"><meta property="article:section" content="blog"><meta property="article:modified_time" content="2023-10-18T10:05:04+08:00"><meta itemprop=name content="Application-Level Service Discovery"><meta itemprop=description content="The Application-Level Service Discovery
"><meta itemprop=dateModified content="2023-10-18T10:05:04+08:00"><meta itemprop=wordCount content="0"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Application-Level Service Discovery"><meta name=twitter:description content="The Application-Level Service Discovery
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The Application-Level Service Discovery
"><meta name=twitter:description content="The Application-Level Service Discovery
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/application-level-service-discovery/"><meta property="og:title" content="Application-Level Service Discovery"><meta name=twitter:title content="Application-Level Service Discovery"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=st [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/application-level-service-discovery/"><meta property="og:title" content="Application-Level Service Discovery"><meta name=twitter:title content="Application-Level Service Discovery"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=st [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,8 +66,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/proposals/service-discovery.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22 [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Application-Level%20Service%20Discovery" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/index.html b/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/index.html
index 5f534119bd0..b7c649db3c6 100644
--- a/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/index.html
+++ b/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/"><meta property="article:section" content="blog"><meta property="article:modified_time" content="2023-11-22T14:47:08+08:00"><meta itemprop=name content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta itemprop=description content="Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Mul [...]
"><meta itemprop=dateModified content="2023-11-22T14:47:08+08:00"><meta itemprop=wordCount content="407"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta name=twitter:description content="Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type
"><meta name=twitter:description content="Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/"><meta property="og:title" content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta name=twitter:title content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/1/01/01/enhanced-http-standard-capabilities-of-triple-protocol/"><meta property="og:title" content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta name=twitter:title content="Enhanced HTTP Standard Capabilities of Triple Protocol"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>Host<span style=color:#719e07>:</span> 192.168.202.1:50052
</span></span><span style=display:flex><span>Content-Type<span style=color:#719e07>:</span> multipart/form-data; boundary=example-part-boundary
</span></span><span style=display:flex><span>Accept<span style=color:#719e07>:</span> application/json
@@ -129,8 +140,12 @@
</span></span><span style=display:flex><span> System.out.println(user.getLocation());
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> <span style=color:#719e07>new</span> ServerResponse(<span style=color:#2aa198>"Server Received xml."</span>);
</span></span><span style=display:flex><span> }
-</span></span></code></pre></div><ul><li>This implementation is the same as Rest’s XMLCodec.</li><li>The response is encoded using application/xml.</li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a class="btn btn-primary disabled"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/1/01/01/application-level-service-discovery/ aria-label="Next - Application-Level Service Discovery" class="btn btn-primary">Next<span class [...]
+</span></span></code></pre></div><ul><li>This implementation is the same as Rest’s XMLCodec.</li><li>The response is encoded using application/xml.</li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a class="btn btn-primary disabled"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/1/01/01/application-level-service-discovery/ aria-label="Next - Application-Level Service Discovery" class="btn btn-primary">Next<span class [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/proposals/support-more-content-types.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Enhanced%20HTTP%20Standard%20Capabilities%20of%20Triple%20Protocol" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#enhanced-http-standard-capabilities-of-triple-protocol---support-for-multiple-content-type>Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type</a><ul><li></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxon [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#enhanced-http-standard-capabilities-of-triple-protocol---support-for-multiple-content-type>Enhanced HTTP Standard Capabilities of Triple Protocol - Support for Multiple Content-Type</a><ul><li></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxon [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/index.html b/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/index.html
index c29a2371dd8..90e708af186 100644
--- a/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/index.html
+++ b/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you that Dubbo roadmap is announced in QCon Beijing 2018.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-04-22T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Dubbo roadmap is announced in QCon Beijing 2018"><meta itemprop=description content="This ar [...]
"><meta itemprop=datePublished content="2018-04-22T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="24"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo roadmap is announced in QCon Beijing 2018"><meta name=twitter:description content="This article will introduce you that Dubbo roadmap is announced in QCon Beijing 2018.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you that Dubbo roadmap is announced in QCon Beijing 2018.
"><meta name=twitter:description content="This article will introduce you that Dubbo roadmap is announced in QCon Beijing 2018.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/"><meta property="og:title" content="Dubbo roadmap is announced in QCon Beijing 2018"><meta name=twitter:title content="Dubbo roadmap is announced in QCon Beijing 2018"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></scri [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/22/dubbo-roadmap-is-announced-in-qcon-beijing-2018/"><meta property="og:title" content="Dubbo roadmap is announced in QCon Beijing 2018"><meta name=twitter:title content="Dubbo roadmap is announced in QCon Beijing 2018"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></scri [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,8 +66,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/qcon-beijing-2018.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sect [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20roadmap%20is%20announced%20in%20QCon%20Beijing%202018" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/index.html b/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/index.html
index 153efd630a1..bb9856b9214 100644
--- a/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/index.html
+++ b/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The GSoC(Google Summer of Code) 2018 projects has been announced
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-04-25T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="The GSoC(Google Summer of Code) 2018"><meta itemprop=description content="The GSoC(Google Summer of Code) [...]
"><meta itemprop=datePublished content="2018-04-25T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="24"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="The GSoC(Google Summer of Code) 2018"><meta name=twitter:description content="The GSoC(Google Summer of Code) 2018 projects has been announced
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The GSoC(Google Summer of Code) 2018 projects has been announced
"><meta name=twitter:description content="The GSoC(Google Summer of Code) 2018 projects has been announced
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/"><meta property="og:title" content="The GSoC(Google Summer of Code) 2018"><meta name=twitter:title content="The GSoC(Google Summer of Code) 2018"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css re [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/04/25/the-gsocgoogle-summer-of-code-2018/"><meta property="og:title" content="The GSoC(Google Summer of Code) 2018"><meta name=twitter:title content="The GSoC(Google Summer of Code) 2018"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css re [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,8 +66,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/gsoc-2018.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20GSoC%28Google%20Summer%20of%20Code%29%202018" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/index.html b/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/index.html
index caadd825ec1..61fc4644bb4 100644
--- a/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/index.html
+++ b/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you that the ApacheCon NA schedule has been announced attention.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-05-02T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="The ApacheCon NA schedule has been announced"><meta itemprop=description content="This article [...]
"><meta itemprop=datePublished content="2018-05-02T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="34"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="The ApacheCon NA schedule has been announced"><meta name=twitter:description content="This article will introduce you that the ApacheCon NA schedule has been announced attention.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you that the ApacheCon NA schedule has been announced attention.
"><meta name=twitter:description content="This article will introduce you that the ApacheCon NA schedule has been announced attention.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/"><meta property="og:title" content="The ApacheCon NA schedule has been announced"><meta name=twitter:title content="The ApacheCon NA schedule has been announced"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/05/02/the-apachecon-na-schedule-has-been-announced/"><meta property="og:title" content="The ApacheCon NA schedule has been announced"><meta name=twitter:title content="The ApacheCon NA schedule has been announced"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,8 +66,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/apachecon-na-2018.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sect [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20ApacheCon%20NA%20schedule%20has%20been%20announced" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/index.html b/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/index.html
index 834edb198f8..fce80b1b03b 100644
--- a/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/index.html
+++ b/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/2018/05/12/%E9%A6%96%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E5%8C%97%E4%BA%AC%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/><meta charset=utf-8><meta name=viewport content="width=device-wid [...]
-<meta property="og:description" content="The first Dubbo meetup has been held in Beijing."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-05-12T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="The [...]
+<meta property="og:description" content="The first Dubbo meetup has been held in Beijing."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/05/12/the-first-dubbo-meetup-has-been-held-in-beijing/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-05-12T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="The [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,8 +60,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-meetup-beijing.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+s [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20first%20Dubbo%20meetup%20has%20been%20held%20in%20Beijing" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/index.html b/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/index.html
index 60a7d0988ba..69793681069 100644
--- a/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/index.html
+++ b/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/2018/06/23/%E7%AC%AC%E4%BA%8C%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E4%B8%8A%E6%B5%B7%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/><meta charset=utf-8><meta name=viewport cont [...]
-<meta property="og:description" content="The second Dubbo Shanghai meetup has been held successfully."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-06-23T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta it [...]
+<meta property="og:description" content="The second Dubbo Shanghai meetup has been held successfully."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-06-23T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta it [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,8 +60,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-meetup-shanghai.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20second%20Dubbo%20Shanghai%20meetup%20has%20been%20held%20successfully" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/07/01/your-first-dubbo-filter/index.html b/en/blog/2018/07/01/your-first-dubbo-filter/index.html
index 6d9e8be8fb4..3a168376565 100644
--- a/en/blog/2018/07/01/your-first-dubbo-filter/index.html
+++ b/en/blog/2018/07/01/your-first-dubbo-filter/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you that how to implement a dubbo filter
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/01/your-first-dubbo-filter/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-07-01T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Your First Dubbo Filter"><meta itemprop=description content="This article will introduce you that how to implement a [...]
"><meta itemprop=datePublished content="2018-07-01T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="824"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Your First Dubbo Filter"><meta name=twitter:description content="This article will introduce you that how to implement a dubbo filter
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you that how to implement a dubbo filter
"><meta name=twitter:description content="This article will introduce you that how to implement a dubbo filter
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/01/your-first-dubbo-filter/"><meta property="og:title" content="Your First Dubbo Filter"><meta name=twitter:title content="Your First Dubbo Filter"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactu [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/01/your-first-dubbo-filter/"><meta property="og:title" content="Your First Dubbo Filter"><meta name=twitter:title content="Your First Dubbo Filter"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactu [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
extension point, and the Filter interception will be executed during each call.</p><h4 id=extension-mechanism-of-dubbo-filter>Extension Mechanism of Dubbo Filter</h4><p>There are already about 20 Filters implemented in Dubbo. Their entry is ProtocolFilterWrapper, ProtocolFilterWrapper
makes a Wrapper on Protocol and will be loaded when the extension is loaded. Then, let’s see how
the Filter chain is constructed.</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#586e75>//ProtocolFilterWrapper.java</span>
@@ -210,8 +221,12 @@ Now, let’s implement a simple Filter:</p><p>Maven project structure:</p><d
</span></span><span style=display:flex><span> <span style=color:#586e75>// ...</span>
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>Using xml configuration is more flexible and granular.</p><p>In before and after, you can implement your own business logic to give the filter a certain function.
-Once written and configured, the filter is activated by the Dubbo and executed in the call chain.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/ aria-label="Previous - The second Dubbo Shanghai meetup has been held successfully" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2018/07/12/tracking-with-pinpoint/ aria-l [...]
+Once written and configured, the filter is activated by the Dubbo and executed in the call chain.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/06/23/the-second-dubbo-shanghai-meetup-has-been-held-successfully/ aria-label="Previous - The second Dubbo Shanghai meetup has been held successfully" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2018/07/12/tracking-with-pinpoint/ aria-l [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/first-dubbo-filter.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sec [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Your%20First%20Dubbo%20Filter" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#overview>Overview</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#overview>Overview</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/07/12/tracking-with-pinpoint/index.html b/en/blog/2018/07/12/tracking-with-pinpoint/index.html
index 35f0c3df228..2813ead6814 100644
--- a/en/blog/2018/07/12/tracking-with-pinpoint/index.html
+++ b/en/blog/2018/07/12/tracking-with-pinpoint/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to use Pinpoint to track Dubbo applications and monitor applications' performance.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/12/tracking-with-pinpoint/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-07-12T00:00:00+00:00"><meta property="article:modified_time" content="2022-08-07T00:02:07+08:00"><meta itemprop=name content="Tracking with Pinpoint"><meta itemprop=description content="This article introduces how to use Pinpoint to track Dubb [...]
"><meta itemprop=datePublished content="2018-07-12T00:00:00+00:00"><meta itemprop=dateModified content="2022-08-07T00:02:07+08:00"><meta itemprop=wordCount content="888"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Tracking with Pinpoint"><meta name=twitter:description content="This article introduces how to use Pinpoint to track Dubbo applications and monitor applications' performance.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to use Pinpoint to track Dubbo applications and monitor applications' performance.
"><meta name=twitter:description content="This article introduces how to use Pinpoint to track Dubbo applications and monitor applications' performance.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/12/tracking-with-pinpoint/"><meta property="og:title" content="Tracking with Pinpoint"><meta name=twitter:title content="Tracking with Pinpoint"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/en_pinpoint-home.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><lin [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/12/tracking-with-pinpoint/"><meta property="og:title" content="Tracking with Pinpoint"><meta name=twitter:title content="Tracking with Pinpoint"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/en_pinpoint-home.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><lin [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
monitor your application in Real-Time
gain code-level visibility to every transaction
install APM Agents without changing a single line of code
@@ -327,8 +338,12 @@ have minimal impact on the performance (approximately 3% increase in resource us
</span></span></code></pre></div><h3 id=using-pinpoint-agent-to-start-dubbo-provider-and-dubbo-consumer>Using Pinpoint-agent to start <code>Dubbo provider</code> and <code>Dubbo consumer</code></h3><ol><li>Maven clean package</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>mvn clean package
</span></span></code></pre></div><ol start=2><li>Start provider</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>java -jar -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar -Dpinpoint.agentId=demo-provider -Dpinpoint.applicationName=DP target/demo-provider-0.0.1-SNAPSHOT.jar
</span></span></code></pre></div><ol start=3><li>Start consumer</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>java -jar -javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar -Dpinpoint.agentId=demo-consumer -Dpinpoint.applicationName=DC target/demo-comsumer-0.0.1-SNAPSHOT-exec.jar
-</span></span></code></pre></div><ol start=4><li>Access the consumer address to simulate user requests</li></ol><p><code>http://localhost:8080/sayHello?name=ABC</code></p><h2 id=using-pinpoint-locate-problems>Using Pinpoint locate problems</h2><h3 id=homepage>Homepage</h3><p><img src=/imgs/blog/en_pinpoint-home.png alt=/admin-guide/images/pinpoint-home.png></p><blockquote><p>The user request here is double the number of requests for DubboProvider, because the favicon.ico icon request is [...]
+</span></span></code></pre></div><ol start=4><li>Access the consumer address to simulate user requests</li></ol><p><code>http://localhost:8080/sayHello?name=ABC</code></p><h2 id=using-pinpoint-locate-problems>Using Pinpoint locate problems</h2><h3 id=homepage>Homepage</h3><p><img src=/imgs/blog/en_pinpoint-home.png alt=/admin-guide/images/pinpoint-home.png></p><blockquote><p>The user request here is double the number of requests for DubboProvider, because the favicon.ico icon request is [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/pinpoint.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+th [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Tracking%20with%20Pinpoint" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#what-is-pinpoint>What is Pinpoint</a><ul><li><a href=#servermap>ServerMap</a></li><li><a href=#realtime-active-thread-chart>Realtime Active Thread Chart</a></li><li><a href=#requestresponse-scatter-chart>Request/Response Scatter Chart</a></li><li><a href=#callstack>CallStack</a></li><li><a href=#inspector>Inspector</a>< [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#what-is-pinpoint>What is Pinpoint</a><ul><li><a href=#servermap>ServerMap</a></li><li><a href=#realtime-active-thread-chart>Realtime Active Thread Chart</a></li><li><a href=#requestresponse-scatter-chart>Request/Response Scatter Chart</a></li><li><a href=#callstack>CallStack</a></li><li><a href=#inspector>Inspector</a>< [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/index.html b/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/index.html
index afaddf3a4e6..69274189368 100644
--- a/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/index.html
+++ b/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces the Sentinel and how to integrate it with Dubbo.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-07-27T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Sentinel: The flow sentinel of Dubbo services"><meta itemprop=description content="This article [...]
"><meta itemprop=datePublished content="2018-07-27T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="1305"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Sentinel: The flow sentinel of Dubbo services"><meta name=twitter:description content="This article introduces the Sentinel and how to integrate it with Dubbo.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces the Sentinel and how to integrate it with Dubbo.
"><meta name=twitter:description content="This article introduces the Sentinel and how to integrate it with Dubbo.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/"><meta property="og:title" content="Sentinel: The flow sentinel of Dubbo services"><meta name=twitter:title content="Sentinel: The flow sentinel of Dubbo services"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/sentinel-dashboard-view-rules.png"><meta property="og:type" content="article"><meta name=viewport content [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/27/sentinel-the-flow-sentinel-of-dubbo-services/"><meta property="og:title" content="Sentinel: The flow sentinel of Dubbo services"><meta name=twitter:title content="Sentinel: The flow sentinel of Dubbo services"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/sentinel-dashboard-view-rules.png"><meta property="og:type" content="article"><meta name=viewport content [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span> <span style=color:#268bd2><groupId></span>com.alibaba.csp<span style=color:#268bd2></groupId></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>sentinel-dubbo-adapter<span style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><version></span>x.y.z<span style=color:#268bd2></version></span>
@@ -71,8 +82,12 @@
</span></span><span style=display:flex><span>1532423623000|2018-07-24 17:13:43|com.alibaba.csp.sentinel.demo.dubbo.FooService:sayHello(java.lang.String)|10|5|10|0|0
</span></span></code></pre></div><p>In many circumstances, it’s also significant to control traffic flow based on the <strong>caller</strong>. For example, assuming that there are two services A and B, both of them initiate remote call requests to the service provider. If we want to limit the calls from service B only, we can set the <code>limitApp</code> of flow rule as the identifier of service B (e.g. service name). The Sentinel Dubbo Adapter will automatically resolve the Dubbo [...]
</span></span></code></pre></div><p>The <code>demo-consumer</code> in the log is the caller name (origin).</p><h3 id=service-consumer>Service Consumer</h3><p>Dubbo service consumers act as a client to invoke the remote service. Each service may depend on several downstream services. If a service A depends on the downstream service B, and service B is unstable (i.e. the response time becomes longer), the number of threads where service A invokes service B will accumulate, thus may eventua [...]
-</span></span></code></pre></div><p>After launching the service provider demo, we can find our application in the Sentinel dashboard. It’s convenient to configure the rules in the dashboard:</p><p><img src=/imgs/blog/sentinel-dashboard-view-rules.png alt="Rule List"></p><p>Or view real-time metrics:</p><p><img src=/imgs/blog/sentinel-dashboard-metrics.png alt="Real-time metrics monitoring"></p><h2 id=summary>Summary</h2><p>This blog post only introduces the simplest scenario in Sen [...]
+</span></span></code></pre></div><p>After launching the service provider demo, we can find our application in the Sentinel dashboard. It’s convenient to configure the rules in the dashboard:</p><p><img src=/imgs/blog/sentinel-dashboard-view-rules.png alt="Rule List"></p><p>Or view real-time metrics:</p><p><img src=/imgs/blog/sentinel-dashboard-metrics.png alt="Real-time metrics monitoring"></p><h2 id=summary>Summary</h2><p>This blog post only introduces the simplest scenario in Sen [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/sentinel-introduction-for-dubbo.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Sentinel:%20The%20flow%20sentinel%20of%20Dubbo%20services" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-to-sentinel>Introduction to Sentinel</a></li><li><a href=#best-practice-for-using-dubbo-with-sentinel>Best Practice for using Dubbo with Sentinel</a><ul><li><a href=#service-provider>Service Provider</a></li><li><a href=#service-consumer>Service Consumer</a></li><li><a href=#sentinel-dashboard>Sentinel Dash [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-to-sentinel>Introduction to Sentinel</a></li><li><a href=#best-practice-for-using-dubbo-with-sentinel>Best Practice for using Dubbo with Sentinel</a><ul><li><a href=#service-provider>Service Provider</a></li><li><a href=#service-consumer>Service Consumer</a></li><li><a href=#sentinel-dashboard>Sentinel Dash [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/index.html b/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/index.html
index cf10e2a9108..22c2b4cfc0a 100644
--- a/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/index.html
+++ b/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/2018/07/30/%E7%AC%AC%E4%B8%89%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E6%B7%B1%E5%9C%B3%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/><meta charset=utf-8><meta name=viewport content="width= [...]
-<meta property="og:description" content="The third Dubbo meetup has been held in Shenzhen"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-07-30T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<meta property="og:description" content="The third Dubbo meetup has been held in Shenzhen"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/07/30/the-third-dubbo-meetup-has-been-held-in-shenzhen/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-07-30T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,8 +60,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-meetup-shenzhen.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20third%20Dubbo%20meetup%20has%20been%20held%20in%20Shenzhen" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/07/dubbo-101/index.html b/en/blog/2018/08/07/dubbo-101/index.html
index d4f7c32c210..40d960d08de 100644
--- a/en/blog/2018/08/07/dubbo-101/index.html
+++ b/en/blog/2018/08/07/dubbo-101/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/dubbo-101/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-07T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:30:28+08:00"><meta itemprop=name content="Your First Dubbo Demo"><meta itemprop=description content="Modern distributed frameworks is similiar to RMI in terms of concepts. [...]
"><meta itemprop=datePublished content="2018-08-07T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:30:28+08:00"><meta itemprop=wordCount content="2182"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Your First Dubbo Demo"><meta name=twitter:description content="Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry an [...]
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy.
"><meta name=twitter:description content="Modern distributed frameworks is similiar to RMI in terms of concepts. They both use Java interface as a service contract, archive service registry and discovery by a registry center, and Shield communication details by a proxy.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/dubbo-101/"><meta property="og:title" content="Your First Dubbo Demo"><meta name=twitter:title content="Your First Dubbo Demo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/rmi-flow.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.c [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/dubbo-101/"><meta property="og:title" content="Your First Dubbo Demo"><meta name=twitter:title content="Your First Dubbo Demo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/rmi-flow.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.c [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>Hello stub <span style=color:#719e07>=</span> (Hello) UnicastRemoteObject.exportObject(obj, 0); <span style=color:#586e75>// #2</span>
</span></span><span style=display:flex><span>Registry registry <span style=color:#719e07>=</span> LocateRegistry.createRegistry(1099); <span style=color:#586e75>// #3</span>
</span></span><span style=display:flex><span>registry.rebind(<span style=color:#2aa198>"Hello"</span>, stub); <span style=color:#586e75>// #4</span>
@@ -190,8 +201,12 @@ Understand the work flow and basic concepts of RMI is helpful to handle current
</span></span><span style=display:flex><span>+---------------------+---+
</span></span><span style=display:flex><span>|Consumer Service Name|NUM|
</span></span><span style=display:flex><span>+---------------------+---+
-</span></span></code></pre></div><p>Currently, <em>qos</em> supports following command lines. For more information please refer to the official document. [^4]:</p><ul><li><em>ls</em>:List the information of client and server.</li><li><em>online</em>:Bring the service online.</li><li><em>offline</em>:Bring the service offline.</li><li><em>help</em>:View online help.</li></ul><h2 id=summary>Summary</h2><p>In this tutorial, we start with RMI and introduce the basic concepts in Java distribu [...]
+</span></span></code></pre></div><p>Currently, <em>qos</em> supports following command lines. For more information please refer to the official document. [^4]:</p><ul><li><em>ls</em>:List the information of client and server.</li><li><em>online</em>:Bring the service online.</li><li><em>offline</em>:Bring the service offline.</li><li><em>help</em>:View online help.</li></ul><h2 id=summary>Summary</h2><p>In this tutorial, we start with RMI and introduce the basic concepts in Java distribu [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-101.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Your%20First%20Dubbo%20Demo" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#java-rmi-introduction>Java RMI Introduction</a><ul><li><a href=#java-rmi-work-flow>Java RMI Work Flow</a></li><li><a href=#java-rmi-concepts>Java RMI Concepts</a></li></ul></li><li><a href=#basic-concepts-of-dubbo>Basic Concepts of Dubbo</a></li><li><a href=#dubbo-applications-based-on-api>Dubbo Applications Based on AP [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#java-rmi-introduction>Java RMI Introduction</a><ul><li><a href=#java-rmi-work-flow>Java RMI Work Flow</a></li><li><a href=#java-rmi-concepts>Java RMI Concepts</a></li></ul></li><li><a href=#basic-concepts-of-dubbo>Basic Concepts of Dubbo</a></li><li><a href=#dubbo-applications-based-on-api>Dubbo Applications Based on AP [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/07/use-annotations-in-dubbo/index.html b/en/blog/2018/08/07/use-annotations-in-dubbo/index.html
index d54eb9d1dbb..d56c9c0180a 100644
--- a/en/blog/2018/08/07/use-annotations-in-dubbo/index.html
+++ b/en/blog/2018/08/07/use-annotations-in-dubbo/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/use-annotations-in-dubbo/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-07T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:30:17+08:00"><meta itemprop=name content="Use Annotations In Dubbo"><meta itemprop=description content="This article will introduce you how to use annotation [...]
"><meta itemprop=datePublished content="2018-08-07T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:30:17+08:00"><meta itemprop=wordCount content="1733"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Use Annotations In Dubbo"><meta name=twitter:description content="This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`.
"><meta name=twitter:description content="This article will introduce you how to use annotations instead of XML to develop Dubbo applications, such as `@EnableDubbo`, `@Service` and `@Reference`.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/use-annotations-in-dubbo/"><meta property="og:title" content="Use Annotations In Dubbo"><meta name=twitter:title content="Use Annotations In Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/conta [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/use-annotations-in-dubbo/"><meta property="og:title" content="Use Annotations In Dubbo"><meta name=twitter:title content="Use Annotations In Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/conta [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#268bd2>@EnableDubboConfig</span>
</span></span><span style=display:flex><span><span style=color:#268bd2>@DubboComponentScan</span>
@@ -248,8 +259,12 @@ iii.<code>RegistryConfig</code>:Registry configuration.Note:The configuration he
Start the Server’s <code>main</code> method, you will see the following output, which returns the <code>result</code>: hello, annotation:</li></ul><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sh data-lang=sh><span style=display:flex><span><span style=color:#719e07>[</span>01/08/18 02:38:40:040 CST<span style=color:#719e07>]</span> main INFO config.AbstractConfig: <span style=color:# [...]
</span></span><span style=display:flex><span><span style=color:#719e07>[</span>01/08/18 02:38:40:040 CST<span style=color:#719e07>]</span> main INFO annotation.ReferenceBeanBuilder: <dubbo:reference <span style=color:#268bd2>object</span><span style=color:#719e07>=</span><span style=color:#2aa198>"com.alibaba.dubbo.common.bytecode.proxy0@673be18f"</span> <span style=color:#268bd2>singleton</span><span style=color:#719e07>=</span><span style=color:#2aa198>"true"</span> [...]
</span></span><span style=display:flex><span>result: hello, annotation
-</span></span></code></pre></div><h2 id=conclusion>Conclusion</h2><p>By studying this article, the reader can master the basic concepts of <code>Dubbo</code>’s exclusive <code>annotations</code> , <code>@EnableDubbo</code>, <code>@Service</code>, <code>@Reference</code>, and master it’s basic usage through a simple <code>Dubbo</code> application.</p><p>In addition to traditional <code>XML</code> configuration, <code>Spring</code> offers more modern configurations such as anno [...]
+</span></span></code></pre></div><h2 id=conclusion>Conclusion</h2><p>By studying this article, the reader can master the basic concepts of <code>Dubbo</code>’s exclusive <code>annotations</code> , <code>@EnableDubbo</code>, <code>@Service</code>, <code>@Reference</code>, and master it’s basic usage through a simple <code>Dubbo</code> application.</p><p>In addition to traditional <code>XML</code> configuration, <code>Spring</code> offers more modern configurations such as anno [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-annotation.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+secti [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Use%20Annotations%20In%20Dubbo" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduce-annotations>Introduce Annotations</a><ul><li><a href=#enabledubbo>@EnableDubbo</a></li><li><a href=#service>@Service</a></li><li><a href=#reference>@Reference</a></li></ul></li><li><a href=#example-practice>Example practice</a><ul><li><a href=#1interface-definition>1.Interface Definition</a></li><li><a href=#2 [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduce-annotations>Introduce Annotations</a><ul><li><a href=#enabledubbo>@EnableDubbo</a></li><li><a href=#service>@Service</a></li><li><a href=#reference>@Reference</a></li></ul></li><li><a href=#example-practice>Example practice</a><ul><li><a href=#1interface-definition>1.Interface Definition</a></li><li><a href=#2 [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/07/using-zookeeper-in-dubbo/index.html b/en/blog/2018/08/07/using-zookeeper-in-dubbo/index.html
index 1863541327f..d96cf4bf88e 100644
--- a/en/blog/2018/08/07/using-zookeeper-in-dubbo/index.html
+++ b/en/blog/2018/08/07/using-zookeeper-in-dubbo/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/using-zookeeper-in-dubbo/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-07T00:00:00+00:00"><meta property="article:modified_time" content="2024-08-09T15:10:01+08:00"><meta itemprop=name content="Using Zookeeper in Dubbo"><meta itemprop=description content="This article introduces basic concepts of Zookeeper, [...]
"><meta itemprop=datePublished content="2018-08-07T00:00:00+00:00"><meta itemprop=dateModified content="2024-08-09T15:10:01+08:00"><meta itemprop=wordCount content="1581"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Using Zookeeper in Dubbo"><meta name=twitter:description content="This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center.
"><meta name=twitter:description content="This article introduces basic concepts of Zookeeper, and how to use Zookeeper as a registry center.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/using-zookeeper-in-dubbo/"><meta property="og:title" content="Using Zookeeper in Dubbo"><meta name=twitter:title content="Using Zookeeper in Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/zk-emsemble.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><li [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/07/using-zookeeper-in-dubbo/"><meta property="og:title" content="Using Zookeeper in Dubbo"><meta name=twitter:title content="Using Zookeeper in Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/zk-emsemble.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><li [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<em>Image Credit : ebook -Zookeeper-Distributed Process Coordination from O’Reilly</em></p><p>The method to store the data in Zookeeper is similar as the standard UNIX file system, as a data model styled after the familiar directory tree structure of file systems. When we talking about ZooKeeper data nodes, we call it Znodes to clarify it.</p><p><img src=/imgs/blog/zk-tree.png alt=zk-tree>
<em>Image Credit : ebook -Zookeeper-Distributed Process Coordination from O’Reilly</em></p><h3 id=basic-implementation>Basic Implementation</h3><p>You could donwload and install Zookeeper directly<sup id=fnref:1><a href=#fn:1 class=footnote-ref role=doc-noteref>1</a></sup>.
Or you could use Homebrew <sup id=fnref:2><a href=#fn:2 class=footnote-ref role=doc-noteref>2</a></sup> <code>brew install zookeeper</code> to install Zookeeper in Mac OS.
@@ -192,8 +203,12 @@ Considering the versatility, we run the Zookeeper by using docker in this blog.
</span></span><span style=display:flex><span>...
</span></span><span style=display:flex><span><span style=color:#719e07>[</span>zk: localhost:2181<span style=color:#719e07>(</span>CONNECTED<span style=color:#719e07>)</span> 4<span style=color:#719e07>]</span> ls /dubbo/com.alibaba.dubbo.samples.api.GreetingService/consumers
</span></span><span style=display:flex><span><span style=color:#719e07>[</span>consumer%3A%2F%2F192.168.99.1%2Fcom.alibaba.dubbo.samples.api.GreetingService%3Fapplication%3Ddemo-consumer%26category%3Dconsumers%26check%3Dfalse%26default.timeout%3D3000%26dubbo%3D2.6.2%26interface%3Dcom.alibaba.dubbo.samples.api.GreetingService%26methods%3DsayHello%26pid%3D82406%26side%3Dconsumer%26timestamp%3D1533274951195<span style=color:#719e07>]</span>
-</span></span></code></pre></div><p>You could see that consumers of Dubbo’s servicehas registered its URL address at the <code>consumers</code> node:</p><p><em>consumer://192.168.99.1/com.alibaba.dubbo.samples.api.GreetingService?application=demo-consumer&category=providers,configurators,routers&default.timeout=3000&dubbo=2.6.2&interface=com.alibaba.dubbo.samples.api.GreetingService&methods=sayHello&pid=82406&side=consumer&timestamp=1533274951195</em [...]
+</span></span></code></pre></div><p>You could see that consumers of Dubbo’s servicehas registered its URL address at the <code>consumers</code> node:</p><p><em>consumer://192.168.99.1/com.alibaba.dubbo.samples.api.GreetingService?application=demo-consumer&category=providers,configurators,routers&default.timeout=3000&dubbo=2.6.2&interface=com.alibaba.dubbo.samples.api.GreetingService&methods=sayHello&pid=82406&side=consumer&timestamp=1533274951195</em [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-zk.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+th [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Using%20Zookeeper%20in%20Dubbo" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-of-zookeeper>Introduction of Zookeeper</a><ul><li><a href=#the-basic-concept>The basic concept</a></li><li><a href=#basic-implementation>Basic Implementation</a></li></ul></li><li><a href=#using-zookeeper-in-dubbo>Using Zookeeper in Dubbo</a><ul><li><a href=#prepare-the-sample-code>Prepare the sample code</ [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-of-zookeeper>Introduction of Zookeeper</a><ul><li><a href=#the-basic-concept>The basic concept</a></li><li><a href=#basic-implementation>Basic Implementation</a></li></ul></li><li><a href=#using-zookeeper-in-dubbo>Using Zookeeper in Dubbo</a><ul><li><a href=#prepare-the-sample-code>Prepare the sample code</ [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/10/dubbos-load-balance/index.html b/en/blog/2018/08/10/dubbos-load-balance/index.html
index 1011b23928f..2f0d0cc29da 100644
--- a/en/blog/2018/08/10/dubbos-load-balance/index.html
+++ b/en/blog/2018/08/10/dubbos-load-balance/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces you what is load balance and how load balance strategy is implemented in Dubbo.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/10/dubbos-load-balance/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-10T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Dubbo's Load Balance"><meta itemprop=description content="This article introduces you what is load balance and how load [...]
"><meta itemprop=datePublished content="2018-08-10T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="2074"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo's Load Balance"><meta name=twitter:description content="This article introduces you what is load balance and how load balance strategy is implemented in Dubbo.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces you what is load balance and how load balance strategy is implemented in Dubbo.
"><meta name=twitter:description content="This article introduces you what is load balance and how load balance strategy is implemented in Dubbo.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/10/dubbos-load-balance/"><meta property="og:title" content="Dubbo's Load Balance"><meta name=twitter:title content="Dubbo's Load Balance"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel= [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/10/dubbos-load-balance/"><meta property="og:title" content="Dubbo's Load Balance"><meta name=twitter:title content="Dubbo's Load Balance"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel= [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>| | | | |
</span></span><span style=display:flex><span>+-----------------------------------------------------------------------------------+
</span></span><span style=display:flex><span>1 10 30 50 80
@@ -146,8 +157,12 @@
<code>src/main/resource/META-INF/dubbo/com.alibaba.dubbo.rpc.cluster.LoadBalance</code>
This is a simple text file. The file contents are as follows:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>demo=my=com.demo.dubbo.DemoLoadBalance
</span></span></code></pre></div><ol start=3><li>Configure to use custom LoadBalance</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-gdscript3 data-lang=gdscript3><span style=display:flex><span><span style=color:#719e07><</span>dubbo:reference id<span style=color:#719e07>=</span><span style=color:#2aa198>"helloService"</span> interface<span style=color:#719e07>=</span><span [...]
-</span></span></code></pre></div><p>Configure <code><loadbalance="demo"></code> in <code>dubbo:reference</code> at the Consumer side.</p><p>After 3 steps above, we wrote a custom LoadBalance and told Dubbo to use it. Start Dubbo and we can see that Dubbo has used a custom DemoLoadBalance.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/07/use-annotations-in-dubbo/ aria-label="Previous - Use Annotations In Dubbo" cla [...]
+</span></span></code></pre></div><p>Configure <code><loadbalance="demo"></code> in <code>dubbo:reference</code> at the Consumer side.</p><p>After 3 steps above, we wrote a custom LoadBalance and told Dubbo to use it. Start Dubbo and we can see that Dubbo has used a custom DemoLoadBalance.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/07/use-annotations-in-dubbo/ aria-label="Previous - Use Annotations In Dubbo" cla [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-loadbalance.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sect [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo&#39;s%20Load%20Balance" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background>Background</a></li><li><a href=#concepts>Concepts</a></li><li><a href=#dubbos-internal-load-balancing-strategy>Dubbo’s Internal Load Balancing Strategy</a><ul><li><a href=#1-random-load-balancing>1. Random Load Balancing</a></li><li><a href=#2-round-robin-load-balancing>2. Round Robin Load Balancing</a> [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background>Background</a></li><li><a href=#concepts>Concepts</a></li><li><a href=#dubbos-internal-load-balancing-strategy>Dubbo’s Internal Load Balancing Strategy</a><ul><li><a href=#1-random-load-balancing>1. Random Load Balancing</a></li><li><a href=#2-round-robin-load-balancing>2. Round Robin Load Balancing</a> [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/index.html b/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/index.html
index f238689bb04..d2ae78378e3 100644
--- a/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/index.html
+++ b/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta itemprop=description content="This [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="1397"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta name=twitter:description content="This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code.
"><meta name=twitter:description content="This article will introduce you how to config Dubbo, by XML, property files, annotations or Java code.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/"><meta property="og:title" content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta name=twitter:title content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/user/dubbo-config.jpg"><meta property="og:type" content="article"><meta name=viewport content="widt [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/"><meta property="og:title" content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta name=twitter:title content="Dubbo Basic Usage -- Dubbo Provider Configuration"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/user/dubbo-config.jpg"><meta property="og:type" content="article"><meta name=viewport content="widt [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><beans xmlns="http://www.springframework.org/schema/beans"
</span></span><span style=display:flex><span> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
</span></span><span style=display:flex><span> xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
@@ -174,8 +185,12 @@ Implement UserReadService, and deploy current implementation in the Provider&rsq
</span></span><span style=display:flex><span> <bean id="userReadService" class="com.package.UserReadServiceImpl"/>
</span></span><span style=display:flex><span> <dubbo:service interface="com.package.UserReadService" ref="userReadService" />
</span></span><span style=display:flex><span></beans>
-</span></span></code></pre></div><p>For the other modes of Dubbo configuration, please refer to the related configurations in the previous chapter, or use the integrated Dubbo Spring Boot starter method.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/ aria-label="Previous - Manipulating Services Dynamically via QoS" class="btn btn-primary"><span class=mr-1>←</span>Previous< [...]
+</span></span></code></pre></div><p>For the other modes of Dubbo configuration, please refer to the related configurations in the previous chapter, or use the integrated Dubbo Spring Boot starter method.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/ aria-label="Previous - Manipulating Services Dynamically via QoS" class="btn btn-primary"><span class=me-1>←</span>Previous< [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-basic-usage-dubbo-provider-configuration.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edi [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20Basic%20Usage%20--%20Dubbo%20Provider%20Configuration" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#dubbo-provider-configuration>Dubbo Provider Configuration</a><ul><li><a href=#provider-configuration-in-detail>Provider Configuration in Detail</a></li><li><a href=#provider-interface-and-implement>Provider Interface and Implement</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 clas [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#dubbo-provider-configuration>Dubbo Provider Configuration</a><ul><li><a href=#provider-configuration-in-detail>Provider Configuration in Detail</a></li><li><a href=#provider-interface-and-implement>Provider Interface and Implement</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 clas [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/index.html b/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/index.html
index e7a09e8a392..dc15b3eb4c3 100644
--- a/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/index.html
+++ b/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you the basics of consumer configurations.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta itemprop=description content="This a [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="748"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta name=twitter:description content="This article will introduce you the basics of consumer configurations.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you the basics of consumer configurations.
"><meta name=twitter:description content="This article will introduce you the basics of consumer configurations.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/"><meta property="og:title" content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta name=twitter:title content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/user/dubbo-config-override.jpg"><meta property="og:type" content="article"><meta name=viewport conte [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-basic-usage-dubbo-consumer-configuration/"><meta property="og:title" content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta name=twitter:title content=" Dubbo Basic Usage - Dubbo Consumer Configuration"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/user/dubbo-config-override.jpg"><meta property="og:type" content="article"><meta name=viewport conte [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><?xml version="1.0" encoding="UTF-8"?>
</span></span><span style=display:flex><span><beans xmlns="http://www.springframework.org/schema/beans"
</span></span><span style=display:flex><span> Xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -136,8 +147,12 @@ The provider of the service has been defined in the provider section.</li><li>Ca
</span></span><span style=display:flex><span> <dubbo:protocol name="dubbo" port="20880" />
</span></span><span style=display:flex><span> <dubbo:reference id="userReadService" interface="com.package.UserReadService"check="false" />
</span></span><span style=display:flex><span></beans>
-</span></span></code></pre></div><p>Other ways of configuring Dubbo can refer to the relevant configuration in the previous section, or use the integrated dubbo spring boot starter mode.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/ aria-label="Previous - Dubbo: Several ways about synchronous/asynchronous invoke" class="btn btn-primary"><span class=mr-1>←</ [...]
+</span></span></code></pre></div><p>Other ways of configuring Dubbo can refer to the relevant configuration in the previous section, or use the integrated dubbo spring boot starter mode.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/ aria-label="Previous - Dubbo: Several ways about synchronous/asynchronous invoke" class="btn btn-primary"><span class=me-1>←</ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-basic-usage-dubbo-consumer-configuration.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edi [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=%20Dubbo%20Basic%20Usage%20-%20Dubbo%20Consumer%20Configuration" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#dubbo-consumer-configuration>Dubbo Consumer Configuration</a><ul><li><a href=#consumer-configuration-detailed>Consumer Configuration Detailed</a></li><li><a href=#consumer-calling-remote-service>Consumer Calling Remote Service</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=ta [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#dubbo-consumer-configuration>Dubbo Consumer Configuration</a><ul><li><a href=#consumer-configuration-detailed>Consumer Configuration Detailed</a></li><li><a href=#consumer-calling-remote-service>Consumer Calling Remote Service</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=ta [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/index.html b/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/index.html
index 878f8e6f34e..b0a02b00e4c 100644
--- a/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/index.html
+++ b/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces you how to use Dubbo synchronously or asynchronously.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta itemprop=descripti [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="1112"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta name=twitter:description content="This article introduces you how to use Dubbo synchronously or asynchronously.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces you how to use Dubbo synchronously or asynchronously.
"><meta name=twitter:description content="This article introduces you how to use Dubbo synchronously or asynchronously.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/"><meta property="og:title" content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta name=twitter:title content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-async.svg"><meta property="og:type" content="article"><meta nam [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/dubbo-several-ways-about-synchronous/asynchronous-invoke/"><meta property="og:title" content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta name=twitter:title content="Dubbo: Several ways about synchronous/asynchronous invoke"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-async.svg"><meta property="og:type" content="article"><meta nam [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span> String <span style=color:#268bd2>goodbye</span>(String name);
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><h5 id=consumer-configuration>Consumer configuration</h5><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=display:flex><span><span style=color:#268bd2><dubbo:reference</span> id=<span style=color:#2aa198>"asyncService"</span> interface=<span style=color:#2aa198>"com.alibaba.dubbo.samples.async.api.AsyncService"</s [...]
@@ -143,8 +154,12 @@
</span></span><span style=display:flex><span> System.out.println(<span style=color:#2aa198>"onthrow: "</span> <span style=color:#719e07>+</span> name);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>Here we address that the parameter rules of three methods in the custom Notify interface are as follows:</p><ul><li><code>oninvoke</code> method’s parameters are the same as the calling method parameters;</li><li><code>onreturn</code> method’s first parameter is the returned value of calling method,and the others are the same as the calling method;</li><li><code>onthrow</code> method’s first parameter is an invoked exception,and the o [...]
+</span></span></code></pre></div><p>Here we address that the parameter rules of three methods in the custom Notify interface are as follows:</p><ul><li><code>oninvoke</code> method’s parameters are the same as the calling method parameters;</li><li><code>onreturn</code> method’s first parameter is the returned value of calling method,and the others are the same as the calling method;</li><li><code>onthrow</code> method’s first parameter is an invoked exception,and the o [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-invoke.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+a [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo:%20Several%20ways%20about%20synchronous/asynchronous%20invoke" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#synchronous-invoke>Synchronous invoke</a></li><li><a href=#asynchronous-invoke>Asynchronous invoke</a></li><li><a href=#parameters-callback>Parameters callback</a></li><li><a href=#event-notification>Event notification</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=ta [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#synchronous-invoke>Synchronous invoke</a></li><li><a href=#asynchronous-invoke>Asynchronous invoke</a></li><li><a href=#parameters-callback>Parameters callback</a></li><li><a href=#event-notification>Event notification</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=ta [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/generic-invoke-of-dubbo/index.html b/en/blog/2018/08/14/generic-invoke-of-dubbo/index.html
index 32209fa5343..7a3acecba77 100644
--- a/en/blog/2018/08/14/generic-invoke-of-dubbo/index.html
+++ b/en/blog/2018/08/14/generic-invoke-of-dubbo/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces you when and how to use generic invoke of Dubbo.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/generic-invoke-of-dubbo/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:30:07+08:00"><meta itemprop=name content="Generic invoke of Dubbo"><meta itemprop=description content="This article introduces you when and how to use generic [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:30:07+08:00"><meta itemprop=wordCount content="777"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Generic invoke of Dubbo"><meta name=twitter:description content="This article introduces you when and how to use generic invoke of Dubbo.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces you when and how to use generic invoke of Dubbo.
"><meta name=twitter:description content="This article introduces you when and how to use generic invoke of Dubbo.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/generic-invoke-of-dubbo/"><meta property="og:title" content="Generic invoke of Dubbo"><meta name=twitter:title content="Generic invoke of Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactu [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/generic-invoke-of-dubbo/"><meta property="og:title" content="Generic invoke of Dubbo"><meta name=twitter:title content="Generic invoke of Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactu [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
instead of depending the interface jar package, the service call is initiated directly through the GenericService interface, and all POJOs in the parameters and return values are represented by a <code>Map</code>.
Generic invoke does not require attention on the server and can be exposed as normal services.</p><p>Next, let’s take a look at how the consumer uses generic invoke for service call.</p><h2 id=generic-invoke-through-spring-xml-configuration>Generic invoke through Spring XML configuration</h2><p>Declare <code>generic="true"</code> in Spring configuration, such as</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-si [...]
</span></span></code></pre></div><p>Where you need to use it, you can call it by forcing a type cast to GenericService.</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span>GenericService userService <span style=color:#719e07>=</span> (GenericService) context.getBean(<span style=color:#2aa198>"userService"</span>);
@@ -147,8 +158,12 @@ It can be seen that the return value <code>user</code> is a HashMap, which store
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>HelloService helloService <span style=color:#719e07>=</span> (HelloService) reference2.get();
</span></span><span style=display:flex><span>System.out.println(helloService.hello(<span style=color:#2aa198>"community"</span>));
-</span></span></code></pre></div><p>Similarly, the consumer can also reference the service using an XML configuration and then make the call. Here you can see that the calling method is a normal service call, not a generic call. Of course, it is also possible to use generic calls.</p><p>So far, a simple service Mock platform has been successfully launched!</p><h2 id=others>Others</h2><ul><li>The generic invoke and generic interface implementations introduced in this article are all based [...]
+</span></span></code></pre></div><p>Similarly, the consumer can also reference the service using an XML configuration and then make the call. Here you can see that the calling method is a normal service call, not a generic call. Of course, it is also possible to use generic calls.</p><p>So far, a simple service Mock platform has been successfully launched!</p><h2 id=others>Others</h2><ul><li>The generic invoke and generic interface implementations introduced in this article are all based [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-generic-invoke.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+s [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Generic%20invoke%20of%20Dubbo" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#generic-invoke-through-spring-xml-configuration>Generic invoke through Spring XML configuration</a></li><li><a href=#generic-invoke-through-api-programming>Generic invoke through API programming</a></li><li><a href=#the-case-where-parameters-or-return-values-are-pojos>The case where parameters or return values are POJOs [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#generic-invoke-through-spring-xml-configuration>Generic invoke through Spring XML configuration</a></li><li><a href=#generic-invoke-through-api-programming>Generic invoke through API programming</a></li><li><a href=#the-case-where-parameters-or-return-values-are-pojos>The case where parameters or return values are POJOs [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/index.html b/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/index.html
index de4d493a559..d57d442688d 100644
--- a/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/index.html
+++ b/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to use Dubbo.js to implement cross-language calls.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Implementation of cross-language calls by Dubbo2.js"><meta itemprop=description content= [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="1814"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Implementation of cross-language calls by Dubbo2.js"><meta name=twitter:description content="This article introduces how to use Dubbo.js to implement cross-language calls.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to use Dubbo.js to implement cross-language calls.
"><meta name=twitter:description content="This article introduces how to use Dubbo.js to implement cross-language calls.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/"><meta property="og:title" content="Implementation of cross-language calls by Dubbo2.js"><meta name=twitter:title content="Implementation of cross-language calls by Dubbo2.js"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/springmvc.png"><meta property="og:type" content="article"><meta name=viewport content= [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/implementation-of-cross-language-calls-by-dubbo2.js/"><meta property="og:title" content="Implementation of cross-language calls by Dubbo2.js"><meta name=twitter:title content="Implementation of cross-language calls by Dubbo2.js"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/springmvc.png"><meta property="og:type" content="article"><meta name=viewport content= [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><span style=color:#268bd2><dubbo:protocol</span> name=<span style=color:#2aa198>"jsonrpc"</span> port=<span style=color:#2aa198>"8080"</span> <span style=color:#268bd2>/></span>
</span></span></code></pre></div><h3 id=customized-protocols-for-cross-language-support>Customized Protocols for Cross-language Support</h3><p>The so-called protocol of the microservice framework can be simply interpreted as: message format and serialization scheme. Generally, the service governance framework would provide numbers of protocol configuration items for users to choose from. In addition to the above two common protocols,there exists some other customized protocols like the d [...]
</span></span><span style=display:flex><span> String <span style=color:#268bd2>sayHello</span>(String name);
@@ -165,8 +176,12 @@
</span></span></code></pre></div><h3 id=3-call-maints>3. Call main.ts:</h3><p>Run nodejs client in Debug mode:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sh data-lang=sh><span style=display:flex><span><span style=color:#268bd2>DEBUG</span><span style=color:#719e07>=</span>dubbo* ts-node main.ts
</span></span></code></pre></div><p>Checkout running results:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-sh data-lang=sh><span style=display:flex><span>Hello kirito, response form provider: 172.19.6.151:20880
</span></span></code></pre></div><p>Congratulations!</p><h2 id=features>Features</h2><ul><li>Support zookeeper as register center</li><li>Support TCP Dubbo Native protocol</li><li>Support directly Dubbo connection</li><li>Support link tracing</li><li>Generate dubbo interface Automatically</li></ul><h2 id=more-details>More details</h2><p>The sample code in this article is available here, <a href=https://github.com/dubbo/dubbo2.js>https://github.com/dubbo/dubbo2.js</a>.
-If you don't know much about the dubbo protocol and want to understand how it works, the project provides a sub-moudle: java-socket-consumer, which is implemented in a process-oriented approach, realizing a process of sending dubbo protocal message with native socket and making function calls, and then get response.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/generic-invoke-of-dubbo/ aria-label="Previous - Gener [...]
+If you don't know much about the dubbo protocol and want to understand how it works, the project provides a sub-moudle: java-socket-consumer, which is implemented in a process-oriented approach, realizing a process of sending dubbo protocal message with native socket and making function calls, and then get response.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/generic-invoke-of-dubbo/ aria-label="Previous - Gener [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo2-js.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Implementation%20of%20cross-language%20calls%20by%20Dubbo2.js" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#cross-language-calls-for-micro-service>Cross-language calls for micro service</a></li><li><a href=#cross-language-calls-by-a-common-protocol>Cross-language calls by a common protocol</a><ul><li><a href=#springmvc>SpringMVC</a></li><li><a href=#we-support-some-common-protocols>We support some common protocols</a></li><li [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#cross-language-calls-for-micro-service>Cross-language calls for micro service</a></li><li><a href=#cross-language-calls-by-a-common-protocol>Cross-language calls by a common protocol</a><ul><li><a href=#springmvc>SpringMVC</a></li><li><a href=#we-support-some-common-protocols>We support some common protocols</a></li><li [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/index.html b/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/index.html
index f3fd5c150ad..78b1d3e06cd 100644
--- a/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/index.html
+++ b/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to use Dubbo's QoS to achieve dynamic configuration.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Manipulating Services Dynamically via QoS"><meta itemprop=description content="This article introd [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="947"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Manipulating Services Dynamically via QoS"><meta name=twitter:description content="This article introduces how to use Dubbo's QoS to achieve dynamic configuration.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to use Dubbo's QoS to achieve dynamic configuration.
"><meta name=twitter:description content="This article introduces how to use Dubbo's QoS to achieve dynamic configuration.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/"><meta property="og:title" content="Manipulating Services Dynamically via QoS"><meta name=twitter:title content="Manipulating Services Dynamically via QoS"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/qos-architecture.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><s [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/manipulating-services-dynamically-via-qos/"><meta property="og:title" content="Manipulating Services Dynamically via QoS"><meta name=twitter:title content="Manipulating Services Dynamically via QoS"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/qos-architecture.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><s [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>Trying 127.0.0.1...
</span></span><span style=display:flex><span>Connected to localhost.
</span></span><span style=display:flex><span>Escape character is <span style=color:#2aa198>'^]'</span>.
@@ -165,8 +176,12 @@
</span></span></code></pre></div><h4 id=spring-boot-auto-configuration><code>spring-boot</code> auto configuration</h4><p>If you are developing a spring-boot application, you can configure in <code>application.properties</code> or <code>application.yml</code>:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>dubbo.application.qosEnable=true
</span></span><span style=display:flex><span>dubbo.application.qosPort=33333
</span></span><span style=display:flex><span>dubbo.application.qosAcceptForeignIp=false
-</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/ aria-label="Previous - Source code analysis of spring-boot+Dubbo App start and stop" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/ aria-label="Next - Dubbo Basic Usage -- Dubbo P [...]
+</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/ aria-label="Previous - Source code analysis of spring-boot+Dubbo App start and stop" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2018/08/14/dubbo-basic-usage--dubbo-provider-configuration/ aria-label="Next - Dubbo Basic Usage -- Dubbo P [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/introduction-to-dubbo-qos.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Manipulating%20Services%20Dynamically%20via%20QoS" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#mechanism-of-qos>Mechanism of QoS</a><ul><li><a href=#qos-commands>QoS Commands:</a></li><li><a href=#qos-parameters>QoS’ Parameters</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://d [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#mechanism-of-qos>Mechanism of QoS</a><ul><li><a href=#qos-commands>QoS Commands:</a></li><li><a href=#qos-parameters>QoS’ Parameters</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://d [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/native-image-using-graalvm/index.html b/en/blog/2018/08/14/native-image-using-graalvm/index.html
index 3f37d157db5..beda8983743 100644
--- a/en/blog/2018/08/14/native-image-using-graalvm/index.html
+++ b/en/blog/2018/08/14/native-image-using-graalvm/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces you how to make Dubbo native image using GraalVM.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/native-image-using-graalvm/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2023-02-23T11:00:42+08:00"><meta itemprop=name content="Native Image using GraalVM"><meta itemprop=description content="This article introduces you how to make Dubbo nat [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2023-02-23T11:00:42+08:00"><meta itemprop=wordCount content="1360"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Native Image using GraalVM"><meta name=twitter:description content="This article introduces you how to make Dubbo native image using GraalVM.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces you how to make Dubbo native image using GraalVM.
"><meta name=twitter:description content="This article introduces you how to make Dubbo native image using GraalVM.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/native-image-using-graalvm/"><meta property="og:title" content="Native Image using GraalVM"><meta name=twitter:title content="Native Image using GraalVM"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-graalvm-support/graalvm_env.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/gi [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/native-image-using-graalvm/"><meta property="og:title" content="Native Image using GraalVM"><meta name=twitter:title content="Native Image using GraalVM"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-graalvm-support/graalvm_env.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/gi [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
GraalVM we use here is based on jdk version 1.8.</p><h2 id=get-started>Get Started</h2><p>For user’s convenience, we provide the following demo in the <a href=https://github.com/apache/dubbo/>apache dubbo</a> branch. In module dubbo-demo-native, dubbo’s provider and consumer demos are given:</p><p><img src=/imgs/blog/dubbo-graalvm-support/demo_path.png alt=demo_path.png></p><p>We used native-image’s maven plug-in and customized several native-image starting parameters. [...]
</span></span></code></pre></div><p>You can see the following output after compilation:</p><p><img src=/imgs/blog/dubbo-graalvm-support/consumer_compiler.png alt=provider_compiler.png><img src=/imgs/blog/dubbo-graalvm-support/provider_compiler.png alt=img></p><p>Binary executable file generated can be found in the target catalog:</p><p><img src=/imgs/blog/dubbo-graalvm-support/compile_result.png alt=compile_result.png></p><p>Size of the binary executable file is around 40M:</p><div class [...]
</span></span><span style=display:flex><span>40 demo-native-provider
@@ -221,8 +232,12 @@ GraalVM we use here is based on jdk version 1.8.</p><h2 id=get-started>Get Start
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> <span style=color:#719e07>//......</span>
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>The service here has multiple interfaces which have to be in order when requesting proxy. Set does not fulfill the requirement so we use ArrayList instead.</p><p>Major modifications to dubbo source code are listed above.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/10/dubbos-load-balance/ aria-label="Previous - Dubbo's Load Balance" class="btn btn-primary"><span class=mr-1>←</span [...]
+</span></span></code></pre></div><p>The service here has multiple interfaces which have to be in order when requesting proxy. Set does not fulfill the requirement so we use ArrayList instead.</p><p>Major modifications to dubbo source code are listed above.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/10/dubbos-load-balance/ aria-label="Previous - Dubbo's Load Balance" class="btn btn-primary"><span class=me-1>←</span [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-graalvm-support.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Native%20Image%20using%20GraalVM" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#overview>Overview</a></li><li><a href=#preparation>Preparation</a></li><li><a href=#get-started>Get Started</a></li><li><a href=#our-efforts>Our Efforts</a><ul><li><a href=#preparations>Preparations</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul cl [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#overview>Overview</a></li><li><a href=#preparation>Preparation</a></li><li><a href=#get-started>Get Started</a></li><li><a href=#our-efforts>Our Efforts</a><ul><li><a href=#preparations>Preparations</a></li></ul></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul cl [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/index.html b/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/index.html
index 81e5c9986bb..9bca337b375 100644
--- a/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/index.html
+++ b/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces the implementation details of app start and stop in `dubbo-spring-boot-project`.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-14T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Source code analysis of spring-boot+Dubbo App start and stop"><meta itemprop=de [...]
"><meta itemprop=datePublished content="2018-08-14T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="1337"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Source code analysis of spring-boot+Dubbo App start and stop"><meta name=twitter:description content="This article introduces the implementation details of app start and stop in `dubbo-spring-boot-project`.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces the implementation details of app start and stop in `dubbo-spring-boot-project`.
"><meta name=twitter:description content="This article introduces the implementation details of app start and stop in `dubbo-spring-boot-project`.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/"><meta property="og:title" content="Source code analysis of spring-boot+Dubbo App start and stop"><meta name=twitter:title content="Source code analysis of spring-boot+Dubbo App start and stop"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/14/source-code-analysis-of-spring-boot-dubbo-app-start-and-stop/"><meta property="og:title" content="Source code analysis of spring-boot+Dubbo App start and stop"><meta name=twitter:title content="Source code analysis of spring-boot+Dubbo App start and stop"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>DubboConsumerDemo</span> {
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>static</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>main</span>(String<span style=color:#719e07>[]</span> args) {
@@ -164,8 +175,12 @@
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span> }).start();
</span></span><span style=display:flex><span> }
-</span></span></code></pre></div><p>[1] <a href=https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.8>https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.8</a></p><p>[2] <a href=https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#addShutdownHook>https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#addShutdownHook</a></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018 [...]
+</span></span></code></pre></div><p>[1] <a href=https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.8>https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.8</a></p><p>[2] <a href=https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#addShutdownHook>https://docs.oracle.com/javase/8/docs/api/java/lang/Runtime.html#addShutdownHook</a></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018 [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/spring-boot-dubbo-start-stop-analysis.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22 [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Source%20code%20analysis%20of%20spring-boot+Dubbo%20App%20start%20and%20stop" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction>Introduction</a></li><li><a href=#the-analysis-of-dubboconsumer-startup>The analysis of DubboConsumer startup</a></li><li><a href=#the-analysis-of-dubboconsumer-exit>The analysis of DubboConsumer exit</a></li><li><a href=#summary>Summary</a></li><li><a href=#problems>Problems</a><ul><li><a href=#notice>Noti [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction>Introduction</a></li><li><a href=#the-analysis-of-dubboconsumer-startup>The analysis of DubboConsumer startup</a></li><li><a href=#the-analysis-of-dubboconsumer-exit>The analysis of DubboConsumer exit</a></li><li><a href=#summary>Summary</a></li><li><a href=#problems>Problems</a><ul><li><a href=#notice>Noti [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/index.html b/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/index.html
index fc597feb477..6a670af7150 100644
--- a/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/index.html
+++ b/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/2018/08/26/%E7%AC%AC%E5%9B%9B%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E4%BA%8E8%E6%9C%8826%E6%97%A5%E5%9C%A8%E6%88%90%E9%83%BD%E4%B8%BE%E8%A1%8C/><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/><meta charset=utf-8><meta name=viewport con [...]
-<meta property="og:description" content="The first Dubbo meetup has been held in Beijing."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-26T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<meta property="og:description" content="The first Dubbo meetup has been held in Beijing."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-08-26T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,8 +60,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-meetup-chengdu.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+s [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20fourth%20Dubbo%20meetup%20has%20been%20held%20in%20Chengdu" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#the-depth-of-the-user-communication>The depth of the user communication</a></li><li><a href=#meetup-activity-information>Meetup activity information</a></li><li><a href=#the-registration-information>The registration information</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-ti [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#the-depth-of-the-user-communication>The depth of the user communication</a></li><li><a href=#meetup-activity-information>Meetup activity information</a></li><li><a href=#the-registration-information>The registration information</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-ti [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/index.html b/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/index.html
index 2522fa0f9ba..ba5c3d2e66c 100644
--- a/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/index.html
+++ b/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-09-02T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:30:48+08:00"><meta itemprop=name content="How to implement a fully asynchronous calls chain based on Dubbo"><meta ite [...]
"><meta itemprop=datePublished content="2018-09-02T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:30:48+08:00"><meta itemprop=wordCount content="1728"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="How to implement a fully asynchronous calls chain based on Dubbo"><meta name=twitter:description content="This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based [...]
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0.
"><meta name=twitter:description content="This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/"><meta property="og:title" content="How to implement a fully asynchronous calls chain based on Dubbo"><meta name=twitter:title content="How to implement a fully asynchronous calls chain based on Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width">< [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/"><meta property="og:title" content="How to implement a fully asynchronous calls chain based on Dubbo"><meta name=twitter:title content="How to implement a fully asynchronous calls chain based on Dubbo"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width">< [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span> String <span style=color:#268bd2>findFoo</span>(String name);
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-xml data-lang=xml><span style=display:flex><span><span style=color:#268bd2><dubbo:reference</span> id=<span style=color:#2aa198>"fooService"</span> interface=<span style=color:#2aa198>"com.alibaba.foo.FooService"</span><span style=color:#268bd2>></span>
@@ -267,8 +278,12 @@
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> <span style=color:#cb4b16>null</span>;
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/ aria-label="Previous - The fourth Dubbo meetup has been held in Chengdu" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2018/09/02/how-to-prepare-an-apache-release/ aria-label="Next - How to prepare an Apache Release" class="btn btn-primary">Next<span [...]
+</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/08/26/the-fourth-dubbo-meetup-has-been-held-in-chengdu/ aria-label="Previous - The fourth Dubbo meetup has been held in Chengdu" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2018/09/02/how-to-prepare-an-apache-release/ aria-label="Next - How to prepare an Apache Release" class="btn btn-primary">Next<span [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-new-async.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sectio [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=How%20to%20implement%20a%20fully%20asynchronous%20calls%20chain%20based%20on%20Dubbo" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#asynchronous-mode-before-version-26x>Asynchronous mode before version 2.6.x</a></li><li><a href=#enhancement-based-on-completablefuture-in-version-270>Enhancement based on CompletableFuture in version 2.7.0</a></li><li><a href=#example-1completablefuture-interface>example 1:CompletableFuture interface</a></li><li><a hre [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#asynchronous-mode-before-version-26x>Asynchronous mode before version 2.6.x</a></li><li><a href=#enhancement-based-on-completablefuture-in-version-270>Enhancement based on CompletableFuture in version 2.7.0</a></li><li><a href=#example-1completablefuture-interface>example 1:CompletableFuture interface</a></li><li><a hre [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/09/02/how-to-prepare-an-apache-release/index.html b/en/blog/2018/09/02/how-to-prepare-an-apache-release/index.html
index 1bf3840d637..365de282677 100644
--- a/en/blog/2018/09/02/how-to-prepare-an-apache-release/index.html
+++ b/en/blog/2018/09/02/how-to-prepare-an-apache-release/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to the Apache publish content and process
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-prepare-an-apache-release/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-09-02T00:00:00+00:00"><meta property="article:modified_time" content="2022-08-07T00:02:07+08:00"><meta itemprop=name content="How to prepare an Apache Release"><meta itemprop=description content="This article introduces how to the Ap [...]
"><meta itemprop=datePublished content="2018-09-02T00:00:00+00:00"><meta itemprop=dateModified content="2022-08-07T00:02:07+08:00"><meta itemprop=wordCount content="2473"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="How to prepare an Apache Release"><meta name=twitter:description content="This article introduces how to the Apache publish content and process
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to the Apache publish content and process
"><meta name=twitter:description content="This article introduces how to the Apache publish content and process
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-prepare-an-apache-release/"><meta property="og:title" content="How to prepare an Apache Release"><meta name=twitter:title content="How to prepare an Apache Release"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=styleshe [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/02/how-to-prepare-an-apache-release/"><meta property="og:title" content="How to prepare an Apache Release"><meta name=twitter:title content="How to prepare an Apache Release"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=styleshe [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>$ gpg --version <span style=color:#586e75>#check version,should be 2.x</span>
</span></span></code></pre></div></li><li><p>Generate the key with GPG</p><ul><li>Generate the key according to the prompt</li></ul><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>$ gpg2 --full-gen-key
</span></span><span style=display:flex><span>gpg <span style=color:#719e07>(</span>GnuPG<span style=color:#719e07>)</span> 2.0.12; Copyright <span style=color:#719e07>(</span>C<span style=color:#719e07>)</span> <span style=color:#2aa198>2009</span> Free Software Foundation, Inc.
@@ -298,8 +309,12 @@ The mail template to announce release:</li></ol><div class=highlight><pre tabind
</span></span><span style=display:flex><span>[3] https://github.com/apache/dubbo/releases
</span></span><span style=display:flex><span>[4] https://github.com/apache/dubbo/issues
</span></span></code></pre></div><h2 id=complete-maven-convenient-binary-release>Complete Maven Convenient Binary release</h2><p><strong><a href=https://repository.apache.org/>repository.apache.org</a> The permissions of the nexus repository have been applied, see <a href=https://issues.apache.org/jira/browse/INFRA-16451>jira</a>。</strong></p><p>To release the maven artifacts, go to <a href=https://repository.apache.org>repository.apache.org</a>, and choose the staging repository, click [...]
-</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/ aria-label="Previous - How to implement a fully asynchronous calls chain based on Dubbo" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/ aria-label="Next - Integrate Dubbo with Kubernetes" cla [...]
+</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/09/02/how-to-implement-a-fully-asynchronous-calls-chain-based-on-dubbo/ aria-label="Previous - How to implement a fully asynchronous calls chain based on Dubbo" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/ aria-label="Next - Integrate Dubbo with Kubernetes" cla [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/prepare-an-apache-release.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=How%20to%20prepare%20an%20Apache%20Release" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#understanding-the-apache-release-cycle>Understanding the Apache Release Cycle</a></li><li><a href=#preparation-of-local-building-environment>Preparation of Local Building Environment</a></li><li><a href=#pack--upload>Pack & Upload</a><ul><li><a href=#note>Note</a></li></ul></li><li><a href=#prepare-apache-release>Prepar [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#understanding-the-apache-release-cycle>Understanding the Apache Release Cycle</a></li><li><a href=#preparation-of-local-building-environment>Preparation of Local Building Environment</a></li><li><a href=#pack--upload>Pack & Upload</a><ul><li><a href=#note>Note</a></li></ul></li><li><a href=#prepare-apache-release>Prepar [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/index.html b/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/index.html
index f91efc39bea..2629aba25b5 100644
--- a/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/index.html
+++ b/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes's multi-tenancy security system.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-09-30T00:00:00+00:00"><meta property="article:modified_time" content="2023-02-23T11:00:42+08:00"><meta itemprop=name content="Integrate Dubbo with Kubernetes"><meta itemprop=description content="This article will try to register Dubbo [...]
"><meta itemprop=datePublished content="2018-09-30T00:00:00+00:00"><meta itemprop=dateModified content="2023-02-23T11:00:42+08:00"><meta itemprop=wordCount content="1639"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Integrate Dubbo with Kubernetes"><meta name=twitter:description content="This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes's multi-tenancy security system.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes's multi-tenancy security system.
"><meta name=twitter:description content="This article will try to register Dubbo service to Kubernetes and integrate with Kubernetes's multi-tenancy security system.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/"><meta property="og:title" content="Integrate Dubbo with Kubernetes"><meta name=twitter:title content="Integrate Dubbo with Kubernetes"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/k8s/1.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons. [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/09/30/integrate-dubbo-with-kubernetes/"><meta property="og:title" content="Integrate Dubbo with Kubernetes"><meta name=twitter:title content="Integrate Dubbo with Kubernetes"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/k8s/1.png"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons. [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
Dubbo’s consumer directly discovers the corresponding service endpoints of Kubernetes during service discovery procedure, thereby reusing Dubbo’s existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be seamlessly integrated into the multi-tenant security system of Kubernetes. Reference demo : <a href=https://github.com/dubbo/dubbo-Kubernetes>https://github.com/dubbo/dubbo-ubernetes</a></p><h [...]
<img src=/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1m.tEtrorBKNjSZFjXXc_SpXa-1892-870.png alt=img></p></li><li><p>Click Manage enter the repository details page. Click Build in images service panel, construct the demo into image and publish it to the specified repository. As shown below.
<img src=/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png alt=img></p></li><li><p>Switch to Enterprise Distributed Application Services (EDAS) products panel, visit Resource Management -> Clusters. Create Kubernetes cluster and bind ECS. As shown below.
@@ -69,8 +80,12 @@ Dubbo’s consumer directly discovers the corresponding service endpoints of
</span></span><span style=display:flex><span> <span style=color:#268bd2>"apiVersion"</span>: <span style=color:#2aa198>"v1"</span>,
</span></span><span style=display:flex><span> <span style=color:#268bd2>"resourceVersion"</span>: <span style=color:#2aa198>"850282769"</span>
</span></span><span style=display:flex><span>}, <span style=color:#2aa198>"reason"</span>: <span style=color:#2aa198>"FailedSync"</span>, <span style=color:#2aa198>"message"</span>: <span style=color:#2aa198>"Error syncing pod"</span>, "
-</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/09/02/how-to-prepare-an-apache-release/ aria-label="Previous - How to prepare an Apache Release" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/ aria-label="Next - Introduction to the Dubbo protocol" class="btn btn-primary">Next<span class=ml-1>→</span></a></li [...]
+</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2018/09/02/how-to-prepare-an-apache-release/ aria-label="Previous - How to prepare an Apache Release" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/ aria-label="Next - Introduction to the Dubbo protocol" class="btn btn-primary">Next<span class=ms-1>→</span></a></li [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-k8s.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Integrate%20Dubbo%20with%20Kubernetes" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#demo-verification>Demo Verification</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#demo-verification>Demo Verification</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/index.html b/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/index.html
index 14bc5c2caef..dcaa33cd4b7 100644
--- a/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/index.html
+++ b/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><li [...]
-<meta property="og:description" content="This article introduces the design of the Dubbo protocol."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-10-05T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Introdu [...]
+<meta property="og:description" content="This article introduces the design of the Dubbo protocol."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-10-05T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Introdu [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,7 +60,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>Codec2</span> {
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>@Adaptive</span>({Constants.CODEC_KEY})
@@ -72,8 +83,12 @@
</span></span></code></pre></div><blockquote><p>Refer to Netty’s <code>LengthFieldBasedFrameDecoder</code></p></blockquote><p>The Dubbo protocol is actually a variable length protocol, which is covered in more detail in later chapters.</p><h2 id=the-dubbo-protocol>The Dubbo protocol</h2><h3 id=overview-to-the-dubbo-protocol>Overview to the Dubbo protocol</h3><p>The Dubbo framework defines a proprietary RPC protocol in which the specific content of the request and response protocols [...]
</span></span><span style=display:flex><span>Service name bytes (line break)
</span></span><span style=display:flex><span>...
-</span></span></code></pre></div><h2 id=advantages-and-disadvantages-about-the-dubbo-protocol>Advantages and disadvantages about the Dubbo protocol</h2><h3 id=advantages>Advantages</h3><ul><li>The protocol is designed to be very compact. The data type can be represented by 1 bit will not be represented by a byte, such as a boolean type identifier.</li><li>The request header is the same as response header, and the specific content is assembled to the variable part through the serializer, [...]
+</span></span></code></pre></div><h2 id=advantages-and-disadvantages-about-the-dubbo-protocol>Advantages and disadvantages about the Dubbo protocol</h2><h3 id=advantages>Advantages</h3><ul><li>The protocol is designed to be very compact. The data type can be represented by 1 bit will not be represented by a byte, such as a boolean type identifier.</li><li>The request header is the same as response header, and the specific content is assembled to the variable part through the serializer, [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-protocol.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Introduction%20to%20the%20Dubbo%20protocol" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#the-concept-of-the-protocol>The concept of the protocol</a><ul><li><a href=#what-is-the-protocol>What is the protocol</a></li><li><a href=#the-definition-of-codec>The definition of <code>Codec</code></a></li></ul></li><li><a href=#common-protocol-mode>Common protocol mode</a><ul><li><a href=#fixed-length-protocol>Fixed- [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#the-concept-of-the-protocol>The concept of the protocol</a><ul><li><a href=#what-is-the-protocol>What is the protocol</a></li><li><a href=#the-definition-of-codec>The definition of <code>Codec</code></a></li></ul></li><li><a href=#common-protocol-mode>Common protocol mode</a><ul><li><a href=#fixed-length-protocol>Fixed- [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/index.html b/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/index.html
index 5eb56df7d0b..ffb37501014 100644
--- a/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/index.html
+++ b/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png siz [...]
-<meta property="og:description" content="This article introduces how to use Nacos in Dubbo application."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-11-07T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=na [...]
+<meta property="og:description" content="This article introduces how to use Nacos in Dubbo application."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-11-07T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=na [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,7 +60,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> ...
</span></span><span style=display:flex><span>
@@ -352,8 +363,12 @@
</span></span><span style=display:flex><span>Service [name :null , port : 20883] sayName("小马哥(mercyblitz)") : Hello,小马哥(mercyblitz)
</span></span><span style=display:flex><span>Service [name :null , port : 20883] sayName("小马哥(mercyblitz)") : Hello,小马哥(mercyblitz)
</span></span><span style=display:flex><span>Service [name :null , port : 20883] sayName("小马哥(mercyblitz)") : Hello,小马哥(mercyblitz)
-</span></span></code></pre></div><p>As a result, both operation and load balancing are normal due to the property demo.service.name has not been added to the current example, the “name” information is output as null. For more information, please refer to: <a href=https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos>https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos</a>.</p><p>If you’re interested in or fond of open [...]
+</span></span></code></pre></div><p>As a result, both operation and load balancing are normal due to the property demo.service.name has not been added to the current example, the “name” information is output as null. For more information, please refer to: <a href=https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos>https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos</a>.</p><p>If you’re interested in or fond of open [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-registry-nacos-integration.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20Integrates%20with%20Nacos%20to%20Become%20a%20Registry" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preparation-works>Preparation Works</a></li><li><a href=#get-started-quickly>Get Started Quickly</a></li><li><a href=#increase-maven-dependency>Increase Maven Dependency</a></li><li><a href=#configure-the-registry>Configure the Registry</a></li><li><a href=#dubbo-spring-externalization-configuration>Dubbo Spring Externa [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preparation-works>Preparation Works</a></li><li><a href=#get-started-quickly>Get Started Quickly</a></li><li><a href=#increase-maven-dependency>Increase Maven Dependency</a></li><li><a href=#configure-the-registry>Configure the Registry</a></li><li><a href=#dubbo-spring-externalization-configuration>Dubbo Spring Externa [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/index.html b/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/index.html
index e34249515ea..018e5fa9e6f 100644
--- a/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/index.html
+++ b/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/2018/12/10/%E7%AC%AC%E4%BA%94%E5%B1%8Adubbo%E5%BC%80%E5%8F%91%E8%80%85%E6%B2%99%E9%BE%99%E5%9C%A8%E6%9D%AD%E5%B7%9E%E6%88%90%E5%8A%9F%E4%B8%BE%E5%8A%9E/><link rel=canonical href=https://dubbo.apache.org/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/><meta charset=utf-8><meta name=viewport content="width= [...]
-<meta property="og:description" content="The fifth Dubbo meetup has been held in Hangzhou"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-12-10T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<meta property="og:description" content="The fifth Dubbo meetup has been held in Hangzhou"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2018-12-10T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Th [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,8 +60,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-meetup-hangzhou.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=The%20fifth%20Dubbo%20meetup%20has%20been%20held%20in%20Hangzhou" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/index.html b/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/index.html
index 087d218e89c..d2956ac4142 100644
--- a/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/index.html
+++ b/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you how to use Seata to ensure consistency between Dubbo Microservices.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-01-17T00:00:00+00:00"><meta property="article:modified_time" content="2023-12-15T15:20:45+08:00"><meta itemprop=name content="How to use Seata to ensure consistency between Dubbo Microservices"><meta [...]
"><meta itemprop=datePublished content="2019-01-17T00:00:00+00:00"><meta itemprop=dateModified content="2023-12-15T15:20:45+08:00"><meta itemprop=wordCount content="584"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="How to use Seata to ensure consistency between Dubbo Microservices"><meta name=twitter:description content="This article will introduce you how to use Seata to ensure consistency between Dubbo Microservices.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you how to use Seata to ensure consistency between Dubbo Microservices.
"><meta name=twitter:description content="This article will introduce you how to use Seata to ensure consistency between Dubbo Microservices.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/"><meta property="og:title" content="How to use Seata to ensure consistency between Dubbo Microservices"><meta name=twitter:title content="How to use Seata to ensure consistency between Dubbo Microservices"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/fescar/fescar-1.png"><meta property="og:t [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/01/17/how-to-use-seata-to-ensure-consistency-between-dubbo-microservices/"><meta property="og:title" content="How to use Seata to ensure consistency between Dubbo Microservices"><meta name=twitter:title content="How to use Seata to ensure consistency between Dubbo Microservices"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/fescar/fescar-1.png"><meta property="og:t [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * deduct storage count
@@ -193,8 +204,12 @@ dubbo-storage-service.xml</p><div class=highlight><pre tabindex=0 style=color:#9
</span></span><span style=display:flex><span>e.g.
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span>sh seata-server.sh -p <span style=color:#2aa198>8091</span> -h 127.0.0.1 -m file
-</span></span></code></pre></div><h3 id=step-5-run-example>Step 5: Run example</h3><ul><li>Start AccountService (<a href=https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboAccountServiceStarter.java>DubboAccountServiceStarter</a>).</li><li>Start StockService (<a href=https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org [...]
+</span></span></code></pre></div><h3 id=step-5-run-example>Step 5: Run example</h3><ul><li>Start AccountService (<a href=https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboAccountServiceStarter.java>DubboAccountServiceStarter</a>).</li><li>Start StockService (<a href=https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-fescar.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+a [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=How%20to%20use%20Seata%20to%20ensure%20consistency%20between%20Dubbo%20Microservices" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#use-case>Use case</a><ul><li><a href=#architecture>Architecture</a></li><li><a href=#storageservice>StorageService</a></li><li><a href=#orderservice>OrderService</a></li><li><a href=#accountservice>AccountService</a></li><li><a href=#main-business-logic>Main business logic</a></li></ul></li><li><a href=#distributed-tran [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#use-case>Use case</a><ul><li><a href=#architecture>Architecture</a></li><li><a href=#storageservice>StorageService</a></li><li><a href=#orderservice>OrderService</a></li><li><a href=#accountservice>AccountService</a></li><li><a href=#main-business-logic>Main business logic</a></li></ul></li><li><a href=#distributed-tran [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/index.html b/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/index.html
index 52b34c8e950..f2c4686b9f4 100644
--- a/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/index.html
+++ b/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="Implementation background and practice of Dubbo client asynchronous interface
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-02-20T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:31:32+08:00"><meta itemprop=name content="Implementation background and practice of Dubbo client asynchr [...]
"><meta itemprop=datePublished content="2019-02-20T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:31:32+08:00"><meta itemprop=wordCount content="1043"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Implementation background and practice of Dubbo client asynchronous interface"><meta name=twitter:description content="Implementation background and practice of Dubbo client asynchronous interface
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="Implementation background and practice of Dubbo client asynchronous interface
"><meta name=twitter:description content="Implementation background and practice of Dubbo client asynchronous interface
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/"><meta property="og:title" content="Implementation background and practice of Dubbo client asynchronous interface"><meta name=twitter:title content="Implementation background and practice of Dubbo client asynchronous interface"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubboasy [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/"><meta property="og:title" content="Implementation background and practice of Dubbo client asynchronous interface"><meta name=twitter:title content="Implementation background and practice of Dubbo client asynchronous interface"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubboasy [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span><span style=color:#268bd2><dubbo:reference</span> id=<span style=color:#2aa198>"demoService"</span> check=<span style=color:#2aa198>"false"</span> interface=<span style=color:#2aa198>"com.alibaba.dubbo.samples.notify.api.DemoService"</span> version=<span style=color:#2aa198>"1.0.0"</span> group=<span style=color:#2aa198>"cn"</span><span style=color:#268bd2>></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><dubbo:method</span> name=<span style=color:#2aa198>"sayHello"</span> onreturn=<span style=color:#2aa198>"demoCallback.onreturn"</span> onthrow=<span style=color:#2aa198>"demoCallback.onthrow"</span><span style=color:#268bd2>/></span>
@@ -73,8 +84,12 @@
</span></span><span style=display:flex><span> System.out.println(<span style=color:#2aa198>"onthrow: "</span> <span style=color:#719e07>+</span> name);
</span></span><span style=display:flex><span> }
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>It is important to note that the parameters for the three methods in the custom Notify interface are as follows:</p><ul><li><code>oninvoke</code> The parameters of the method are the same as those of the calling method.</li><li><code>onreturn</code> The first parameter of the method is the return value of the calling method, and the rest is the parameters of the calling method.</li><li><code>onthrow</code> The first parameter to the method is the call [...]
+</span></span></code></pre></div><p>It is important to note that the parameters for the three methods in the custom Notify interface are as follows:</p><ul><li><code>oninvoke</code> The parameters of the method are the same as those of the calling method.</li><li><code>onreturn</code> The first parameter of the method is the return value of the calling method, and the rest is the parameters of the calling method.</li><li><code>onthrow</code> The first parameter to the method is the call [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-async-client.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sec [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Implementation%20background%20and%20practice%20of%20Dubbo%20client%20asynchronous%20interface" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preface>Preface</a></li><li><a href=#client-asynchronization>Client Asynchronization</a><ul><li><a href=#background>Background</a></li><li><a href=#the-sample>The sample</a></li><li><a href=#practical-advice>Practical advice</a></li><li><a href=#conclusions>Conclusions</a></li></ul></li></ul></nav><div class="taxonomy t [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preface>Preface</a></li><li><a href=#client-asynchronization>Client Asynchronization</a><ul><li><a href=#background>Background</a></li><li><a href=#the-sample>The sample</a></li><li><a href=#practical-advice>Practical advice</a></li><li><a href=#conclusions>Conclusions</a></li></ul></li></ul></nav><div class="taxonomy t [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/index.html b/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/index.html
index f296e858bd8..d5f869ad14a 100644
--- a/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/index.html
+++ b/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="Implementation background and practice of Dubbo server asynchronous interface
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-02-20T00:00:00+00:00"><meta property="article:modified_time" content="2022-12-16T10:31:21+08:00"><meta itemprop=name content="Implementation background and practice of Dubbo server asynchr [...]
"><meta itemprop=datePublished content="2019-02-20T00:00:00+00:00"><meta itemprop=dateModified content="2022-12-16T10:31:21+08:00"><meta itemprop=wordCount content="909"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Implementation background and practice of Dubbo server asynchronous interface"><meta name=twitter:description content="Implementation background and practice of Dubbo server asynchronous interface
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="Implementation background and practice of Dubbo server asynchronous interface
"><meta name=twitter:description content="Implementation background and practice of Dubbo server asynchronous interface
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/"><meta property="og:title" content="Implementation background and practice of Dubbo server asynchronous interface"><meta name=twitter:title content="Implementation background and practice of Dubbo server asynchronous interface"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubboasy [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/"><meta property="og:title" content="Implementation background and practice of Dubbo server asynchronous interface"><meta name=twitter:title content="Implementation background and practice of Dubbo server asynchronous interface"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubboasy [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>@Override</span>
</span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> String <span style=color:#268bd2>sayHello</span>(String name) {
@@ -76,8 +87,12 @@
</span></span><span style=display:flex><span> System.out.println(<span style=color:#2aa198>"Main sayHello() method end."</span>);
</span></span><span style=display:flex><span> <span style=color:#719e07>return</span> <span style=color:#2aa198>"hello, "</span> <span style=color:#719e07>+</span> name;
</span></span><span style=display:flex><span> }
-</span></span></code></pre></div><h2 id=practical-suggestions>Practical suggestions</h2><ul><li>Don’t rely too much on server-side asynchrony.</li><li>Server-side asynchrony is basically a false proposition in the face of event-driven or Reactive.<span data-type=color style=color:#24292e><span data-type=background style=background-color:#fff>Supplement the reason: the server asynchrony is said Dubbo server-side business threads (default is 200) is not enough, but in the Event-Drive [...]
+</span></span></code></pre></div><h2 id=practical-suggestions>Practical suggestions</h2><ul><li>Don’t rely too much on server-side asynchrony.</li><li>Server-side asynchrony is basically a false proposition in the face of event-driven or Reactive.<span data-type=color style=color:#24292e><span data-type=background style=background-color:#fff>Supplement the reason: the server asynchrony is said Dubbo server-side business threads (default is 200) is not enough, but in the Event-Drive [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-async-server.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sec [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Implementation%20background%20and%20practice%20of%20Dubbo%20server%20asynchronous%20interface" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preface>Preface</a></li><li><a href=#implementation-background>Implementation background</a><ul><li><a href=#server-side-thread-strategy>Server-side thread strategy</a></li><li><a href=#coroutine-and-thread>Coroutine and thread</a></li></ul></li><li><a href=#the-sample>The sample</a></li><li><a href=#practical-suggestio [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#preface>Preface</a></li><li><a href=#implementation-background>Implementation background</a><ul><li><a href=#server-side-thread-strategy>Server-side thread strategy</a></li><li><a href=#coroutine-and-thread>Coroutine and thread</a></li></ul></li><li><a href=#the-sample>The sample</a></li><li><a href=#practical-suggestio [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/index.html b/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/index.html
index 2091a194d3b..1dcccc8445a 100644
--- a/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/index.html
+++ b/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="description: This article introduces Dubbo's SPI mechanism.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-04-25T00:00:00+00:00"><meta property="article:modified_time" content="2023-02-23T11:00:42+08:00"><meta itemprop=name content="Dubbo extensible mechanism source code analysis - part 1"><meta itemprop=description [...]
"><meta itemprop=datePublished content="2019-04-25T00:00:00+00:00"><meta itemprop=dateModified content="2023-02-23T11:00:42+08:00"><meta itemprop=wordCount content="2284"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 1"><meta name=twitter:description content="description: This article introduces Dubbo's SPI mechanism.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="description: This article introduces Dubbo's SPI mechanism.
"><meta name=twitter:description content="description: This article introduces Dubbo's SPI mechanism.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/"><meta property="og:title" content="Dubbo extensible mechanism source code analysis - part 1"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 1"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo_loadbalance.png"><meta property="og:type" content="article"><meta n [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/"><meta property="og:title" content="Dubbo extensible mechanism source code analysis - part 1"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 1"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo_loadbalance.png"><meta property="og:type" content="article"><meta n [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
When talking about software design, people always mention scalability. A framework with good scalability requires the following:
1.The framework should follow opening/closed principle: software entities should be open for extension, but closed for modification; This means a framework should allow the maintainer to add new functions with as few modifications as possible.
2.The framework should allow the user to add new functions by adding code on his project without modifying the framework’s original source code base.
@@ -110,8 +121,12 @@ Save tom to Mysql</p><h2 id=4-dubbo-spi-mechanism>4. Dubbo SPI Mechanism</h2><p>
</span></span></code></pre></div><h3 id=72-add-extension-configuration-file>7.2 Add extension configuration file</h3><p>Add file:<code>META-INF/dubbo/com.alibaba.dubbo.rpc.cluster.LoadBalance</code>. The content of file is:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-bash data-lang=bash><span style=display:flex><span><span style=color:#268bd2>demo</span><span style=color:#719e07>=</span [...]
</span></span></code></pre></div><h3 id=73-configure-customized-loadbalance>7.3 Configure customized LoadBalance</h3><p>Through the above 2 steps, we have already added a LoadBalance implementation named demo, and set up the configuration file. In the next step, we need to explicitly tell Dubbo to implement the demo while doing load balancing. If we use Dubbo through spring, we could set it up in the xml file.</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:# [...]
</span></span></code></pre></div><p>Configure <loadbalance=“demo”> in <a href=dubbo:reference>dubbo:reference</a> at consumer part.</p><h3 id=74-launch-dubbo>7.4 launch Dubbo</h3><p>Launch Dubbo and call IHelloService, the console will output log: <code>DemoLoadBalance: Select the first invoker...</code>, which means Dubbo does use our customized LoadBalance.</p><h2 id=summary>Summary</h2><p>So far, we learnt the basic concepts of Dubbo SPI beginning with Java SPI, and we [...]
-*Extension registration on Dubbo requires only configuration file under the ClassPath directory. It is simple to use and has no effect on the existing code. This meets opening/closed principle.</li><li>Dubbo’s extension mechanism default: @SPI(“dubbo”) represents the default SPI object.</li><li>Dubbo’s extension mechanism supports the advanced features such as IoC and AoP, etc.</li><li>Dubbo’s extension mechanism supports third-party IoC containers. It suppo [...]
+*Extension registration on Dubbo requires only configuration file under the ClassPath directory. It is simple to use and has no effect on the existing code. This meets opening/closed principle.</li><li>Dubbo’s extension mechanism default: @SPI(“dubbo”) represents the default SPI object.</li><li>Dubbo’s extension mechanism supports the advanced features such as IoC and AoP, etc.</li><li>Dubbo’s extension mechanism supports third-party IoC containers. It suppo [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/introduction-to-dubbo-spi.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20extensible%20mechanism%20source%20code%20analysis%20-%20part%201" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-extension-mechanism-of-dubbo>1. Extension Mechanism of Dubbo</a></li><li><a href=#2extension-solutions>2.Extension Solutions</a></li><li><a href=#3java-spi-mechanism>3.Java SPI Mechanism</a></li><li><a href=#4-dubbo-spi-mechanism>4. Dubbo SPI Mechanism</a></li><li><a href=#5-basic-concepts-for-dubbo-extension-point-me [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-extension-mechanism-of-dubbo>1. Extension Mechanism of Dubbo</a></li><li><a href=#2extension-solutions>2.Extension Solutions</a></li><li><a href=#3java-spi-mechanism>3.Java SPI Mechanism</a></li><li><a href=#4-dubbo-spi-mechanism>4. Dubbo SPI Mechanism</a></li><li><a href=#5-basic-concepts-for-dubbo-extension-point-me [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/index.html b/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/index.html
index bf95f8e382b..03ea2a85ac4 100644
--- a/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/index.html
+++ b/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces the principles and details of Dubbo's SPI.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-05-02T00:00:00+00:00"><meta property="article:modified_time" content="2021-01-19T10:06:15+08:00"><meta itemprop=name content="Dubbo extensible mechanism source code analysis - part 2"><meta itemprop=description [...]
"><meta itemprop=datePublished content="2019-05-02T00:00:00+00:00"><meta itemprop=dateModified content="2021-01-19T10:06:15+08:00"><meta itemprop=wordCount content="2629"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 2"><meta name=twitter:description content="This article introduces the principles and details of Dubbo's SPI.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces the principles and details of Dubbo's SPI.
"><meta name=twitter:description content="This article introduces the principles and details of Dubbo's SPI.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/"><meta property="og:title" content="Dubbo extensible mechanism source code analysis - part 2"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 2"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-extensionfactory.png"><meta property="og:type" content="article"><m [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/"><meta property="og:title" content="Dubbo extensible mechanism source code analysis - part 2"><meta name=twitter:title content="Dubbo extensible mechanism source code analysis - part 2"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/dubbo-extensionfactory.png"><meta property="og:type" content="article"><m [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
This is a static factory method that enters an extensible interface and returns an ExtensionLoader entity class for this interface. With this entity class, you can get not only a specific extension based on name, but also an adaptive extension.</li></ol><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-java data-lang=java><span style=display:flex><span><span style=color:#268bd2>public</span> <sp [...]
</span></span><span style=display:flex><span> <span style=color:#586e75>// An extension point must be an interface</span>
</span></span><span style=display:flex><span> <span style=color:#719e07>if</span> (<span style=color:#719e07>!</span>type.isInterface()) {
@@ -317,8 +328,12 @@ In the generated Protocol$Adaptive, both the getDefaultPort and destroy methods
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>destroy</span>();
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>As you can see, there are four methods in the Protocol interface, but only the methods of export and refer use the @Adaptive annotation. Dubbo automatically generates adaptive instances, and only the methods modified by @Adaptive has a specific implementation. Therefore, in the Protocol$Adaptive class, only the export and refer methods have specific implementations, and the rest of the methods throw exceptions.</p><ul class="list-unstyled d-flex justif [...]
+</span></span></code></pre></div><p>As you can see, there are four methods in the Protocol interface, but only the methods of export and refer use the @Adaptive annotation. Dubbo automatically generates adaptive instances, and only the methods modified by @Adaptive has a specific implementation. Therefore, in the Protocol$Adaptive class, only the export and refer methods have specific implementations, and the rest of the methods throw exceptions.</p><ul class="list-unstyled d-flex justif [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/introduction-to-dubbo-spi-2.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matt [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20extensible%20mechanism%20source%20code%20analysis%20-%20part%202" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#extensionloader>ExtensionLoader</a></li><li><a href=#auto-assembly-of-dubbo-spi-advanced-usage>Auto-assembly of Dubbo SPI advanced usage</a></li><li><a href=#aop-of-dubbo-spi-advanced-usage>AOP of Dubbo SPI advanced usage</a><ul><li><a href=#what-is-the-wrapper-class>What is the Wrapper class</a></li><li><a href=#how-to [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#extensionloader>ExtensionLoader</a></li><li><a href=#auto-assembly-of-dubbo-spi-advanced-usage>Auto-assembly of Dubbo SPI advanced usage</a></li><li><a href=#aop-of-dubbo-spi-advanced-usage>AOP of Dubbo SPI advanced usage</a><ul><li><a href=#what-is-the-wrapper-class>What is the Wrapper class</a></li><li><a href=#how-to [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/index.html b/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/index.html
index bdbc454956c..47b0a90e612 100644
--- a/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/index.html
+++ b/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to use Apache Skywalking to track Dubbo applications.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-08-11T00:00:00+00:00"><meta property="article:modified_time" content="2022-09-11T12:56:56+08:00"><meta itemprop=name content="Tracing Dubbo service with Apache Skywalking"><meta itemprop=description content="This article [...]
"><meta itemprop=datePublished content="2019-08-11T00:00:00+00:00"><meta itemprop=dateModified content="2022-09-11T12:56:56+08:00"><meta itemprop=wordCount content="469"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Tracing Dubbo service with Apache Skywalking"><meta name=twitter:description content="This article introduces how to use Apache Skywalking to track Dubbo applications.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to use Apache Skywalking to track Dubbo applications.
"><meta name=twitter:description content="This article introduces how to use Apache Skywalking to track Dubbo applications.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/"><meta property="og:title" content="Tracing Dubbo service with Apache Skywalking"><meta name=twitter:title content="Tracing Dubbo service with Apache Skywalking"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/skywalking-dashboard.png"><meta property="og:type" content="article"><meta name=viewport content="width=dev [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/11/tracing-dubbo-service-with-apache-skywalking/"><meta property="og:title" content="Tracing Dubbo service with Apache Skywalking"><meta name=twitter:title content="Tracing Dubbo service with Apache Skywalking"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/skywalking-dashboard.png"><meta property="og:type" content="article"><meta name=viewport content="width=dev [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
package org.apache.skywalking.demo.interfaces;</p><p>public interface HelloService {
String sayHello(String name);
}</p><h4 id=service-provider-project>Service provider project</h4><p>package org.apache.skywalking.demo.provider;</p><p>@Service(version = “${demo.service.version}”,
@@ -90,8 +101,12 @@ public String sayHello(@PathVariable(name = "name") String name) {
<img src=/imgs/blog/skywalking-application_instance.png alt=/admin-guide/images/skywalking-application_instance.png></p><h3 id=service-view>Service view</h3><p>Consumer side
<img src=/imgs/blog/skywalking-service-consumer.png alt=/admin-guide/images/skywalking-service-consumer.png></p><p>provider side
<img src=/imgs/blog/skywalking-service-provider.png alt=/admin-guide/images/skywalking-service-provider.png></p><h3 id=trace>Trace</h3><p><img src=/imgs/blog/skywalking-trace.png alt=/admin-guide/images/skywalking-trace.png></p><p>Span info
-<img src=/imgs/blog/skywalking-span-Info.png alt=/admin-guide/images/skywalking-span-Info.png></p><h3 id=alarm-view>Alarm view</h3><p><img src=/imgs/blog/skywalking-alarm.png alt=/admin-guide/images/skywalking-alarm.png></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/ aria-label="Previous - Dubbo extensible mechanism source code analysis - part 2" class="btn bt [...]
+<img src=/imgs/blog/skywalking-span-Info.png alt=/admin-guide/images/skywalking-span-Info.png></p><h3 id=alarm-view>Alarm view</h3><p><img src=/imgs/blog/skywalking-alarm.png alt=/admin-guide/images/skywalking-alarm.png></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/ aria-label="Previous - Dubbo extensible mechanism source code analysis - part 2" class="btn bt [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/tracing-with-skywalking.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%2 [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Tracing%20Dubbo%20service%20with%20Apache%20Skywalking" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-to-apache-skywalking>Introduction to Apache Skywalking</a></li><li><a href=#dubbo-and-apache-skywalking>Dubbo and Apache Skywalking</a><ul><li><a href=#build-the-dubbo-demo--project>Build the Dubbo demo project</a></li><li><a href=#deploy-apache-skywalking>Deploy Apache Skywalking</a></li></ul></li><li><a h [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#introduction-to-apache-skywalking>Introduction to Apache Skywalking</a></li><li><a href=#dubbo-and-apache-skywalking>Dubbo and Apache Skywalking</a><ul><li><a href=#build-the-dubbo-demo--project>Build the Dubbo demo project</a></li><li><a href=#deploy-apache-skywalking>Deploy Apache Skywalking</a></li></ul></li><li><a h [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2019/08/26/service-test/index.html b/en/blog/2019/08/26/service-test/index.html
index c69c29c9b00..e24b2762b57 100644
--- a/en/blog/2019/08/26/service-test/index.html
+++ b/en/blog/2019/08/26/service-test/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article introduces how to make service test with Dubbo.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/26/service-test/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2019-08-26T00:00:00+00:00"><meta property="article:modified_time" content="2020-12-22T13:19:33+08:00"><meta itemprop=name content="Dubbo Admin service test"><meta itemprop=description content="This article introduces how to make service test with Dubbo.
"><meta itemprop=datePublished content="2019-08-26T00:00:00+00:00"><meta itemprop=dateModified content="2020-12-22T13:19:33+08:00"><meta itemprop=wordCount content="825"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Dubbo Admin service test"><meta name=twitter:description content="This article introduces how to make service test with Dubbo.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article introduces how to make service test with Dubbo.
"><meta name=twitter:description content="This article introduces how to make service test with Dubbo.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/26/service-test/"><meta property="og:title" content="Dubbo Admin service test"><meta name=twitter:title content="Dubbo Admin service test"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/admin/testSearch.jpg"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2019/08/26/service-test/"><meta property="og:title" content="Dubbo Admin service test"><meta name=twitter:title content="Dubbo Admin service test"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/admin/testSearch.jpg"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<img src=/imgs/blog/admin/testSearch.jpg alt=testSearch><br>the information here is similar to the metadata, including the method name, parameter type and return value. Click the label on the right to enter the <code>service test</code> page.</p></li><li><p>Service test:
<img src=/imgs/blog/admin/testSuccess.jpg alt=testSuccess><br><code>service test</code> page contains two json editor, the parameter’s informations are all stored in a json format, where you need to fill in the corresponding parameter values (in this case, the number type is String ), after filling, click <code>execute</code> to initiate the call to the server, and the result of the call is displayed in the editor on the right. If the call fails, the detailed cause of the failure i [...]
</span></span><span style=display:flex><span>Result <span style=color:#268bd2>getUser</span>(String name, UserInfoDO userInfoDO);
@@ -173,8 +184,12 @@ As shown, the server will register the metadata information of the service to th
</span></span><span style=display:flex><span> ...
</span></span><span style=display:flex><span> ]
</span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>Related to service testing is the method and type information contained in <code>methods</code> and <code>types</code>. Based on this information, Dubbo Admin renders the parameters into the Json Editor of the service test page, where the user enters the values of each parameter and each member variable.</p><h2 id=principle-generalized-calls>Principle: Generalized calls</h2><p>With the parameter type, the next question is how to call to the server. In [...]
+</span></span></code></pre></div><p>Related to service testing is the method and type information contained in <code>methods</code> and <code>types</code>. Based on this information, Dubbo Admin renders the parameters into the Json Editor of the service test page, where the user enters the values of each parameter and each member variable.</p><h2 id=principle-generalized-calls>Principle: Generalized calls</h2><p>With the parameter type, the next question is how to call to the server. In [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/service-test.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+a [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Dubbo%20Admin%20service%20test" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#usage>Usage</a></li><li><a href=#principledata-source>Principle:Data source</a></li><li><a href=#principle-generalized-calls>Principle: Generalized calls</a></li><li><a href=#summary-and-outlook>Summary and outlook</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5> [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#usage>Usage</a></li><li><a href=#principledata-source>Principle:Data source</a></li><li><a href=#principle-generalized-calls>Principle: Generalized calls</a></li><li><a href=#summary-and-outlook>Summary and outlook</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5> [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2020/05/18/past-releases/index.html b/en/blog/2020/05/18/past-releases/index.html
index 432307b4de3..30bf3f2ff97 100644
--- a/en/blog/2020/05/18/past-releases/index.html
+++ b/en/blog/2020/05/18/past-releases/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="This article will introduce you how to understand the details of each version and upgrade matters needing attention.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2020/05/18/past-releases/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2020-05-18T00:00:00+00:00"><meta property="article:modified_time" content="2023-01-02T18:18:49+08:00"><meta itemprop=name content="Past Releases"><meta itemprop=description content="This article will introduce you how to understand the details of each versi [...]
"><meta itemprop=datePublished content="2020-05-18T00:00:00+00:00"><meta itemprop=dateModified content="2023-01-02T18:18:49+08:00"><meta itemprop=wordCount content="508"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Past Releases"><meta name=twitter:description content="This article will introduce you how to understand the details of each version and upgrade matters needing attention.
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="This article will introduce you how to understand the details of each version and upgrade matters needing attention.
"><meta name=twitter:description content="This article will introduce you how to understand the details of each version and upgrade matters needing attention.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2020/05/18/past-releases/"><meta property="og:title" content="Past Releases"><meta name=twitter:title content="Past Releases"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link hre [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2020/05/18/past-releases/"><meta property="og:title" content="Past Releases"><meta name=twitter:title content="Past Releases"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link hre [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<a href=https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.asc>asc</a> |
<a href=https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.sha512>sha512</a></li></ul><h3 id=313-2022-12-22>3.1.3 (2022-12-22)</h3><ul><li><a href=https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip>source</a> |
<a href=https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip.asc>asc</a> |
@@ -189,8 +200,12 @@
<a href=https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.asc>asc</a> |
<a href=https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.sha512>sha512</a></li></ul><h2 id=dubbo-admin>Dubbo Admin</h2><blockquote><p>GitHub: <a href=https://github.com/apache/incubator-dubbo-admin>https://github.com/apache/incubator-dubbo-admin</a><br>Release Notes: <a href=https://github.com/apache/incubator-dubbo-admin/releases>https://github.com/apache/incubator-dubbo-admin/releases</a></p></bl [...]
<a href=https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.asc>asc</a> |
-<a href=https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.sha512>sha512</a></li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a class="btn btn-primary disabled"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2021/07/02/3.0.1-release-note/ aria-label="Next - 3.0.1 Release Note" class="btn btn-primary">Next<span class=ml-1>→</span></a></li></ul></div><div id=pre- [...]
+<a href=https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.sha512>sha512</a></li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a class="btn btn-primary disabled"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2021/07/02/3.0.1-release-note/ aria-label="Next - 3.0.1 Release Note" class="btn btn-primary">Next<span class=ms-1>→</span></a></li></ul><div class=td-page [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/releases/past-releases.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+sect [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Past%20Releases" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#verification>Verification</a></li><li><a href=#apache-dubbo>Apache Dubbo</a><ul><li><a href=#320-beta3-2022-12-22>3.2.0-beta.3 (2022-12-22)</a></li><li><a href=#313-2022-12-22>3.1.3 (2022-12-22)</a></li><li><a href=#2719-2022-12-13>2.7.19 (2022-12-13)</a></li><li><a href=#320-beta2-2022-11-28>3.2.0-beta.2 (2022-11-28)</ [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#verification>Verification</a></li><li><a href=#apache-dubbo>Apache Dubbo</a><ul><li><a href=#320-beta3-2022-12-22>3.2.0-beta.3 (2022-12-22)</a></li><li><a href=#313-2022-12-22>3.1.3 (2022-12-22)</a></li><li><a href=#2719-2022-12-13>2.7.19 (2022-12-13)</a></li><li><a href=#320-beta2-2022-11-28>3.2.0-beta.2 (2022-11-28)</ [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2021/07/02/3.0.1-release-note/index.html b/en/blog/2021/07/02/3.0.1-release-note/index.html
index 29067e12066..90d2fe04efc 100644
--- a/en/blog/2021/07/02/3.0.1-release-note/index.html
+++ b/en/blog/2021/07/02/3.0.1-release-note/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The release note of Apache Dubbo 3.0.1
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/07/02/3.0.1-release-note/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2021-07-02T00:00:00+00:00"><meta property="article:modified_time" content="2021-07-02T15:34:51+08:00"><meta itemprop=name content="3.0.1 Release Note"><meta itemprop=description content="The release note of Apache Dubbo 3.0.1
"><meta itemprop=datePublished content="2021-07-02T00:00:00+00:00"><meta itemprop=dateModified content="2021-07-02T15:34:51+08:00"><meta itemprop=wordCount content="101"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="3.0.1 Release Note"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.1
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The release note of Apache Dubbo 3.0.1
"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.1
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/07/02/3.0.1-release-note/"><meta property="og:title" content="3.0.1 Release Note"><meta name=twitter:title content="3.0.1 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=style [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/07/02/3.0.1-release-note/"><meta property="og:title" content="3.0.1 Release Note"><meta name=twitter:title content="3.0.1 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=style [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,13 +66,17 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<a href=https://github.com/apache/dubbo/pull/8044>#8044</a>,
<a href=https://github.com/apache/dubbo/pull/8048>#8048</a>,
<a href=https://github.com/apache/dubbo/pull/8071>#8071</a>,
<a href=https://github.com/apache/dubbo/pull/8119>#8119</a>,
-<a href=https://github.com/apache/dubbo/pull/8132>#8132</a></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2020/05/18/past-releases/ aria-label="Previous - Past Releases" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blog/2021/08/18/3.0.2-release-note/ aria-label="Next - 3.0.2 Release Note" class="btn btn-primary">Next<span class=ml-1>→</span></a></li></ul></div><div id=pre-footer><h2>Feedb [...]
+<a href=https://github.com/apache/dubbo/pull/8132>#8132</a></p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2020/05/18/past-releases/ aria-label="Previous - Past Releases" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blog/2021/08/18/3.0.2-release-note/ aria-label="Next - 3.0.2 Release Note" class="btn btn-primary">Next<span class=ms-1>→</span></a></li></ul><div class=td-page-meta__lastmod>L [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/releases/3.0.1.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=3.0.1%20Release%20Note" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#optimization>Optimization</a></li><li><a href=#bugfixs>BugFixs</a></li><li><a href=#code-improvement>Code Improvement</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosyst [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#optimization>Optimization</a></li><li><a href=#bugfixs>BugFixs</a></li><li><a href=#code-improvement>Code Improvement</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosyst [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2021/08/18/3.0.2-release-note/index.html b/en/blog/2021/08/18/3.0.2-release-note/index.html
index ac9ed76c548..dcfa0f6f8f0 100644
--- a/en/blog/2021/08/18/3.0.2-release-note/index.html
+++ b/en/blog/2021/08/18/3.0.2-release-note/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The release note of Apache Dubbo 3.0.2
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/18/3.0.2-release-note/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2021-08-18T00:00:00+00:00"><meta property="article:modified_time" content="2023-04-03T22:00:19+08:00"><meta itemprop=name content="3.0.2 Release Note"><meta itemprop=description content="The release note of Apache Dubbo 3.0.2
"><meta itemprop=datePublished content="2021-08-18T00:00:00+00:00"><meta itemprop=dateModified content="2023-04-03T22:00:19+08:00"><meta itemprop=wordCount content="509"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="3.0.2 Release Note"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.2
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The release note of Apache Dubbo 3.0.2
"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.2
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/18/3.0.2-release-note/"><meta property="og:title" content="3.0.2 Release Note"><meta name=twitter:title content="3.0.2 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=style [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/18/3.0.2-release-note/"><meta property="og:title" content="3.0.2 Release Note"><meta name=twitter:title content="3.0.2 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=style [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<a href=https://github.com/apache/dubbo/pull/8147>#8147</a>,
<a href=https://github.com/apache/dubbo/pull/8164>#8164</a>,
<a href=https://github.com/apache/dubbo/pull/8177>#8177</a>,
@@ -96,8 +107,12 @@
<a href=https://github.com/apache/dubbo/pull/8418>#8418</a>,
<a href=https://github.com/apache/dubbo/pull/8439>#8439</a>,
<a href=https://github.com/apache/dubbo/pull/8404>#8404</a>,
-<a href=https://github.com/apache/dubbo/pull/8443>#8443</a></p><h2 id=dependency-changes>Dependency Changes</h2><ul><li>remove dependency: org.eclipse.collections:eclipse-collections</li><li>remove dependency: com.google.guava:guava</li><li>jetty: 9.4.11.v20180605 -> 9.4.43.v20210629</li><li>apollo client: 1.1.1 -> 1.8.0</li><li>snakeyaml: 1.20 -> 1.29</li><li>tomcat embed: 8.5.31 -> 8.5.69</li><li>nacos client: 2.0.0 -> 2.0.2</li><li>swagger: 1.5.19 -> 1.5.24</li><li>hessian_lite: 3.2.8 [...]
+<a href=https://github.com/apache/dubbo/pull/8443>#8443</a></p><h2 id=dependency-changes>Dependency Changes</h2><ul><li>remove dependency: org.eclipse.collections:eclipse-collections</li><li>remove dependency: com.google.guava:guava</li><li>jetty: 9.4.11.v20180605 -> 9.4.43.v20210629</li><li>apollo client: 1.1.1 -> 1.8.0</li><li>snakeyaml: 1.20 -> 1.29</li><li>tomcat embed: 8.5.31 -> 8.5.69</li><li>nacos client: 2.0.0 -> 2.0.2</li><li>swagger: 1.5.19 -> 1.5.24</li><li>hessian_lite: 3.2.8 [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/releases/3.0.2.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+t [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=3.0.2%20Release%20Note" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#features>Features</a></li><li><a href=#bugfixs>BugFixs</a></li><li><a href=#optimization>Optimization</a></li><li><a href=#code-improvement>Code Improvement</a></li><li><a href=#dependency-changes>Dependency Changes</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5 [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#features>Features</a></li><li><a href=#bugfixs>BugFixs</a></li><li><a href=#optimization>Optimization</a></li><li><a href=#code-improvement>Code Improvement</a></li><li><a href=#dependency-changes>Dependency Changes</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5 [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2021/08/23/3.0.2.1-release-note/index.html b/en/blog/2021/08/23/3.0.2.1-release-note/index.html
index 84df58b26d1..46993cb9507 100644
--- a/en/blog/2021/08/23/3.0.2.1-release-note/index.html
+++ b/en/blog/2021/08/23/3.0.2.1-release-note/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The release note of Apache Dubbo 3.0.2.1
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/23/3.0.2.1-release-note/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2021-08-23T00:00:00+00:00"><meta property="article:modified_time" content="2021-08-26T10:59:13+08:00"><meta itemprop=name content="3.0.2.1 Release Note"><meta itemprop=description content="The release note of Apache Dubbo 3.0.2.1
"><meta itemprop=datePublished content="2021-08-23T00:00:00+00:00"><meta itemprop=dateModified content="2021-08-26T10:59:13+08:00"><meta itemprop=wordCount content="43"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="3.0.2.1 Release Note"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.2.1
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The release note of Apache Dubbo 3.0.2.1
"><meta name=twitter:description content="The release note of Apache Dubbo 3.0.2.1
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/23/3.0.2.1-release-note/"><meta property="og:title" content="3.0.2.1 Release Note"><meta name=twitter:title content="3.0.2.1 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/08/23/3.0.2.1-release-note/"><meta property="og:title" content="3.0.2.1 Release Note"><meta name=twitter:title content="3.0.2.1 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,9 +66,13 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
-Exactly the same as version 3.0.2, except for the following changes.</p><h2 id=bugfix>Bugfix</h2><ul><li>Fix nacos group inviable in consumer side (#8533)</li><li>Fix NPE on serialization checking when request timed out (#8547)</li><li>Compact with dubbo-all without farbic-io (#8546)</li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2021/08/18/3.0.2-release-note/ aria-label="Previous - 3.0.2 Release Note" class="btn btn-pr [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
+Exactly the same as version 3.0.2, except for the following changes.</p><h2 id=bugfix>Bugfix</h2><ul><li>Fix nacos group inviable in consumer side (#8533)</li><li>Fix NPE on serialization checking when request timed out (#8547)</li><li>Compact with dubbo-all without farbic-io (#8546)</li></ul><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2021/08/18/3.0.2-release-note/ aria-label="Previous - 3.0.2 Release Note" class="btn btn-pr [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/releases/3.0.2.1.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=3.0.2.1%20Release%20Note" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2021/09/20/2.7.14-release-note/index.html b/en/blog/2021/09/20/2.7.14-release-note/index.html
index 9c5077ab0bc..d86c8ad69c8 100644
--- a/en/blog/2021/09/20/2.7.14-release-note/index.html
+++ b/en/blog/2021/09/20/2.7.14-release-note/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="The release note of Apache Dubbo 2.7.14
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/09/20/2.7.14-release-note/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2021-09-20T00:00:00+00:00"><meta property="article:modified_time" content="2021-09-20T10:23:53+08:00"><meta itemprop=name content="2.7.14 Release Note"><meta itemprop=description content="The release note of Apache Dubbo 2.7.14
"><meta itemprop=datePublished content="2021-09-20T00:00:00+00:00"><meta itemprop=dateModified content="2021-09-20T10:23:53+08:00"><meta itemprop=wordCount content="157"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="2.7.14 Release Note"><meta name=twitter:description content="The release note of Apache Dubbo 2.7.14
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="The release note of Apache Dubbo 2.7.14
"><meta name=twitter:description content="The release note of Apache Dubbo 2.7.14
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/09/20/2.7.14-release-note/"><meta property="og:title" content="2.7.14 Release Note"><meta name=twitter:title content="2.7.14 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=st [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2021/09/20/2.7.14-release-note/"><meta property="og:title" content="2.7.14 Release Note"><meta name=twitter:title content="2.7.14 Release Note"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=st [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,8 +66,12 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/releases/2.7.14.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=2.7.14%20Release%20Note" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#change-lists>Change Lists</a></li><li><a href=#dependency-changes>Dependency Changes</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem> [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#change-lists>Change Lists</a></li><li><a href=#dependency-changes>Dependency Changes</a></li></ul></nav><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem> [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/index.html b/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/index.html
index 79d8ae4ff49..16ef96baf28 100644
--- a/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/index.html
+++ b/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-t [...]
-<meta property="og:description" content="In this article, we introduced how to use Apache APISIX to implement a proxy for Dubbo Service. By introducing the dubbo-proxy plugin, you can build a simpler and more efficient traffic link for the back-end system of Dubbo framework."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/"><meta property="art [...]
+<meta property="og:description" content="In this article, we introduced how to use Apache APISIX to implement a proxy for Dubbo Service. By introducing the dubbo-proxy plugin, you can build a simpler and more efficient traffic link for the back-end system of Dubbo framework."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/"><meta property="art [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,7 +60,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span>
</span></span><span style=display:flex><span> <span style=color:#586e75>/**
</span></span></span><span style=display:flex><span><span style=color:#586e75> * standard samples dubbo infterace demo
@@ -178,8 +189,12 @@ The Header and Body of the HTTP request are available through the <code>httpRequ
</span></span></span><span style=display:flex><span><span style=color:#2aa198> }
</span></span></span><span style=display:flex><span><span style=color:#2aa198> ]
</span></span></span><span style=display:flex><span><span style=color:#2aa198>}'</span>
-</span></span></code></pre></div><h2 id=summary>Summary</h2><p>In this article, we introduced how to use Apache APISIX to implement a proxy for Dubbo Service. By introducing the <code>dubbo-proxy</code> plugin, you can build a simpler and more efficient traffic link for the back-end system of Dubbo framework.</p><p>We hope that the above steps and use cases will provide you with ideas for using it in relevant scenarios. For more information about the <code>dubbo-proxy</code> plugin, plea [...]
+</span></span></code></pre></div><h2 id=summary>Summary</h2><p>In this article, we introduced how to use Apache APISIX to implement a proxy for Dubbo Service. By introducing the <code>dubbo-proxy</code> plugin, you can build a simpler and more efficient traffic link for the back-end system of Dubbo framework.</p><p>We hope that the above steps and use cases will provide you with ideas for using it in relevant scenarios. For more information about the <code>dubbo-proxy</code> plugin, plea [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/how-to-proxy-dubbo-in-apache-apisix.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22fr [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Makes%20it%20More%20Convenient%20for%20You%20to%20Proxy%20Dubbo%20Services%20in%20Apache%20APISIX" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background>Background</a></li><li><a href=#how-to-use>How to use</a><ul><li><a href=#getting-started-installation-and-use>Getting Started: Installation and Use</a></li><li><a href=#advanced-complex-scenario-example>Advanced: Complex Scenario Example</a></li></ul></li><li><a href=#summary>Summary</a></li></ul></nav><div [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background>Background</a></li><li><a href=#how-to-use>How to use</a><ul><li><a href=#getting-started-installation-and-use>Getting Started: Installation and Use</a></li><li><a href=#advanced-complex-scenario-example>Advanced: Complex Scenario Example</a></li></ul></li><li><a href=#summary>Summary</a></li></ul></nav><div [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/index.html b/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/index.html
index 4562f5938b8..d02e6384655 100644
--- a/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/index.html
+++ b/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png [...]
-<meta property="og:description" content="This article describes how to access the `Dubbo` service through the `Apache ShenYu` gateway. The main content includes a simple example to core call flow analysis and a summary of the design principles."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/"><meta property="article:section" content="blog"><meta property="article: [...]
+<meta property="og:description" content="This article describes how to access the `Dubbo` service through the `Apache ShenYu` gateway. The main content includes a simple example to core call flow analysis and a summary of the design principles."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2022/05/04/how-to-proxy-dubbo-service-in-apache-shenyu-gateway/"><meta property="article:section" content="blog"><meta property="article: [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,7 +60,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span> <span style=color:#719e07><</span>dependency<span style=color:#719e07>></span>
</span></span><span style=display:flex><span> <span style=color:#719e07><</span>groupId<span style=color:#719e07>></span>org.apache.shenyu<span style=color:#719e07></</span>groupId<span style=color:#719e07>></span>
</span></span><span style=display:flex><span> <span style=color:#719e07><</span>artifactId<span style=color:#719e07>></span>shenyu<span style=color:#719e07>-</span>spring<span style=color:#719e07>-</span>boot<span style=color:#719e07>-</span>starter<span style=color:#719e07>-</span>plugin<span style=color:#719e07>-</span>apache<span style=color:#719e07>-</span>dubbo<span style=color:#719e07></</span>artifactId<span style=color:#719e07>></span>
@@ -138,8 +149,12 @@
</span></span><span style=display:flex><span> "id": "100"
</span></span><span style=display:flex><span>}
</span></span></code></pre></div><p>At this point, you can successfully access the <code>dubbo</code> service via <code>http</code> requests. The <code>ShenYu</code> gateway converts the <code>http</code> protocol to the <code>dubbo</code> protocol via the <code>shenyu-plugin-dubbo</code> module.</p><h2 id=3-understanding-of-dubbo-plugin>3. Understanding of Dubbo plugin</h2><p>During the process of running the above <code>demo</code>, are there any questions about</p><ul><li>How does the [...]
-Load and initialize the corresponding registry client using the <code>SPI</code> method when the application starts, and get the service interface information that needs to be registered in it by implementing the post-processor interface related to the <code>Spring Bean</code>, and put the obtained information into the <code>Disruptor</code>.</p><p>The registry client reads the data from <code>Disruptor</code> and registers the interface information to <code>shenyu-admin</code>, where <c [...]
+Load and initialize the corresponding registry client using the <code>SPI</code> method when the application starts, and get the service interface information that needs to be registered in it by implementing the post-processor interface related to the <code>Spring Bean</code>, and put the obtained information into the <code>Disruptor</code>.</p><p>The registry client reads the data from <code>Disruptor</code> and registers the interface information to <code>shenyu-admin</code>, where <c [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/how-to-proxy-dubbo-in-apache-shenyu.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22fr [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=How%20to%20proxy%20Dubbo%20service%20in%20Apache%20ShenYu%20Gateway" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-introduction>1. Introduction</a></li><li><a href=#2-quick-start-with-dubbo>2. Quick Start with Dubbo</a><ul><li><a href=#21-start-shenyu-admin>2.1 Start shenyu-admin</a></li><li><a href=#22-start-shenyu-gateway>2.2 Start ShenYu Gateway</a></li><li><a href=#23-start-shenyu-examples-dubbo>2.3 Start shenyu-examples-dubbo [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#1-introduction>1. Introduction</a></li><li><a href=#2-quick-start-with-dubbo>2. Quick Start with Dubbo</a><ul><li><a href=#21-start-shenyu-admin>2.1 Start shenyu-admin</a></li><li><a href=#22-start-shenyu-gateway>2.2 Start ShenYu Gateway</a></li><li><a href=#23-start-shenyu-examples-dubbo>2.3 Start shenyu-examples-dubbo [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/index.html b/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/index.html
index 7667d6d31e9..f21dc3ebd61 100644
--- a/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/index.html
+++ b/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="We are very happy to announce that Dubbo 3.2 has been officially released! This version brings many new features and improvements, which is also an important attempt of Dubbo in the face of cloud nativeization.
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2023-04-15T00:00:00+00:00"><meta property="article:modified_time" content="2023-05-07T20:46:39+08:00"><meta itemprop=name content="Advanced cloud native - Dubbo 3.2 officially released"><meta itemprop=description conten [...]
"><meta itemprop=datePublished content="2023-04-15T00:00:00+00:00"><meta itemprop=dateModified content="2023-05-07T20:46:39+08:00"><meta itemprop=wordCount content="2749"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Advanced cloud native - Dubbo 3.2 officially released"><meta name=twitter:description content="We are very happy to announce that Dubbo 3.2 has been officially released! This version brings many new features and i [...]
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="We are very happy to announce that Dubbo 3.2 has been officially released! This version brings many new features and improvements, which is also an important attempt of Dubbo in the face of cloud nativeization.
"><meta name=twitter:description content="We are very happy to announce that Dubbo 3.2 has been officially released! This version brings many new features and improvements, which is also an important attempt of Dubbo in the face of cloud nativeization.
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/"><meta property="og:title" content="Advanced cloud native - Dubbo 3.2 officially released"><meta name=twitter:title content="Advanced cloud native - Dubbo 3.2 officially released"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/32-release/Untitled.png"><meta property="og:type" content="article"><meta name=vie [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/"><meta property="og:title" content="Advanced cloud native - Dubbo 3.2 officially released"><meta name=twitter:title content="Advanced cloud native - Dubbo 3.2 officially released"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/32-release/Untitled.png"><meta property="og:type" content="article"><meta name=vie [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,7 +66,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span> <span style=color:#268bd2><groupId></span>org.graalvm.nativeimage<span style=color:#268bd2></groupId></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>native-image-maven-plugin<span style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><version></span>21.0.0.2<span style=color:#268bd2></version></span>
@@ -139,8 +150,12 @@
</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>dubbo<span style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><version></span>3.2.0<span style=color:#268bd2></version></span>
</span></span><span style=display:flex><span><span style=color:#268bd2></dependency></span>
-</span></span></code></pre></div><h3 id=compatibility>Compatibility</h3><p>For the vast majority of users, upgrading to Dubbo 3.2.0 is completely smooth, and only needs to modify the version of the dependent package.</p><ol><li><p>Enhancement of serialization verification logic (<strong>important</strong>)</p><p>As mentioned above, in Dubbo 3.2.0 version, Dubbo will enable the strong verification of the serialization whitelist by default to improve the security of Dubbo and avoid the pro [...]
+</span></span></code></pre></div><h3 id=compatibility>Compatibility</h3><p>For the vast majority of users, upgrading to Dubbo 3.2.0 is completely smooth, and only needs to modify the version of the dependent package.</p><ol><li><p>Enhancement of serialization verification logic (<strong>important</strong>)</p><p>As mentioned above, in Dubbo 3.2.0 version, Dubbo will enable the strong verification of the serialization whitelist by default to improve the security of Dubbo and avoid the pro [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/dubbo-32-release.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+secti [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Advanced%20cloud%20native%20-%20Dubbo%203.2%20officially%20released" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background-introduction>Background introduction</a></li><li><a href=#rest-protocol-support>Rest protocol support</a><ul><li><a href=#1-why-rest>1. Why Rest?</a></li><li><a href=#2-how-to>2. How To?</a></li><li><a href=#3-whats-next>3. What’s next?</a></li></ul></li><li><a href=#observable-system>Observable system< [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#background-introduction>Background introduction</a></li><li><a href=#rest-protocol-support>Rest protocol support</a><ul><li><a href=#1-why-rest>1. Why Rest?</a></li><li><a href=#2-how-to>2. How To?</a></li><li><a href=#3-whats-next>3. What’s next?</a></li></ul></li><li><a href=#observable-system>Observable system< [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/index.html b/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/index.html
index daf709ad958..c357aed1384 100644
--- a/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/index.html
+++ b/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/index.html
@@ -2,10 +2,21 @@
<meta property="og:description" content="A brief introduction to Apache Dubbo plugin for IntelliJ IDEA
"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2023-10-23T00:00:00+00:00"><meta property="article:modified_time" content="2023-10-23T14:44:37+08:00"><meta itemprop=name content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta itemprop=description cont [...]
"><meta itemprop=datePublished content="2023-10-23T00:00:00+00:00"><meta itemprop=dateModified content="2023-10-23T14:44:37+08:00"><meta itemprop=wordCount content="340"><meta itemprop=keywords content="news,"><meta name=twitter:card content="summary"><meta name=twitter:title content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta name=twitter:description content="A brief introduction to Apache Dubbo plugin for IntelliJ IDEA
-"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc749.css as=style><link href=/scss/main.min.9e6561cc0361d4774cd6dea1f797b4d79df2a97001c1d51e86b490fa04cfc74 [...]
+"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script><script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db2.css as=style><link href=/scss/main.min.579fd54dc4cf2a919ea0045f85430b8e5ba3a44795042eb92b436eb5a2892db [...]
"><meta property="og:description" content="A brief introduction to Apache Dubbo plugin for IntelliJ IDEA
"><meta name=twitter:description content="A brief introduction to Apache Dubbo plugin for IntelliJ IDEA
-"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/"><meta property="og:title" content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta name=twitter:title content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/2023/10/plugin/img.png"><meta property="og:type" content="article"><meta name=vi [...]
+"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/"><meta property="og:title" content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta name=twitter:title content="Introduction to Apache Dubbo plugin for IntelliJ IDEA"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:image" content="/imgs/blog/2023/10/plugin/img.png"><meta property="og:type" content="article"><meta name=vi [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -55,9 +66,13 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
-In addition to the plugin format, you can also directly open the start.dubbo.apache.org online service to quickly create Dubbo projects through a browser.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/ aria-label="Previous - Advanced cloud native - Dubbo 3.2 officially released" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a href=/en/blo [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
+In addition to the plugin format, you can also directly open the start.dubbo.apache.org online service to quickly create Dubbo projects through a browser.</p><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/ aria-label="Previous - Advanced cloud native - Dubbo 3.2 officially released" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a href=/en/blo [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/intellij-idea-dubbo-plugin.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matte [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Introduction%20to%20Apache%20Dubbo%20plugin%20for%20IntelliJ%20IDEA" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#how-to-install>How to install</a><ul><li><a href=#method-1>Method 1</a></li><li><a href=#method-2>Method 2</a></li></ul></li><li><a href=#create-a-new-dubbo-application>Create a new Dubbo application</a><ul><li><a href=#the-new-project-pop-up-window>The ‘New Project’ pop-up window</a></li><li><a href=#select [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#how-to-install>How to install</a><ul><li><a href=#method-1>Method 1</a></li><li><a href=#method-2>Method 2</a></li></ul></li><li><a href=#create-a-new-dubbo-application>Create a new Dubbo application</a><ul><li><a href=#the-new-project-pop-up-window>The ‘New Project’ pop-up window</a></li><li><a href=#select [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/index.html b/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/index.html
index 1e7ae3c4db6..a06de123858 100644
--- a/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/index.html
+++ b/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/index.html
@@ -1,5 +1,16 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel="shortcut icon" type=image/png href=/imgs/favicon.png><link rel=apple-touch-icon href=/favicons/apple-touch-icon-180x180.png sizes=180x180><link [...]
-<meta property="og:description" content="This case shows using OpenTelemetry as the Tracer in the Dubbo project to report the Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2024-01-31T00:00:00+00:00"> [...]
+<meta property="og:description" content="This case shows using OpenTelemetry as the Tracer in the Dubbo project to report the Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger."><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/"><meta property="article:section" content="blog"><meta property="article:published_time" content="2024-01-31T00:00:00+00:00"> [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -49,7 +60,7 @@
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/blog/>Blog</a></li><li class=brea [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a href=/en/blog/>BLOG</a></li><li class=breadcrumb-item><a href=/en/ [...]
</span></span><span style=display:flex><span><span style=color:#586e75><!-- OpenTelemetry as Tracer, Otlp as exporter --></span>
</span></span><span style=display:flex><span><span style=color:#268bd2><dependency></span>
</span></span><span style=display:flex><span> <span style=color:#268bd2><groupId></span>org.apache.dubbo<span style=color:#268bd2></groupId></span>
@@ -103,8 +114,12 @@
</span></span><span style=display:flex><span><span style=color:#586e75>// Set up trace reporting to Zipkin</span>
</span></span><span style=display:flex><span>exporterConfig.setZipkin(<span style=color:#719e07>new</span> ExporterConfig.OtlpConfig(<span style=color:#2aa198>"http://localhost:4317"</span>, Duration.ofSeconds(10), <span style=color:#2aa198>"none"</span>));
</span></span><span style=display:flex><span>tracingConfig.setExporter(exporterConfig);
-</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ aria-label="Previous - Introduction to Apache Dubbo plugin for IntelliJ IDEA" class="btn btn-primary"><span class=mr-1>←</span>Previous</a></li><li><a class="btn btn-primary disabled">Next<span class=ml-1>→</span></a></li></ul></div><div id=pre-footer><h2>Feedback</h2><p class=feedback [...]
+</span></span></code></pre></div><ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5"><li><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ aria-label="Previous - Introduction to Apache Dubbo plugin for IntelliJ IDEA" class="btn btn-primary"><span class=me-1>←</span>Previous</a></li><li><a class="btn btn-primary disabled">Next<span class=ms-1>→</span></a></li></ul><div class=td-page-meta__lastmod>Last modified January 31, [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/news/tracing-opentelemetry.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+ [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Tracing%20Dubbo%20With%20OpenTelemetry" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#overview>Overview</a></li><li><a href=#architecture>Architecture</a></li><li><a href=#quick-start>Quick Start</a><ul><li><a href=#install--start-otlp-collector>Install & start Otlp Collector</a></li><li><a href=#start-provider>Start Provider</a></li><li><a href=#start-consumer>Start Consumer</a></li><li><a href=#view-tr [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><a href=#overview>Overview</a></li><li><a href=#architecture>Architecture</a></li><li><a href=#quick-start>Quick Start</a><ul><li><a href=#install--start-otlp-collector>Install & start Otlp Collector</a></li><li><a href=#start-provider>Start Provider</a></li><li><a href=#start-consumer>Start Consumer</a></li><li><a href=#view-tr [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/index.html b/en/blog/index.html
index bb45bf92fea..f65000543ac 100644
--- a/en/blog/index.html
+++ b/en/blog/index.html
@@ -1,8 +1,19 @@
<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn href=https://dubbo.apache.org/zh-cn/blog/><link rel=canonical href=https://dubbo.apache.org/en/blog/><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta name=generator content="Hugo 0.122.0"><link rel=alternate type=application/rss+xml href=https://dubbo.apache.org/en/blog/index.xml><link rel="shortcut icon" ty [...]
-<meta property="og:description" content="Apache Dubbo Official Website"><meta property="og:type" content="website"><meta property="og:url" content="https://dubbo.apache.org/en/blog/"><meta itemprop=name content="Apache Dubbo Blog"><meta itemprop=description content="Apache Dubbo Official Website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Apache Dubbo Blog"><meta name=twitter:description content="Apache Dubbo Official Website"><script async src="https://w [...]
+<meta property="og:description" content="Apache Dubbo Official Website"><meta property="og:type" content="website"><meta property="og:url" content="https://dubbo.apache.org/en/blog/"><meta itemprop=name content="Apache Dubbo Blog"><meta itemprop=description content="Apache Dubbo Official Website"><meta name=twitter:card content="summary"><meta name=twitter:title content="Apache Dubbo Blog"><meta name=twitter:description content="Apache Dubbo Official Website"><script async src="https://w [...]
Files in these directories will be listed in reverse chronological order."><meta property="og:description" content="This is the blog section. It has two categories: News and Releases.
Files in these directories will be listed in reverse chronological order."><meta name=twitter:description content="This is the blog section. It has two categories: News and Releases.
-Files in these directories will be listed in reverse chronological order."><meta property="og:url" content="https://dubbo.apache.org/en/blog/"><meta property="og:title" content="Apache Dubbo Blog"><meta name=twitter:title content="Apache Dubbo Blog"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=styleshee [...]
+Files in these directories will be listed in reverse chronological order."><meta property="og:url" content="https://dubbo.apache.org/en/blog/"><meta property="og:title" content="Apache Dubbo Blog"><meta name=twitter:title content="Apache Dubbo Blog"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script><link href=/css/community.css rel=styleshee [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdown role=button data-toggle=dropdown aria-haspopup=true [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></li></ul></div><div class="td-navbar-nav-scroll menu_navbar_language_change"><ul class="navbar-nav mt-2 mt-lg-0 language_change_btn_pc"><li class="nav-item d-lg-block"><div class="nav nav-tabs languagetab-contain" id=languageTabs role=tablist><a class="languagetab-btn nav-item nav-link active" href=/en/ role=tab aria-selected=true>EN
+</a><a class="languagetab-btn nav-item nav-link" href=/zh-cn/ role=tab aria-selected=false>中文</a></div><style>.languagetab-contain{width:135px;height:40px;border-radius:32px;background-color:#ebecef;padding:3px 6px}.languagetab-btn{width:60px!important;height:32px!important;border-radius:32px!important;text-decoration:none;display:flex;justify-content:center;align-items:center;font-size:12px!important}.languagetab-btn.active{background-color:#dddee4!important;border:0}</style></li><li cl [...]
+<a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
+<a class=dropdown-item href=/zh-cn/contact/>Contributor's Guide</a></div></div></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class="nav-link active" href=/en/blog/><span class="active mr-1">BLOG</span></a></li><li class="nav-item nav-item-line mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>DOWNLOAD</span></a></li><li class="nav-item d-lg-block" style=position:relative><a class=nav-link data-toggle=collapse href=#collapseEcosystem role=button aria-expanded=false aria-c [...]
+<a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
+<a class=dropdown-item href=/zh-cn/overview/what/core-features/service-mesh/>Proxyless Mesh</a>
+<a class=dropdown-item href=https://github.com/apache/dubbo-samples>More Demos</a></div></div></li></ul><style>.navbar-menus-list-mobile{a { color: #121316 !important; }}</style></div><style>.navbar-parent{justify-content:center;background-color:#f4f4f6!important}.container-navbar{width:100%;display:flex;justify-content:space-between;align-items:center;@media only screen and (min-width:768px){width: 85.125rem;}}.github-btn{width:120px;height:40px;border-radius:32px;padding-top:11px;color [...]
<label for=m-enblognews-check><a href=/en/blog/news/ title="Articles About Apache Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-enblognews><span>Articles</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20240131tracing-dubbo-with-opentelemetry-li><input type=checkbox id=m-enblog20240131tracing-dubbo-with-opentelemetry-check>
<label for=m-enblog20240131tracing-dubbo-with-opentelemetry-check><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20240131tracing-dubbo-with-opentelemetry><span>Tracing Dubbo With OpenTelemetry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-li><input type=checkbox id=m-enblog [...]
<label for=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea-check><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20231023introduction-to-apache-dubbo-plugin-for-intellij-idea><span>Introduction to Apache Dubbo plugin for IntelliJ IDEA</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20230415advan [...]
@@ -52,11 +63,15 @@ Files in these directories will be listed in reverse chronological order."><meta
<label for=m-enblog202108233021-release-note-check><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ title="3.0.2.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog202108233021-release-note><span>3.0.2.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210818302-release-note-li><input type=checkbox id=m-enblog20210818302-release-note-check>
<label for=m-enblog20210818302-release-note-check><a href=/en/blog/2021/08/18/3.0.2-release-note/ title="3.0.2 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210818302-release-note><span>3.0.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20210702301-release-note-li><input type=checkbox id=m-enblog20210702301-release-note-check>
<label for=m-enblog20210702301-release-note-check><a href=/en/blog/2021/07/02/3.0.1-release-note/ title="3.0.1 Release Note" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20210702301-release-note><span>3.0.1</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-enblog20200518past-releases-li><input type=checkbox id=m-enblog20200518past-releases-check>
-<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class="td-breadcrumbs td-breadcrumbs__single"><ol class=breadcrumb><li class="breadcrumb-item active" aria-current=page><a href=https://d [...]
-It consists of three parts: …</p><p class=pt-0><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ aria-label="Read more - Tracing Dubbo With OpenTelemetry">Read more</a></p></div></li></ul><h2>Posts in 2023</h2><ul class="list-unstyled mt-4"><li class="media mb-4"><div class=media-body><h5 class="mt-0 mb-1"><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/>Introduction to Apache Dubbo plugin for IntelliJ IDEA</a></h5><p class="mb-2 mb-md-3"><sm [...]
-Bugfix Fix nacos group inviable in consumer side (#8533) Fix NPE on serialization checking when request timed out (#8547) Compact with dubbo-all …</p><p class=pt-0><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ aria-label="Read more - 3.0.2.1">Read more</a></p></div></li><li class="media mb-4"><div class=media-body><h5 class="mt-0 mb-1"><a href=/en/blog/2021/08/18/3.0.2-release-note/>3.0.2 Release Note</a></h5><p class="mb-2 mb-md-3"><small class=text-muted>Wednesday, August 18, 2021 [...]
-Verification you can follow these procedures and the KEYS file to verify the …</p><p class=pt-0><a href=/en/blog/2020/05/18/past-releases/ aria-label="Read more - Past Releases">Read more</a></p></div></li></ul></div></div><div class="row pl-2 pt-2"><div class=col><ul class="pagination pagination-default"><li class="page-item disabled"><a aria-disabled=true aria-label=First class=page-link role=button tabindex=-1><span aria-hidden=true>««</span></a></li><li class="page-item dis [...]
+<label for=m-enblog20200518past-releases-check><a href=/en/blog/2020/05/18/past-releases/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-enblog20200518past-releases><span>Past Releases</span></a></label></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class="td-breadcrumbs td-breadcrumbs__single"><ol class=breadcrumb><li class="breadcrumb-item active" aria-current=page>BLOG</li></ol></n [...]
+It consists of three parts: …</p><p class=pt-0><a href=/en/blog/2024/01/31/tracing-dubbo-with-opentelemetry/ aria-label="Read more - Tracing Dubbo With OpenTelemetry">Read more</a></p></div></li></ul><div class=h2>Posts in 2023</div><ul class=td-blog-posts-list><li class=td-blog-posts-list__item><div class=td-blog-posts-list__body><h5 class="mt-0 mb-1"><a href=/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/>Introduction to Apache Dubbo plugin for IntelliJ IDEA< [...]
+Bugfix Fix nacos group inviable in consumer side (#8533) Fix NPE on serialization checking when request timed out (#8547) Compact with dubbo-all …</p><p class=pt-0><a href=/en/blog/2021/08/23/3.0.2.1-release-note/ aria-label="Read more - 3.0.2.1">Read more</a></p></div></li><li class=td-blog-posts-list__item><div class=td-blog-posts-list__body><h5 class="mt-0 mb-1"><a href=/en/blog/2021/08/18/3.0.2-release-note/>3.0.2 Release Note</a></h5><p class="mb-2 mb-md-3"><small class=text-body-se [...]
+Verification you can follow these procedures and the KEYS file to verify the …</p><p class=pt-0><a href=/en/blog/2020/05/18/past-releases/ aria-label="Read more - Past Releases">Read more</a></p></div></li></ul></div><div class=td-blog-posts__pagination><ul class="pagination pagination-default"><li class="page-item disabled"><a aria-disabled=true aria-label=First class=page-link role=button tabindex=-1><span aria-hidden=true>««</span></a></li><li class="page-item disabled"><a a [...]
<button class="btn btn-primary mb-4 feedback--no">No</button></div><script>const yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disable [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/en/blog/_index.md?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+%22front+matter%22+section+at+the+top+o [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=Apache%20Dubbo%20Blog" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
\ No newline at end of file
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><div class="taxonomy taxonomy-terms-cloud taxo-tags"><h5 class=taxonomy-title>Tags</h5><ul class=taxonomy-terms><li><a class=taxonomy-term href=https://dubbo.apache.org/en/tags/ecosystem/ data-taxonomy-term=ecosystem><span class=taxonomy-label>ecosystem</span><span class=taxonomy-count>1</span></a></li><li><a class=taxonomy-term href=https://dubbo.apache.org/e [...]
+<button class="contact-btn qr-container" onmouseover='showQRCode("dingding-qr")' onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code id=dingding-qr style=display:none><img src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg alt="DingTalk QR Code"></div></button>
+<button class=contact-btn><a href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div class=footer-container-right><ul><li>DOCUMENTATION</li><li><a href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick Start</a></li><li><a href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer guide</a></li></ul><ul><li>RESOURCES</li><li><a href=/zh-cn/contact/>Community</a></li></ul></div></div><div style="width:85.125rem;height:0;border:1px soli [...]
+project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States
+and other countries. All Rights Reserved</div></footer><style>footer{display:flex;align-items:center;flex-direction:column}.footer-container{background-color:#ebecef;width:100%;height:100%;border-radius:16px;padding-left:20px;padding-right:20px;padding-top:36px;padding-bottom:36px;display:inline-block;margin-bottom:40px;@media only screen and (min-width:1100px){display: flex; height: 289px; width: 85.125rem; padding-left: 40px; padding-right: 0px;}}.footer-container-left{width:100%;@medi [...]
\ No newline at end of file
diff --git a/en/blog/index.xml b/en/blog/index.xml
index 647a9fd8d3b..4752c6c02a1 100644
--- a/en/blog/index.xml
+++ b/en/blog/index.xml
@@ -1,7360 +1 @@
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Apache Dubbo – Apache Dubbo Blog</title><link>https://dubbo.apache.org/en/blog/</link><description>Recent content in Apache Dubbo Blog on Apache Dubbo</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://dubbo.apache.org/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Blog: Tracing Dubbo With OpenTelemetry</title><link>https://dubbo.apache.org [...]
-<h2 id="overview">Overview</h2>
-<p>This case shows using OpenTelemetry(otlp) as the Tracer in the Dubbo project to report the Trace information to the Otlp Collector, which then forwards it to Zipkin and Jagger. <a href="https://github.com/conghuhu/dubbo-samples/tree/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-otel-otlp">Code address</a></p>
-<p>It consists of three parts:</p>
-<ul>
-<li>dubbo-samples-spring-boot-tracing-otel-oltp-interface</li>
-<li>dubbo-samples-spring-boot-tracing-otel-oltp-provider</li>
-<li>dubbo-samples-spring-boot-tracing-otel-oltp-consumer</li>
-</ul>
-<h2 id="architecture">Architecture</h2>
-<p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/demo_arch.png" alt="architecture architecture"></p>
-<h2 id="quick-start">Quick Start</h2>
-<h3 id="install--start-otlp-collector">Install &amp; start Otlp Collector</h3>
-<p>Follow <a href="https://OpenTelemetry.io/docs/collector/getting-started/">OpenTelemetry Collector Quick Start</a> to start the otlp collector.</p>
-<h3 id="start-provider">Start Provider</h3>
-<p>Run <code>org.apache.dubbo.springboot.demo.provider.ProviderApplication</code> directly from IDE.</p>
-<h3 id="start-consumer">Start Consumer</h3>
-<p>Start <code>org.apache.dubbo.springboot.demo.consumer.ConsumerApplication</code> directly from IDE.</p>
-<h3 id="view-trace-information">View trace information</h3>
-<p>Open the zipkin dashboard <code>http://localhost:9411/zipkin/</code> in the browser:</p>
-<p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/zipkin_search.png" alt="zipkin.png"></p>
-<p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/zipkin_detail.png" alt="zipkin.png"></p>
-<p>Open the Jaeger dashboard <code>http://localhost:16686/search</code> in the browser:</p>
-<p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/jaeger_search.png" alt="jaeger_search.png"></p>
-<p><img src="https://dubbo.apache.org/imgs/v3/tasks/observability/tracing/otlp/jaeger_detail.png" alt="jaeger_detail.png"></p>
-<h2 id="how-to-use-it-in-spring-boot-project">How to use it in Spring Boot project</h2>
-<h3 id="1-add-dependencies-to-your-project">1. Add dependencies to your project</h3>
-<p>For Spring Boot projects, you can use <code>dubbo-spring-boot-tracing-otel-otlp-starter</code>:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">&lt;!-- OpenTelemetry as Tracer, Otlp as exporter --&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-otel-otlp-starter<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span></code></pre></div><h3 id="2-configuration">2. Configuration</h3>
-<h4 id="applicationyml">application.yml</h4>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">enabled</span>: <span style="color:#cb4b16">true</span> <span style="color:#586e75"># default is false</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">sampling</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">probability</span>: <span style="color:#2aa198">0.5</span> <span style="color:#586e75"># sampling rate, default is 0.1</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">propagation</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">type</span>: W3C <span style="color:#586e75"># W3C/B3 default is W3C</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">tracing-exporter</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">otlp-config</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">endpoint</span>: http://localhost:4317
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">timeout</span>: 10s <span style="color:#586e75"># default is 10s</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">compression-method</span>: none <span style="color:#586e75"># none/gzip The method used to compress payloads, default is &#34;none&#34;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">headers</span>: <span style="color:#586e75"># customized added headers, default is empty</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">auth</span>: admin
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75"># tracing info output to logging</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">logging</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">level</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">root</span>: info
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">pattern</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">console</span>: <span style="color:#2aa198">&#39;[%d{dd/MM/yy HH:mm:ss:SSS z}] %t %5p %c{2} [%X{traceId:-}, %X{spanId:-}]: %m%n&#39;</span>
-</span></span></code></pre></div><h2 id="how-to-use-based-on-dubbo-api">How to use based on Dubbo API</h2>
-<h3 id="1-add-dependencies-to-your-project-1">1. Add dependencies to your project</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Required, dubbo-tracing core dependency --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-tracing<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Opentelemetry as Tracer --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>io.micrometer<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>micrometer-tracing-bridge-otel<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- OTlp as exporter --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>io.opentelemetry<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>opentelemetry-exporter-otlp<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span></code></pre></div><h3 id="2-configuration-1">2. Configuration</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>TracingConfig tracingConfig <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> TracingConfig();
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// Enable dubbo tracing</span>
-</span></span><span style="display:flex;"><span>tracingConfig.setEnabled(<span style="color:#cb4b16">true</span>);
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// Set the sampling</span>
-</span></span><span style="display:flex;"><span>tracingConfig.setSampling(<span style="color:#719e07">new</span> SamplingConfig(1.0f));
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// Set Propagation, default is W3C, optional W3C/B3</span>
-</span></span><span style="display:flex;"><span>tracingConfig.setPropagation(<span style="color:#719e07">new</span> PropagationConfig(<span style="color:#2aa198">&#34;W3C&#34;</span>));
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// Set trace reporting</span>
-</span></span><span style="display:flex;"><span>ExporterConfig exporterConfig <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ExporterConfig();
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// Set up trace reporting to Zipkin</span>
-</span></span><span style="display:flex;"><span>exporterConfig.setZipkin(<span style="color:#719e07">new</span> ExporterConfig.OtlpConfig(<span style="color:#2aa198">&#34;http://localhost:4317&#34;</span>, Duration.ofSeconds(10), <span style="color:#2aa198">&#34;none&#34;</span>));
-</span></span><span style="display:flex;"><span>tracingConfig.setExporter(exporterConfig);
-</span></span></code></pre></div></description></item><item><title>Blog: Introduction to Apache Dubbo plugin for IntelliJ IDEA</title><link>https://dubbo.apache.org/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/</link><pubDate>Mon, 23 Oct 2023 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2023/10/23/introduction-to-apache-dubbo-plugin-for-intellij-idea/</guid><description>
-<p>The most popular Java IDE, IntelliJ IDEA, has collaborated with the open-source microservice framework Apache Dubbo community, bringing good news to microservice developers. Along with IntelliJ IDEA version 2023.2, Jetbras has officially released the new <strong>Apache Dubbo in Spring Framework</strong> plugin version.</p>
-<p>This plugin can help developers with Dubbo project initialization and facilitate the identification of Dubbo services and their dependencies during the project development process. Developing microservices based on Apache Dubbo will become very simple.</p>
-<h2 id="how-to-install">How to install</h2>
-<p>Before installing the Apache Dubbo plugin, please ensure that you are using IntelliJ IDEA version 2023.2 and above.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img.png" alt="image.png"></p>
-<p>There are two ways to complete the installation of the Apache Dubbo plugin</p>
-<h3 id="method-1">Method 1</h3>
-<p>Open <a href="https://plugins.jetbrains.com/plugin/20938-apache-dubbo-in-spring-framework">the Apache Dubbo in Spring Framework plugin page</a> with browser, and in the upper right corner of the page, click the &ldquo;Install to IntelliJ IDEA 2023.2&rdquo; button to complete the plugin installation.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img_1.png" alt="image.png"></p>
-<h3 id="method-2">Method 2</h3>
-<p>Open &lsquo;Preferences -&gt;Plugins&rsquo;, enter &lsquo;Apache Dubbo&rsquo; to search for plugins, and then install them.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img_2.png" alt="image.png"></p>
-<h2 id="create-a-new-dubbo-application">Create a new Dubbo application</h2>
-<p>Next, let&rsquo;s take a look at how to use the plugin to create and develop an Apache Dubbo microservice application.</p>
-<h3 id="the-new-project-pop-up-window">The &lsquo;New Project&rsquo; pop-up window</h3>
-<p>Open the &lsquo;New Project&rsquo; window through &lsquo;File&gt;New&gt;Project&rsquo;. In the pop-up window, you can see that the Apache Dubbo plugin has appeared in the generators list on the left. Click to select it.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img_3.png" alt="image.png"></p>
-<p>According to the application needs, enter the project name, save path, coordinates, JDK version, and other information. Click &ldquo;Next&rdquo; to proceed to the next step.</p>
-<h3 id="select-components">Select Components</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img_4.png" alt="image.png"></p>
-<p>The plugin will use dubbo spring boot starter to create a Spring Boot project, so we</p>
-<ul>
-<li>Firstly, you need to choose the versions of Dubbo and Spring Boot.</li>
-<li>Secondly, select the corresponding Dubbo and business components according to the project needs</li>
-</ul>
-<p>Finally, click &ldquo;Create&rdquo; to complete the project creation.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2023/10/plugin/img_5.png" alt="image.png"></p>
-<h2 id="summary">Summary</h2>
-<p>The release of the official IntelliJ IDEA plugin greatly simplifies the cost of initializing the Dubbo project.
-In addition to the plugin format, you can also directly open the start.dubbo.apache.org online service to quickly create Dubbo projects through a browser.</p></description></item><item><title>Blog: Advanced cloud native - Dubbo 3.2 officially released</title><link>https://dubbo.apache.org/en/blog/2023/04/15/advanced-cloud-native-dubbo-3.2-officially-released/</link><pubDate>Sat, 15 Apr 2023 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2023/04/15/advanced-cloud-native [...]
-<h2 id="background-introduction">Background introduction</h2>
-<p>Apache Dubbo is an RPC service development framework, which is used to solve service governance and communication problems under the microservice architecture. It officially provides multi-language SDK implementations such as Java and Golang. The microservices developed using Dubbo are natively capable of remote address discovery and communication with each other. Using the rich service governance features provided by Dubbo, service governance demands such as service discovery, loa [...]
-<h2 id="rest-protocol-support">Rest protocol support</h2>
-<h3 id="1-why-rest">1. Why Rest?</h3>
-<p>With the popularization of mobile Internet, more and more applications need to be integrated with different systems. And these systems may use different communication protocols, which requires the application program to be able to flexibly adapt to various protocols. The Rest protocol is a very flexible protocol that communicates using HTTP and can be integrated with almost any system.</p>
-<p>In the past, RPC frameworks typically communicated using a binary protocol, which was very efficient but not flexible enough. In contrast, the Rest protocol uses HTTP for communication, which is more convenient to integrate with other systems, and also easier to integrate with modern web and mobile applications.</p>
-<p>Besides flexibility, the Rest protocol is also readable and easy to use. Using the Rest protocol, developers can test and debug services using common HTTP tools such as cURL or Postman, without the need for specific tools. Also, since the REST protocol uses standard HTTP methods such as GET, POST, PUT, and DELETE, it becomes easier for developers to understand and use the service.</p>
-<h3 id="2-how-to">2. How To?</h3>
-<p>In previous Dubbo versions, Rest protocol support was also provided, but there were the following problems:</p>
-<ul>
-<li>
-<p>Only supports JAX-RS annotation fields, which is more complex than the more widely adopted Spring Web annotations</p>
-</li>
-<li>
-<p>It needs to rely on many external components, such as Resteasy, tomcat, jetty, etc., to work normally, which greatly increases the cost of use.</p>
-</li>
-</ul>
-<p>Therefore, in Dubbo version 3.2, we introduced the support of Spring Web annotation domain and the native support of Rest protocol without relying on any external components.</p>
-<p>The most intuitive difference is that if you upgrade to Dubbo 3.2, services published through Spring Web can also be published directly through Dubbo. All you need to do is change the @Controller annotation to @DubboService annotation.</p>
-<p>In addition, for users who originally used Spring Boot or Spring Cloud as a service split, they can also migrate smoothly to Dubbo based on this function, and obtain the powerful capabilities of Dubbo at a very low cost.</p>
-<h3 id="3-whats-next">3. What&rsquo;s next?</h3>
-<p>In the future, Dubbo will continue to improve. In addition to the existing features, we will also add the following new features to better meet the needs:</p>
-<ol>
-<li>
-<p>Native support for HTTP/2 and HTTP/3 protocols. This means that you can use Dubbo to communicate with other systems more easily without worrying about protocol compatibility.</p>
-</li>
-<li>
-<p>Referring to Spring Web annotations, Dubbo natively provides support for Web annotations, so that users can get the same experience as using Spring Web without relying on Spring Web.</p>
-</li>
-<li>
-<p>Support zero transformation of existing services and publish them with the Rest protocol. This feature allows you to manage your services more flexibly without making any changes to existing services. You can publish your services through the Rest protocol, so that your services can be used by other systems more easily.</p>
-</li>
-</ol>
-<h2 id="observable-system">Observable system</h2>
-<p>Under the microservice architecture, the business system is composed of more and more services, and the services call each other. The ensuing problem is how to quickly locate the fault and solve it in time. In order to solve this problem, we need more tools and techniques to ensure the reliability of the whole system. One of the solutions is to use logging and analytics so that you can better track how your application is doing, find potential problems and fix them in a timely mann [...]
-<p>A complete observable system should include the following functions:</p>
-<ul>
-<li>
-<p>Metrics indicator monitoring, used to collect and analyze various indicator data, including system performance, resource consumption, etc. Through indicator monitoring, users can keep abreast of the operation of the system, find abnormalities and take corresponding measures.</p>
-</li>
-<li>
-<p>Tracing Distributed tracing, used to trace the call links between various services in the system, to help users discover and locate potential performance problems, bottlenecks, etc. Through distributed tracing, users can deeply understand the operation process of the system, identify possible problems and make effective optimization and adjustment.</p>
-</li>
-<li>
-<p>Logging log management, used to record various events and operations in the system, including error logs, access logs, transaction logs, etc. Through log management, users can learn about the running status of the system, fault information, etc., and help users quickly locate problems and handle them accordingly.</p>
-</li>
-</ul>
-<p>To sum up, the above three functions can not only help users quickly locate faults, improve system reliability and stability, but also help users deeply understand the operation and performance of the system, and provide users with comprehensive monitoring and protection.</p>
-<p>In Dubbo version 3.2, we mainly enhanced Metrics and Tracing.</p>
-<h3 id="1-metrics">1. Metrics</h3>
-<p>In terms of metrics, we use Micrometer to greatly increase the buried points of indicators, including but not limited to core service indicators such as QPS, RT, total number of calls, number of successes, number of failures, and failure reason statistics. In order to better monitor the running status of services, Dubbo also provides monitoring of the status of core components, such as the number of thread pools, service health status, etc. In addition, Dubbo also supports the stan [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/32-release/Untitled.png" alt="img"></p>
-<p><img src="https://dubbo.apache.org/imgs/blog/32-release/Untitled%201.png" alt="Untitled"></p>
-<p>For all users, only need to upgrade to Dubbo 3.2 version and add dubbo-spring-boot-observability-starter dependency to get Metrics capability. After the application starts, relevant indicators will be exposed under the metrics command of Dubbo QoS, which can be obtained locally through <code>http://127.0.0.1:22222/metrics</code>. In addition, for users who use Spring Actuator, Dubbo will also expose these data by default.</p>
-<h3 id="tracing">Tracing</h3>
-<p>In terms of Tracing, we also implemented tracking of buried points during request runtime based on Micrometer. We implement this function natively through the Filter interceptor. We support exporting trace data to some mainstream implementations, such as Zipkin, Skywalking, Jaeger, etc. In this way, the analysis and visual display of the full link tracking data can be realized.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/32-release/Untitled%202.png" alt="Untitled"></p>
-<h3 id="logging">Logging</h3>
-<p>In addition, for Logging, Dubbo has introduced an error code mechanism since version 3.1, realizing full coverage of WARN and ERROR level logs. In abnormal scenarios, it supports quick indexing of official website resolution documents.</p>
-<h2 id="native-image-native-support">Native Image native support</h2>
-<p>In terms of Native Image, Dubbo will officially support Native Image based on GraalVM starting from 3.2. Starting from Dubbo3.0, Dubbo has already explored some Native Image support, but the ease of use and support are not ideal. From 3.2 Starting from version 1, Dubbo will simplify the way users access Native Image. It can be mainly divided into three aspects:</p>
-<ol>
-<li>Compile plugin configuration upgrade: from the original native-image-maven-plugin to dubbo-maven-plugin +native-maven-plugin, which distinguishes the native image configuration officially provided by Graalvm from the native image configuration required by Dubbo, simplifying The native image configuration that users need to care about</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;plugin&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.graalvm.nativeimage<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>native-image-maven-plugin<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>21.0.0.2<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;executions&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;execution&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goals&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goal&gt;</span>native-image<span style="color:#268bd2">&lt;/goal&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/goals&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;phase&gt;</span>package<span style="color:#268bd2">&lt;/phase&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/execution&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/executions&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;configuration&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;skip&gt;</span>false<span style="color:#268bd2">&lt;/skip&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;imageName&gt;</span>demo-native-provider<span style="color:#268bd2">&lt;/imageName&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;mainClass&gt;</span>org.apache.dubbo.demo.graalvm.provider.Application<span style="color:#268bd2">&lt;/mainClass&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;buildArgs&gt;</span>
-</span></span><span style="display:flex;"><span> --no-fallback
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.MDC
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.LoggerFactory
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.StaticLoggerBinder
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.helpers.Loader
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.Logger
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.helpers.LogLog
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.LogManager
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.spi.LoggingEvent
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerFactory
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerAdapter
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.eclipse.collections.api.factory.Sets
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.Epoll
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.Native
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventLoop
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventArray
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.DefaultFileRegion
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventArray
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.Native
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Errors
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.IovArray
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Limits
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Socket
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.ChannelHandlerMask
-</span></span><span style="display:flex;"><span> --report-unsupported-elements-at-runtime
-</span></span><span style="display:flex;"><span> --allow-incomplete-classpath
-</span></span><span style="display:flex;"><span> --enable-url-protocols=http
-</span></span><span style="display:flex;"><span> -H:+ReportExceptionStackTraces
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/buildArgs&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/configuration&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/plugin&gt;</span>
-</span></span></code></pre></div><p>becomes:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;plugin&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.graalvm.buildtools<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>native-maven-plugin<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>0.9.20<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;configuration&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;classesDirectory&gt;</span>${project.build.outputDirectory}<span style="color:#268bd2">&lt;/classesDirectory&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;metadataRepository&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;enabled&gt;</span>true<span style="color:#268bd2">&lt;/enabled&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/metadataRepository&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;requiredVersion&gt;</span>22.3<span style="color:#268bd2">&lt;/requiredVersion&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;mainClass&gt;</span>org.apache.dubbo.demo.graalvm.provider.Application<span style="color:#268bd2">&lt;/mainClass&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/configuration&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/plugin&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;plugin&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-maven-plugin<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>${project.version}<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;configuration&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;mainClass&gt;</span>org.apache.dubbo.demo.graalvm.provider.Application<span style="color:#268bd2">&lt;/mainClass&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/configuration&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;executions&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;execution&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;phase&gt;</span>process-sources<span style="color:#268bd2">&lt;/phase&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goals&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goal&gt;</span>dubbo-process-aot<span style="color:#268bd2">&lt;/goal&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/goals&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/execution&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/executions&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/plugin&gt;</span>
-</span></span></code></pre></div><ol>
-<li>In the old version, users were required to manually generate and complete the unique Adaptive code in Dubbo. Users of the new version do not need to care about these details.</li>
-<li>The configuration file under META-INF.native-image generated by the Dubbo framework in the old version will be directly generated in the user&rsquo;s project directory, and the new version 3.2 will be compiled into the target without affecting the user&rsquo;s project structure. In addition, the Dubbo framework will no longer use the method of manually completing the native image, but will automatically detect and generate the required configuration files, which simplifies [...]
-</ol>
-<p>In addition to improving ease of use, Dubbo will support API, annotations, and XML configuration methods in native image scenarios in version 3.2, and support compatibility with native in SpringBoot3.</p>
-<h2 id="other">other</h2>
-<h3 id="jdk-17--spring-boot-3-native-support">JDK 17 &amp; Spring Boot 3 native support</h3>
-<p>JDK 17 is the latest LTS version of Java after JDK 11, including many new features and improvements, such as Sealed classes, garbage collector improvements, and more.</p>
-<p>Since JDK 16 began to restrict Java internal class reflection, Dubbo&rsquo;s serialization and dynamic proxy have been affected to a certain extent. In Dubbo 3.2, we solved the compatibility problem from the bottom through the optimization of Fastjson2 and Javassist. At present, Dubbo can run perfectly on JDK17, and all unit tests and most integration tests have also been tested on the JDK 17 platform.</p>
-<p>For the upcoming JDK 21 LTS, Dubbo is intensively adapting it. We will add support for JDK 21 and Dubbo coroutines (Project Loom) in version 3.3.</p>
-<h3 id="rpc-performance-greatly-improved">RPC performance greatly improved</h3>
-<p>In version 3.2, we have optimized the performance of RPC calls, and the optimized content is as follows.</p>
-<ul>
-<li>
-<p>Eliminates synchronization lock contention and blocking code (<code>triple</code>)</p>
-<ol>
-<li>When creating an HTTP/2 Stream Channel in version 3.1, the method of synchronously blocking user threads is used to wait for the Stream Channel to be created, and the remote call is initiated after the creation is completed. In 3.2, we will create the behavior of HTTP/2 Stream Channel <code>asynchronous</code> and ensure that the request is initiated after the creation is completed, so as to <code>reduce unnecessary waiting for user threads</code>.</li>
-<li>In version 3.1, there is a synchronization lock competition between the user thread and the Netty I/O thread. The IO thread will check the Socket availability for each write request, and the Socket availability check method is also used in the user thread, but the Socket availability in the JDK The implementation of the check uses <code>synchronized</code> to ensure concurrency safety. In order to reduce this part of the time-consuming, we remove the user thread check and el [...]
-</ol>
-</li>
-<li>
-<p>Reduced request response delay with synchronous blocking calls (<code>dubbo</code>, <code>triple</code>)</p>
-<p>In the RPC call in SYNC mode in version 3.1, we use a blocking queue to wait for the response written back by the remote service. When the response is written back, it will be added to the queue and wake up the blocked user thread. In 3.2, we replaced the blocking queue with a concurrent queue, and used its CAS mechanism to greatly reduce the number of threads entering blocking, improve CPU utilization and reduce response processing delay</p>
-</li>
-<li>
-<p>Reduced the number of thread switches (<code>triple</code>)</p>
-<p>In version 3.1, the RPC call in SYNC mode uses a consumer thread pool for processing when receiving the response, and wakes up the user thread to receive the response after the processing is completed. However, through the analysis of the consumer thread pool in SYNC mode is unnecessary, an additional layer of consumer thread pool processing not only wastes server resources but also reduces performance, so we removed the consumer thread pool in SYNC mode in version 3.2 , the intera [...]
-</li>
-<li>
-<p>Optimized I/O performance (<code>dubbo</code>, <code>triple</code>)</p>
-<p>In version 3.1, we used the Netty framework to achieve network communication, but every time we wrote a message to the peer, we directly flashed it to the peer, resulting in a very high number of system calls and reducing the communication performance. For this reason, we have optimized it in version 3.2. Every time a message is sent, the message is first submitted to a write queue, and multiple messages are written out at the right time, thereby improving I/O Utilization rate grea [...]
-</li>
-<li>
-<p>Support serialization of messages on user threads (<code>dubbo</code>, <code>triple</code>)</p>
-<p>In version 3.1, the deserialization of messages in RPC communication is performed in a single I/O thread, which makes it impossible to take advantage of the advantages of multi-core CPUs. For this reason, in version 3.2, we support time-consuming tasks such as deserialization on user threads, and evenly distribute the pressure of I/O threads to multiple CPU cores, thereby improving the performance of large packets. `Scenario RPC performance.</p>
-</li>
-</ul>
-<p>The performance improvement of 3.2 compared with 3.1 is as follows:</p>
-<p>Triple protocol: In the scenarios of createUser, existUser, and getUser with small packets, the improvement rate is about <code>40-45%</code>, and the improved performance is basically the same as that of gRPC in the same scenario. The increase of about <code>17%</code> in the large message scenario listUser, compared to <code>11%</code> lower than that of gRPC in the same scenario.</p>
-<p>Dubbo protocol: The improvement rate is about <code>180%</code> in the case of createUser and getUser in small message scenarios. The improvement rate of the very small message existUser (only one boolean value) is about <code>24%</code>, while the improvement rate of the larger message listUser is the highest, reaching <code>1000%</code>!</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/32-release/Untitled%203.png" alt="Untitled"></p>
-<p><img src="https://dubbo.apache.org/imgs/blog/32-release/Untitled%204.png" alt="Untitled"></p>
-<h2 id="how-to-upgrade-to-dubbo-32">How to upgrade to Dubbo 3.2</h2>
-<h3 id="pom-upgrade">Pom upgrade</h3>
-<p>The latest Dubbo Maven coordinates are:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>3.2.0<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span></code></pre></div><h3 id="compatibility">Compatibility</h3>
-<p>For the vast majority of users, upgrading to Dubbo 3.2.0 is completely smooth, and only needs to modify the version of the dependent package.</p>
-<ol>
-<li>
-<p>Enhancement of serialization verification logic (<strong>important</strong>)</p>
-<p>As mentioned above, in Dubbo 3.2.0 version, Dubbo will enable the strong verification of the serialization whitelist by default to improve the security of Dubbo and avoid the problem of remote command execution. The current mechanism automatically trusts some classes through the package name recursive mechanism, but for some users who use generics and may have incomplete scanning, we recommend that you upgrade to Dubbo 3.1.9 or add <code>-Ddubbo.application.serialize- check-stat [...]
-<p>For the configuration of custom whitelist, please refer to <code>Documentation/SDK Manual/Java SDK/Advanced Features and Usage/Improve Security/Class Inspection Mechanism</code> on the official website for configuration.</p>
-</li>
-<li>
-<p>Modification of default serialization</p>
-<p>Starting from version 3.2.0 of Dubbo, the default serialization method is switched from <code>hessian2</code> to <code>fastjson2</code>. For applications upgraded to 3.2.0, Dubbo will automatically try to use <code>fastjson2</code> for serialization. Please note that whether it is the client or the server, as long as one end has not been upgraded to 3.2.0, it will be downgraded to <code>hessian2</code> serialization to ensure compatibility.</p>
-</li>
-<li>
-<p>Push short protection is disabled by default</p>
-<p>The purpose of push empty protection is that when the registration center fails and actively pushes empty addresses, Dubbo keeps the last batch of provider information to ensure service availability. However, in most cases, even if the registry fails, empty addresses will not be pushed, only in some special cases. If push short protection is turned on, it will have a greater impact on Dubbo&rsquo;s Fallback logic, heartbeat logic, etc., and bring troubles to developers when usi [...]
-<p>If you need to enable empty protection in the production environment to achieve high availability, you can configure <code>dubbo.application.enable-empty-protection</code> to <code>true</code>. However, please note that it is known that turning on the push protection will cause the server application to roll back to the original version after upgrading from <code>2.6.x</code> and <code>2.7.x</code> versions that only support interface-level service discovery [...]
-</li>
-</ol>
-<h2 id="summarize">Summarize</h2>
-<p>Dubbo 3.2 is a very important version, it brings many new features and improvements, making Dubbo more powerful and easy to use. We are very grateful for the support and contributions of the community, and hope that everyone can experience Dubbo 3.2 as soon as possible and enjoy the convenience and advantages it brings.</p></description></item><item><title>Blog: How to proxy Dubbo service in Apache ShenYu Gateway</title><link>https://dubbo.apache.org/en/blog/2022/05/04/how-to-pr [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/ApacheShenYu-Dubbo-en.png" alt="img"></p>
-<h2 id="1-introduction">1. Introduction</h2>
-<ul>
-<li>Apache ShenYu</li>
-</ul>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/shenyu.png" alt="img"></p>
-<p><a href="https://shenyu.apache.org/docs/index">Apache ShenYu(Incubating)</a> is an asynchronous, high-performance, cross-language, responsive <code>API</code> gateway. Compatible with a variety of mainstream framework systems, support for hot-plugging, users can customize the development to meet the current and future needs of users in a variety of scenarios, experienced large-scale scenarios hammered.</p>
-<p>In May 2021, <code>ShenYu</code> was donated to the <code>Apache</code> Software Foundation, and the Apache Foundation voted unanimously to enter the incubator.</p>
-<ul>
-<li>Apache Dubbo</li>
-</ul>
-<p><code>Apache Dubbo</code> is a microservice development framework that provides two key capabilities, <code>RPC</code> communication and microservice governance. This means that microservices developed with <code>Dubbo</code> will have the ability to discover and communicate with each other remotely, and take advantage of the rich service governance capabilities provided by Dubbo to achieve service governance requirements such as service discovery, load balancing, [...]
-<h2 id="2-quick-start-with-dubbo">2. Quick Start with Dubbo</h2>
-<p>This section describes how to connect the <code>Dubbo</code> service to the <code>Shenyu</code> gateway. You can find the [sample code] for this section directly under the project (<a href="https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo">https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo</a> -examples-dubbo/shenyu-examples-apache-dubbo-service).</p>
-<h3 id="21-start-shenyu-admin">2.1 Start shenyu-admin</h3>
-<p><code>shenyu-admin</code> is the <code>Apache ShenYu</code> backend management system, there are various ways to start it, this article is started by <code>[local deployment](https://shenyu.apache.org/docs/deployment/deployment-local)</code> way. After successful startup, you need to set the <code>dubbo</code> plugin to be on and set your registered address in the base configuration <code>-&gt;</code>Plugin Management&rsquo;, please make sure t [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-enable-en.png" alt="img"></p>
-<h3 id="22-start-shenyu-gateway">2.2 Start ShenYu Gateway</h3>
-<p>Here it is started by way of <a href="https://github.com/apache/incubator-shenyu/tree/master/shenyu-bootstrap">source</a> and runs directly <code>shenyu-bootstrap</code> in <code>shenyu-bootstrap</code>. ShenyuBootstrapApplication`.</p>
-<p>Make sure the gateway has introduced the relevant dependencies before starting. If the client is <code>apache dubbo</code> and the registry uses <code>zookeeper</code>, please refer to the following configuration.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span> <span style="color:#719e07">&lt;!--</span> apache shenyu apache dubbo plugin start<span style="color:#719e07">--&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>org.apache.shenyu<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>shenyu<span style="color:#719e07">-</span>spring<span style="color:#719e07">-</span>boot<span style="color:#719e07">-</span>starter<span style="color:#719e07">-</span>plugin<span style="color:#719e07">-</span>apache<span style="color:#719e07">-</span>dubbo<span style="color:#719e07"> [...]
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>version<span style="color:#719e07">&gt;</span>${project.version}<span style="color:#719e07">&lt;/</span>version<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>org.apache.dubbo<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>dubbo<span style="color:#719e07">&lt;/</span>artifactId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>version<span style="color:#719e07">&gt;</span>2.7.5<span style="color:#719e07">&lt;/</span>version<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;!--</span> Dubbo zookeeper registry dependency start <span style="color:#719e07">--&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>org.apache.curator<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>curator<span style="color:#719e07">-</span>client<span style="color:#719e07">&lt;/</span>artifactId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>version<span style="color:#719e07">&gt;</span>4.0.1<span style="color:#719e07">&lt;/</span>version<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>exclusions<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>exclusion<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>log4j<span style="color:#719e07">&lt;/</span>artifactId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>log4j<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>exclusion<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>exclusions<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>org.apache.curator<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>curator<span style="color:#719e07">-</span>framework<span style="color:#719e07">&lt;/</span>artifactId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>version<span style="color:#719e07">&gt;</span>4.0.1<span style="color:#719e07">&lt;/</span>version<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>groupId<span style="color:#719e07">&gt;</span>org.apache.curator<span style="color:#719e07">&lt;/</span>groupId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>artifactId<span style="color:#719e07">&gt;</span>curator<span style="color:#719e07">-</span>recipes<span style="color:#719e07">&lt;/</span>artifactId<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>version<span style="color:#719e07">&gt;</span>4.0.1<span style="color:#719e07">&lt;/</span>version<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;/</span>dependency<span style="color:#719e07">&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;!--</span> Dubbo zookeeper registry dependency end <span style="color:#719e07">--&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;!--</span> apache dubbo plugin end<span style="color:#719e07">--&gt;</span>
-</span></span></code></pre></div><h3 id="23-start-shenyu-examples-dubbo">2.3 Start shenyu-examples-dubbo</h3>
-<p>Take the example provided on the official website <a href="https://github.com/apache/shenyu/tree/master/shenyu-examples/shenyu-examples-dubbo">shenyu-examples-dubbo</a>. Suppose the <code>dubbo</code> service is defined as follows.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> /* ...... * <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;test-dubbo-service&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;${dubbo.registry.address}&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:protocol</span> name=<span style="color:#2aa198">&#34;dubbo&#34;</span> port=<span style="color:#2aa198">&#34;20888&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:service</span> timeout=<span style="color:#2aa198">&#34;10000&#34;</span> interface=<span style="color:#2aa198">&#34;org.apache.shenyu.examples.dubbo.api.service.DubboTestService&#34;</span> ref=<span style="color:#2aa198">&#34;dubboTestService&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span>
-</span></span></code></pre></div><p>Declare the application service name, register the center address, use the <code>dubbo</code> protocol, declare the service interface, and the corresponding interface implementation class.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * DubboTestServiceImpl.
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@Service</span>(<span style="color:#2aa198">&#34;dubboTestService&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DubboTestServiceImpl</span> <span style="color:#268bd2">implements</span> DubboTestService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@ShenyuDubboClient</span>(path <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;/findById&#34;</span>, desc <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;Query by Id&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> DubboTest <span style="color:#268bd2">findById</span>(<span style="color:#268bd2">final</span> String id) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#719e07">new</span> DubboTest(id, <span style="color:#2aa198">&#34;hello world shenyu Apache, findById&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">//......</span>
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>In the interface implementation class, use the annotation <code>@ShenyuDubboClient</code> to register the service with <code>shenyu-admin</code>.</p>
-<p>Configuration information in the configuration file <code>application.yml</code>.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">server</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: <span style="color:#2aa198">8011</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: <span style="color:#2aa198">0.0.0.0</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">servlet</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">context-path</span>: /
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">spring</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">main</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">allow-bean-definition-overriding</span>: <span style="color:#cb4b16">true</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: zookeeper://localhost:2181 <span style="color:#586e75"># The registry used by dubbo</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">shenyu</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">register</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">registerType</span>: http <span style="color:#586e75">#Registration Method</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">serverLists</span>: http://localhost:9095 <span style="color:#586e75">#Registration Address</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">props</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">username</span>: admin
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">password</span>: <span style="color:#2aa198">123456</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">client</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">dubbo</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">props</span>:
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">contextPath</span>: /dubbo
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">appName</span>: dubbo
-</span></span></code></pre></div><p>In the configuration file, declare the registry address used by <code>dubbo</code>. The <code>dubbo</code> service registers with <code>shenyu-admin</code>, using the method <code>http</code>, and the registration address is <code>http://localhost:9095</code>.</p>
-<p>See <code>[Application Client Access](https://shenyu.apache.org/docs/design/register-center-design/)</code> for more information on the use of the registration method.</p>
-<h3 id="24-invoke-the-dubbo-service">2.4 Invoke the Dubbo service</h3>
-<p>The <code>shenyu-examples-dubbo</code> project will automatically register the interface methods annotated with <code>@ShenyuDubboClient</code> to the gateway after it is successfully started.</p>
-<p>Open <code>Plugins List -&gt; Proxy -&gt; dubbo</code> to see the list of plugin rules configuration.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-service-list-en.png" alt="img"></p>
-<p>Information on the selectors for successful registration.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-selector-en.png" alt="img"></p>
-<p>Information on the rules for successful registration.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-rule-en.png" alt="img"></p>
-<blockquote>
-<p>Selectors and rules are the soul of the <code>Apache ShenYu</code> gateway. Mastering it well, you can manage any traffic. Corresponding to the matching conditions (conditions) inside the selectors and rules, we can handle various complex scenarios according to different traffic filtering rules. Traffic filtering can get data from <code>Header</code>, <code>URI</code>, <code>Query</code>, <code>Cookie</code> and so on Http requests.</p>
-<p>Then you can use <code>Match</code>, <code>=</code>, <code>Regex</code>, <code>Groovy</code>, <code>Exclude</code> and other matching methods to match the data you expect. Multi-group match additions can use the <code>And/Or</code> matching strategy.</p>
-<p>See: <code>[Selector and Rule Management](https://shenyu.apache.org/docs/user-guide/admin-usage/selector-and-rule)</code> for details and usage.</p>
-</blockquote>
-<p>Initiate a <code>GET</code> request to invoke the <code>dubbo</code> service through the <code>ShenYu</code> gateway.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>GET http://localhost:9195/dubbo/findById?id=100
-</span></span><span style="display:flex;"><span>Accept: application/json
-</span></span></code></pre></div><p>After a successful response, the result is as follows.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>{
-</span></span><span style="display:flex;"><span> &#34;name&#34;: &#34;hello world shenyu Apache, findById&#34;,
-</span></span><span style="display:flex;"><span> &#34;id&#34;: &#34;100&#34;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>At this point, you can successfully access the <code>dubbo</code> service via <code>http</code> requests. The <code>ShenYu</code> gateway converts the <code>http</code> protocol to the <code>dubbo</code> protocol via the <code>shenyu-plugin-dubbo</code> module.</p>
-<h2 id="3-understanding-of-dubbo-plugin">3. Understanding of Dubbo plugin</h2>
-<p>During the process of running the above <code>demo</code>, are there any questions about</p>
-<ul>
-<li>How does the <code>dubbo</code> service register with <code>shenyu-admin</code>?</li>
-<li>How does <code>shenyu-admin</code> synchronize data to the <code>ShenYu</code> gateway?</li>
-<li>How does the <code>DubboPlugin</code> convert the <code>http</code> protocol to the <code>dubbo</code> protocol?</li>
-</ul>
-<p>With these questions in mind, let&rsquo;s dive into understanding the <code>dubbo</code> plugin.</p>
-<h3 id="31-application-client-access">3.1 Application Client Access</h3>
-<p>Application client access refers to accessing microservices to the <code>Apache ShenYu</code> gateway, which currently supports access to <code>Http</code>, <code>Dubbo</code>, <code>Spring Cloud</code>, <code>gRPC</code>, <code>Motan</code>, <code>Sofa</code>, <code>Tars</code> and other protocols.</p>
-<p>Accessing application clients to the <code>Apache ShenYu</code> gateway is achieved through the registry, which involves client-side registration and server-side synchronization of data. The registry supports <code>Http</code>, <code>Zookeeper</code>, <code>Etcd</code>, <code>Consul</code> and <code>Nacos</code>. The default is to register by <code>Http</code>.</p>
-<p>Please refer to <code>[Client Access Configuration](https://shenyu.apache.org/docs/user-guide/register-center-access)</code> for client access related configuration.</p>
-<h4 id="311-client-side-registration">3.1.1 Client-side Registration</h4>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/register-client.png" alt="img"></p>
-<p>Declare the registry client type, such as <code>Http</code> or <code>Zookeeper</code>, in your microservice configuration.
-Load and initialize the corresponding registry client using the <code>SPI</code> method when the application starts, and get the service interface information that needs to be registered in it by implementing the post-processor interface related to the <code>Spring Bean</code>, and put the obtained information into the <code>Disruptor</code>.</p>
-<p>The registry client reads the data from <code>Disruptor</code> and registers the interface information to <code>shenyu-admin</code>, where <code>Disruptor</code> plays the role of decoupling data and operations, which is convenient for extension.</p>
-<h4 id="312-server-side-registration">3.1.2 Server-side Registration</h4>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/register-server.png" alt="img"></p>
-<p>Declare the registry server type, such as <code>Http</code> or <code>Zookeeper</code>, in the <code>shenyu-admin</code> configuration. When <code>shenyu-admin</code> starts, it will read the configuration type, load and initialize the corresponding registry server, and when the registry server receives the interface information registered by <code>shenyu-client</code>, it will put it into <code>Disruptor</code>, and then it will trigger the regis [...]
-<p>The <code>Disruptor</code> plays a role in decoupling data and operation, which is good for extension. It also has a data buffering role if too many registration requests lead to registration exceptions.</p>
-<h3 id="32-data-synchronization-principle">3.2 Data Synchronization Principle</h3>
-<p>Data synchronization refers to the policy used to synchronize data to the <code>Apache ShenYu</code> gateway after the <code>shenyu-admin</code> backend has manipulated the data. The <code>Apache ShenYu</code> gateway currently supports <code>ZooKeeper</code>, <code>WebSocket</code>, <code>Http long polling</code>, <code>Nacos</code>, <code>Etcd</code> and <code>Consul</code> for data synchronization. The default is to synchroni [...]
-<p>Please refer to <code>[Data Synchronization Configuration](https://shenyu.apache.org/docs/user-guide/use-data-sync)</code> for the configuration of data synchronization.</p>
-<h4 id="321-the-significance-of-data-synchronization">3.2.1 The Significance of Data Synchronization</h4>
-<p>The gateway is the entry point for traffic requests and plays a very important role in the microservices architecture, and the importance of high availability of the gateway is self-evident. In the process of using the gateway, in order to meet the business requirements, it is often necessary to change the configuration, such as flow control rules, routing rules and so on. Therefore, the dynamic configuration of the gateway is an important factor to ensure the high availability of [...]
-<p>The current data synchronization characteristics are as follows.</p>
-<ul>
-<li>All configurations are cached in the <code>Apache ShenYu</code> gateway memory, and each request uses the local cache, which is very fast.</li>
-<li>Users can change any data in the <code>shenyu-admin</code> backend and it will be synchronized to the gateway memory immediately.</li>
-<li>Supports data synchronization of plugins, selectors, rule data, metadata, signature data, etc. for <code>Apache ShenYu</code>.</li>
-<li>All plug-in selectors and rules are dynamically configured and take effect immediately, without restarting the service.</li>
-<li>Data synchronization method supports <code>Zookeeper</code>, <code>Http long polling</code>, <code>Websocket</code>, <code>Nacos</code>, <code>Etcd</code> and <code>Consul</code>.</li>
-</ul>
-<h4 id="322-data-synchronization-principle-analysis">3.2.2 Data Synchronization Principle Analysis</h4>
-<p>The following diagram shows the flow of <code>Apache ShenYu</code> data synchronization. The <code>Apache ShenYu</code> gateway synchronizes configuration data from the configuration service when it starts, and supports push-pull mode to get configuration change information and then update the local cache. Administrators can change user permissions, rules, plugins, traffic configuration in the administration backend (<code>shenyu-admin</code>) and synchronize the [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/data-sync.png" alt="img"></p>
-<p>In the original version, the configuration service relied on the <code>Zookeeper</code> implementation, and the management backend <code>pushed</code> the changes to the gateway. Now we can support <code>WebSocket</code>, <code>Http long polling</code>, <code>Zookeeper</code>, <code>Nacos</code>, <code>Etcd</code> and <code>Consul</code>, by setting <code>shenyu.sync.${strategy}</code> in the configuration file to specify the co [...]
-<p>As shown in the figure below, <code>shenyu-admin</code> sends out configuration change notifications through <code>EventPublisher</code> after a user makes a configuration change, and <code>EventDispatcher</code> processes the change notification, and then synchronizes the data according to the configured synchronization policy (<code>http, weboscket, zookeeper, naocs, etcd, consul</code>). etcd, consul`), the configuration is sent to the corresponding event [...]
-<ul>
-<li>If it is a <code>websocket</code> synchronization policy, the changed data will be actively pushed to <code>shenyu-web</code> and there will be a corresponding <code>WebsocketDataHandler</code> processor at the gateway layer to handle the data push from <code>shenyu-admin</code>.</li>
-<li>In case of <code>zookeeper</code> synchronization policy, the change data will be updated to <code>zookeeper</code>, and <code>ZookeeperSyncCache</code> will listen to <code>zookeeper</code> data changes and process them.</li>
-<li>In case of <code>http</code> synchronization policy, the gateway initiates a long polling request with <code>90s</code> timeout by default, if <code>shenyu-admin</code> has no data change, it will block the <code>http</code> request, if there is data change, it will respond with the changed data information, if more than <code>60s</code> there is still no data change, it will respond with empty data, after the gateway layer receives the response After [...]
-</ul>
-<h3 id="33-process-analysis">3.3 Process Analysis</h3>
-<p>The process analysis shows the service registration process, data synchronization process and service invocation process from the source code perspective.</p>
-<h4 id="331-service-registration-process">3.3.1 Service Registration Process</h4>
-<ul>
-<li>Reading dubbo services</li>
-</ul>
-<p>Use the annotation <code>@ShenyuDubboClient</code> to mark <code>dubbo</code> services that need to be registered to the gateway.</p>
-<p>Annotation scanning is done via the <code>ApacheDubboServiceBeanListener</code>, which implements the <code>ApplicationListener&lt;ContextRefreshedEvent&gt;</code> interface and starts executing the event handler method when a context refresh event occurs during the <code>Spring</code> container startup <code>onApplicationEvent()</code>. In the rewritten method logic, the <code>Dubbo</code> service <code>ServiceBean</code> is read, the me [...]
-<p>The specific registration logic is implemented by the registry, please refer to <code>[Client Access Principles](https://shenyu.apache.org/docs/design/register-center-design/)</code> .</p>
-<ul>
-<li>Processing registration information</li>
-</ul>
-<p>The metadata and <code>URI</code> data registered by the client through the registration center are processed at the <code>shenyu-admin</code> end, which is responsible for storing to the database and synchronizing to the <code>shenyu</code> gateway. The client-side registration processing logic of the <code>Dubbo</code> plugin is in the <code>ShenyuClientRegisterDubboServiceImpl</code>. The inheritance relationship is as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/ShenyuClientRegisterDubboServiceImpl.png" alt="img"></p>
-<ul>
-<li>ShenyuClientRegisterService: client registration service, top-level interface.</li>
-<li>FallbackShenyuClientRegisterService: registration failure, provides retry operation.</li>
-<li>AbstractShenyuClientRegisterServiceImpl: abstract class, implements part of the public registration logic.</li>
-<li>ShenyuClientRegisterDubboServiceImpl: implements the registration of <code>Dubbo</code> plug-ins.</li>
-</ul>
-<p>Registration information including selectors, rules and metadata.</p>
-<p>The overall <code>dubbo</code> service registration process is as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-register-en.png" alt="img"></p>
-<h4 id="332-data-synchronization-process">3.3.2 Data Synchronization Process</h4>
-<ul>
-<li>admin update data</li>
-</ul>
-<p>Suppose in the backend management system, a new selector data is added, the request goes to the <code>createSelector()</code> method in the <code>SelectorController</code> class, which is responsible for verifying the data, adding or updating the data, and returning the result information.</p>
-<p>In the <code>SelectorServiceImpl</code> class, the <code>createOrUpdate()</code> method completes the conversion of the data, saves it to the database, publishes events, and updates the <code>upstream</code>.</p>
-<p>Persistence of data is done in the <code>Service</code> class, i.e. saving data to the database. Publishing the changed data is done by <code>eventPublisher.publishEvent()</code>, the <code>eventPublisher</code> object is an <code>ApplicationEventPublisher</code> class, the fully qualified name of this class is <code>org.springframework. ApplicationEventPublisher</code>, the function of publishing data is exactly what is done through <code>Spring< [...]
-<p>When the event is published, it automatically goes to the <code>onApplicationEvent()</code> method in the <code>DataChangedEventDispatcher</code> class, which handles the event according to the different data types and data synchronization methods.</p>
-<ul>
-<li>Gateway data synchronization</li>
-</ul>
-<p>At startup, the gateway loads different configuration classes and initializes data synchronization-related classes according to the specified data synchronization method.</p>
-<p>After receiving the data, it performs deserialization operation to read the data type and operation type. Different data types have different data processing methods, so there are different implementation classes. But they also have the same processing logic between them, so they can be implemented by template method design pattern. The same logic is put in the <code>handle()</code> method in the abstract class <code>AbstractDataHandler</code>, and the different logic i [...]
-<p>Adding a new selector data is a new operation that goes to the <code>SelectorDataHandler.doUpdate()</code> concrete data processing logic.</p>
-<p>In the common plugin data subscriber <code>CommonPluginDataSubscriber</code>, which is responsible for handling all plugin, selector and rule information</p>
-<p>Saves data to the gateway&rsquo;s memory, <code>BaseDataCache</code> is the class that ultimately caches the data, implemented through the singleton pattern. The selector data is then stored in <code>SELECTOR_MAP</code>, a <code>Map</code>. In the subsequent use, the data is also taken from here.</p>
-<p>The above logic is represented in a flowchart as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/data-sync-seq-en.png" alt="img"></p>
-<h4 id="333-service-invocation-process">3.3.3 Service Invocation Process</h4>
-<p>In the <code>Dubbo</code> plugin system, the class extends relationship is as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/ApacheDubboPlugin.png" alt="img"></p>
-<blockquote>
-<p>ShenyuPlugin: top-level interface, defining interface methods.</p>
-<p>AbstractShenyuPlugin: abstract class that implements the common logic of the plugin; &gt; AbstractShenyuPlugin: abstract class that implements the common logic of the plugin.</p>
-<p>AbstractDubboPlugin: dubbo plug-in abstract class, implementing <code>dubbo</code> common logic (ShenYu gateway supports ApacheDubbo and AlibabaDubbo).</p>
-<p>ApacheDubboPlugin: ApacheDubbo plugin.</p>
-</blockquote>
-<ul>
-<li>org.apache.shenyu.web.handler.ShenyuWebHandler.DefaultShenyuPluginChain#execute()</li>
-</ul>
-<p>After passing the <code>ShenYu</code> gateway proxy, the request entry is <code>ShenyuWebHandler</code>, which implements the <code>org.springframework.web.server.WebHandler</code> interface and connects all plugins through the chain-of-responsibility design pattern.</p>
-<ul>
-<li>org.apache.shenyu.plugin.base.AbstractShenyuPlugin#execute()</li>
-</ul>
-<p>Determining whether a plugin is executed when a request is made to the gateway is done by the specified matching logic. The matching logic for selectors and rules is executed in the <code>execute()</code> method.</p>
-<ul>
-<li>org.apache.shenyu.plugin.global.GlobalPlugin#execute()</li>
-</ul>
-<p>The first to be executed is the <code>GlobalPlugin</code> , which is a global plugin that constructs contextual information in the <code>execute()</code> method.</p>
-<ul>
-<li>org.apache.shenyu.plugin.base.RpcParamTransformPlugin#execute()</li>
-</ul>
-<p>Next to be executed is the <code>RpcParamTransformPlugin</code>, which is responsible for reading the parameters from the <code>http</code> request, saving them in the <code>exchange</code> and passing them to the <code>rpc</code> service. In the <code>execute()</code> method, the core logic of the plugin is executed: it gets the request information from <code>exchange</code> and processes the parameters according to the form of the content passe [...]
-<ul>
-<li>org.apache.shenyu.plugin.dubbo.common.AbstractDubboPlugin</li>
-</ul>
-<p>Then what gets executed is the <code>DubboPlugin</code> . In the <code>doExecute()</code> method, the main focus is on checking metadata and parameters. In the <code>doDubboInvoker()</code> method, special context information is set and then the generalized invocation of <code>dubbo</code> is started.</p>
-<p>In the <code>genericInvoker()</code> method.</p>
-<ul>
-<li>Gets the <code>ReferenceConfig</code> object.</li>
-<li>obtains the generalization service <code>GenericService</code> object.</li>
-<li>Constructs the request parameter <code>pair</code> object.</li>
-<li>Initiate an asynchronous generalization invocation.</li>
-</ul>
-<p>The generalization call enables you to call the <code>dubbo</code> service at the gateway.</p>
-<p>The <code>ReferenceConfig</code> object is the key object that supports generalization calls, and its initialization is done during data synchronization.</p>
-<ul>
-<li>org.apache.shenyu.plugin.response.ResponsePlugin#execute()</li>
-</ul>
-<p>The last one to be executed is <code>ResponsePlugin</code>, which unifies the response result messages of the gateway. The processing type is determined by the <code>MessageWriter</code>, and the class extends relationship is as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/MessageWriter.png" alt="img"></p>
-<blockquote>
-<p>MessageWriter: interface that defines message processing methods.</p>
-<p>NettyClientMessageWriter: Handles the results of <code>Netty</code> calls.</p>
-<p>RPCMessageWriter: processing the results of <code>RPC</code> calls.</p>
-<p>WebClientMessageWriter: processing the results of <code>WebClient</code> calls;</p>
-</blockquote>
-<p>The <code>Dubbo</code> service is called and the result of processing is the <code>RPCMessageWriter</code>.</p>
-<ul>
-<li>org.apache.shenyu.plugin.response.strategy.RPCMessageWriter#writeWith()</li>
-</ul>
-<p>Process the response results in the <code>writeWith()</code> method, get the results or handle exceptions.</p>
-<p>At this point in the analysis, the source code analysis of the <code>Dubbo</code> plugin is complete, and the analysis flowchart is as follows.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/shenyu-dubbo/dubbo-execute-en.png" alt="img"></p>
-<h2 id="4-summary">4. Summary</h2>
-<p>This article analyzes the proxy process of <code>ShenYu</code> gateway to Dubbo service from a practical case. The main knowledge points involved are as follows.</p>
-<ul>
-<li>Implementing plug-ins through the chain-of-responsibility design pattern.</li>
-<li>implementing <code>AbstractShenyuPlugin</code> using the template method design pattern to handle generic operation types.</li>
-<li>implementation of the cached data class <code>BaseDataCache</code> using the singleton design pattern.</li>
-<li>the ability to introduce different registries and number synchronization methods through the <code>springboot starter</code>, which is very scalable.</li>
-<li>support for hot updates of rules through <code>admin</code> to facilitate traffic control.</li>
-<li><code>Disruptor</code> queue is for data and operation decoupling, as well as data buffering.</li>
-</ul></description></item><item><title>Blog: Makes it More Convenient for You to Proxy Dubbo Services in Apache APISIX</title><link>https://dubbo.apache.org/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/</link><pubDate>Tue, 18 Jan 2022 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2022/01/18/makes-it-more-convenient-for-you-to-proxy-dubbo-services-in-apache-apisix/</guid><description>
-<h2 id="background">Background</h2>
-<p><a href="https://dubbo.apache.org/en/">Apache Dubbo</a> is a MicroService development framework open sourced by Alibaba and donated to Apache, which provides two key capabilities of RPC communication and microservice governance. It has not only been validated by Ali&rsquo;s massive traffic in e-commerce scenario, but also been widely implemented in domestic technology companies.</p>
-<p>In practical application scenarios, Apache Dubbo is generally used as the implementation framework for RPC calls between back-end systems, and when HTTP interfaces need to be provided to the front-end, the Dubbo Service is packaged as an HTTP interface through a &ldquo;glue layer&rdquo; and then delivered to the front-end system.</p>
-<p><a href="https://apisix.apache.org/">Apache APISIX</a> is the top open source project of Apache Software Foundation and the most active open source gateway project today. As a dynamic, real-time, high-performance open source API gateway, Apache APISIX provides rich traffic management features such as load balancing, dynamic upstream, grayscale publishing, service meltdown, authentication, observability, and more.</p>
-<p>Benefiting from the advantages of Apache Dubbo application scenarios, Apache APISIX is based on the open source project tengine/mod_dubbo module to equip Apache Dubbo services with HTTP gateway capabilities. Dubbo Service can be easily published as an HTTP service via the dubbo-proxy plugin.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/apisix-plugin/1.png" alt="Architecture Diagram"></p>
-<h2 id="how-to-use">How to use</h2>
-<h3 id="getting-started-installation-and-use">Getting Started: Installation and Use</h3>
-<blockquote>
-<p>Here we recommend using the Apache APISIX version 2.11 image for installation. This version of APISIX-Base has the Dubbo module compiled by default, so you can use the <code>dubbo-proxy</code> plugin directly.</p>
-</blockquote>
-<p>In the next steps, we will use the <a href="https://github.com/apache/dubbo-samples"><code>dubbo-samples</code></a> project for a partial demonstration. This project is a demo application implemented using Apache Dubbo, and in this article we use one of the sub-modules as the Dubbo Provider.</p>
-<p>Before we get into the action, let&rsquo;s take a brief look at the definition, configuration, and implementation of the Dubbo interface.</p>
-<h4 id="interface-implementation">Interface implementation</h4>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">DemoService</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * standard samples dubbo infterace demo
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * @param context pass http infos
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * @return Map&lt;String, Object&gt;&lt;/&gt; pass to response http
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> **/</span>
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">apisixDubbo</span>(Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> httpRequestContext);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>As shown above, the Dubbo interface is defined in a fixed way. The <code>Map</code> of method parameters represents the information passed by APISIX to the Dubbo Provider about the HTTP request (e.g. header, body, &hellip;). The <code>Map</code> of the method return value indicates how the Dubbo Provider passes some information to APISIX about the HTTP response to be returned.</p>
-<p>After the interface information, the DemoService can be published via XML configuration.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#586e75">&lt;!-- service implementation, as same as regular local bean --&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;bean</span> id=<span style="color:#2aa198">&#34;demoService&#34;</span> class=<span style="color:#2aa198">&#34;org.apache.dubbo.samples.provider.DemoServiceImpl&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">&lt;!-- declare the service interface to be exported --&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dubbo:service</span> interface=<span style="color:#2aa198">&#34;org.apache.dubbo.samples.apisix.DemoService&#34;</span> ref=<span style="color:#2aa198">&#34;demoService&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span></code></pre></div><p>After the above configuration, the Consumer can access the <code>apisixDubbo</code> method through <code>org.apache.dubbo.samples.apisix.DemoService</code> The specific interface implementation is as follows.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoServiceImpl</span> <span style="color:#268bd2">implements</span> DemoService {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">apisixDubbo</span>(Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> httpRequestContext) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (Map.Entry<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> entry : httpRequestContext.entrySet()) {
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Key = &#34;</span> <span style="color:#719e07">+</span> entry.getKey() <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34;, Value = &#34;</span> <span style="color:#719e07">+</span> entry.getValue());
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> ret <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> HashMap<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span>();
-</span></span><span style="display:flex;"><span> ret.put(<span style="color:#2aa198">&#34;body&#34;</span>, <span style="color:#2aa198">&#34;dubbo success\n&#34;</span>); <span style="color:#586e75">// http response body</span>
-</span></span><span style="display:flex;"><span> ret.put(<span style="color:#2aa198">&#34;status&#34;</span>, <span style="color:#2aa198">&#34;200&#34;</span>); <span style="color:#586e75">// http response status</span>
-</span></span><span style="display:flex;"><span> ret.put(<span style="color:#2aa198">&#34;test&#34;</span>, <span style="color:#2aa198">&#34;123&#34;</span>); <span style="color:#586e75">// http response header</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> ret;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>:::note
-In the above code, <code>DemoServiceImpl</code> prints the received <code>httpRequestContext</code> and describes the HTTP response to the Dubbo request by returning a Map object with the specified Key.
-:::</p>
-<h4 id="operation-steps">Operation steps</h4>
-<ol>
-<li>Start <a href="https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-tengine#install-dubbo"><code>dubbo-samples</code></a>.</li>
-<li>Enable the <code>dubbo-proxy</code> plugin in the <code>config.yaml</code> file.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#586e75"># Add this in config.yaml</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">plugins</span>:
-</span></span><span style="display:flex;"><span> - ... <span style="color:#586e75"># plugin you need</span>
-</span></span><span style="display:flex;"><span> - dubbo-proxy
-</span></span></code></pre></div><ol start="3">
-<li>Create an Upstream that points to the Dubbo Provider.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>curl http://127.0.0.1:9180/apisix/admin/upstreams/1 -H <span style="color:#2aa198">&#39;X-API-KEY: edd1c9f034335f136f87ad84b625c8f1&#39;</span> -X PUT -d <span style="color:#2aa198">&#39;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">{
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;nodes&#34;: {
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;127.0.0.1:20880&#34;: 1
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> },
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;type&#34;: &#34;roundrobin&#34;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">}&#39;</span>
-</span></span></code></pre></div><ol start="4">
-<li>Expose an HTTP route for the DemoService.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>curl http://127.0.0.1:9180/apisix/admin/routes/1 -H <span style="color:#2aa198">&#39;X-API-KEY: edd1c9f034335f136f87ad84b625c8f1&#39;</span> -X PUT -d <span style="color:#2aa198">&#39;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">{
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;host&#34;: &#34;example.org&#34;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;uris&#34;: [
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;/demo&#34;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> ],
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;plugins&#34;: {
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;dubbo-proxy&#34;: {
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;service_name&#34;: &#34;org.apache.dubbo.samples.apisix.DemoService&#34;,
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;service_version&#34;: &#34;0.0.0&#34;,
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;method&#34;: &#34;apisixDubbo&#34;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> }
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> },
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;upstream_id&#34;: 1
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">}&#39;</span>
-</span></span></code></pre></div><ol start="5">
-<li>Use the curl command to request Apache APISIX and view the returned results.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>curl http://127.0.0.1:9080/demo -H <span style="color:#2aa198">&#34;Host: example.org&#34;</span> -X POST --data <span style="color:#2aa198">&#39;{&#34;name&#34;: &#34;hello&#34;}&#39;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>&lt; HTTP/1.1 <span style="color:#2aa198">200</span> OK
-</span></span><span style="display:flex;"><span>&lt; Date: Sun, <span style="color:#2aa198">26</span> Dec <span style="color:#2aa198">2021</span> 11:33:27 GMT
-</span></span><span style="display:flex;"><span>&lt; Content-Type: text/plain; <span style="color:#268bd2">charset</span><span style="color:#719e07">=</span>utf-8
-</span></span><span style="display:flex;"><span>&lt; Content-Length: <span style="color:#2aa198">14</span>
-</span></span><span style="display:flex;"><span>&lt; Connection: keep-alive
-</span></span><span style="display:flex;"><span>&lt; test: <span style="color:#2aa198">123</span>
-</span></span><span style="display:flex;"><span>&lt; Server: APISIX/2.11.0
-</span></span><span style="display:flex;"><span>&lt;
-</span></span><span style="display:flex;"><span>dubbo success
-</span></span></code></pre></div><p>:::note
-The above code returns the <code>test: 123</code> Header, and the <code>dubbo success</code> string as the body. This is the same as what we expected in the <code>DemoServiceImpl</code> code.
-:::</p>
-<ol start="6">
-<li>You can view the logs of the Dubbo Provider.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Key = content-length, Value = 17
-</span></span><span style="display:flex;"><span>Key = host, Value = example.org
-</span></span><span style="display:flex;"><span>Key = content-type, Value = application/x-www-form-urlencoded
-</span></span><span style="display:flex;"><span>Key = body, Value = [B@70754265
-</span></span><span style="display:flex;"><span>Key = accept, Value = */*
-</span></span><span style="display:flex;"><span>Key = user-agent, Value = curl/7.80.0
-</span></span></code></pre></div><p>:::note
-The Header and Body of the HTTP request are available through the <code>httpRequestContext</code>, where the Header is used as a Map element, while the Body has a fixed string &ldquo;body&rdquo; as the Key value and a Byte array as the Value.
-:::</p>
-<h3 id="advanced-complex-scenario-example">Advanced: Complex Scenario Example</h3>
-<p>As you can see in the simple use case above, we do publish Dubbo Service as an HTTP service via Apache APISIX, but there are obvious limitations in its use. For example, the parameters and return values of the interface must be <code>Map&lt;String, Object&gt;</code>.</p>
-<p>So, how do you expose the HTTP service through Apache APISIX if there is an interface in your project that is already defined, but does not meet the above restrictions?</p>
-<h4 id="operation-steps-1">Operation steps</h4>
-<p>For the above scenario, we can use the HTTP Request Body to describe the Service and Method to be invoked and the corresponding parameters, and then use the reflection mechanism of Java to realize the invocation of the target method. Finally, the return value is serialized to JSON and written to the HTTP Response Body.</p>
-<p>This will further enhance the &ldquo;HTTP to Dubbo&rdquo; capability of Apache APISIX and apply it to all existing Dubbo services. For details, see the following.</p>
-<ol>
-<li>Add a Dubbo Service for existing projects to handle HTTP to Dubbo conversions in a unified way.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DubboInvocationParameter</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String type;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String value;
-</span></span><span style="display:flex;"><span>}
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DubboInvocation</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String service;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String method;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> DubboInvocationParameter<span style="color:#719e07">[]</span> parameters;
-</span></span><span style="display:flex;"><span>}
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">HTTP2DubboService</span> {
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">invoke</span>(Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> context) <span style="color:#268bd2">throws</span> Exception;
-</span></span><span style="display:flex;"><span>}
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@Component</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">HTTP2DubboServiceImpl</span> <span style="color:#268bd2">implements</span> HTTP2DubboService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Autowired</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> ApplicationContext appContext;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">invoke</span>(Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> context) <span style="color:#268bd2">throws</span> Exception {
-</span></span><span style="display:flex;"><span> DubboInvocation invocation <span style="color:#719e07">=</span> JSONObject.parseObject((<span style="color:#dc322f">byte</span><span style="color:#719e07">[]</span>) context.get(<span style="color:#2aa198">&#34;body&#34;</span>), DubboInvocation.class);
-</span></span><span style="display:flex;"><span> Object<span style="color:#719e07">[]</span> args <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> Object<span style="color:#719e07">[</span>invocation.getParameters().size()<span style="color:#719e07">]</span>;
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (<span style="color:#dc322f">int</span> i <span style="color:#719e07">=</span> 0; i <span style="color:#719e07">&lt;</span> args.length; i<span style="color:#719e07">++</span>) {
-</span></span><span style="display:flex;"><span> DubboInvocationParameter parameter <span style="color:#719e07">=</span> invocation.getParameters().get(i);
-</span></span><span style="display:flex;"><span> args<span style="color:#719e07">[</span>i<span style="color:#719e07">]</span> <span style="color:#719e07">=</span> JSONObject.parseObject(parameter.getValue(), Class.forName(parameter.getType()));
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> Object svc <span style="color:#719e07">=</span> appContext.getBean(Class.forName(invocation.getService()));
-</span></span><span style="display:flex;"><span> Object result <span style="color:#719e07">=</span> svc.getClass().getMethod(invocation.getMethod()).invoke(args);
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Object<span style="color:#719e07">&gt;</span> httpResponse <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> HashMap<span style="color:#719e07">&lt;&gt;</span>();
-</span></span><span style="display:flex;"><span> httpResponse.put(<span style="color:#2aa198">&#34;status&#34;</span>, 200);
-</span></span><span style="display:flex;"><span> httpResponse.put(<span style="color:#2aa198">&#34;body&#34;</span>, JSONObject.toJSONString(result));
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> httpResponse;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><ol start="2">
-<li>Initiate the relevant call with the following command request.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>curl http://127.0.0.1:9080/demo -H <span style="color:#2aa198">&#34;Host: example.org&#34;</span> -X POST --data <span style="color:#2aa198">&#39;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">{
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;service&#34;: &#34;org.apache.dubbo.samples.apisix.DemoService&#34;,
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;method&#34;: &#34;createUser&#34;,
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;parameters&#34;: [
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> {
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;type&#34;: &#34;org.apache.dubbo.samples.apisix.User&#34;,
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> &#34;value&#34;: &#34;{&#39;</span>name<span style="color:#2aa198">&#39;: &#39;</span>hello<span style="color:#2aa198">&#39;}&#34;
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> }
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198"> ]
-</span></span></span><span style="display:flex;"><span><span style="color:#2aa198">}&#39;</span>
-</span></span></code></pre></div><h2 id="summary">Summary</h2>
-<p>In this article, we introduced how to use Apache APISIX to implement a proxy for Dubbo Service. By introducing the <code>dubbo-proxy</code> plugin, you can build a simpler and more efficient traffic link for the back-end system of Dubbo framework.</p>
-<p>We hope that the above steps and use cases will provide you with ideas for using it in relevant scenarios. For more information about the <code>dubbo-proxy</code> plugin, please refer to the <a href="https://apisix.apache.org/docs/apisix/plugins/dubbo-proxy/">official documentation</a>.</p></description></item><item><title>Blog: 2.7.14 Release Note</title><link>https://dubbo.apache.org/en/blog/2021/09/20/2.7.14-release-note/</link><pubDate>Mon, 20 Sep 2021 00:00:00 + [...]
-<h2 id="change-lists">Change Lists</h2>
-<ul>
-<li>add Dynamic Configuration Override Support For ServiceDiscovery. (#8389)</li>
-<li>fix mock parameters doesn&rsquo;t work when it contain &lsquo;:&rsquo; or &lsquo;=&rsquo;. (#8379)</li>
-<li>fix the issue of taking the zone parameter value in ZoneAwareClusterInvoker. (#8521)</li>
-<li>add the switch for check class is in serialize white list , default is true. (#8537)</li>
-<li>fix NPE on serialization checking when request timed out. (#8587)</li>
-<li>fix NetUtils.ignoreNetworkInterface can&rsquo;t process network card name contains &lsquo;(&rsquo; symbol. (#8629)</li>
-<li>unify the way of getting local address. (#8679)</li>
-<li>fix retries param didn&rsquo;t work well when it is 0. (#8743)</li>
-<li>close client immediately when destroy unused invoker. (#8756)</li>
-<li>fix destroy IllegalStateException and doOverrideIfNecessary NPE. (#8683)</li>
-<li>show message according to log level when DefaultFuture.closeChannel. (#8778)</li>
-<li>use MapUtils instead of AttachmentsAdapter. (#8772)</li>
-</ul>
-<h2 id="dependency-changes">Dependency Changes</h2>
-<ul>
-<li>netty4: 4.1.51.Final -&gt; 4.1.66.Final</li>
-<li>netty4_ssl: 2.0.39.Final -&gt; 2.0.40.Final</li>
-<li>http_client: 4.5.3 -&gt; 4.5.13</li>
-<li>jetty: 9.4.11.v20180605 -&gt; 9.4.43.v20210629</li>
-<li>apollo_client: 1.1.1 -&gt; 1.8.0</li>
-<li>tomcat_embed: 8.5.31-&gt; 9.0.48</li>
-<li>commons_io: 2.6 -&gt; 2.7</li>
-<li>curator: 5.0.0 -&gt; 5.1.0</li>
-<li>hessian_lite: 3.2.8 -&gt; 3.2.11</li>
-</ul></description></item><item><title>Blog: 3.0.2.1 Release Note</title><link>https://dubbo.apache.org/en/blog/2021/08/23/3.0.2.1-release-note/</link><pubDate>Mon, 23 Aug 2021 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2021/08/23/3.0.2.1-release-note/</guid><description>
-<p>This is a bugfix version of 3.0.2.
-Exactly the same as version 3.0.2, except for the following changes.</p>
-<h2 id="bugfix">Bugfix</h2>
-<ul>
-<li>Fix nacos group inviable in consumer side (#8533)</li>
-<li>Fix NPE on serialization checking when request timed out (#8547)</li>
-<li>Compact with dubbo-all without farbic-io (#8546)</li>
-</ul></description></item><item><title>Blog: 3.0.2 Release Note</title><link>https://dubbo.apache.org/en/blog/2021/08/18/3.0.2-release-note/</link><pubDate>Wed, 18 Aug 2021 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2021/08/18/3.0.2-release-note/</guid><description>
-<h2 id="features">Features</h2>
-<ul>
-<li>improve generic service with @DubboService annotation.</li>
-<li>metadata report config support xml to config protocol and port.</li>
-<li>compatible for curator5.</li>
-<li>p2p invoke support wildcard url match.</li>
-<li>add Dynamic Configuration Override Support For ServiceDiscovery.</li>
-<li>add provider configuration override disable option.</li>
-<li>support native image.</li>
-<li>support disable shutdown hook.</li>
-<li>add Kubernetes Mesh Rule support.</li>
-<li>support SSL at netty transport.</li>
-</ul>
-<h2 id="bugfixs">BugFixs</h2>
-<ul>
-<li>fix re-start override dynamic config.</li>
-<li>fix delete configurators does not take effect.</li>
-<li>fix triple protocol will throw exception when the service is exposed.</li>
-<li>fix ConfigCenterConfig.setAddress will override username problem.</li>
-<li>fix DefaultFuture.closeChannel will shutdown ExecutorService.</li>
-<li>fix TripleClientHandler#writeRequest throwing NPE problem.</li>
-<li>fix NPE when parse migration rule error happen.</li>
-<li>fix Activated Extensions order.</li>
-<li>fix URLAddress#parse method to judge the isPathAddress problem when the address is ipv6.</li>
-<li>fix custom parameter in configuration properties does not work.</li>
-<li>fix Config id Override when both using API and Spring.</li>
-<li>fix service discovery not work on bootstrap &amp; fix address pollution.</li>
-<li>fix nacos registry can&rsquo;t received instance change notify.</li>
-<li>fix could not resolve placeholder &lsquo;${dubbo.application}&rsquo; in xml.</li>
-<li>fix service parameter fetch order.</li>
-<li>fix error of register dubbo bootstrap application listener manually.</li>
-<li>fix mock parameters doesn&rsquo;t work when it contain &lsquo;:&rsquo; or &lsquo;=&rsquo;.</li>
-<li>fix delete mesh rule npe.</li>
-</ul>
-<h2 id="optimization">Optimization</h2>
-<ul>
-<li>add exception catch for RemovalTask, ensure semaphore release.</li>
-<li>check duplicated ReferenceConfig/ServiceConfig by unique service name.</li>
-<li>improve the performance for generating random numbers.</li>
-<li>if user define interface service discovery, not publish service name mapping info.</li>
-<li>use StringBuilder#append(Char) to improve performance.</li>
-<li>gRPC Compile class interface order.</li>
-<li>improve property placeholder resolving of reference bean.</li>
-<li>use CompletableFuture#get(long, TimeUnit) to take place of CompletableFuture#get() in MergeableClusterInvoker.</li>
-<li>service delay export config ignore metadata service.</li>
-<li>improve dubbo config beans and bootstrap initialization.</li>
-<li>improve duplicated config checking and add tests for reference annotation.</li>
-<li>replace with ring for registry notification &amp; suppress property checker.</li>
-<li>improve dynamic configuration initialization.</li>
-<li>lock-free ConfigManager and improve config checking.</li>
-<li>modify metadata equals and instance listener.</li>
-<li>improve async export / refer.</li>
-<li>use TreeSet to ensure ServiceNames order when subscribe.</li>
-<li>make first tenth calls notify not delay RegistryNotifier.</li>
-<li>refactor compiler to generate new format stubs.</li>
-<li>change mesh rule group to config default value.</li>
-<li>compatible with nacos grouping via group.</li>
-<li>remove runtime params in ServiceInfo.</li>
-<li>throw RpcException when NacosException occurred.</li>
-<li>configcenter ban accessLogKey and FileRouterFactory key.</li>
-<li>improve config bean initialization compatible with spring 3.x/4.1.x.</li>
-<li>dubbo bootstrap start re-entry, export/refer new services.</li>
-<li>org.apache.dubbo.* add serialization whitelist.</li>
-<li>ensure generated config id is unique, checking existed config.</li>
-<li>compatible with filed change declaration override for Javaassist.</li>
-<li>refactor Codec check, default deny.</li>
-<li>compatible with adaptive extensions when ApplicationModel is null.</li>
-</ul>
-<h2 id="code-improvement">Code Improvement</h2>
-<p>Thanks for these contribution to improve stability of Apache Dubbo.</p>
-<p><a href="https://github.com/apache/dubbo/pull/8111">#8111</a>,
-<a href="https://github.com/apache/dubbo/pull/8147">#8147</a>,
-<a href="https://github.com/apache/dubbo/pull/8164">#8164</a>,
-<a href="https://github.com/apache/dubbo/pull/8177">#8177</a>,
-<a href="https://github.com/apache/dubbo/pull/8180">#8180</a>,
-<a href="https://github.com/apache/dubbo/pull/8161">#8161</a>,
-<a href="https://github.com/apache/dubbo/pull/8183">#8183</a>,
-<a href="https://github.com/apache/dubbo/pull/8205">#8205</a>,
-<a href="https://github.com/apache/dubbo/pull/8173">#8173</a>,
-<a href="https://github.com/apache/dubbo/pull/8219">#8219</a>,
-<a href="https://github.com/apache/dubbo/pull/8228">#8228</a>,
-<a href="https://github.com/apache/dubbo/pull/8232">#8232</a>,
-<a href="https://github.com/apache/dubbo/pull/8230">#8230</a>,
-<a href="https://github.com/apache/dubbo/pull/8236">#8236</a>,
-<a href="https://github.com/apache/dubbo/pull/8260">#8260</a>,
-<a href="https://github.com/apache/dubbo/pull/8262">#8262</a>,
-<a href="https://github.com/apache/dubbo/pull/8252">#8252</a>,
-<a href="https://github.com/apache/dubbo/pull/8246">#8246</a>,
-<a href="https://github.com/apache/dubbo/pull/8208">#8208</a>,
-<a href="https://github.com/apache/dubbo/pull/8278">#8278</a>,
-<a href="https://github.com/apache/dubbo/pull/8267">#8267</a>,
-<a href="https://github.com/apache/dubbo/pull/8277">#8277</a>,
-<a href="https://github.com/apache/dubbo/pull/8291">#8291</a>,
-<a href="https://github.com/apache/dubbo/pull/8296">#8296</a>,
-<a href="https://github.com/apache/dubbo/pull/8302">#8302</a>,
-<a href="https://github.com/apache/dubbo/pull/8175">#8175</a>,
-<a href="https://github.com/apache/dubbo/pull/8319">#8319</a>,
-<a href="https://github.com/apache/dubbo/pull/8309">#8309</a>,
-<a href="https://github.com/apache/dubbo/pull/8336">#8336</a>,
-<a href="https://github.com/apache/dubbo/pull/8332">#8332</a>,
-<a href="https://github.com/apache/dubbo/pull/8328">#8328</a>,
-<a href="https://github.com/apache/dubbo/pull/8355">#8355</a>,
-<a href="https://github.com/apache/dubbo/pull/8396">#8396</a>,
-<a href="https://github.com/apache/dubbo/pull/8401">#8401</a>,
-<a href="https://github.com/apache/dubbo/pull/8395">#8395</a>,
-<a href="https://github.com/apache/dubbo/pull/8415">#8415</a>,
-<a href="https://github.com/apache/dubbo/pull/8406">#8406</a>,
-<a href="https://github.com/apache/dubbo/pull/8411">#8411</a>,
-<a href="https://github.com/apache/dubbo/pull/8418">#8418</a>,
-<a href="https://github.com/apache/dubbo/pull/8439">#8439</a>,
-<a href="https://github.com/apache/dubbo/pull/8404">#8404</a>,
-<a href="https://github.com/apache/dubbo/pull/8443">#8443</a></p>
-<h2 id="dependency-changes">Dependency Changes</h2>
-<ul>
-<li>remove dependency: org.eclipse.collections:eclipse-collections</li>
-<li>remove dependency: com.google.guava:guava</li>
-<li>jetty: 9.4.11.v20180605 -&gt; 9.4.43.v20210629</li>
-<li>apollo client: 1.1.1 -&gt; 1.8.0</li>
-<li>snakeyaml: 1.20 -&gt; 1.29</li>
-<li>tomcat embed: 8.5.31 -&gt; 8.5.69</li>
-<li>nacos client: 2.0.0 -&gt; 2.0.2</li>
-<li>swagger: 1.5.19 -&gt; 1.5.24</li>
-<li>hessian_lite: 3.2.8 -&gt; 3.2.11</li>
-</ul></description></item><item><title>Blog: 3.0.1 Release Note</title><link>https://dubbo.apache.org/en/blog/2021/07/02/3.0.1-release-note/</link><pubDate>Fri, 02 Jul 2021 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2021/07/02/3.0.1-release-note/</guid><description>
-<h2 id="optimization">Optimization</h2>
-<ul>
-<li>Refactor NameMapping to Metadata, Support application field in MigrationRule</li>
-<li>Add cache for scan result</li>
-<li>Improve config overrides of method and argument</li>
-<li>Support servlet takeover mode</li>
-<li>Add ServiceListener for ServiceConfig</li>
-<li>Improve method callback</li>
-</ul>
-<h2 id="bugfixs">BugFixs</h2>
-<ul>
-<li>Add force check</li>
-<li>Fix multi-registry will destroy unavailable clusters</li>
-<li>Remove needless toString convert &amp; Enable checking by default</li>
-<li>Ignore invalid MetadataReportConfig</li>
-<li>Fix NPE when consumer start</li>
-<li>Fix some compatiable issues</li>
-<li>Optimize Service related issues</li>
-<li>Opt Migration &amp; Fix reSubscribe for ServiceDiscovery</li>
-<li>Fix NPE in MetadataInfo</li>
-<li>Fix customizer not changed</li>
-</ul>
-<h2 id="code-improvement">Code Improvement</h2>
-<p>Thanks for these contribution to improve stability of Apache Dubbo.</p>
-<p><a href="https://github.com/apache/dubbo/pull/8043">#8043</a>,
-<a href="https://github.com/apache/dubbo/pull/8044">#8044</a>,
-<a href="https://github.com/apache/dubbo/pull/8048">#8048</a>,
-<a href="https://github.com/apache/dubbo/pull/8071">#8071</a>,
-<a href="https://github.com/apache/dubbo/pull/8119">#8119</a>,
-<a href="https://github.com/apache/dubbo/pull/8132">#8132</a></p></description></item><item><title>Blog: Past Releases</title><link>https://dubbo.apache.org/en/blog/2020/05/18/past-releases/</link><pubDate>Mon, 18 May 2020 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2020/05/18/past-releases/</guid><description>
-<div class="pageinfo pageinfo-primary">
-<p>This document is no longer maintained. You are currently viewing a snapshot version. If you want to see the latest version of the documentation, see <a href="https://dubbo.apache.org/en/release/">Latest Version</a>.</p>
-</div>
-<h2 id="verification">Verification</h2>
-<p>you can follow these <a href="https://www.apache.org/info/verification">procedures</a> and the <a href="https://downloads.apache.org/dubbo/KEYS">KEYS</a> file to verify the download files</p>
-<h2 id="apache-dubbo">Apache Dubbo</h2>
-<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo</a> <br>
-Release Notes: <a href="https://github.com/apache/dubbo/releases">https://github.com/apache/dubbo/releases</a></p>
-</blockquote>
-<h3 id="320-beta3-2022-12-22">3.2.0-beta.3 (2022-12-22)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.2.0-beta.3/apache-dubbo-3.2.0-beta.3-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="313-2022-12-22">3.1.3 (2022-12-22)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.1.4/apache-dubbo-3.1.4-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2719-2022-12-13">2.7.19 (2022-12-13)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.7.19/apache-dubbo-2.7.19-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="320-beta2-2022-11-28">3.2.0-beta.2 (2022-11-28)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.2/apache-dubbo-3.2.0-beta.2-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="313-2022-11-28">3.1.3 (2022-11-28)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.3/apache-dubbo-3.1.3-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="320-beta1-2022-11-08">3.2.0-beta.1 (2022-11-08)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.2.0-beta.1/apache-dubbo-3.2.0-beta.1-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="312-2022-11-08">3.1.2 (2022-11-08)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.2/apache-dubbo-3.1.2-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="311-2022-09-29">3.1.1 (2022-09-29)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.1/apache-dubbo-3.1.1-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="3012-2022-09-29">3.0.12 (2022-09-29)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/3.0.12/apache-dubbo-3.0.12-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2718-2022-09-29">2.7.18 (2022-09-29)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.18/apache-dubbo-2.7.18-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2717-2022-08-23">2.7.17 (2022-08-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.17/apache-dubbo-2.7.17-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="3011-2022-08-23">3.0.11 (2022-08-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.11/apache-dubbo-3.0.11-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="310-2022-08-22">3.1.0 (2022-08-22)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.1.0/apache-dubbo-3.1.0-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="3010-2022-07-21">3.0.10 (2022-07-21)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.10/apache-dubbo-3.0.10-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2716-2022-07-06">2.7.16 (2022-07-06)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.16/apache-dubbo-2.7.16-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="309-2022-06-23">3.0.9 (2022-06-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.9/apache-dubbo-3.0.9-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="308-2022-05-11">3.0.8 (2022-05-11)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.8/apache-dubbo-3.0.8-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="307-2022-04-01">3.0.7 (2022-04-01)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.7/apache-dubbo-3.0.7-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="306-2022-02-28">3.0.6 (2022-02-28)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.6/apache-dubbo-3.0.6-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="305-2021-12-30">3.0.5 (2021-12-30)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.5/apache-dubbo-3.0.5-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2715-2021-12-29">2.7.15 (2021-12-29)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.15/apache-dubbo-2.7.15-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2612-2021-12-29">2.6.12 (2021-12-29)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.12/apache-dubbo-2.6.12-src.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.12/apache-dubbo-v-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.12/apache-dubbo-2.6.12-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="304-2021-10-24">3.0.4 (2021-10-24)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.4/apache-dubbo-3.0.4-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="303-2021-09-27">3.0.3 (2021-09-27)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.3/apache-dubbo-3.0.3-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2714-2021-09-20">2.7.14 (2021-09-20)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.14/apache-dubbo-2.7.14-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2611-2021-09-18">2.6.11 (2021-09-18)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.cgi?path=dubbo/2.6.11/apache-dubbo-2.6.11-source-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="3021-2021-08-23">3.0.2.1 (2021-08-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.2.1/apache-dubbo-3.0.2.1-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="302-2021-08-16">3.0.2 (2021-08-16)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.2/apache-dubbo-3.0.2-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2713-2021-08-05">2.7.13 (2021-08-05)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.13/apache-dubbo-2.7.13-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="301-2021-07-02">3.0.1 (2021-07-02)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.1/apache-dubbo-3.0.1-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="300-2021-06-16">3.0.0 (2021-06-16)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/3.0.0/apache-dubbo-3.0.0-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2712-2021-06-11">2.7.12 (2021-06-11)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.12/apache-dubbo-2.7.12-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2711-2021-05-12">2.7.11 (2021-05-12)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.11/apache-dubbo-2.7.11-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2710-2021-04-08">2.7.10 (2021-04-08)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.10/apache-dubbo-2.7.10-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="279-2020-02-23">2.7.9 (2020-02-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.9/apache-dubbo-2.7.9-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="278-2020-07-28">2.7.8 (2020-07-28)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.8/apache-dubbo-2.7.8-source-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="277-2020-05-18">2.7.7 (2020-05-18)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.7/apache-dubbo-2.7.7-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="275-2019-12-29">2.7.5 (2019-12-29)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.5/apache-dubbo-2.7.5-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="2741-2019-10-27">2.7.4.1 (2019-10-27)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.4.1/apache-dubbo-2.7.4.1-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="274-2019-10-19">2.7.4 (2019-10-19)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.4/apache-dubbo-2.7.4-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="273-2019-07-19">2.7.3 (2019-07-19)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.3/apache-dubbo-2.7.3-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="272-2019-06-06">2.7.2 (2019-06-06)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/dubbo/2.7.2/apache-dubbo-2.7.2-src.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="271-2019-03-26">2.7.1 (2019-03-26)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="270-2019-01-29">2.7.0 (2019-01-29)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="267-2019-07-15">2.6.7 (2019-07-15)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/dubbo/2.6.7/apache-dubbo-2.6.7-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="266-2019-03-07">2.6.6 (2019-03-07)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="265-2018-11-23">2.6.5 (2018-11-23)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="264-2018-10-08">2.6.4 (2018-10-08)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="263-2018-09-11">2.6.3 (2018-09-11)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="262-2018-06-07">2.6.2 (2018-06-07)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h2 id="dubbo-spring-boot-starter">Dubbo Spring Boot Starter</h2>
-<blockquote>
-<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-spring-boot-project">https://github.com/apache/incubator-dubbo-spring-boot-project</a> <br>
-发布说明:https://github.com/apache/incubator-dubbo-spring-boot-project/releases</p>
-</blockquote>
-<h3 id="271-2019-04-09">2.7.1 (2019-04-09)</h3>
-<ul>
-<li><a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip">source</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dyn/closer.lua/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="270-2019-02-14">2.7.0 (2019-02-14)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="021-2019-01-27">0.2.1 (2019-01-27)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h3 id="012-2019-01-27">0.1.2 (2019-01-27)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.sha512">sha512</a></li>
-</ul>
-<h2 id="dubbo-admin">Dubbo Admin</h2>
-<blockquote>
-<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-admin">https://github.com/apache/incubator-dubbo-admin</a> <br>
-Release Notes: <a href="https://github.com/apache/incubator-dubbo-admin/releases">https://github.com/apache/incubator-dubbo-admin/releases</a></p>
-</blockquote>
-<h3 id="01-2019-02-15">0.1 (2019-02-15)</h3>
-<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.sha512">sha512</a></li>
-</ul></description></item><item><title>Blog: Dubbo Admin service test</title><link>https://dubbo.apache.org/en/blog/2019/08/26/service-test/</link><pubDate>Mon, 26 Aug 2019 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2019/08/26/service-test/</guid><description>
-<p>Based on the metadata of Dubbo2.7, Dubbo Admin implements the service test function, which can call the real service provider on the console through generalized call.</p>
-<h2 id="usage">Usage</h2>
-<ul>
-<li>
-<p>Deploy the provider: You can download the demo <a href="https://github.com/nzomkxia/dubbo-demo">here</a>. This project is based on Spring Boot, which is convenient to start in the IDE or command line. For service testing, you only need to start <code>dubbo-basic-provider</code>.</p>
-</li>
-<li>
-<p>Service-seeking: After completing the server deployment, you can query the corresponding service on the Dubbo Admin&rsquo;s <code>service test</code> page:
-<img src="https://dubbo.apache.org/imgs/blog/admin/testSearch.jpg" alt="testSearch"><br>
-the information here is similar to the metadata, including the method name, parameter type and return value. Click the label on the right to enter the <code>service test</code> page.</p>
-</li>
-<li>
-<p>Service test:
-<img src="https://dubbo.apache.org/imgs/blog/admin/testSuccess.jpg" alt="testSuccess"><br>
-<code>service test</code> page contains two json editor, the parameter&rsquo;s informations are all stored in a json format, where you need to fill in the corresponding parameter values (in this case, the number type is String ), after filling, click <code>execute</code> to initiate the call to the server, and the result of the call is displayed in the editor on the right. If the call fails, the detailed cause of the failure is displayed. Let&rsquo;s look at the examp [...]
-<img src="https://dubbo.apache.org/imgs/blog/admin/testFail.jpg" alt="testFail"></p>
-<p>In this case, the Dubbo service provider&rsquo;s process is shut down before the service test is executed, you can see that the returned result is an <code>No provider availble</code> exception. As with normal calls, business and framework exceptions are returned in the results, for easy business troubleshooting.</p>
-</li>
-<li>
-<p>Complex type parameters <br>
-Consider the following methods and types in <code>UserService</code>:</p>
-</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#586e75">//org.apache.dubbo.demo.api.UserService</span>
-</span></span><span style="display:flex;"><span>Result <span style="color:#268bd2">getUser</span>(String name, UserInfoDO userInfoDO);
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">UserInfoDO</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> <span style="color:#dc322f">int</span> id;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> LocationDO locationDO;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> DepartmentDO departmentDO;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> String <span style="color:#268bd2">toString</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;UserInfoDO{&#34;</span> <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;id=&#34;</span> <span style="color:#719e07">+</span> id <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;, locationDO=&#34;</span> <span style="color:#719e07">+</span> locationDO.toString() <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;, departmentDO=&#34;</span> <span style="color:#719e07">+</span> departmentDO.toString() <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#39;}&#39;</span>;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DepartmentDO</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String departName;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> LocationDO departLocation;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> String <span style="color:#268bd2">toString</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;DepartmentDO{&#34;</span> <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;departName=&#39;&#34;</span> <span style="color:#719e07">+</span> departName <span style="color:#719e07">+</span> <span style="color:#2aa198">&#39;\&#39;&#39;</span> <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;, departLocation=&#34;</span> <span style="color:#719e07">+</span> departLocation.toString() <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#39;}&#39;</span>;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">LocationDO</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String address;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> <span style="color:#dc322f">int</span> postNum;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> String <span style="color:#268bd2">toString</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;LocationDO{&#34;</span> <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;address=&#39;&#34;</span> <span style="color:#719e07">+</span> address <span style="color:#719e07">+</span> <span style="color:#2aa198">&#39;\&#39;&#39;</span> <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;, postNum=&#34;</span> <span style="color:#719e07">+</span> postNum <span style="color:#719e07">+</span>
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#39;}&#39;</span>;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The parameters are complex complex type. When the service is tested, the value of each field will be filled out layer by layer, As shown below:<br>
-<img src="https://dubbo.apache.org/imgs/blog/admin/complex.jpg" alt="complex">
-It can also make successful call and the result is returned.</p>
-<h2 id="principledata-source">Principle:Data source</h2>
-<p>In the service test, the most important thing is the complete method signature, and the type information of the parameters, with which the values of each parameter can be filled step by step to assemble the complete service consumer. In Dubbo 2.7, the metadata center has been added. The method signature and parameter type information of Dubbo Admin is from here:<br>
-<img src="https://dubbo.apache.org/imgs/blog/admin/metadata.png" alt="medatada">
-As shown, the server will register the metadata information of the service to the metadata center when it runs,the format is as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;methods&#34;</span>: [
-</span></span><span style="display:flex;"><span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;name&#34;</span>: <span style="color:#2aa198">&#34;sayHello&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;parameterTypes&#34;</span>: [
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;org.apache.dubbo.demo.model.User&#34;</span>
-</span></span><span style="display:flex;"><span> ],
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;returnType&#34;</span>: <span style="color:#2aa198">&#34;org.apache.dubbo.demo.model.Result&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span> ],
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;types&#34;</span>: [
-</span></span><span style="display:flex;"><span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;char&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;long&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;org.apache.dubbo.demo.model.Result&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;msg&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;java.lang.String&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;value&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;char[]&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;hash&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;int&#34;</span>
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;userName&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;java.lang.String&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;value&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;char[]&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;hash&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;int&#34;</span>
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;org.apache.dubbo.demo.model.User&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;id&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;java.lang.Long&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;value&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;long&#34;</span>
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;username&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;java.lang.Sring&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;properties&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;value&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;char[]&#34;</span>
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;hash&#34;</span>: {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;type&#34;</span>: <span style="color:#2aa198">&#34;int&#34;</span>
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> },
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span> ]
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Related to service testing is the method and type information contained in <code>methods</code> and <code>types</code>. Based on this information, Dubbo Admin renders the parameters into the Json Editor of the service test page, where the user enters the values of each parameter and each member variable.</p>
-<h2 id="principle-generalized-calls">Principle: Generalized calls</h2>
-<p>With the parameter type, the next question is how to call to the server. In the traditional Dubbo RPC call, the client needs to rely on the server&rsquo;s API jar package ( refer to the <a href="https://github.com/nzomkxia/dubbo-demo/tree/master/dubbo-basic-consumer">dubbo-basic-consumer</a> in the previous demo ), which is unlikely for Dubbo Admin, because the up and down of services are dynamic, Dubbo Admin can not dynamically increase the jar package dependencies, so y [...]
-<h2 id="summary-and-outlook">Summary and outlook</h2>
-<p>This article briefly introduces the usage and principle of service testing, and will further enhance this function in the future, such as processing the parameter types of abstract classes, importing parameter values from json files, supporting the saving of parameter values, etc., to facilitate regression testing of the service interface.</p></description></item><item><title>Blog: Tracing Dubbo service with Apache Skywalking</title><link>https://dubbo.apache.org/en/blog/2019/08 [...]
-<h2 id="introduction-to-apache-skywalking">Introduction to Apache Skywalking</h2>
-<p><a href="https://github.com/apache/skywalking">Apache Skywalking</a> is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. <a href="https://github.com/apache/skywalking">Apache skywalking (incubator)</a> collects and analyzes the trace data and generates the relationship between the application and the service metric, Apache skywalking supports multiple languages agent, for example < [...]
-<p>Currently, Skywalking has supported analysis the operation of distributed systems from 6 visual dimensions. The overview view is a global view of your applications and components, including the number of components and applications, application alarm fluctuations, slow service lists, and application throughput; The topology shows the topological relationship of the whole application; The application view represents the upstream and downstream relationship of the application from si [...]
-<h2 id="dubbo-and-apache-skywalking">Dubbo and Apache Skywalking</h2>
-<h3 id="build-the-dubbo-demo--project">Build the Dubbo demo project</h3>
-<p>The Dubbo demo has been uploaded to the <a href="https://github.com/SkywalkingTest/dubbo-trace-example">GitHub repository</a>.</p>
-<h4 id="api-project">API project</h4>
-<p>Service interface definition:
-package org.apache.skywalking.demo.interfaces;</p>
-<p>public interface HelloService {
-String sayHello(String name);
-}</p>
-<h4 id="service-provider-project">Service provider project</h4>
-<p>package org.apache.skywalking.demo.provider;</p>
-<p>@Service(version = &ldquo;${demo.service.version}&rdquo;,
-application = &ldquo;${dubbo.application.id}&rdquo;,
-protocol = &ldquo;${dubbo.protocol.id}&rdquo;,
-registry = &ldquo;${dubbo.registry.id}&rdquo;, timeout = 60000)
-public class HelloServiceImpl implements HelloService {</p>
-<pre><code>public String sayHello(String name) {
-LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(1));
-return &quot;Hello, &quot; + name;
-}
-</code></pre>
-<p>}</p>
-<h4 id="service-consumer-project">Service consumer project</h4>
-<p>package org.apache.skywalking.demo.consumer;</p>
-<p>@RestController
-public class ConsumerController {</p>
-<pre><code>private static int COUNT = 0;
-@Reference(version = &quot;${demo.service.version}&quot;,
-application = &quot;${dubbo.application.id}&quot;,
-url = &quot;dubbo://localhost:20880&quot;, timeout = 60000)
-private HelloService helloService;
-@GetMapping(&quot;/sayHello/{name}&quot;)
-public String sayHello(@PathVariable(name = &quot;name&quot;) String name) {
-if ((COUNT++) % 3 == 0){
-throw new RuntimeException();
-}
-LockSupport.parkNanos(TimeUnit.SECONDS.toNanos(2));
-return helloService.sayHello(name);
-}
-</code></pre>
-<p>}</p>
-<h3 id="deploy-apache-skywalking">Deploy Apache Skywalking</h3>
-<p><a href="https://github.com/apache/skywalking">Apache skywalking</a> offers two deployment modes: single-node mode and cluster mode,Here is the single-node mode deployment step, and more about how to deploy skywalking with cluster mode, please reference <a href="https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-setup/">document</a>.</p>
-<h4 id="third-party-components">Third-party components</h4>
-<ol>
-<li>JDK 8+</li>
-<li>Elasticsearch 5.x</li>
-</ol>
-<h4 id="deployment-step">Deployment step</h4>
-<ol>
-<li>Download <a href="http://skywalking.apache.org/downloads/">Apache Skywalking Collector</a></li>
-<li>Deploy Elasticsearch service
-<ul>
-<li>Set <code>cluster.name</code> to <code>CollectorDBCluster</code></li>
-<li>Set <code>network.host</code> to <code>0.0.0.0</code></li>
-<li>Start elasticsearch service</li>
-</ul>
-</li>
-<li>Unzip and start the Skywalking Collector. Run the &rsquo; bin/startup.sh &rsquo; command to start skywalking Collector</li>
-</ol>
-<h4 id="deploy-the-demo">Deploy the demo</h4>
-<p>Before you deploy the demo service, please run the following command:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>./mvnw clean package
-</span></span></code></pre></div><h4 id="deploy-the-provider-service">Deploy the provider service</h4>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-provider -Dskywalking.collector.servers=localhost:10800 dubbo-provider/target/dubbo-provider.jar
-</span></span></code></pre></div><h4 id="deploy-the-consumer-service">Deploy the consumer service</h4>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
-</span></span></code></pre></div><h4 id="visit-demo-service">visit demo service</h4>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>curl http://localhost:8080/sayHello/test
-</span></span></code></pre></div><h2 id="skywalking-scren-snapshot">Skywalking scren snapshot</h2>
-<h3 id="dashboard">Dashboard</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/skywalking-dashboard.png" alt="/admin-guide/images/skywalking-dashboard.png"></p>
-<h3 id="topology">Topology</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/skywalking-topology.png" alt="/admin-guide/images/skywalking-topology.png"></p>
-<h3 id="application-view">Application view</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/skywalking-application.png" alt="/admin-guide/images/skywalking-application.png"></p>
-<p>JVM Information
-<img src="https://dubbo.apache.org/imgs/blog/skywalking-application_instance.png" alt="/admin-guide/images/skywalking-application_instance.png"></p>
-<h3 id="service-view">Service view</h3>
-<p>Consumer side
-<img src="https://dubbo.apache.org/imgs/blog/skywalking-service-consumer.png" alt="/admin-guide/images/skywalking-service-consumer.png"></p>
-<p>provider side
-<img src="https://dubbo.apache.org/imgs/blog/skywalking-service-provider.png" alt="/admin-guide/images/skywalking-service-provider.png"></p>
-<h3 id="trace">Trace</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/skywalking-trace.png" alt="/admin-guide/images/skywalking-trace.png"></p>
-<p>Span info
-<img src="https://dubbo.apache.org/imgs/blog/skywalking-span-Info.png" alt="/admin-guide/images/skywalking-span-Info.png"></p>
-<h3 id="alarm-view">Alarm view</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/skywalking-alarm.png" alt="/admin-guide/images/skywalking-alarm.png"></p></description></item><item><title>Blog: Dubbo extensible mechanism source code analysis - part 2</title><link>https://dubbo.apache.org/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysis-part-2/</link><pubDate>Thu, 02 May 2019 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2019/05/02/dubbo-extensible-mechanism-source-code-analysi [...]
-<p>In the <a href="https://dubbo.apache.org/en/blog/2019/04/25/dubbo-extensible-mechanism-source-code-analysis-part-1/" title="">actual implementation of the Dubbo extensibility mechanism</a>, we learned some concepts of the Dubbo extension mechanism, explored the implementation of LoadBalance in Dubbo, and implemented a LoadBalance on our own. Do you think Dubbo&rsquo;s extension mechanism is great? Next, we will go deep into the source code of Dubbo and see what it is.</p>
-<h2 id="extensionloader">ExtensionLoader</h2>
-<p><code>ExtensionLoader</code> is the core class, which is responsible for the loading and lifecycle management of extension points. Let&rsquo;s start with this class. There are many methods of Extension, and the common methods include:</p>
-<ul>
-<li><code>public static &lt;T&gt; ExtensionLoader&lt;T&gt; getExtensionLoader(Class&lt;T&gt; type)</code></li>
-<li><code>public T getExtension(String name)</code></li>
-<li><code>public T getAdaptiveExtension()</code></li>
-</ul>
-<p>The common usages are:</p>
-<ul>
-<li><code>LoadBalance lb = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(loadbalanceName)</code></li>
-<li><code>RouterFactory routerFactory = ExtensionLoader.getExtensionLoader(RouterFactory.class).getAdaptiveExtension()</code></li>
-</ul>
-<p>Notice: In the source code shown below, I&rsquo;ll remove extraneous code (such as logging, exception catching, and so on) to make it easy to read and understand.</p>
-<ol>
-<li>getExtensionLoader
-This is a static factory method that enters an extensible interface and returns an ExtensionLoader entity class for this interface. With this entity class, you can get not only a specific extension based on name, but also an adaptive extension.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">static</span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> ExtensionLoader<span style="color:#719e07">&lt;</span>T<spa [...]
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// An extension point must be an interface</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (<span style="color:#719e07">!</span>type.isInterface()) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;Extension type(&#34;</span> <span style="color:#719e07">+</span> type <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34;) is not interface!&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// @SPI annotations must be provided</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (<span style="color:#719e07">!</span>withExtensionAnnotation(type)) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;Extension type without @SPI Annotation!&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Get the corresponding ExtensionLoader from the cache according to the interface</span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Each extension will only be loaded once</span>
-</span></span><span style="display:flex;"><span> ExtensionLoader<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> loader <span style="color:#719e07">=</span> (ExtensionLoader<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span>) EXTENSION_LOADERS.get(type);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (loader <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Initialize extension</span>
-</span></span><span style="display:flex;"><span> EXTENSION_LOADERS.putIfAbsent(type, <span style="color:#719e07">new</span> ExtensionLoader<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span>(type));
-</span></span><span style="display:flex;"><span> loader <span style="color:#719e07">=</span> (ExtensionLoader<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span>) EXTENSION_LOADERS.get(type);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> loader;
-</span></span><span style="display:flex;"><span>}
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">private</span> <span style="color:#268bd2">ExtensionLoader</span>(Class<span style="color:#719e07">&lt;?&gt;</span> type) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">this</span>.type <span style="color:#719e07">=</span> type;
-</span></span><span style="display:flex;"><span> objectFactory <span style="color:#719e07">=</span> (type <span style="color:#719e07">==</span> ExtensionFactory.class <span style="color:#719e07">?</span> <span style="color:#cb4b16">null</span> : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><ol start="2">
-<li>getExtension</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> T <span style="color:#268bd2">getExtension</span>(String name) {
-</span></span><span style="display:flex;"><span> Holder<span style="color:#719e07">&lt;</span>Object<span style="color:#719e07">&gt;</span> holder <span style="color:#719e07">=</span> cachedInstances.get(name);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (holder <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> cachedInstances.putIfAbsent(name, <span style="color:#719e07">new</span> Holder<span style="color:#719e07">&lt;</span>Object<span style="color:#719e07">&gt;</span>());
-</span></span><span style="display:flex;"><span> holder <span style="color:#719e07">=</span> cachedInstances.get(name);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> Object instance <span style="color:#719e07">=</span> holder.get();
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Get it from the cache. If it does not exist, create</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (instance <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">synchronized</span> (holder) {
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> holder.get();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (instance <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> createExtension(name);
-</span></span><span style="display:flex;"><span> holder.set(instance);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> (T) instance;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Some judgments and caching have been made in the getExtension method, and the main logic is in the createExtension method. Let&rsquo;s move on to the createExtension method.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> T <span style="color:#268bd2">createExtension</span>(String name) {
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Get the extension class according to the name of extension point. For example, for LoadBalance, get the RandomLoadBalance class according to random</span>
-</span></span><span style="display:flex;"><span> Class<span style="color:#719e07">&lt;?&gt;</span> clazz <span style="color:#719e07">=</span> getExtensionClasses().get(name);
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> T instance <span style="color:#719e07">=</span> (T) EXTENSION_INSTANCES.get(clazz);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (instance <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Use reflection to call newInstance to create an example of an extension class</span>
-</span></span><span style="display:flex;"><span> EXTENSION_INSTANCES.putIfAbsent(clazz, (T) clazz.newInstance());
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> (T) EXTENSION_INSTANCES.get(clazz);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// Make dependency injection for the extended class samples</span>
-</span></span><span style="display:flex;"><span> injectExtension(instance);
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// If there is a wrapper, add the wrapper</span>
-</span></span><span style="display:flex;"><span> Set<span style="color:#719e07">&lt;</span>Class<span style="color:#719e07">&lt;?&gt;&gt;</span> wrapperClasses <span style="color:#719e07">=</span> cachedWrapperClasses;
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (wrapperClasses <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span> <span style="color:#719e07">&amp;&amp;</span> <span style="color:#719e07">!</span>wrapperClasses.isEmpty()) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (Class<span style="color:#719e07">&lt;?&gt;</span> wrapperClass : wrapperClasses) {
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> injectExtension((T) wrapperClass.getConstructor(type).newInstance(instance));
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> instance;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The createExtension method has done the following:</p>
-<ol>
-<li>First, get the corresponding extension class according to name. Read the extension point configuration file from the <code>META-INF</code> folder under ClassPath.</li>
-<li>Use reflection to create an instance of an extended class.</li>
-<li>make dependency injection for the attributes of the extended class instance. That is, IoC.</li>
-<li>If there is a wrapper, add the wrapper. That is, AOP.</li>
-</ol>
-<p>Let&rsquo;s focus on these four processes.</p>
-<ol>
-<li>Get the corresponding extension class according to name. Let’s read the code first:</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> Map<span style="color:#719e07">&lt;</span>String, Class<span style="color:#719e07">&lt;?&gt;&gt;</span> getExtensionClasses() {
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Class<span style="color:#719e07">&lt;?&gt;&gt;</span> classes <span style="color:#719e07">=</span> cachedClasses.get();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (classes <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">synchronized</span> (cachedClasses) {
-</span></span><span style="display:flex;"><span> classes <span style="color:#719e07">=</span> cachedClasses.get();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (classes <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> classes <span style="color:#719e07">=</span> loadExtensionClasses();
-</span></span><span style="display:flex;"><span> cachedClasses.set(classes);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> classes;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">// synchronized in getExtensionClasses</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">private</span> Map<span style="color:#719e07">&lt;</span>String, Class<span style="color:#719e07">&lt;?&gt;&gt;</span> loadExtensionClasses() {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">final</span> SPI defaultAnnotation <span style="color:#719e07">=</span> type.getAnnotation(SPI.class);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (defaultAnnotation <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> String value <span style="color:#719e07">=</span> defaultAnnotation.value();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (value <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span> <span style="color:#719e07">&amp;&amp;</span> (value <span style="color:#719e07">=</span> value.trim()).length() <span style="color:#719e07">&gt;</span> 0) {
-</span></span><span style="display:flex;"><span> String<span style="color:#719e07">[]</span> names <span style="color:#719e07">=</span> NAME_SEPARATOR.split(value);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (names.length <span style="color:#719e07">&gt;</span> 1) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalStateException(<span style="color:#2aa198">&#34;more than 1 default extension name on extension &#34;</span> <span style="color:#719e07">+</span> type.getName());
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (names.length <span style="color:#719e07">==</span> 1) cachedDefaultName <span style="color:#719e07">=</span> names<span style="color:#719e07">[</span>0<span style="color:#719e07">]</span>;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> Map<span style="color:#719e07">&lt;</span>String, Class<span style="color:#719e07">&lt;?&gt;&gt;</span> extensionClasses <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> HashMap<span style="color:#719e07">&lt;</span>String, Class<span style="color:#719e07">&lt;?&gt;&gt;</span>();
-</span></span><span style="display:flex;"><span> loadFile(extensionClasses, DUBBO_INTERNAL_DIRECTORY);
-</span></span><span style="display:flex;"><span> loadFile(extensionClasses, DUBBO_DIRECTORY);
-</span></span><span style="display:flex;"><span> loadFile(extensionClasses, SERVICES_DIRECTORY);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> extensionClasses;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>This process is very simple. Get the extension class from the cache first, and if it does not exist, load it from the configuration file. The path of the configuration file has been mentioned before:</p>
-<ul>
-<li><code>META-INF/dubbo/internal</code></li>
-<li><code>META-INF/dubbo</code></li>
-<li><code>META-INF/services</code></li>
-</ul>
-<ol start="2">
-<li>Use reflection to create an extended instance. This process is very simple. We can do this using <code>clazz.newInstance()</code>. The attributes of the extended instance created are all null values.</li>
-<li>Extended instance is automatic assembly. In the actual scenario, there have dependencies between classes. Dependencies are also referenced in the extended instance, such as a simple Java class, an extension of another Dubbo, or a Spring Bean. The situation of dependencies is complex, and Dubbo&rsquo;s processing is relatively complicated. We will have a special chapter to explain it later. Now, we just need to know that Dubbo can correctly inject common dependencies in extensi [...]
-<li>Extended instance is auto-wrapping. Auto-wrapping is about implementing Spring like AOP functionality. Dubbo uses it to implement some common functions internally, such as logging, monitoring, and so on. The contents of the extended instance auto-wrapper will also be explained separately later.</li>
-</ol>
-<p>After the above 4 steps, Dubbo creates and initializes an extended instance. The dependencies of this instance are injected and packaged as needed. At this point, this extended instance can be used.</p>
-<h2 id="auto-assembly-of-dubbo-spi-advanced-usage">Auto-assembly of Dubbo SPI advanced usage</h2>
-<p>The relevant code for auto-assembly is in the injectExtension method:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> T <span style="color:#268bd2">injectExtension</span>(T instance) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (Method method : instance.getClass().getMethods()) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (method.getName().startsWith(<span style="color:#2aa198">&#34;set&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&amp;&amp;</span> method.getParameterTypes().length <span style="color:#719e07">==</span> 1
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&amp;&amp;</span> Modifier.isPublic(method.getModifiers())) {
-</span></span><span style="display:flex;"><span> Class<span style="color:#719e07">&lt;?&gt;</span> pt <span style="color:#719e07">=</span> method.getParameterTypes()<span style="color:#719e07">[</span>0<span style="color:#719e07">]</span>;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> String property <span style="color:#719e07">=</span> method.getName().length() <span style="color:#719e07">&gt;</span> 3 <span style="color:#719e07">?</span> method.getName().substring(3, 4).toLowerCase() <span style="color:#719e07">+</span> method.getName().substring(4) : <span style="color:#2aa198">&#34;&#34;</span>;
-</span></span><span style="display:flex;"><span> Object object <span style="color:#719e07">=</span> objectFactory.getExtension(pt, property);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (object <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> method.invoke(instance, object);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> instance;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>To accomplish the automatic assembly of dependencies of the extended instances, you first need to know what the dependencies are and what the types of dependencies are. The solution of Dubbo is to find the Java standard setter method. That is, the method name starting with set has only one parameter. If such a set method exists in an extension class, Dubbo injects it into dependencies, which is similar to the injection of Spring&r [...]
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> <span style="color:#268bd2">ExtensionLoader</span>(Class<span style="color:#719e07">&lt;?&gt;</span> type) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">this</span>.type <span style="color:#719e07">=</span> type;
-</span></span><span style="display:flex;"><span> objectFactory <span style="color:#719e07">=</span> (type <span style="color:#719e07">==</span> ExtensionFactory.class <span style="color:#719e07">?</span> <span style="color:#cb4b16">null</span> : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>ObjectFacore is also an extension, obtained through <code>ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension()</code>.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-extensionfactory.png" alt="Dubbo-ExtensionFactory" title=""></p>
-<p>ExtensionFactory includes three implementations:</p>
-<ol>
-<li>SpiExtensionFactory: use Dubbo&rsquo;s Spi to load Extension.</li>
-<li>SpringExtensionFactory: load Extension from the Spring container.</li>
-<li>AdaptiveExtensionFactory: adaptive AdaptiveExtensionLoader</li>
-</ol>
-<p>Pay attention to the AdaptiveExtensionLoader here, the source code is as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@Adaptive</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">AdaptiveExtensionFactory</span> <span style="color:#268bd2">implements</span> ExtensionFactory {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> <span style="color:#268bd2">final</span> List<span style="color:#719e07">&lt;</span>ExtensionFactory<span style="color:#719e07">&gt;</span> factories;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">AdaptiveExtensionFactory</span>() {
-</span></span><span style="display:flex;"><span> ExtensionLoader<span style="color:#719e07">&lt;</span>ExtensionFactory<span style="color:#719e07">&gt;</span> loader <span style="color:#719e07">=</span> ExtensionLoader.getExtensionLoader(ExtensionFactory.class);
-</span></span><span style="display:flex;"><span> List<span style="color:#719e07">&lt;</span>ExtensionFactory<span style="color:#719e07">&gt;</span> list <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ArrayList<span style="color:#719e07">&lt;</span>ExtensionFactory<span style="color:#719e07">&gt;</span>();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (String name : loader.getSupportedExtensions()) {
-</span></span><span style="display:flex;"><span> list.add(loader.getExtension(name));
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> factories <span style="color:#719e07">=</span> Collections.unmodifiableList(list);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> T <span style="color:#268bd2">getExtension</span>(Class<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> type, String name) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (ExtensionFactory factory : factories) {
-</span></span><span style="display:flex;"><span> T extension <span style="color:#719e07">=</span> factory.getExtension(type, name);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (extension <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> extension;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#cb4b16">null</span>;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The AdaptiveExtensionLoader class has @Adaptive annotations. As mentioned earlier, Dubbo creates an adaptive instance for each extension. If the extension class has @Adaptive annotations, it will use it as an adaptive class. If not, Dubbo will create one for us. So <code>ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension())</code> will return an AdaptiveExtensionLoader instance as an adaptive extensi [...]
-The AdaptiveExtensionLoader will iterate through all the ExtensionFactory implementations and try to load the extensions. If found, return. If not, continue to find it in the next ExtensionFactory. Dubbo has two ExtensionFactory built in, which are searched from Dubbo&rsquo;s own extension mechanism and Spring container. Since ExtensionFactory itself is also an extension point, we can implement our own ExtensionFactory to enable automatic assembly of Dubbo to support our custom compo [...]
-<h2 id="aop-of-dubbo-spi-advanced-usage">AOP of Dubbo SPI advanced usage</h2>
-<p>We often use AOP functionality when using Spring. Insert other logic before and after the method of the target class. For example, Spring AOP is usually used to implement logging, monitoring, and authentication, and so on.
-Does Dubbo&rsquo;s extension mechanism also support similar features? The answer is yes. In Dubbo, there is a special class called the Wrapper class. It uses the wrapper class to wrap the original extension point instance through the decorator pattern, and then inserts additional logic before and after the original extension point implementation to implement AOP functionality.</p>
-<h3 id="what-is-the-wrapper-class">What is the Wrapper class</h3>
-<p>So what kind of class is the Wrapper class in the Dubbo extension mechanism? The Wrapper class is a class that has a replication constructor and also is a typical decorator pattern. Here&rsquo;s a Wrapper class:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">class</span> <span style="color:#268bd2">A</span>{
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> A a;
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">A</span>(A a){
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">this</span>.a <span style="color:#719e07">=</span> a;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Class A has a constructor <code>public A(A a)</code>, and the argument to the constructor is A itself. Such a class can be a Wrapper class in the Dubbo extension mechanism. Such Wrapper classes in Dubbo include ProtocolFilterWrapper, ProtocolListenerWrapper, and so on. You can check the source code to deepen your understanding.</p>
-<h3 id="how-to-configure-the-wrapper-class">How to configure the Wrapper class</h3>
-<p>The Wrapper class in Dubbo is also an extension point. Like other extension points, it is also configured in the <code>META-INF</code> folder. For example, the ProtocolFilterWrapper and ProtocolListenerWrapper in the previous example are configured in the path <code>dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol</code>:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>filter=org.apache.dubbo.rpc.protocol.ProtocolFilterWrapper
-</span></span><span style="display:flex;"><span>listener=org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper
-</span></span><span style="display:flex;"><span>mock=org.apache.dubbo.rpc.support.MockProtocol
-</span></span></code></pre></div><p>When Dubbo loads the extension configuration file, there is a piece of code as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">try</span> {
-</span></span><span style="display:flex;"><span> clazz.getConstructor(type);
-</span></span><span style="display:flex;"><span> Set<span style="color:#719e07">&lt;</span>Class<span style="color:#719e07">&lt;?&gt;&gt;</span> wrappers <span style="color:#719e07">=</span> cachedWrapperClasses;
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (wrappers <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> cachedWrapperClasses <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ConcurrentHashSet<span style="color:#719e07">&lt;</span>Class<span style="color:#719e07">&lt;?&gt;&gt;</span>();
-</span></span><span style="display:flex;"><span> wrappers <span style="color:#719e07">=</span> cachedWrapperClasses;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> wrappers.add(clazz);
-</span></span><span style="display:flex;"><span>} <span style="color:#719e07">catch</span> (NoSuchMethodException e) {}
-</span></span></code></pre></div><p>The meaning of this code is that if the extension class has a copy constructor, it will be saved for later use. The class that has the copy constructor is the Wrapper class. The parameter obtained by <code>clazz.getConstructor(type)</code> is the constructor of the extension point interface. Note that the parameter type of the constructor is an extension point interface, not an extension class.
-Take Protocol as an example. The configuration file <code>dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol defines filter=org.apache.dubbo.rpc.protocol. ProtocolFilterWrapper</code>.
-The code of ProtocolFilterWrapper is as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">ProtocolFilterWrapper</span> <span style="color:#268bd2">implements</span> Protocol {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> <span style="color:#268bd2">final</span> Protocol protocol;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">// One parameter is the copy constructor of Protocol</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">ProtocolFilterWrapper</span>(Protocol protocol) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (protocol <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;protocol == null&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">this</span>.protocol <span style="color:#719e07">=</span> protocol;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>ProtocolFilterWrapper has a constructor <code>public ProtocolFilterWrapper(Protocol protocol)</code>, and the parameter is the extension point Protocol. So it is a Wrapper class in the Dubbo extension mechanism. The ExtensionLoader will cache it. When creating Extension instances later, the ExtensionLoader use these wrapper classes to wrap the original Extension point in turn.</p>
-<h2 id="extension-point-adaptive">Extension point adaptive</h2>
-<p>As mentioned earlier, Dubbo needs to determine which extension to use based on method parameters at runtime. So there is an extension point adaptive instance. In fact, it is an extension point proxy that delays the selection of extensions from starting Dubbo to calling RPC. Each extension point in Dubbo has an adaptive class. If it is not explicitly provided, Dubbo will automatically create one for us. By default, Javaassist is used.
-Let&rsquo;s first look at the code to create an adaptive extension class:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> T <span style="color:#268bd2">getAdaptiveExtension</span>() {
-</span></span><span style="display:flex;"><span> Object instance <span style="color:#719e07">=</span> cachedAdaptiveInstance.get();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (instance <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">synchronized</span> (cachedAdaptiveInstance) {
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> cachedAdaptiveInstance.get();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (instance <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> instance <span style="color:#719e07">=</span> createAdaptiveExtension();
-</span></span><span style="display:flex;"><span> cachedAdaptiveInstance.set(instance);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> (T) instance;
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Continue to read the createAdaptiveExtension method:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> T <span style="color:#268bd2">createAdaptiveExtension</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> injectExtension((T) getAdaptiveExtensionClass().newInstance());
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Continue to read the getAdaptiveExtensionClass method:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> Class<span style="color:#719e07">&lt;?&gt;</span> getAdaptiveExtensionClass() {
-</span></span><span style="display:flex;"><span> getExtensionClasses();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (cachedAdaptiveClass <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span>) {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> cachedAdaptiveClass;
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> cachedAdaptiveClass <span style="color:#719e07">=</span> createAdaptiveExtensionClass();
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Continue to read the createAdaptiveExtensionClass method. After a long journey, we finally come to a concrete realization. Look at this createAdaptiveExtensionClass method, which first generates the Java source code for the adaptive class, and then compile the source code into Java bytecode and load it into the JVM.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">private</span> Class<span style="color:#719e07">&lt;?&gt;</span> createAdaptiveExtensionClass() {
-</span></span><span style="display:flex;"><span> String code <span style="color:#719e07">=</span> createAdaptiveExtensionClassCode();
-</span></span><span style="display:flex;"><span> ClassLoader classLoader <span style="color:#719e07">=</span> findClassLoader();
-</span></span><span style="display:flex;"><span> org.apache.dubbo.common.compiler.Compiler compiler <span style="color:#719e07">=</span> ExtensionLoader.getExtensionLoader(org.apache.dubbo.common.compiler.Compiler.class).getAdaptiveExtension();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> compiler.compile(code, classLoader);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The default implementation of Compiler&rsquo;s code is javassist.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@SPI</span>(<span style="color:#2aa198">&#34;javassist&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">Compiler</span> {
-</span></span><span style="display:flex;"><span> Class<span style="color:#719e07">&lt;?&gt;</span> compile(String code, ClassLoader classLoader);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The createAdaptiveExtensionClassCode () method uses a StringBuilder to build Java source code for the adaptive class. The method implementation is relatively long, and the code is not posted here. The approach to bytecode generation is also interesting, first generating Java source code, then compiling it and loading it into the jvm. In this way, the generated Java class can be better controlled. And it doesn&rsquo;t have to care [...]
-Below are the Java code example for Protocol adaptive class created by createAdaptiveExtensionClassCode method:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.rpc;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.common.extension.ExtensionLoader;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">Protocol$Adaptive</span> <span style="color:#268bd2">implements</span> org.apache.dubbo.rpc.Protocol {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">destroy</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> UnsupportedOperationException(<span style="color:#2aa198">&#34;method public abstract void org.apache.dubbo.rpc.Protocol.destroy() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">int</span> <span style="color:#268bd2">getDefaultPort</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> UnsupportedOperationException(<span style="color:#2aa198">&#34;method public abstract int org.apache.dubbo.rpc.Protocol.getDefaultPort() of interface org.apache.dubbo.rpc.Protocol is not adaptive method!&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> org.apache.dubbo.rpc.Exporter <span style="color:#268bd2">export</span>(org.apache.dubbo.rpc.Invoker arg0) <span style="color:#268bd2">throws</span> org.apache.dubbo.rpc.RpcException {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (arg0 <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;org.apache.dubbo.rpc.Invoker argument == null&#34;</span>);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (arg0.getUrl() <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;org.apache.dubbo.rpc.Invoker argument getUrl() == null&#34;</span>);
-</span></span><span style="display:flex;"><span> org.apache.dubbo.common.URL url <span style="color:#719e07">=</span> arg0.getUrl();
-</span></span><span style="display:flex;"><span> String extName <span style="color:#719e07">=</span> (url.getProtocol() <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span> <span style="color:#719e07">?</span> <span style="color:#2aa198">&#34;dubbo&#34;</span> : url.getProtocol());
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (extName <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalStateException(<span style="color:#2aa198">&#34;Fail to get extension(org.apache.dubbo.rpc.Protocol) name from url(&#34;</span> <span style="color:#719e07">+</span> url.toString() <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34;) use keys([protocol])&#34;</span>);
-</span></span><span style="display:flex;"><span> org.apache.dubbo.rpc.Protocol extension <span style="color:#719e07">=</span> (org.apache.dubbo.rpc.Protocol) ExtensionLoader.getExtensionLoader(org.apache.dubbo.rpc.Protocol.class).getExtension(extName);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> extension.export(arg0);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> org.apache.dubbo.rpc.Invoker <span style="color:#268bd2">refer</span>(java.lang.Class arg0, org.apache.dubbo.common.URL arg1) <span style="color:#268bd2">throws</span> org.apache.dubbo.rpc.RpcException {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (arg1 <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>) <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalArgumentException(<span style="color:#2aa198">&#34;url == null&#34;</span>);
-</span></span><span style="display:flex;"><span> org.apache.dubbo.common.URL url <span style="color:#719e07">=</span> arg1;
-</span></span><span style="display:flex;"><span> String extName <span style="color:#719e07">=</span> (url.getProtocol() <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span> <span style="color:#719e07">?</span> <span style="color:#2aa198">&#34;dubbo&#34;</span> : url.getProtocol());
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">if</span> (extName <span style="color:#719e07">==</span> <span style="color:#cb4b16">null</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">throw</span> <span style="color:#719e07">new</span> IllegalStateException(<span style="color:#2aa198">&#34;Fail to get extension(org.apache.dubbo.rpc.Protocol) name from url(&#34;</span> <span style="color:#719e07">+</span> url.toString() <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34;) use keys([protocol])&#34;</span>);
-</span></span><span style="display:flex;"><span> org.apache.dubbo.rpc.Protocol extension <span style="color:#719e07">=</span> (org.apache.dubbo.rpc.Protocol) ExtensionLoader.getExtensionLoader(org.apache.dubbo.rpc.Protocol.class).getExtension(extName);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> extension.refer(arg0, arg1);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>The general logic is the same as at the beginning. The parameters are parsed through the url, and the parsed logic is controlled by the value parameter of @adaptive, and then the extension points implementation are obtained according to the name of the extension point. And then finally make the call. If you want to know the specific construction logic of .Java code, you can see the complete implementation of <code>createAdaptiveExt [...]
-In the generated Protocol$Adaptive, both the getDefaultPort and destroy methods are found to throw the exception directly. Why? Take a look at the source code of Protocol:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@SPI</span>(<span style="color:#2aa198">&#34;dubbo&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">Protocol</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">int</span> <span style="color:#268bd2">getDefaultPort</span>();
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Adaptive</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> Exporter<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">export</span>(Invoker<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> invoker) <span style="color:#268bd2">throws</span> RpcException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Adaptive</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> Invoker<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">refer</span>(Class<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> type, URL url) <span style="color:#268bd2">throws</span> RpcException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">destroy</span>();
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>As you can see, there are four methods in the Protocol interface, but only the methods of export and refer use the @Adaptive annotation. Dubbo automatically generates adaptive instances, and only the methods modified by @Adaptive has a specific implementation. Therefore, in the Protocol$Adaptive class, only the export and refer methods have specific implementations, and the rest of the methods throw exceptions.</p></description></i [...]
-<h2 id="1-extension-mechanism-of-dubbo">1. Extension Mechanism of Dubbo</h2>
-<p>Dubbo is claimed as a high-performance RPC framework on its official website. Today, I want to talk about another great specialty of Dubbo &mdash; its scalability. As quote: Rome wasn’t built in a day. Any successful system always starts as a prototype. It is impossible to design a perfect system at the beginning. Instead, we should focus on true demand and keep improving the system. On the coding side, it requires us to pay attention on abstraction layers and high-level isolat [...]
-When talking about software design, people always mention scalability. A framework with good scalability requires the following:
-1.The framework should follow opening/closed principle: software entities should be open for extension, but closed for modification; This means a framework should allow the maintainer to add new functions with as few modifications as possible.
-2.The framework should allow the user to add new functions by adding code on his project without modifying the framework&rsquo;s original source code base.
-With microkernel architecture and extension mechanism, Dubbo satisfies such requirements and achieves good scalability. In the following chapters, we will discuss Dubbo&rsquo;s extension mechanism in detail.</p>
-<h2 id="2extension-solutions">2.Extension Solutions</h2>
-<p>Creating Extensible applications usually considers:</p>
-<ul>
-<li>Factory method pattern</li>
-<li>IoC container</li>
-<li>OSGi (Open Services Gateway initiative)</li>
-</ul>
-<p>As a framework, Dubbo does not wish to rely on other IoC containers such as Spring, Guice. OSGi is too complicated to fit Dubbo. In the end, Dubbo SPI is inherited from standard JDK SPI and makes it more powerful.</p>
-<h2 id="3java-spi-mechanism">3.Java SPI Mechanism</h2>
-<p>We will first discuss Java SPI mechanism, which is a basis for understanding Dubbo’s extension mechanism. If you are familiar with Java SPI, you can skip this part.</p>
-<p>Java SPI (Service Provider Interface) is a feature for discovering and loading implementations matching a given interface provided in JDK. We can create a text file with the same name as the interface under resource directory <code>META-INF/services</code>. The content of the file is the fully qualified class name of the SPI implementation, in which each component is separated by a line breaker. JDK uses <code>java.util.ServiceLoader</code> to load implementations of a [...]
-<ol>
-<li>Define an interface IRepository to store data.</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">IRepository</span> {
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">save</span>(String data);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><ol start="2">
-<li>Create 2 implementations for IRepository: MysqlRepository and MongoRepository</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">MysqlRepository</span> <span style="color:#268bd2">implements</span> IRepository {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">save</span>(String data) {
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Save &#34;</span> <span style="color:#719e07">+</span> data <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34; to Mysql&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">MongoRepository</span> <span style="color:#268bd2">implements</span> IRepository {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">save</span>(String data) {
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Save &#34;</span> <span style="color:#719e07">+</span> data <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34; to Mongo&#34;</span>);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><ol start="3">
-<li>Create a configuration file under <code>META-INF/services</code>.</li>
-</ol>
-<p>The file name is <code>META-INF/services/com.demo.IRepository</code>, the content of file is:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>com.demo.MongoRepository
-</span></span><span style="display:flex;"><span>com.demo.MysqlRepository
-</span></span></code></pre></div><ol start="4">
-<li>Load IRepository using ServiceLoader</li>
-</ol>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>ServiceLoader<span style="color:#719e07">&lt;</span>IRepository<span style="color:#719e07">&gt;</span> serviceLoader <span style="color:#719e07">=</span> ServiceLoader.load(IRepository.class);
-</span></span><span style="display:flex;"><span>Iterator<span style="color:#719e07">&lt;</span>IRepository<span style="color:#719e07">&gt;</span> it <span style="color:#719e07">=</span> serviceLoader.iterator();
-</span></span><span style="display:flex;"><span><span style="color:#719e07">while</span> (it <span style="color:#719e07">!=</span> <span style="color:#cb4b16">null</span> <span style="color:#719e07">&amp;&amp;</span> it.hasNext()){
-</span></span><span style="display:flex;"><span> IRepository demoService <span style="color:#719e07">=</span> it.next();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;class:&#34;</span> <span style="color:#719e07">+</span> demoService.getClass().getName());
-</span></span><span style="display:flex;"><span> demoService.save(<span style="color:#2aa198">&#34;tom&#34;</span>);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>In the above example, we created an extension and two of its applications. We created the configuration file in ClassPath and loaded the extensions using ServiceLoader. The final output is:
-class:testDubbo.MongoRepository
-Save tom to Mongo
-class:testDubbo.MysqlRepository
-Save tom to Mysql</p>
-<h2 id="4-dubbo-spi-mechanism">4. Dubbo SPI Mechanism</h2>
-<p>Java SPI is simple to use. It also supports basic extension point functions, however, it has some disadvantages:</p>
-<ul>
-<li>It will load and instantiate all implementations at once to find the requested implementation.</li>
-<li>The configuration file only includes the extension implementation but does not name them, which makes it hard to reference them in applications.</li>
-<li>If extensions depend on other extensions, Java SPI cannot automatically load the dependency SPI.</li>
-<li>It does not provide functions such as IOC or AOP in Spring.</li>
-<li>It is hard to assemble extensions with other frameworks. For example, if the extension depends on Spring bean, the original Java SPI will not support it.</li>
-</ul>
-<p>Therefore, Java SPI is good for some simple scenarios, but does not fit for Dubbo. Dubbo makes some extensions on the original SPI mechanism. We will discuss more about the Dubbo SPI mechanism in the following sections.</p>
-<h2 id="5-basic-concepts-for-dubbo-extension-point-mechanism">5. Basic Concepts for Dubbo Extension Point Mechanism</h2>
-<p>Before diving into Dubbo&rsquo;s extension mechanism,Let us first declare some basic concepts in Dubbo SPI. Those terms will appear multiple times in the following section.</p>
-<h3 id="51-extension-point">5.1 Extension Point</h3>
-<p>an interface of java.</p>
-<h3 id="52-extension">5.2 Extension</h3>
-<p>an implementation class of the Extension Point</p>
-<h3 id="53-extension-instance">5.3 Extension Instance</h3>
-<p>instance of an extension point implementation class</p>
-<h3 id="54-extension-adaptive-instance">5.4 Extension Adaptive Instance</h3>
-<p>Maybe it is a little difficult to understand this concept when hearing about it the first time. It may help you understand it better by calling it an extension proxy class. The extension adaptive instance is actually an extension proxy, which implements the method of extension point interface. When calling the interface method of the extension point, it will decide which extension to use according to the actual parameters. For example, the extension point of an IRepository has one [...]
-<ul>
-<li>There are two configurations in Dubbo, one is a fixed system-level configuration and it will not be changed after Dubbo launches. Another is the run-time configuration that may be different for each RPC. For instance, the timeout is configured as 10 seconds in the xml file, which will not change after Dubbo launches. However, for a certain PRC call, we can set its timeout to 30 seconds so as to override the system-level configuration. For Dubbo, the parameters called in each RPC i [...]
-<li>Our class is usually singleton-scaled, such as beans of Spring IoC Container. When instantiating beans, if it depends on some specific extension point, it will know which extension to use, otherwise, the bean will not know how to choose extensions. At this time, a proxy mode is needed, which implements the interface of an extension point. The method can dynamically select the appropriate extension according to the run-time parameters, and this proxy is an adaptive instance. Adapti [...]
-</ul>
-<h3 id="55-spi">5.5 @SPI</h3>
-<p>@SPI annotation works on the interface of the extension point, which indicates that the interface is an extension point, and can be loaded by Dubbo ExtensionLoader. If there is no such ExtentionLoader, the call will throw an exception.</p>
-<h3 id="56-adaptive">5.6 @Adaptive</h3>
-<p>@Adaptive annotation is used on the method that extends the interface, which indicates an adaptive method. When Dubbo generates an adaptive instance for an extension point, if the function has @Adaptive annotation, then Dubbo will generate the corresponding code for the method. The method determines which extension to use according to the parameters. When @Adaptive annotation is used on the class to implement a Decorator class, it is similar to the Decorator pattern, whose major fu [...]
-<h3 id="57-extensionloader">5.7 ExtensionLoader</h3>
-<p>Similar to the Java SPI ServiceLoader, it is responsible for loading extensions and life-cycle maintenance.</p>
-<h3 id="58-extension-alias">5.8 Extension Alias</h3>
-<p>Different from Java, each extension in Dubbo has an alias, which is used to reference them in the application, such as</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#268bd2">random</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">roundrobin</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
-</span></span></code></pre></div><p>where random, roundrobin are alias of the corresponding extensions, and we can directly use them in the configuration file.</p>
-<h3 id="59-paths">5.9 Paths</h3>
-<p>Similar to the way Java SPI loading the extension configuration from the <code>META-INF/services</code> directory, Dubbo will also load the extension configuration file from the following path:</p>
-<ul>
-<li><code>META-INF/dubbo/internal</code></li>
-<li><code>META-INF/dubbo</code></li>
-<li><code>META-INF/services</code></li>
-</ul>
-<h2 id="6-interpretation-for-dubbos-loadbalance-extension-point">6. Interpretation for Dubbo&rsquo;s LoadBalance Extension Point</h2>
-<p>Now that we know some basic idea about Dubbo, let us check a practical extension point in Dubbo to get some intuition.</p>
-<p>We take the Dubbo’s LoadBalance extension point as an example. A service in Dubbo usually has multiple providers. When a consumer calls the service, he needs to choose one of the providers. This is an example of LoadBalance. Now, let us figure out how LoadBalance becomes an extension point in Dubbo.</p>
-<h3 id="61-loadbalance-interfance">6.1 LoadBalance Interfance</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@SPI</span>(RandomLoadBalance.NAME)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">LoadBalance</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Adaptive</span>(<span style="color:#2aa198">&#34;loadbalance&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> Invoker<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">select</span>(List<span style="color:#719e07">&lt;</span>Invoker<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;&gt;</span> invokers [...]
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>LoadBalance interface has only one select method. Select method chose one invoker among multiple invokers. In the code above, the elements related to Dubbo SPI are:</p>
-<ul>
-<li>@SPI(RandomLoadBalance.NAME) @SPI is used for LoadBalance interface, which indicates that the LoadBalance interface is an extension point. Without the @SPI annotation, if we try to load the extension, it will throw an exception. @SPI annotation has one parameter, and this parameter represents the Alias of the default implementation of the extension point. If there has no explicitly specified extension, the default implementation will be used.
-<code>RandomLoadBalance.NAME</code> is a constant with value “random” and is a random load balancing implementation. The definition of random is in the configuration file <code>META-INF/dubbo/internal/com.alibaba.dubbo.rpc.cluster.LoadBalance</code>:</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#268bd2">random</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.RandomLoadBalance
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">roundrobin</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">leastactive</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">consistenthash</span><span style="color:#719e07">=</span>com.alibaba.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance
-</span></span></code></pre></div><p>There are four extension implementations of LoadBalance defined in the configuration file. The implementation of load balancing will not be covered in this article. The only thing we need to know is that Dubbo provides four kinds of load balancing implementations. We can explicitly specify an implementation by using xml file, properties file or JVM parameter. If there has no explicitly specified implementation, Dubbo will use random a [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo_loadbalance.png" alt="img"></p>
-<ul>
-<li>@Adaptive(&ldquo;loadbalance&rdquo;) Applying @Adaptive annotation on select method indicates that select method is an adaptive method. Dubbo will automatically generate the corresponding code for the method. When select method is called, it will decide which extension to apply based on the method parameters. @Adaptive parameter <code>loadbalance</code> indicates that the value of loadbalance in method is the extension implementation that will be actually called. How [...]
-</ul>
-<h3 id="62-obtain-loadbalance-extension">6.2 Obtain LoadBalance extension</h3>
-<p>The code of LoadBalance in Dubbo is as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span>LoadBalance lb <span style="color:#719e07">=</span> ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(loadbalanceName);
-</span></span></code></pre></div><p>Using ExtensionLoader.getExtensionLoader(LoadBalance.class) method to obtain an implementation of ExtensionLoader, then we call getExtension and pass an extension alias to obtain the corresponding extension implementation.</p>
-<h2 id="7-customize-a-loadbalance-extension">7. Customize a LoadBalance Extension</h2>
-<p>In this session, we will use a simple example to implement a LoadBalance and integrate it into Dubbo. I will show some important steps and codes, and the complete demo can be downloaded from the following address(<a href="https://github.com/vangoleo/dubbo-spi-demo">https://github.com/vangoleo/dubbo-spi-demo</a>).</p>
-<h3 id="71-implement-loadbalance-interface">7.1 implement LoadBalance Interface</h3>
-<p>First, we build a LoadBalance instance. Since we just need the instance to demonstrate Dubbo extension mechanism, it will be very simple. We choose the first invoker and print a log sentence in the console.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> com.dubbo.spi.demo.consumer;
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoLoadBalance</span> <span style="color:#268bd2">implements</span> LoadBalance {
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> Invoker<span style="color:#719e07">&lt;</span>T<span style="color:#719e07">&gt;</span> <span style="color:#268bd2">select</span>(List<span style="color:#719e07">&lt;</span>Invoker<span style="color:#719e07">&lt;</span>T<span style="co [...]
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;DemoLoadBalance: Select the first invoker...&#34;</span>);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> invokers.get(0);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h3 id="72-add-extension-configuration-file">7.2 Add extension configuration file</h3>
-<p>Add file:<code>META-INF/dubbo/com.alibaba.dubbo.rpc.cluster.LoadBalance</code>. The content of file is:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#268bd2">demo</span><span style="color:#719e07">=</span>com.dubbo.spi.demo.consumer.DemoLoadBalance
-</span></span></code></pre></div><h3 id="73-configure-customized-loadbalance">7.3 Configure customized LoadBalance</h3>
-<p>Through the above 2 steps, we have already added a LoadBalance implementation named demo, and set up the configuration file. In the next step, we need to explicitly tell Dubbo to implement the demo while doing load balancing. If we use Dubbo through spring, we could set it up in the xml file.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;dubbo:reference</span> id=<span style="color:#2aa198">&#34;helloService&#34;</span> interface=<span style="color:#2aa198">&#34;com.dubbo.spi.demo.api.IHelloService&#34;</span> loadbalance=<span sty [...]
-</span></span></code></pre></div><p>Configure &lt;loadbalance=&ldquo;demo&rdquo;&gt; in <a href="dubbo:reference">dubbo:reference</a> at consumer part.</p>
-<h3 id="74-launch-dubbo">7.4 launch Dubbo</h3>
-<p>Launch Dubbo and call IHelloService, the console will output log: <code>DemoLoadBalance: Select the first invoker...</code>, which means Dubbo does use our customized LoadBalance.</p>
-<h2 id="summary">Summary</h2>
-<p>So far, we learnt the basic concepts of Dubbo SPI beginning with Java SPI, and we used LoadBalance in Dubbo as an example to help us understand better. Finally, we practiced and created a customized LoadBalance and integrated it to Dubbo. We believe that combining concepts and practice, everyone can get a better idea of Dubbo’s scalability. To summarize, Dubbo SPI has the following features:</p>
-<ul>
-<li>Build extensions on Dubbo does not require modifications on the original source code base.</li>
-<li>The customized Dubbo extension point implementation is a normal Java class. Dubbo does not introduce any specialized elements, and have almost zero code intrusion.
-*Extension registration on Dubbo requires only configuration file under the ClassPath directory. It is simple to use and has no effect on the existing code. This meets opening/closed principle.</li>
-<li>Dubbo&rsquo;s extension mechanism default: @SPI(&ldquo;dubbo&rdquo;) represents the default SPI object.</li>
-<li>Dubbo&rsquo;s extension mechanism supports the advanced features such as IoC and AoP, etc.</li>
-<li>Dubbo&rsquo;s extension mechanism supports third-party IoC containers. It supports Spring beans by default and can be extended to other containers, such as Google/Guice.</li>
-<li>It is easy to switch the implementation of the extension point because it requires only modifications on the specific implementation in the configuration file without changing the code.</li>
-</ul>
-<p>In the next article, we will go deep and check Dubbo&rsquo;s source code to learn more about Dubbo&rsquo;s extensibility mechanism.</p></description></item><item><title>Blog: Implementation background and practice of Dubbo client asynchronous interface</title><link>https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/</link><pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org [...]
-<h2 id="preface">Preface</h2>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubboasyn_client/1_en.png" alt="image | left"></p>
-<p>Let&rsquo;s start with a brief introduction about the stages of a complete Dubbo invocation.</p>
-<ol>
-<li>
-<p>Biz~ represents business thread, that is, the thread where the business logic is located. Biz~ thread pool may be created and maintained by business itself, most of which may be managed by system framework itself (for example, a web system runs under Tomcat container, Biz~ thread is maintained by Tomcat); IO~ stands for network data processing thread, which is created and maintained by IO framework (such as Netty, Grizzly). Dubbo Remoting&rsquo;s default Netty implementation is [...]
-</li>
-<li>
-<p>As we all know, the way of data communication between threads is shared variables. The data communication between Biz and IO is Queue. Specifically to Dubbo, Biz put a task in EventLoop&rsquo;s LinkedBlockingQueue in the client side implementation (i.e. the steps labeled in Figure 1 above), and the corresponding Thread in the EventLoop will keep iteration the Queue to keep on executing the information the task contains. Specific code can refer to SingleThreadEventExecutor (by t [...]
-</li>
-<li>
-<p>As shown in the figure above, a standard RPC call passes through four message (event) transfers of 1,2,3,4, respectively are the client business thread sending requests to the client IO thread, the server business logic thread receiving the server IO thread requests, the server logic thread responding to the server IO thread after processing, and the client IO thread receiving the results feedback to the business logic thread.</p>
-</li>
-</ol>
-<h2 id="client-asynchronization">Client Asynchronization</h2>
-<h3 id="background">Background</h3>
-<p>In the Java language (other languages are not clear), a call of the local interface can be transparently converted into the call of remote RPC through the proxy mechanism. Most business parties prefer this programming method similar to the local interface to do remote service invocation. Therefore, although RPC is naturally asynchronous internally, users using Dubbo mostly use synchronization, while asynchrony becomes a minority use scenario. The advantage of synchronization is tha [...]
-<p>Therefore, the motivation of client asynchronization is to save thread resource overhead at the cost of understanding how asynchronization is used. In the synchronous mode, the return type of API interface represents a certain business class, while in the asynchronous case, the response and the request are completely independent events, so it is most suitable for the return type of API interface to be CompletionStage mentioned above, which is the inevitable asynchronization support [...]
-<p>The example blow is to illustrate it.</p>
-<h3 id="the-sample">The sample</h3>
-<p>Refer to the example code for event notification: <a href="https://github.com/dubbo/dubbo-samples/tree/master/2-advanced/dubbo-samples-notify">https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-notify</a></p>
-<p>Event notification allows the Consumer to trigger &lsquo;oninvoke&rsquo;, &lsquo;onreturn&rsquo; and &lsquo;onthrow&rsquo; events, which respectively represent before the call, after the call returns normally, or when an exception occurs.</p>
-<p>You can specify a method for notifying events when configuring the Consumer, such as:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;bean</span> id=<span style="color:#2aa198">&#34;demoCallback&#34;</span> class=<span style="color:#2aa198">&#34;com.alibaba.dubbo.samples.notify.impl.NotifyImpl&#34;</span> <span style="color:#268b [...]
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;dubbo:reference</span> id=<span style="color:#2aa198">&#34;demoService&#34;</span> check=<span style="color:#2aa198">&#34;false&#34;</span> interface=<span style="color:#2aa198">&#34;com.alibaba.dubbo.samples.notify.api.DemoService&#34;</span> version=<span style="color:#2aa198">&#34;1.0.0&#34;</span> group=<span style="color:#2a [...]
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:method</span> name=<span style="color:#2aa198">&#34;sayHello&#34;</span> onreturn=<span style="color:#2aa198">&#34;demoCallback.onreturn&#34;</span> onthrow=<span style="color:#2aa198">&#34;demoCallback.onthrow&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dubbo:reference&gt;</span>
-</span></span></code></pre></div><p>The code for NotifyImpl is as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">NotifyImpl</span> <span style="color:#268bd2">implements</span> Notify{
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> Map<span style="color:#719e07">&lt;</span>Integer, String<span style="color:#719e07">&gt;</span> ret <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> HashMap<span style="color:#719e07">&lt;</span>Integer, String<span style="color:#719e07">&gt;</span>();
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">onreturn</span>(String name, <span style="color:#dc322f">int</span> id) {
-</span></span><span style="display:flex;"><span> ret.put(id, name);
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;onreturn: &#34;</span> <span style="color:#719e07">+</span> name);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">onthrow</span>(Throwable ex, String name, <span style="color:#dc322f">int</span> id) {
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;onthrow: &#34;</span> <span style="color:#719e07">+</span> name);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>It is important to note that the parameters for the three methods in the custom Notify interface are as follows:</p>
-<ul>
-<li><code>oninvoke</code> The parameters of the method are the same as those of the calling method.</li>
-<li><code>onreturn</code> The first parameter of the method is the return value of the calling method, and the rest is the parameters of the calling method.</li>
-<li><code>onthrow</code> The first parameter to the method is the call exception, and the rest is the parameter to the calling method.</li>
-</ul>
-<p>In the above configuration, the <code>sayHello</code> method is called synchronously, so the execution of the event notification method is also synchronously executed. <code>async=true</code> can be configured to make the method call asynchronous, and the notification event method is also executed asynchronously. In particular, the <code>oninvoke</code> method executes synchronously, regardless of whether it is invoked asynchronously or not.</p>
-<h3 id="practical-advice">Practical advice</h3>
-<ul>
-<li>
-<div data-type="alignment" data-value="justify" style="text-align:justify">
-<div data-type="p">Logical Non-Strongly dependent results after RPC invocation: Asynchronous callbacks are suitable for client-side asynchronous invocation when the client <strong>is not strongly dependent on the server response</strong>.</div>
-</div>
-</li>
-<li>
-<div data-type="alignment" data-value="justify" style="text-align:justify">
-<div data-type="p">RX scenario: after learning about reactive programming model, I believe that as long as the programming thinking can embrace reactive and the state machine design of business model can be adjusted appropriately, asynchronous solutions can be applied in all scenarios, so as to achieve better terminal response experience. For Dubbo, the current asynchronous interface model needs to be improved like the reactive model interface in order to make the user more naturally [...]
-</div>
-</li>
-</ul>
-<h3 id="conclusions">Conclusions</h3>
-<ul>
-<li>The motivation of client asynchronization is that the request sending and response processing are two different independent events, how the response is handled and in which thread is handled are not required to be coupled with the business logic thread of the request sending event.</li>
-<li>The processing logic of response event callbacks in which thread to process is to be selected according to the situation. It is recommended that if the callback logic is relatively simple, it should be directly in the IO thread; if it contains IO type synchronization operations such as remote access or DB access, it is recommended that it be processed in a separate thread pool.</li>
-</ul></description></item><item><title>Blog: Implementation background and practice of Dubbo server asynchronous interface</title><link>https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/</link><pubDate>Wed, 20 Feb 2019 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-server-asynchronous-interface/</guid><description>
-<h2 id="preface">Preface</h2>
-<p>It is suggested to make an understanding of the thread phase involved in the process of Dubbo first, please refer to <a href="https://dubbo.apache.org/en/blog/2019/02/20/implementation-background-and-practice-of-dubbo-client-asynchronous-interface/">Implementation background and practice of Dubbo client asynchronous interface</a> for details.</p>
-<h2 id="implementation-background">Implementation background</h2>
-<p>It is necessary to introduce the server-side thread strategy in more detail to deepen the user&rsquo;s judgment basis for selecting server-side asynchrony. It is also necessary to introduce coroutines, the &ldquo;secret weapon&rdquo; often used in server-side asynchrony.</p>
-<h3 id="server-side-thread-strategy">Server-side thread strategy</h3>
-<p>Dubbo supports a variety of NIO frameworks to implement remoting protocols. Whether Netty, Mina or Grizzly, the implementations are much the same. They are all based on event-driven methods to establish network channels and read data streams. Taking introduction to <a href="https://javaee.github.io/grizzly/iostrategies.html">Thread Strategy</a> of Grizzly as an example, the following four categories are usually supported. Dubbo as an RPC framework, the default choice is the f [...]
-<ol>
-<li><strong>Worker-thread Strategy</strong></li>
-</ol>
-<p>The most useful IOStrategy, where Selector thread delegates NIO events processing to a worker threads.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubboasyn_server/1.png" alt="workerthread-strategy.png"></p>
-<p>This IOStrategy is very scalable and safe. We can change the size of selector and worker thread pool as required and there is no risk that some problem, which may occur during the specific NIO event processing, will impact other Channels registered on the same Selector.</p>
-<p>The disadvantage is the cost of thread context switching.</p>
-<ol start="2">
-<li><strong>Same-thread Strategy</strong></li>
-</ol>
-<p>Potentially the most efficient IOStrategy. Unlike the worker-thread IOStrategy, the same-thread IOStrategy processes NIO events in the current thread, avoiding expensive thread context switches.</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubboasyn_server/2.png" alt="samethread-strategy.png"></p>
-<p>This IOStrategy is still pretty scalable, because we can tune the selector thread pool size, but it does have drawbacks. Care needs to be taken that channel NIO event processing won’t block or execute any long lasting operation, because it may block the processing of other NIO events that occur on the same Selector.</p>
-<ol start="3">
-<li><strong>Dynamic Strategy</strong></li>
-</ol>
-<p>As mentioned previously worker-thread and same-thread strategies have distinct advantages and disadvantages. However, what if a strategy could try to swap them smartly during runtime depending on the current conditions (load, gathered statistics… etc)?</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubboasyn_server/3.png" alt="dynamic-strategy.png"></p>
-<p>Potentially this IOStrategy could bring a lot of benefit and allow finer control of the resources. However, it’s important to not overload the condition evaluation logic, as its complexity will make this IOStrategy inefficient comparing to previous two strategies.</p>
-<p>By the way, I want you to pay more attention to this strategy, which is probably the best combination of Dubbo server asynchrony.</p>
-<ol start="4">
-<li><strong>Leader-follower Strategy</strong></li>
-</ol>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubboasyn_server/4.png" alt="leaderfollower-strategy.png"></p>
-<p>This IOStrategy is similar to worker-thread IOStrategy, but instead of passing NIO event processing to a worker thread, it changes worker thread to a selector thread by passing it the control over Selector and the actual NIO event processing takes place in the current thread. This strategy actually confuses worker and IO thread stages, which is not recommended.</p>
-<h3 id="coroutine-and-thread">Coroutine and thread</h3>
-<p>In terms of CPU resource management, the minimum scheduling unit of OS and JVM is thread. The coroutine library implemented by business application through extension can have independent running unit. In fact, it is also done based on thread. The principle should be to save the context and switch to another coroutine when IO blocking or lock waiting is encountered.</p>
-<p><strong>In the default Dubbo thread strategy, there are worker thread pools to execute the business logic, but the ThreadPool Full problem often occurs. In order to release worker threads as soon as possible, another thread will be set up in the implementation of the business service. The cost is thread context switching again, and it&rsquo;s necessary to consider link-level data transfer (such as tracing information) and flow-control export controls, etc. Of course, if Dubb [...]
-<h2 id="the-sample">The sample</h2>
-<p>Use an example to experience the Dubbo server-side asynchronous interface. For Demo code, visit <a href="https://github.com/dubbo/dubbo-samples/tree/master/2-advanced/dubbo-samples-notify">https://github.com/dubbo/dubbo-samples/tree/master/dubbo-samples-notify</a>。</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">AsyncServiceImpl</span> <span style="color:#268bd2">implements</span> AsyncService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> String <span style="color:#268bd2">sayHello</span>(String name) {
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Main sayHello() method start.&#34;</span>);
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">final</span> AsyncContext asyncContext <span style="color:#719e07">=</span> RpcContext.startAsync();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">new</span> Thread(() <span style="color:#719e07">-&gt;</span> {
-</span></span><span style="display:flex;"><span> asyncContext.signalContextSwitch();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Attachment from consumer: &#34;</span> <span style="color:#719e07">+</span> RpcContext.getContext().getAttachment(<span style="color:#2aa198">&#34;consumer-key1&#34;</span>));
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34; -- Async start.&#34;</span>);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">try</span> {
-</span></span><span style="display:flex;"><span> Thread.sleep(500);
-</span></span><span style="display:flex;"><span> } <span style="color:#719e07">catch</span> (InterruptedException e) {
-</span></span><span style="display:flex;"><span> e.printStackTrace();
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> asyncContext.write(<span style="color:#2aa198">&#34;Hello &#34;</span> <span style="color:#719e07">+</span> name <span style="color:#719e07">+</span> <span style="color:#2aa198">&#34;, response from provider.&#34;</span>);
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34; -- Async end.&#34;</span>);
-</span></span><span style="display:flex;"><span> }).start();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;Main sayHello() method end.&#34;</span>);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> <span style="color:#2aa198">&#34;hello, &#34;</span> <span style="color:#719e07">+</span> name;
-</span></span><span style="display:flex;"><span> }
-</span></span></code></pre></div><h2 id="practical-suggestions">Practical suggestions</h2>
-<ul>
-<li>Don&rsquo;t rely too much on server-side asynchrony.</li>
-<li>Server-side asynchrony is basically a false proposition in the face of event-driven or Reactive.<span data-type="color" style="color:rgb(36, 41, 46)"><span data-type="background" style="background-color:rgb(255, 255, 255)">Supplement the reason: the server asynchrony is said Dubbo server-side business threads (default is 200) is not enough, but in the Event-Driven mode, 200 threads certainly do not need that much, just as much as the number of CPU cores. As long as the busin [...]
-<li>To use server-side asynchrony, it is recommended that the server-side thread strategy adopt the Same_thread pattern + Coroutine Library.</li>
-</ul>
-<h2 id="conclusions">Conclusions</h2>
-<p>When Dubbo supports business applications, it encounters a variety of requirements scenarios, and server-side asynchrony provides users with a solution to deal with ThreadPool Full. In the case of ThreadPool Full, if the current system bottleneck is CPU, this solution is not recommended. If the system load is not high, increasing the number of worker threads or using server asynchrony can be considered.</p></description></item><item><title>Blog: How to use Seata to ensure consis [...]
-<h2 id="use-case">Use case</h2>
-<p>A business logic for user purchasing commodities. The whole business logic is powered by 3 microservices:</p>
-<ul>
-<li>Storage service: deduct storage count on given commodity.</li>
-<li>Order service: create order according to purchase request.</li>
-<li>Account service: debit the balance of user&rsquo;s account.</li>
-</ul>
-<h3 id="architecture">Architecture</h3>
-<p><img src="https://dubbo.apache.org/imgs/blog/fescar/fescar-1.png" alt="Architecture"></p>
-<h3 id="storageservice">StorageService</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">StorageService</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * deduct storage count
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">deduct</span>(String commodityCode, <span style="color:#dc322f">int</span> count);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h3 id="orderservice">OrderService</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">OrderService</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * create order
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span> Order <span style="color:#268bd2">create</span>(String userId, String commodityCode, <span style="color:#dc322f">int</span> orderCount);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h3 id="accountservice">AccountService</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">AccountService</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * debit balance of user&#39;s account
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">debit</span>(String userId, <span style="color:#dc322f">int</span> money);
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h3 id="main-business-logic">Main business logic</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">BusinessServiceImpl</span> <span style="color:#268bd2">implements</span> BusinessService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> StorageService storageService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> OrderService orderService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * purchase
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">purchase</span>(String userId, String commodityCode, <span style="color:#dc322f">int</span> orderCount) {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> storageService.deduct(commodityCode, orderCount);
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> orderService.create(userId, commodityCode, orderCount);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">StorageServiceImpl</span> <span style="color:#268bd2">implements</span> StorageService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> StorageDAO storageDAO;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Override</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">deduct</span>(String commodityCode, <span style="color:#dc322f">int</span> count) {
-</span></span><span style="display:flex;"><span> Storage storage <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> Storage();
-</span></span><span style="display:flex;"><span> storage.setCount(count);
-</span></span><span style="display:flex;"><span> storage.setCommodityCode(commodityCode);
-</span></span><span style="display:flex;"><span> storageDAO.update(storage);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">OrderServiceImpl</span> <span style="color:#268bd2">implements</span> OrderService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> OrderDAO orderDAO;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> AccountService accountService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> Order <span style="color:#268bd2">create</span>(String userId, String commodityCode, <span style="color:#dc322f">int</span> orderCount) {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">int</span> orderMoney <span style="color:#719e07">=</span> calculate(commodityCode, orderCount);
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> accountService.debit(userId, orderMoney);
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> Order order <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> Order();
-</span></span><span style="display:flex;"><span> order.userId <span style="color:#719e07">=</span> userId;
-</span></span><span style="display:flex;"><span> order.commodityCode <span style="color:#719e07">=</span> commodityCode;
-</span></span><span style="display:flex;"><span> order.count <span style="color:#719e07">=</span> orderCount;
-</span></span><span style="display:flex;"><span> order.money <span style="color:#719e07">=</span> orderMoney;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> orderDAO.insert(order);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h2 id="distributed-transaction-solution-with-seata">Distributed Transaction Solution with Seata</h2>
-<p><img src="https://dubbo.apache.org/imgs/blog/fescar/fescar-2.png" alt="undefined"></p>
-<p>We just need an annotation <code>@GlobalTransactional</code> on business method:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span> <span style="color:#268bd2">@GlobalTransactional</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">purchase</span>(String userId, String commodityCode, <span style="color:#dc322f">int</span> orderCount) {
-</span></span><span style="display:flex;"><span> ......
-</span></span><span style="display:flex;"><span> }
-</span></span></code></pre></div><h2 id="example-powered-by-dubbo--seata">Example powered by Dubbo + Seata</h2>
-<h3 id="step-1-setup-database">Step 1: Setup database</h3>
-<ul>
-<li>Requirement: MySQL with InnoDB engine.</li>
-</ul>
-<p><strong>Note:</strong> In fact, there should be 3 database for the 3 services in the example use case. However, we can just create one database and configure 3 data sources for simple.</p>
-<p>Modify Spring XML with the database URL/username/password you just created.</p>
-<p>dubbo-account-service.xml
-dubbo-order-service.xml
-dubbo-storage-service.xml</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span> <span style="color:#268bd2">&lt;property</span> name=<span style="color:#2aa198">&#34;url&#34;</span> value=<span style="color:#2aa198">&#34;jdbc:mysql://x.x.x.x:3306/xxx&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;property</span> name=<span style="color:#2aa198">&#34;username&#34;</span> value=<span style="color:#2aa198">&#34;xxx&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;property</span> name=<span style="color:#2aa198">&#34;password&#34;</span> value=<span style="color:#2aa198">&#34;xxx&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span></code></pre></div><h3 id="step-2-create-undo_log-table-for-seata">Step 2: Create undo_log table for Seata</h3>
-<p><code>UNDO_LOG</code> table is required by Seata AT mode.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#586e75">-- Note that when Seata version is upgraded to 0.3.0+, it is changed from the previous normal index to the unique index.
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"></span><span style="color:#719e07">CREATE</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">`</span>undo_log<span style="color:#719e07">`</span> (
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>id<span style="color:#719e07">`</span> <span style="color:#b58900">bigint</span>(<span style="color:#2aa198">20</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span> AUTO_INCREMENT,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>branch_id<span style="color:#719e07">`</span> <span style="color:#b58900">bigint</span>(<span style="color:#2aa198">20</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>xid<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">100</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>context<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">128</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>rollback_info<span style="color:#719e07">`</span> longblob <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>log_status<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>log_created<span style="color:#719e07">`</span> datetime <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>log_modified<span style="color:#719e07">`</span> datetime <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>ext<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">100</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">PRIMARY</span> <span style="color:#719e07">KEY</span> (<span style="color:#719e07">`</span>id<span style="color:#719e07">`</span>),
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">UNIQUE</span> <span style="color:#719e07">KEY</span> <span style="color:#719e07">`</span>ux_undo_log<span style="color:#719e07">`</span> (<span style="color:#719e07">`</span>xid<span style="color:#719e07">`</span>,<span style="color:#719e07">`</span>branch_id<span style="color:#719e07">`</span>)
-</span></span><span style="display:flex;"><span>) ENGINE<span style="color:#719e07">=</span>InnoDB AUTO_INCREMENT<span style="color:#719e07">=</span><span style="color:#2aa198">1</span> <span style="color:#719e07">DEFAULT</span> CHARSET<span style="color:#719e07">=</span>utf8;
-</span></span></code></pre></div><h3 id="step-3-create-tables-for-example-business">Step 3: Create tables for example business</h3>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">DROP</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">IF</span> <span style="color:#719e07">EXISTS</span> <span style="color:#719e07">`</span>storage_tbl<span style="color:#719e07">`</span>;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">CREATE</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">`</span>storage_tbl<span style="color:#719e07">`</span> (
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>id<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span> AUTO_INCREMENT,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>commodity_code<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">255</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span><span style="color:#719e07">count</span><span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#2aa198">0</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">PRIMARY</span> <span style="color:#719e07">KEY</span> (<span style="color:#719e07">`</span>id<span style="color:#719e07">`</span>),
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">UNIQUE</span> <span style="color:#719e07">KEY</span> (<span style="color:#719e07">`</span>commodity_code<span style="color:#719e07">`</span>)
-</span></span><span style="display:flex;"><span>) ENGINE<span style="color:#719e07">=</span>InnoDB <span style="color:#719e07">DEFAULT</span> CHARSET<span style="color:#719e07">=</span>utf8;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">DROP</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">IF</span> <span style="color:#719e07">EXISTS</span> <span style="color:#719e07">`</span>order_tbl<span style="color:#719e07">`</span>;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">CREATE</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">`</span>order_tbl<span style="color:#719e07">`</span> (
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>id<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span> AUTO_INCREMENT,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>user_id<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">255</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>commodity_code<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">255</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span><span style="color:#719e07">count</span><span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#2aa198">0</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>money<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#2aa198">0</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">PRIMARY</span> <span style="color:#719e07">KEY</span> (<span style="color:#719e07">`</span>id<span style="color:#719e07">`</span>)
-</span></span><span style="display:flex;"><span>) ENGINE<span style="color:#719e07">=</span>InnoDB <span style="color:#719e07">DEFAULT</span> CHARSET<span style="color:#719e07">=</span>utf8;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">DROP</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">IF</span> <span style="color:#719e07">EXISTS</span> <span style="color:#719e07">`</span>account_tbl<span style="color:#719e07">`</span>;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">CREATE</span> <span style="color:#719e07">TABLE</span> <span style="color:#719e07">`</span>account_tbl<span style="color:#719e07">`</span> (
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>id<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">NOT</span> <span style="color:#719e07">NULL</span> AUTO_INCREMENT,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>user_id<span style="color:#719e07">`</span> <span style="color:#b58900">varchar</span>(<span style="color:#2aa198">255</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#719e07">NULL</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">`</span>money<span style="color:#719e07">`</span> <span style="color:#b58900">int</span>(<span style="color:#2aa198">11</span>) <span style="color:#719e07">DEFAULT</span> <span style="color:#2aa198">0</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">PRIMARY</span> <span style="color:#719e07">KEY</span> (<span style="color:#719e07">`</span>id<span style="color:#719e07">`</span>)
-</span></span><span style="display:flex;"><span>) ENGINE<span style="color:#719e07">=</span>InnoDB <span style="color:#719e07">DEFAULT</span> CHARSET<span style="color:#719e07">=</span>utf8;
-</span></span></code></pre></div><h3 id="step-4-start-seata-server">Step 4: Start Seata-Server</h3>
-<ul>
-<li>Download server <a href="https://github.com/seata/seata/releases">package</a>, unzip it.</li>
-<li>Start Seata-Server</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>Usage: sh seata-server.sh<span style="color:#719e07">(</span><span style="color:#719e07">for</span> linux and mac<span style="color:#719e07">)</span> or cmd seata-server.bat<span style="color:#719e07">(</span><span style="color:#719e07">fo [...]
-</span></span><span style="display:flex;"><span> Options:
-</span></span><span style="display:flex;"><span> --host, -h
-</span></span><span style="display:flex;"><span> The host to bind.
-</span></span><span style="display:flex;"><span> Default: 0.0.0.0
-</span></span><span style="display:flex;"><span> --port, -p
-</span></span><span style="display:flex;"><span> The port to listen.
-</span></span><span style="display:flex;"><span> Default: <span style="color:#2aa198">8091</span>
-</span></span><span style="display:flex;"><span> --storeMode, -m
-</span></span><span style="display:flex;"><span> log store mode : file、db
-</span></span><span style="display:flex;"><span> Default: file
-</span></span><span style="display:flex;"><span> --help
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>e.g.
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>sh seata-server.sh -p <span style="color:#2aa198">8091</span> -h 127.0.0.1 -m file
-</span></span></code></pre></div><h3 id="step-5-run-example">Step 5: Run example</h3>
-<ul>
-<li>Start AccountService (<a href="https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboAccountServiceStarter.java">DubboAccountServiceStarter</a>).</li>
-<li>Start StockService (<a href="https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboStorageServiceStarter.java">DubboStorageServiceStarter</a>).</li>
-<li>Start OrderService (<a href="https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboOrderServiceStarter.java">DubboOrderServiceStarter</a>).</li>
-<li>Run BusinessService for test (<a href="https://github.com/apache/dubbo-integration-cases/blob/master/99-integration/dubbo-samples-transaction/src/main/java/org/apache/dubbo/samples/starter/DubboBusinessTester.java">DubboBusinessTester</a>).</li>
-</ul>
-<h3 id="related-projects">Related projects</h3>
-<ul>
-<li>Seata: <a href="https://github.com/seata/seata">https://github.com/seata/seata</a></li>
-<li>Seata Samples : <a href="https://github.com/seata/seata-samples">https://github.com/seata/seata-samples</a></li>
-</ul></description></item><item><title>Blog: The fifth Dubbo meetup has been held in Hangzhou</title><link>https://dubbo.apache.org/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/</link><pubDate>Mon, 10 Dec 2018 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2018/12/10/the-fifth-dubbo-meetup-has-been-held-in-hangzhou/</guid><description>
-<p>The fifth Dubbo meetup has been held in Hangzhou,</p>
-<p>Please enjoy the slides of the topics:</p>
-<ul>
-<li>Ding Li: How to involve in dubbo community <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/how-to-involve-in-dubbo-community.pdf">slides</a></li>
-<li>Shenli Cao: Dubbo 2.7 introduction <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/dubbo-2.7-introduction.pdf">slides</a></li>
-<li>Tao Yang: Dubbo practice in netease koala <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/dubbo-practice-in-netease-koala.pdf">slides</a></li>
-<li>Mercy Ma: Nacos support in Dubbo <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/nacos-support-in-dubbo.pdf">slides</a></li>
-<li>Yihao Zhao: Sentinel: Sentinel support for Dubbo <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/sentinel-support-for-dubbo.pdf">slides</a></li>
-<li>Zhixuan Chen: Troubleshooting Dubbo with Arthas <a href="https://github.com/dubbo/awesome-dubbo/blob/master/slides/meetup/201812%40hangzhou/troubleshooting-dubbo-with-arthas.pdf">slides</a></li>
-</ul></description></item><item><title>Blog: Dubbo Integrates with Nacos to Become a Registry</title><link>https://dubbo.apache.org/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/</link><pubDate>Wed, 07 Nov 2018 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2018/11/07/dubbo-integrates-with-nacos-to-become-a-registry/</guid><description>
-<p>Nacos is an important registry in Dubbo ecosystem, and dubbo-registry-nacos is the implementation of Dubbo-integrated Nacos registry.</p>
-<h2 id="preparation-works">Preparation Works</h2>
-<p>Before you integrate dubbo-registry-nacos into your Dubbo project, make sure the Nacos service is started in the background. If you are not familiar with the basic use of Nacos, you can refer to the Quick Start for Nacos: <a href="https://nacos.io/en-us/docs/quick-start.html">https://nacos.io/en-us/docs/quick-start.html</a>. Nacos versions above 0.6.1 are recommended.</p>
-<h2 id="get-started-quickly">Get Started Quickly</h2>
-<p>The operation steps for Dubbo to integrate Nacos into a registry are simple, the general steps can be divided into &ldquo;add Maven dependency&rdquo; and &ldquo;configure the registry.&rdquo;</p>
-<h2 id="increase-maven-dependency">Increase Maven Dependency</h2>
-<p>First, you need to add the Maven dependency of dubbo-registry-nacos to your project&rsquo;s pom.xml file, and it is strongly recommended that you use Dubbo 2.6.5:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;dependencies&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Dubbo Nacos registry dependency --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-registry-nacos<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>0.0.2<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Keep latest Nacos client version --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.nacos<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>nacos-client<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>[0.6.1,)<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Dubbo dependency --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>dubbo<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>2.6.5<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Alibaba Spring Context extension --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dependency&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.apache.spring<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>spring-context-support<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;version&gt;</span>1.0.2<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/dependency&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependencies&gt;</span>
-</span></span></code></pre></div><p>When you add dubbo-registry-nacos to your project, you don&rsquo;t need to programmatically implement the service discovery and registration logic, the actual implementation is provided by the third-party package, and then to configure the Naocs registry.</p>
-<h2 id="configure-the-registry">Configure the Registry</h2>
-<p>Assuming your Dubbo application is assembled by the Spring Framework, there are two configuration options: Dubbo Spring externalization configuration and Spring XML configuration files, I strongly recommend the former.</p>
-<h2 id="dubbo-spring-externalization-configuration">Dubbo Spring Externalization Configuration</h2>
-<p>Dubbo Spring externalization configuration is a new feature introduced by Dubbo 2.5.8, which automatically generates and binds Dubbo configuration Bean through the Spring Environment property, simplifying configuration and lowering the threshold for microservice development.</p>
-<p>Assume your Dubbo application uses Zookeeper as the registry and its server IP address is 10.20.153.10, the registered address is also stored in the dubbo-config.properties file as a Dubbo externalization configuration attribute, as shown below:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-properties" data-lang="properties"><span style="display:flex;"><span><span style="color:#586e75">## application</span>
-</span></span><span style="display:flex;"><span>dubbo.application.name <span style="color:#719e07">=</span> <span style="color:#2aa198">your-dubbo-application</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">## Zookeeper registry address</span>
-</span></span><span style="display:flex;"><span>dubbo.registry.address <span style="color:#719e07">=</span> <span style="color:#2aa198">zookeeper://10.20.153.10:2181</span>
-</span></span><span style="display:flex;"><span>...
-</span></span></code></pre></div><p>Assuming your Nacos Server is also running on server 10.20.153.10 and using the default Nacos service port 8848, you can simply adjust the dubbo.registry.address property as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-properties" data-lang="properties"><span style="display:flex;"><span><span style="color:#586e75">## 其他属性保持不变</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">## Nacos registry address</span>
-</span></span><span style="display:flex;"><span>dubbo.registry.address <span style="color:#719e07">=</span> <span style="color:#2aa198">nacos://10.20.153.10:8848</span>
-</span></span><span style="display:flex;"><span>...
-</span></span></code></pre></div><p>Subsequently, restart your Dubbo application, and Dubbo&rsquo;s service delivery and consumption information can be displayed in the Nacos console:</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-registry-nacos-1.png" alt="image-20181213103845976"></p>
-<p>As shown in the figure, the service name prefixed with providers: is the meta-information for the service provider, and consumers: represents the meta-information of the service consumer. Click &ldquo;Details&rdquo; to view service status details:</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-registry-nacos-2.png" alt="image-20181213104145998"></p>
-<p>If you are using the Spring XML configuration file to assemble the Dubbo registry, refer to the next section.</p>
-<h2 id="spring-xml-configuration-file">Spring XML Configuration File</h2>
-<p>Also, assume your Dubbo application uses Zookeeper as the registry and its server IP address is 10.20.153.10 and assemble the Spring Bean in an XML file, as shown below:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#719e07">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> xmlns=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:xsi=<span style="color:#2aa198">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:dubbo=<span style="color:#2aa198">&#34;http://dubbo.apache.org/schema/dubbo&#34;</span>
-</span></span><span style="display:flex;"><span> xsi:schemaLocation=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&#34;</span><span style="color:#268bd2">&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Provider application information for dependency calculation --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;dubbo-provider-xml-demo&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Using the Zookeeper registry Zookeeper --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;zookeeper://10.20.153.10:2181&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span>
-</span></span></code></pre></div><p>Similar to the Dubbo Spring externalization configuration, simply adjust the address property configuration:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#719e07">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> xmlns=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:xsi=<span style="color:#2aa198">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:dubbo=<span style="color:#2aa198">&#34;http://dubbo.apache.org/schema/dubbo&#34;</span>
-</span></span><span style="display:flex;"><span> xsi:schemaLocation=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&#34;</span><span style="color:#268bd2">&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Provider application information for dependency calculation--&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;dubbo-provider-xml-demo&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Using the Nacos registry --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;nacos://10.20.153.10:8848&#34;</span> <span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span>
-</span></span></code></pre></div><p>Once you restart the Dubbo application, you can also see that the registration meta-information for both service providers and consumers is presented in the Nacos console:</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-registry-nacos-3.png" alt="image-20181213113049185"></p>
-<p>Do you absolutely configure or switch Nacos registry super Easy? If you want to get more or unclear, refer to the complete example below.</p>
-<h2 id="complete-example">Complete Example</h2>
-<p>The metadata in the above image is derived from the Dubbo Spring annotation-driven example and the Dubbo Spring XML configuration-driven example, both of which will be described below, you can choose your preferred programming model. Before we get into the formal discussion, let&rsquo;s look at the preparations for both, as they both rely on Java service interfaces and implementations. Also, ensure that the Nacos service is started in the local (127.0.0.1) environment.</p>
-<h3 id="example-interfaces-and-implementations">Example Interfaces and Implementations</h3>
-<p>First, define the sample interface, as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.service;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * DemoService
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> *
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * @since 2.7.4
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">DemoService</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> String <span style="color:#268bd2">sayName</span>(String name);
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Provide implementation classes for the above interfaces:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.service;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.config.annotation.Service;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.rpc.RpcContext;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.beans.factory.annotation.Value;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * Default {@link DemoService}
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> *
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * @since 2.7.4
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@Service</span>(version <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;${demo.service.version}&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DefaultService</span> <span style="color:#268bd2">implements</span> DemoService {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Value</span>(<span style="color:#2aa198">&#34;${demo.service.name}&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> String serviceName;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> String <span style="color:#268bd2">sayName</span>(String name) {
-</span></span><span style="display:flex;"><span> RpcContext rpcContext <span style="color:#719e07">=</span> RpcContext.getContext();
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">return</span> String.format(<span style="color:#2aa198">&#34;Service [name :%s , port : %d] %s(\&#34;%s\&#34;) : Hello,%s&#34;</span>,
-</span></span><span style="display:flex;"><span> serviceName,
-</span></span><span style="display:flex;"><span> rpcContext.getLocalPort(),
-</span></span><span style="display:flex;"><span> rpcContext.getMethodName(),
-</span></span><span style="display:flex;"><span> name,
-</span></span><span style="display:flex;"><span> name);
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Once the interface and implementation are ready, the annotation-driven and XML configuration-driven implementations will be used below.</p>
-<h2 id="spring-annotation-driven-example">Spring Annotation-driven Example</h2>
-<p>Dubbo 2.7.4 reconstructs the Spring annotation-driven programming model.</p>
-<h3 id="service-provider-annotation-driven-implementation">Service Provider Annotation-driven Implementation</h3>
-<ul>
-<li>Define property source of Dubbo provider externalization configuration - provider-config.properties</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-properties" data-lang="properties"><span style="display:flex;"><span><span style="color:#586e75">## application</span>
-</span></span><span style="display:flex;"><span>dubbo.application.name <span style="color:#719e07">=</span> <span style="color:#2aa198">dubbo-provider-demo</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">## Nacos registry address</span>
-</span></span><span style="display:flex;"><span>dubbo.registry.address <span style="color:#719e07">=</span> <span style="color:#2aa198">nacos://127.0.0.1:8848</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">## Dubbo Protocol</span>
-</span></span><span style="display:flex;"><span>dubbo.protocol.name <span style="color:#719e07">=</span> <span style="color:#2aa198">dubbo</span>
-</span></span><span style="display:flex;"><span>dubbo.protocol.port <span style="color:#719e07">=</span> <span style="color:#2aa198">-1</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75"># Provider @Service version</span>
-</span></span><span style="display:flex;"><span>demo.service.version<span style="color:#719e07">=</span><span style="color:#2aa198">1.0.0</span>
-</span></span><span style="display:flex;"><span>demo.service.name <span style="color:#719e07">=</span> <span style="color:#2aa198">demoService</span>
-</span></span></code></pre></div><ul>
-<li>Implement service provider bootstrap - DemoServiceProviderBootstrap</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.provider;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.demo.service.DemoService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.annotation.AnnotationConfigApplicationContext;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.annotation.PropertySource;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> java.io.IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * {@link DemoService} provider demo
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@EnableDubbo</span>(scanBasePackages <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;org.apache.dubbo.demo.service&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@PropertySource</span>(value <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;classpath:/provider-config.properties&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoServiceProviderBootstrap</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">static</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">main</span>(String<span style="color:#719e07">[]</span> args) <span style="color:#268bd2">throws</span> IOException {
-</span></span><span style="display:flex;"><span> AnnotationConfigApplicationContext context <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> AnnotationConfigApplicationContext();
-</span></span><span style="display:flex;"><span> context.register(DemoServiceProviderBootstrap.class);
-</span></span><span style="display:flex;"><span> context.refresh();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;DemoService provider is starting...&#34;</span>);
-</span></span><span style="display:flex;"><span> System.in.read();
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Wherein, the annotation @EnableDubbo activates the Dubbo annotation-driven and externalization configuration, its scanBasePackages property scans the specified Java package, exposes all service interface implementation classes labeled @Service as Spring Bean, and then exports the Dubbo service.</p>
-<p>@PropertySource is the standard import property configuration resource annotation introduced by Spring Framework 3.1, which provides externalization configuration for Dubbo.</p>
-<h2 id="service-consumer-annotation-driven-implementation">Service consumer annotation-driven implementation</h2>
-<ul>
-<li>Define property source of Dubbo consumer externalization configuration - consumer-config.properties</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-properties" data-lang="properties"><span style="display:flex;"><span><span style="color:#586e75">## Dubbo Application info</span>
-</span></span><span style="display:flex;"><span>dubbo.application.name <span style="color:#719e07">=</span> <span style="color:#2aa198">dubbo-consumer-demo</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">## Nacos registry address</span>
-</span></span><span style="display:flex;"><span>dubbo.registry.address <span style="color:#719e07">=</span> <span style="color:#2aa198">nacos://127.0.0.1:8848</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75"># @Reference version</span>
-</span></span><span style="display:flex;"><span>demo.service.version<span style="color:#719e07">=</span> <span style="color:#2aa198">1.0.0</span>
-</span></span></code></pre></div><p>Similarly, the dubbo.registry.address property points to the Nacos registry, through which metadata about other Dubbo services is obtained.</p>
-<ul>
-<li>Implement service consumer bootstrap class - DemoServiceConsumerBootstrap</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.consumer;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.config.annotation.Reference;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.demo.service.DemoService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.annotation.AnnotationConfigApplicationContext;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.annotation.PropertySource;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> javax.annotation.PostConstruct;
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> java.io.IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * {@link DemoService} consumer demo
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@EnableDubbo</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">@PropertySource</span>(value <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;classpath:/consumer-config.properties&#34;</span>)
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoServiceConsumerBootstrap</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Reference</span>(version <span style="color:#719e07">=</span> <span style="color:#2aa198">&#34;${demo.service.version}&#34;</span>)
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">private</span> DemoService demoService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@PostConstruct</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">init</span>() {
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (<span style="color:#dc322f">int</span> i <span style="color:#719e07">=</span> 0; i <span style="color:#719e07">&lt;</span> 10; i<span style="color:#719e07">++</span>) {
-</span></span><span style="display:flex;"><span> System.out.println(demoService.sayName(<span style="color:#2aa198">&#34;小马哥(mercyblitz)&#34;</span>));
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">static</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">main</span>(String<span style="color:#719e07">[]</span> args) <span style="color:#268bd2">throws</span> IOException {
-</span></span><span style="display:flex;"><span> AnnotationConfigApplicationContext context <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> AnnotationConfigApplicationContext();
-</span></span><span style="display:flex;"><span> context.register(DemoServiceConsumerBootstrap.class);
-</span></span><span style="display:flex;"><span> context.refresh();
-</span></span><span style="display:flex;"><span> context.close();
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p>Similarly, the @EnableDubbo annotation activates the Dubbo annotation-driven and externalization configuration, although it currently belongs to the service consumer and does not require the Java package name to scan the service implementation labeled @Service.</p>
-<p>@Reference is a dependency injection annotation for Dubbo remote services that requires service provider and consumer contract interface, version, and group information. In the current service consumption example, the service version of DemoService is derived from the property configuration file consumer-config.properties.</p>
-<p>The @PostConstruct code shows that when the DemoServiceConsumerBootstrap Bean is initialized, it executes ten Dubbo remote method invocation.</p>
-<h3 id="run-the-annotation-driven-example">Run the Annotation-driven Example</h3>
-<p>Start DemoServiceProviderBootstrap twice locally and the registry will have two health services:</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-registry-nacos-4.png" alt="image-20181213123909636"></p>
-<p>Run DemoServiceConsumerBootstrap again and the results are as follows:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Service [name :demoService , port : 20880] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20881] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20880] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20880] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20881] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20881] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20880] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20880] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20881] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :demoService , port : 20881] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span></code></pre></div><p>Run correctly and the service consumer uses a load balancing strategy to allocate ten RPC calls equally to two Dubbo service provider instances.</p>
-<h3 id="spring-xml-configuration-driven-example">Spring XML Configuration-driven Example</h3>
-<p>Spring XML configuration-driven is the programming model of traditional Spring assembly components.</p>
-<h4 id="service-provider-xml-configuration-driven">Service Provider XML Configuration-driven</h4>
-<p>Define the service provider XML context configuration file - /META-INF/spring/dubbo-provider-context.xml</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#719e07">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> xmlns=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:xsi=<span style="color:#2aa198">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:dubbo=<span style="color:#2aa198">&#34;http://dubbo.apache.org/schema/dubbo&#34;</span>
-</span></span><span style="display:flex;"><span> xsi:schemaLocation=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&#34;</span><span style="color:#268bd2">&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!--
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75">
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75">Provider application information for dependency calculation
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;dubbo-provider-xml-demo&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Using the Nacos registry --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;nacos://127.0.0.1:8848&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Using Dubbo protocol to expose services on random ports --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:protocol</span> name=<span style="color:#2aa198">&#34;dubbo&#34;</span> port=<span style="color:#2aa198">&#34;-1&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Declare the service interface to be exposed --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:service</span> interface=<span style="color:#2aa198">&#34;org.apache.dubbo.demo.service.DemoService&#34;</span> ref=<span style="color:#2aa198">&#34;demoService&#34;</span> version=<span style="color:#2aa198">&#34;2.0.0&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Implement services like local beans --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;bean</span> id=<span style="color:#2aa198">&#34;demoService&#34;</span> class=<span style="color:#2aa198">&#34;org.apache.dubbo.demo.service.DefaultService&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span>
-</span></span></code></pre></div><ul>
-<li>Implement service provider bootstrap class - DemoServiceProviderBootstrap</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.provider;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.demo.service.DemoService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.support.ClassPathXmlApplicationContext;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> java.io.IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * {@link DemoService} provider demo XML bootstrap
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoServiceProviderXmlBootstrap</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">static</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">main</span>(String<span style="color:#719e07">[]</span> args) <span style="color:#268bd2">throws</span> IOException {
-</span></span><span style="display:flex;"><span> ClassPathXmlApplicationContext context <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ClassPathXmlApplicationContext();
-</span></span><span style="display:flex;"><span> context.setConfigLocation(<span style="color:#2aa198">&#34;/META-INF/spring/dubbo-provider-context.xml&#34;</span>);
-</span></span><span style="display:flex;"><span> context.refresh();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;DemoService provider (XML) is starting...&#34;</span>);
-</span></span><span style="display:flex;"><span> System.in.read();
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h4 id="service-consumer-xml-configuration-driven">Service Consumer XML Configuration-driven</h4>
-<p>Define the consumer provider XML context configuration file - /META-INF/spring/dubbo- consumer-context.xml</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#719e07">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;beans</span> xmlns=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:xsi=<span style="color:#2aa198">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
-</span></span><span style="display:flex;"><span> xmlns:dubbo=<span style="color:#2aa198">&#34;http://dubbo.apache.org/schema/dubbo&#34;</span>
-</span></span><span style="display:flex;"><span> xsi:schemaLocation=<span style="color:#2aa198">&#34;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd&#34;</span><span style="color:#268bd2">&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!--
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75">
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75">Provider application information for dependency calculation
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:application</span> name=<span style="color:#2aa198">&#34;dubbo-consumer-xml-demo&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Using the Nacos registry--&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:registry</span> address=<span style="color:#2aa198">&#34;nacos://127.0.0.1:8848&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- Reference service interface --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;dubbo:reference</span> id=<span style="color:#2aa198">&#34;demoService&#34;</span> interface=<span style="color:#2aa198">&#34;org.apache.dubbo.demo.service.DemoService&#34;</span> version=<span style="color:#2aa198">&#34;2.0.0&#34;</span><span style="color:#268bd2">/&gt;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/beans&gt;</span>
-</span></span></code></pre></div><ul>
-<li>Implement service consumer bootstrap class - DemoServiceConsumerBootstrap</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#719e07">package</span> org.apache.dubbo.demo.consumer;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.apache.dubbo.demo.service.DemoService;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> org.springframework.context.support.ClassPathXmlApplicationContext;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">import</span> java.io.IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">/**
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> * {@link DemoService} consumer demo XML bootstrap
-</span></span></span><span style="display:flex;"><span><span style="color:#586e75"> */</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">class</span> <span style="color:#268bd2">DemoServiceConsumerXmlBootstrap</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">public</span> <span style="color:#268bd2">static</span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">main</span>(String<span style="color:#719e07">[]</span> args) <span style="color:#268bd2">throws</span> IOException {
-</span></span><span style="display:flex;"><span> ClassPathXmlApplicationContext context <span style="color:#719e07">=</span> <span style="color:#719e07">new</span> ClassPathXmlApplicationContext();
-</span></span><span style="display:flex;"><span> context.setConfigLocation(<span style="color:#2aa198">&#34;/META-INF/spring/dubbo-consumer-context.xml&#34;</span>);
-</span></span><span style="display:flex;"><span> context.refresh();
-</span></span><span style="display:flex;"><span> System.out.println(<span style="color:#2aa198">&#34;DemoService consumer (XML) is starting...&#34;</span>);
-</span></span><span style="display:flex;"><span> DemoService demoService <span style="color:#719e07">=</span> context.getBean(<span style="color:#2aa198">&#34;demoService&#34;</span>, DemoService.class);
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">for</span> (<span style="color:#dc322f">int</span> i <span style="color:#719e07">=</span> 0; i <span style="color:#719e07">&lt;</span> 10; i<span style="color:#719e07">++</span>) {
-</span></span><span style="display:flex;"><span> System.out.println(demoService.sayName(<span style="color:#2aa198">&#34;小马哥(mercyblitz)&#34;</span>));
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span> context.close();
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><h4 id="run-xml-configuration-driven-example">Run XML Configuration-driven Example</h4>
-<p>As such, start two DemoServiceProviderXmlBootstrap bootstraps and observe the changes in the Nacos registry service provider:</p>
-<p><img src="https://dubbo.apache.org/imgs/blog/dubbo-registry-nacos-5.png" alt="image-20181213125527201"></p>
-<p>The service version driven by the XML configuration is 2.0.0, so the registration service is correct.</p>
-<p>Run the service consumer bootstrap DemoServiceConsumerXmlBootstrap again and observe the console output:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Service [name :null , port : 20882] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20882] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20883] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20882] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20882] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20883] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20882] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20883] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20883] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span><span style="display:flex;"><span>Service [name :null , port : 20883] sayName(&#34;小马哥(mercyblitz)&#34;) : Hello,小马哥(mercyblitz)
-</span></span></code></pre></div><p>As a result, both operation and load balancing are normal due to the property demo.service.name has not been added to the current example, the &ldquo;name&rdquo; information is output as null. For more information, please refer to: <a href="https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos">https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos</a>.</p>
-<p>If you&rsquo;re interested in or fond of open source projects like Dubbo and Nacos, try clicking &ldquo;star&rdquo; to support them. The links are as follows:</p>
-<ul>
-<li>Apache Dubbo: <a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo</a></li>
-<li>Dubbo Nacos Registry: <a href="https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos">https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos</a></li>
-<li>Alibaba Nacos: <a href="https://github.com/alibaba/nacos">https://github.com/alibaba/nacos</a></li>
-</ul></description></item><item><title>Blog: Introduction to the Dubbo protocol</title><link>https://dubbo.apache.org/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/</link><pubDate>Fri, 05 Oct 2018 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2018/10/05/introduction-to-the-dubbo-protocol/</guid><description>
-<h2 id="the-concept-of-the-protocol">The concept of the protocol</h2>
-<p>The protocol is the foundation of communication between two network entities, and data is transmitted from one entity to another in the form of a byte stream over the network. In the world of byte streams, this one-dimensional byte stream cannot be reshaped into two-dimensional or multi-dimensional data structures and domain objects without a protocol.</p>
-<h3 id="what-is-the-protocol">What is the protocol</h3>
-<p>The protocol is the semantics determined by both parties for the communication. For example, we design a protocol for string transmission, which allows the client to send a string and the server receives the corresponding string.</p>
-<p>This protocol is quite simple, first 4-byte represent the total length of the message, followed by 1-byte represents the length of the charset, and then followed by the message payload, charset name and string body.</p>
-<p>For example, Send a string <code>abc</code> encoded by <code>iso-8859-1</code> to the server end. After protocol trans-coding, the content is: <code>18 = 4 + 1 + 10 + 3|10|iso-8859-1|abc</code>, when the server receives these byte streams, it first reads 4-byte and converts it to int, in this case is 18, which is the length of message. Then continue to read the remaining 14 bytes, the remaining first byte read will be the length of the charset name, which is 10, t [...]
-<p>In the previous example of a custom string transfer protocol, we have already seen the role of protocols in data transmission. Without a protocol, the data exchange cannot be completed. The following is Wikipedia&rsquo;s definition of the communication protocol.</p>
-<blockquote>
-<p>In telecommunication, a communication protocol is a system of rules that allow two or more entities of a communications system to transmit information via any kind of variation of a physical quantity. The protocol defines the rules syntax, semantics and synchronization of communication and possible error recovery methods. Protocols may be implemented by hardware, software, or a combination of both.</p>
-</blockquote>
-<p>Communication protocols need to define syntax, semantics, and communication synchronization operations. The content described here is actually a formal description of the previous custom string transfer protocol.</p>
-<h3 id="the-definition-of-codec">The definition of <code>Codec</code></h3>
-<p><code>org.apache.dubbo.remoting.Codec2</code> define the <strong>Codec</strong>&rsquo;s I/O processing, so the main methods are <code>encode</code> and <code>decode</code>, as defined below:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-java" data-lang="java"><span style="display:flex;"><span><span style="color:#268bd2">@SPI</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">public</span> <span style="color:#268bd2">interface</span> <span style="color:#268bd2">Codec2</span> {
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Adaptive</span>({Constants.CODEC_KEY})
-</span></span><span style="display:flex;"><span> <span style="color:#dc322f">void</span> <span style="color:#268bd2">encode</span>(Channel channel, ChannelBuffer buffer, Object message) <span style="color:#268bd2">throws</span> IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">@Adaptive</span>({Constants.CODEC_KEY})
-</span></span><span style="display:flex;"><span> Object <span style="color:#268bd2">decode</span>(Channel channel, ChannelBuffer buffer) <span style="color:#268bd2">throws</span> IOException;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">enum</span> DecodeResult {
-</span></span><span style="display:flex;"><span> NEED_MORE_INPUT, SKIP_SOME_INPUT
-</span></span><span style="display:flex;"><span> }
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>}
-</span></span></code></pre></div><p><code>Codec</code> works on a protocol, <code>encode</code> method means to encode the communication object to the <code>ByteBufferWrapper</code>, and <code>decode</code> method decodes the <code>ChannelBuffer</code> read from the network into <code>Object</code>, which is the communication object.</p>
-<h2 id="common-protocol-mode">Common protocol mode</h2>
-<p>Protocols in application layer have three general forms: fixed-length protocol, special delimiter protocol and protocol header + payload mode. The specific contents of these forms are described below.</p>
-<p>When reading data from the network in the form of a byte stream, it is necessary to determine when a meaningful transmission content ends. Moreover, the transmission of data on the network, there are sticky packets and fragment packets problem. The solution to this problem is that the protocol can accurately identify, when the sticky packets or fragment packets occurs, it can handle it correctly.</p>
-<h3 id="fixed-length-protocol">Fixed-length protocol</h3>
-<p>The fixed-length protocol means that the length of the protocol content is fixed. For example, the protocol byte length is 50. When 50 bytes are read from the network, the decoding operation is performed. The fixed-length protocol is more efficient when reading or writing, because the size of the data cache is basically determined, just like an array. The defect is the lack of adaptability. Taking the RPC scene as an example, it is difficult to estimate the length.</p>
-<blockquote>
-<p>Refer to Netty&rsquo;s <code>FixedLengthFrameDecoder</code></p>
-</blockquote>
-<h3 id="special-delimiter-protocol">Special delimiter protocol</h3>
-<p>Compared to fixed-length protocols, if we can define a special character as the end of each protocol unit, we can communicate in a variable length, so as to balance the data transmission and efficiency, such as the delimiter \n.</p>
-<p>The problem with the special delimiter method is that it think about the process of protocol transmission in a simple way. For a protocol unit, it must be read all before it can be processed. In addition, it must be prevented that the data transmitted by the user cannot be the same as the delimiter, otherwise it will be disordered.</p>
-<blockquote>
-<p>Refer to Netty&rsquo;s <code>DelimiterBasedFrameDecoder</code></p>
-</blockquote>
-<h3 id="variable-length-protocolprotocol-head--payload">Variable length protocol(protocol head + payload)</h3>
-<p>Generally, it is a custom protocol, which is composed of a fixed length and a variable content. The fixed length part needs to specify the length of the variable content part.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>+————————————————+
-</span></span><span style="display:flex;"><span>|fixed-length |
-</span></span><span style="display:flex;"><span>+————————————————+
-</span></span><span style="display:flex;"><span>|variable content|
-</span></span><span style="display:flex;"><span>+————————————————+
-</span></span></code></pre></div><blockquote>
-<p>Refer to Netty&rsquo;s <code>LengthFieldBasedFrameDecoder</code></p>
-</blockquote>
-<p>The Dubbo protocol is actually a variable length protocol, which is covered in more detail in later chapters.</p>
-<h2 id="the-dubbo-protocol">The Dubbo protocol</h2>
-<h3 id="overview-to-the-dubbo-protocol">Overview to the Dubbo protocol</h3>
-<p>The Dubbo framework defines a proprietary RPC protocol in which the specific content of the request and response protocols is presented using a table.</p>
-<p><img src="https://dubbo.apache.org/imgs/dev/dubbo_protocol_header.png" alt="/dev-guide/images/dubbo_protocol_header.jpg"></p>
-<h3 id="dubbo-protocol-details">Dubbo protocol details</h3>
-<ul>
-<li>
-<p>Magic - Magic High &amp; Magic Low (16 bits)</p>
-<p>Identify protocol version, Dubbo protocol: 0xdabb</p>
-</li>
-<li>
-<p>Req/Res (1 bit)</p>
-<p>Identify a request or response. request: 1; response: 0.</p>
-</li>
-<li>
-<p>2 Way (1 bit)</p>
-<p>Only useful when Req/Res is 1(request), identifying if you expect to return a value from the server. Set to 1 if a return value from the server is required.</p>
-</li>
-<li>
-<p>Event (1 bit)</p>
-<p>Identifies whether it is an event message, for example, a heartbeat event. Set to 1 if this is an event.</p>
-</li>
-<li>
-<p>Serialization ID (5 bit)</p>
-<p>Identifies the serialization type: for example, the value of fastjson is 6.</p>
-</li>
-<li>
-<p>Status (8 bits)</p>
-<p>Only useful when Req/Res is 0 (response), used to identify the status of the response</p>
-<ul>
-<li>20 - OK</li>
-<li>30 - CLIENT_TIMEOUT</li>
-<li>31 - SERVER_TIMEOUT</li>
-<li>40 - BAD_REQUEST</li>
-<li>50 - BAD_RESPONSE</li>
-<li>60 - SERVICE_NOT_FOUND</li>
-<li>70 - SERVICE_ERROR</li>
-<li>80 - SERVER_ERROR</li>
-<li>90 - CLIENT_ERROR</li>
-<li>100 - SERVER_THREADPOOL_EXHAUSTED_ERROR</li>
-</ul>
-</li>
-<li>
-<p>Request ID (64 bits)</p>
-<p>Identifies the only request, the type is long.</p>
-</li>
-<li>
-<p>Data Length (32 bits)</p>
-<p>The length of the serialized content (variable part), counted in bytes, the type is int.</p>
-</li>
-<li>
-<p>Variable Part</p>
-<p>After being serialized by a specific serialization type (identified by the serialization ID), each part is a byte [] or byte.</p>
-<ul>
-<li>If it is a request packet (Req/Res = 1), each part is:
-<ul>
-<li>Dubbo version</li>
-<li>Service name</li>
-<li>Service version</li>
-<li>Method name</li>
-<li>Method parameter types</li>
-<li>Method arguments</li>
-<li>Attachments</li>
-</ul>
-</li>
-<li>If it is a response packet (Req/Res = 0), each part is:
-<ul>
-<li>Return value&rsquo;s type (byte), identifying the type of value returned from the server:
-<ul>
-<li>Return null: RESPONSE_NULL_VALUE 2</li>
-<li>Normal response value: RESPONSE_VALUE 1</li>
-<li>Exception: RESPONSE_WITH_EXCEPTION 0</li>
-</ul>
-</li>
-<li>Return value: response bytes returned from the server</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-<p><strong>Note:</strong> For the variable part, when uses json serialization in current version of Dubbo framework, an additional line break is added as a separator between each part of the content. Please add a new line break after each part of the variable part, such as:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>Dubbo version bytes (line break)
-</span></span><span style="display:flex;"><span>Service name bytes (line break)
-</span></span><span style="display:flex;"><span>...
-</span></span></code></pre></div><h2 id="advantages-and-disadvantages-about-the-dubbo-protocol">Advantages and disadvantages about the Dubbo protocol</h2>
-<h3 id="advantages">Advantages</h3>
-<ul>
-<li>The protocol is designed to be very compact. The data type can be represented by 1 bit will not be represented by a byte, such as a boolean type identifier.</li>
-<li>The request header is the same as response header, and the specific content is assembled to the variable part through the serializer, and it is simple to implement.</li>
-</ul>
-<h3 id="to-be-improved">To be improved</h3>
-<ul>
-<li>
-<p>Similar to the http request, the header can determine the resource to be accessed, and Dubbo needs to involve the specific serializer to resolve the service name, method, method signature, and these resource locators are string type or string array. It&rsquo;s easy to convert to bytes, so it can be assembled into the header. Similar to http2 header compression, resources called for rpc can also be negotiated with an int to identify, which improves performance. This is easier to [...]
-</li>
-<li>
-<p>Use req/res to determine if it is a request, then you can refine the protocol, remove some unwanted identifiers and add some specific identifiers. For example, <code>status</code>, <code>twoWay</code> can be strictly customized to remove redundant identifiers. There is also a timeout identifier that is transmitted as the <code>attachment</code> of the Dubbo. In theory, it should be placed in the header of the request protocol, because the timeout is essential in t [...]
-</li>
-<li>
-<p>Dubbo will convert the service name <code>com.alibaba.middleware.hsf.guide.api.param.ModifyOrderPriceParam</code> to <code>Lcom/alibaba/middleware/hsf/guide/api/param/ModifyOrderPriceParam;</code>, which is theoretically unnecessary, simply append a <code>;</code> will be fine.</p>
-</li>
-<li>
-<p>The Dubbo protocol does not reserve extension fields, and cannot add new identifiers. The scalability is not very good. For example, the only way to add the <code>response context</code> function is to change the protocol version, but this requires both the client and server versions to be upgraded. Very unfriendly in distributed scenarios.</p>
-</li>
-</ul>
-<h2 id="conclusion">Conclusion</h2>
-<p>This article mainly introduces the concept of the protocol and the commonly used protocol mode. Then it analyzes the Dubbo protocol in detail and also mentions some shortcomings. However, compared with its simplicity and ease of implementation, the above shortcomings are not enough to drive us to redesign a new version of the protocol, so we welcome suggestions and features for protocol optimization.</p></description></item><item><title>Blog: Integrate Dubbo with Kubernetes</tit [...]
-<h1 id="general-goal">General goal</h1>
-<p>Dubbo&rsquo;s provider don&rsquo;t care about service registration.Open its Dubbo service port,the declaration and publishment of the service will be executed by Kubernetes.
-Dubbo&rsquo;s consumer directly discovers the corresponding service endpoints of Kubernetes during service discovery procedure, thereby reusing Dubbo&rsquo;s existing microservice channel capabilities.The benefit is that there is no need to rely on any third-party soft-loaded registry and it can be seamlessly integrated into the multi-tenant security system of Kubernetes. Reference demo : <a href="https://github.com/dubbo/dubbo-Kubernetes">https://github.com/dubbo/dubbo-uberne [...]
-<h1 id="introduction">Introduction</h1>
-<p>Kubernates is a hierarchical system with rich secondary development function based on the expansibility.</p>
-<ul>
-<li>First of all, Kubernates&rsquo;s core function is to manage the container cluster. Kubernates manages the storage and calculation of containerized cluster, based on the container runtime (CRI), network interface (CNI) and storage service interface (CSI/FV).</li>
-<li>Secondly,Kubernates has application-oriented deployment and routing capabilities,including statefulness/statelessness,batch processing and service-oriented applications,especially the application management based on microservices architecture which includes service discovery,service definition and unified configuration on the basis of configmap.</li>
-<li>Finally, on top of the abstract model of the basic resource (mainly the resources of abstract infrastructure, IaaS) and the application layer is the governance layer, which includes elastic expansion, namespaces/tenants and so on. Naturally, it is a matter of course to set up service about unified log center and omnidirectional monitoring on the Kubernetes based upon the foundational capabilities of atomic inner core.</li>
-</ul>
-<p>We will explain the above description with a diagram of Kubernetes Architecture. In 2018, Kubernetes took a qualitative step toward the standard PaaS basement.Someone hold opinions that the reason is the ability for secondary development on the basis of the expansion and someone think the key is declarative programming and strong community operations relying on Google and Redhat. However,I think the essential reason is Layered architecture and the abstract domain modeling in the pr [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/k8s/1.png" alt="img"></p>
-<p>From a micro-service architecture perspective, Kubernetes is a micro-service framework (more appropriate than a micro-service platform or toolkit set at this time) in a sense, supporting the basic capabilities of microservices for service discovery/registration. Use the following table to make a brief description.</p>
-<table>
-<thead>
-<tr>
-<th style="text-align:left">The design of microservice</th>
-<th style="text-align:left">The function of Kubernetes</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td style="text-align:left">Point 1:API gateway</td>
-<td style="text-align:left">Ingress</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 2:Statelessness, distinguish between stateful and stateless applications</td>
-<td style="text-align:left">Stateless corresponds to Deployment,and stateful corresponds to StatefulSet</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 3:Horizontal expansion of the database</td>
-<td style="text-align:left">Headless service points to PaaS service or StatefulSet deployment</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 4:Cache</td>
-<td style="text-align:left">Headless service points to PaaS service or StatefulSet deployment</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 5:Service splitting and service discovery</td>
-<td style="text-align:left">Service</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 6:Service orchestration and flexibility</td>
-<td style="text-align:left">Replicas of deployment</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 7:Unified configuration center</td>
-<td style="text-align:left">ConfigMap</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 8:Unified log center</td>
-<td style="text-align:left">DaemonSet deploys log agent</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 9:Circut break, current limiting and downgrade</td>
-<td style="text-align:left">Service Mesh</td>
-</tr>
-<tr>
-<td style="text-align:left">Point 10:Comprehensive monitoring</td>
-<td style="text-align:left">Cadsivor, DaemonSet deploys and monitors Agent</td>
-</tr>
-</tbody>
-</table>
-<p>By the way, the microservices field involves many issues, which can be explained as follows. When building microservices, we will delve into Distributed System, a discipline has a 40-year research background and is rooted in the adaptive system theory. It&rsquo;s a bit complicated, but the concepts it covers are more or less heard for us, and it solves problems that we&rsquo;re familiar with:</p>
-<ul>
-<li>Deployment</li>
-<li>Delivery</li>
-<li>APIs</li>
-<li>Versioning</li>
-<li>Contracts</li>
-<li>Scaling / Autoscaling</li>
-<li>Service Discovery</li>
-<li>Load Balancing</li>
-<li>Routing / Adaptive Routing</li>
-<li>Health Checking</li>
-<li>Configuration</li>
-<li>Circuit Breaking</li>
-<li>Bulk-heads</li>
-<li>TTL / Deadlining</li>
-<li>Latency Tracing</li>
-<li>Service Causal Tracing</li>
-<li>Distributed logging</li>
-<li>Metrics Exposure, Collection</li>
-</ul>
-<p>For Kubernetes, only a few of problems are solved. Problems such as Dynamic Routing, Stability Control (Circuit Breaking, Bulk-heads, etc.) , Distributed Service Tracking, etc. are all the blank. These problems are exactly what Service Mesh needs to solve, and these also plays an important role in CNCF&rsquo;s Tail Map. Of course, as Dubbo is a basically complete microservices infrastructure (Dubbo is based on the Sidecar which is a common solution for solving cross-language cl [...]
-<blockquote>
-<p><span data-type="color" style="color:rgb(119, 119, 119)"><span data-type="background" style="background-color:rgb(255, 255, 255)">A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It's responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application.</span></span></p>
-</blockquote>
-<p>We will know the existing solution, Dubbo integrates the Clould Native Equipment - Kubernetes&rsquo;s basic abilities to solve the microservices&rsquo;s core problems, can be regarded as a Service Mesh solution in a narrow sense, but it can only be used in the Java field. You can understand the above words as a joke, haha.</p>
-<h1 id="tspan-data-typecolor-stylecolorrgb51-51-51span-data-typebackground-stylebackground-colorrgb255-255-255houghtspanspanplan">T<span data-type="color" style="color:rgb(51, 51, 51)"><span data-type="background" style="background-color:rgb(255, 255, 255)">hought</span></span>/Plan</h1>
-<p>Kubernetes is a natural address registration center for microservices, similar to zookeeper, VIPserver and Configserver used internally by Alibaba. Specifically, the Pod in Kubernetes is a running instance of the application. The scheduled deployment/start/stop of the Pod will call the API-Server service to maintain its state to ETCD. The service in Kubernetes is coresponded to the concept of the microservices defined as follows.</p>
-<blockquote>
-<p>A Kubernetes Service is an abstraction layer which defines a logical set of Pods and enables external traffic exposure, load balancing and service discovery for those Pods.</p>
-</blockquote>
-<p>In conclusion, the Kubernetes service has the following characteristics:</p>
-<ul>
-<li>Each Service has a unique name and corresponding IP. IP is automatically assigned by Kubernetes and the name is defined by the developer.</li>
-<li>Service IP has several manifestations: ClusterIP, NodePort, LoadBalance and Ingress. ClusterIP is mainly used for intra-cluster communication; NodePort, Ingress and LoadBalance, which are used to expose services to access portals outside the cluster.</li>
-</ul>
-<p>At first sight, the service of Kubernetes has its own IP, while under the original fixed mindset: Dubbo/HSF service is aggregated by the IP of the entire service cluster, that means, Kubernetes and Dubbo/HSF look like something different in natural, but when carefully thinking, the difference becomes insignificant. Because the only IP under Kubernetes is just a Virtural IP&ndash;VIP, behind the vip are multiple endpoints, which is the factual processing node.</p>
-<p>Here we only discuss the situation that the Dubbo service in the cluster is accessed in the same Kubernetes cluster, As for the provider outside Kubernetes to access the provider in Kubernetes, since it involves the problem of network address space, and it usually requires GateWay/loadbalance for mapping conversion, which there not detail discussion for this case. Besides, there are two options available for Kubernetes:</p>
-<ol>
-<li>
-<p>DNS: The default Kubernetes service is based on the DNS plugin (The latest version of the recommendation is coreDNS), one proposal on Dubbo is about this. since HSF/Dubbo has always highlighted its soft-load address discovery capability, it ignores Static&rsquo;s strategy insteadily, my understanding is that as a service discovery mechanism, the static resolution mechanism is one of the simplest and most needed to support mechanism, you can also refer to Envoy&rsquo;s poin [...]
-<p><img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1Kj1ktpkoBKNjSZFEXXbrEVXa-985-213.png" alt="img"></p>
-</li>
-<li>
-<p>API:DNS relies on the DNS plugin, which will generate additional operation, so consider directly obtaining the endpoint through the client of Kubernetes. In fact, by accessing the API server interface of Kubernetes, you can directly obtain the list of endpoints behind a certain servie, and can also monitor the changes in its address list. Thereby implementing the soft load discovery strategy recommended by Dubbo/HSF. Refer to the code for details:</p>
-</li>
-</ol>
-<p>The above two thoughts need to consider the following two points:</p>
-<ol>
-<li>Kubernetes and Dubbo are consistent with the mapping name of service. Dubbo&rsquo;s service is determined by serviename, group, version to determine its uniqueness, and servicename generally has a longer package name for its service interface. Need to map the servie name of Kubernetes and the service name of dubbo. Either add a property like SOFA to define it. This is a big change, but it is most reasonable. Or it is a fixed rule to reference the deployed environment variables [...]
-<li>Port problem:The default Pod and Pod network interoperability is solved, need to be validated.</li>
-</ol>
-<h2 id="demo-verification">Demo Verification</h2>
-<p>The following is a demo deployment through Kubernetes service in Alibaba Cloud&rsquo;s Container Registry and EDAS. Visit Alibaba Cloud -》Container Registry.</p>
-<ol>
-<li>
-<p>Create repo and bind the github codebase. As shown below.
-<img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1m.tEtrorBKNjSZFjXXc_SpXa-1892-870.png" alt="img"></p>
-</li>
-<li>
-<p>Click Manage enter the repository details page. Click Build in images service panel, construct the demo into image and publish it to the specified repository. As shown below.
-<img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1oYqvtcIrBKNjSZK9XXagoVXa-1872-888.png" alt="img"></p>
-</li>
-<li>
-<p>Switch to Enterprise Distributed Application Services (EDAS) products panel, visit Resource Management -&gt; Clusters. Create Kubernetes cluster and bind ECS. As shown below.
-<img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1b1p2trZnBKNjSZFKXXcGOVXa-1858-833.png" alt="img"></p>
-</li>
-<li>
-<p>Application Management -&gt; Create application, type Kubernetes application and specify the image in the container registry . As shown below.
-<img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1_YywtDCWBKNjSZFtXXaC3FXa-1737-588.png" alt="img"></p>
-<p><img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB18uzTtdcnBKNjSZR0XXcFqFXa-1820-861.png" alt="img"></p>
-</li>
-<li>
-<p>After creation , then deploy applications. As shown below.
-<img src="https://dubbo.apache.org/imgs/blog/2018/09/30/integrate-dubbo-with-kubernetes/TB1fEpEtrorBKNjSZFjXXc_SpXa-1846-783.png" alt="img"></p>
-</li>
-</ol>
-<ul>
-<li>
-<p>The supplementary application name cannot have uppercase letters, all lowercase, otherwise there is a problem of deployment failure.</p>
-</li>
-<li>
-<p>When creating an app, after selecting the image, the next button cannot be clicked and you need to click Choose to continue.</p>
-</li>
-<li>
-<p>EDAS has two independent Kubernetes services, one based on Alibaba Cloud&rsquo;s container service, and one set by Lark. I experience the latter.</p>
-</li>
-<li>
-<p>The development joint of Docker and IDE integration, you need to consider the relevant plug-ins for integrating IDEA.</p>
-</li>
-<li>
-<p>There is always an error in deployment, maybe there is a problem with the Kubernetes service. Need further investigation.</p>
-</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-json" data-lang="json"><span style="display:flex;"><span>{
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;kind&#34;</span>: <span style="color:#2aa198">&#34;Pod&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;namespace&#34;</span>: <span style="color:#2aa198">&#34;lzumwsrddf831iwarhehd14zh2-default&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;name&#34;</span>: <span style="color:#2aa198">&#34;dubbo-k8s-demo-610694273-jq238&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;uid&#34;</span>: <span style="color:#2aa198">&#34;12892e67-8bc8-11e8-b96a-00163e02c37b&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;apiVersion&#34;</span>: <span style="color:#2aa198">&#34;v1&#34;</span>,
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&#34;resourceVersion&#34;</span>: <span style="color:#2aa198">&#34;850282769&#34;</span>
-</span></span><span style="display:flex;"><span>}, <span style="color:#2aa198">&#34;reason&#34;</span>: <span style="color:#2aa198">&#34;FailedSync&#34;</span>, <span style="color:#2aa198">&#34;message&#34;</span>: <span style="color:#2aa198">&#34;Error syncing pod&#34;</span>, &#34;
-</span></span></code></pre></div></description></item><item><title>Blog: How to prepare an Apache Release</title><link>https://dubbo.apache.org/en/blog/2018/09/02/how-to-prepare-an-apache-release/</link><pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/en/blog/2018/09/02/how-to-prepare-an-apache-release/</guid><description>
-<h2 id="understanding-the-apache-release-cycle">Understanding the Apache Release Cycle</h2>
-<p>In general, Source Release is the key and the required content of Apache. But Binary Release is optional, Dubbo can choose whether to release binary packages to the Apache repository or to the Maven central repository.</p>
-<p>Please refer to the following links for more information on ASF&rsquo;s release guide:</p>
-<ul>
-<li><a href="http://www.apache.org/dev/release-publishing">Apache Release Guide</a></li>
-<li><a href="http://www.apache.org/dev/release.html">Apache Release Policy</a></li>
-<li><a href="http://www.apache.org/dev/publishing-maven-artifacts.html">Maven Release Info</a></li>
-</ul>
-<h2 id="preparation-of-local-building-environment">Preparation of Local Building Environment</h2>
-<p>Mainly including the related preparation of signature utilities and Maven repository certification</p>
-<ol>
-<li>
-<p>Install GPG,refer to <a href="https://www.gnupg.org/download/index.html">https://www.gnupg.org/download/index.html</a></p>
-<ul>
-<li>For example, in Mac OS</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ brew install gpg
-</span></span><span style="display:flex;"><span>$ gpg --version <span style="color:#586e75">#check version,should be 2.x</span>
-</span></span></code></pre></div></li>
-<li>
-<p>Generate the key with GPG</p>
-<ul>
-<li>Generate the key according to the prompt</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ gpg2 --full-gen-key
-</span></span><span style="display:flex;"><span>gpg <span style="color:#719e07">(</span>GnuPG<span style="color:#719e07">)</span> 2.0.12; Copyright <span style="color:#719e07">(</span>C<span style="color:#719e07">)</span> <span style="color:#2aa198">2009</span> Free Software Foundation, Inc.
-</span></span><span style="display:flex;"><span>This is free software: you are free to change and redistribute it.
-</span></span><span style="display:flex;"><span>There is NO WARRANTY, to the extent permitted by law.
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>Please <span style="color:#719e07">select</span> what kind of key you want:
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">(</span>1<span style="color:#719e07">)</span> RSA and RSA <span style="color:#719e07">(</span>default<span style="color:#719e07">)</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">(</span>2<span style="color:#719e07">)</span> DSA and Elgamal
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">(</span>3<span style="color:#719e07">)</span> DSA <span style="color:#719e07">(</span>sign only<span style="color:#719e07">)</span>
-</span></span><span style="display:flex;"><span> <span style="color:#719e07">(</span>4<span style="color:#719e07">)</span> RSA <span style="color:#719e07">(</span>sign only<span style="color:#719e07">)</span>
-</span></span><span style="display:flex;"><span>Your selection? <span style="color:#2aa198">1</span>
-</span></span><span style="display:flex;"><span>RSA keys may be between <span style="color:#2aa198">1024</span> and <span style="color:#2aa198">4096</span> bits long.
-</span></span><span style="display:flex;"><span>What keysize <span style="color:#719e07">do</span> you want? <span style="color:#719e07">(</span>2048<span style="color:#719e07">)</span> <span style="color:#2aa198">4096</span>
-</span></span><span style="display:flex;"><span>Requested keysize is <span style="color:#2aa198">4096</span> bits
-</span></span><span style="display:flex;"><span>Please specify how long the key should be valid.
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">0</span> <span style="color:#719e07">=</span> key does not expire
-</span></span><span style="display:flex;"><span> &lt;n&gt; <span style="color:#719e07">=</span> key expires in n days
-</span></span><span style="display:flex;"><span> &lt;n&gt;w <span style="color:#719e07">=</span> key expires in n weeks
-</span></span><span style="display:flex;"><span> &lt;n&gt;m <span style="color:#719e07">=</span> key expires in n months
-</span></span><span style="display:flex;"><span> &lt;n&gt;y <span style="color:#719e07">=</span> key expires in n years
-</span></span><span style="display:flex;"><span>Key is valid <span style="color:#719e07">for</span>? <span style="color:#719e07">(</span>0<span style="color:#719e07">)</span>
-</span></span><span style="display:flex;"><span>Key does not expire at all
-</span></span><span style="display:flex;"><span>Is this correct? <span style="color:#719e07">(</span>y/N<span style="color:#719e07">)</span> y
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>GnuPG needs to construct a user ID to identify your key.
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>Real name: Robert Burrell Donkin
-</span></span><span style="display:flex;"><span>Email address: rdonkin@apache.org
-</span></span><span style="display:flex;"><span>Comment: CODE SIGNING KEY
-</span></span><span style="display:flex;"><span>You selected this USER-ID:
-</span></span><span style="display:flex;"><span> <span style="color:#2aa198">&#34;Robert Burrell Donkin (CODE SIGNING KEY) &lt;rdonkin@apache.org&gt;&#34;</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>Change <span style="color:#719e07">(</span>N<span style="color:#719e07">)</span>ame, <span style="color:#719e07">(</span>C<span style="color:#719e07">)</span>omment, <span style="color:#719e07">(</span>E<span style="color:#719e07">)</span>mail or <span style="color:#719e07">(</span>O<span style="color:#719e07">)</span>kay/<span style="color:#719e07">(</span>Q<span style="c [...]
-</span></span><span style="display:flex;"><span>You need a Passphrase to protect your secret key. <span style="color:#586e75"># enter the password, which will be used frequently when packaging.</span>
-</span></span></code></pre></div><ul>
-<li>View key id</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span>$ gpg --list-keys
-</span></span><span style="display:flex;"><span>pub rsa4096/28681CB1 2018-04-26 <span style="color:#586e75"># 28681CB1 is the key id</span>
-</span></span><span style="display:flex;"><span>uid <span style="color:#719e07">[</span>ultimate<span style="color:#719e07">]</span> liujun <span style="color:#719e07">(</span>apache-dubbo<span style="color:#719e07">)</span> &lt;liujun@apache.org&gt;
-</span></span><span style="display:flex;"><span>sub rsa4096/D3D6984B 2018-04-26
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75">########### Note: Different diaplay for different version.</span>
-</span></span><span style="display:flex;"><span>$ gpg --list-keys
-</span></span><span style="display:flex;"><span>pub rsa4096 2018-11-12 <span style="color:#719e07">[</span>SC<span style="color:#719e07">]</span>
-</span></span><span style="display:flex;"><span> 63AAE9838F4A303E40BAF5FEA3A1CA7A5D4A3981 <span style="color:#586e75"># Last 8 character(5D4A3981) as key id,it will be used when send public key to keyserver</span>
-</span></span><span style="display:flex;"><span>uid <span style="color:#719e07">[</span> 绝对 <span style="color:#719e07">]</span> Victory Cao <span style="color:#719e07">(</span>CODE SIGNING KEY<span style="color:#719e07">)</span> &lt;victory@apache.org&gt;
-</span></span><span style="display:flex;"><span>sub rsa4096 2018-11-12 <span style="color:#719e07">[</span>E<span style="color:#719e07">]</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#586e75"># send public key to keyserver via key id </span>
-</span></span><span style="display:flex;"><span>$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
-</span></span><span style="display:flex;"><span><span style="color:#586e75"># Here pgpkeys.mit.edu is a random selection of keyserver. Any key server from the list https://sks-keyservers.net/status/ is acceptable because they are automatically synchronized.</span>
-</span></span></code></pre></div><ul>
-<li>If there are multiple public keys,you can set the default key</li>
-</ul>
-<p>~/.gnupg/gpg.conf</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span># If you have more than 1 secret key in your keyring, you may want to
-</span></span><span style="display:flex;"><span># uncomment the following option and set your preferred keyid.
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>default-key 28681CB1
-</span></span></code></pre></div><ul>
-<li>If there are multiple public keys, you can also delete unuseful key:</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sh" data-lang="sh"><span style="display:flex;"><span><span style="color:#586e75">### Delete the private key first, then delete the public key.</span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>$ gpg --yes --delete-secret-keys shenglicao2@gmail.com <span style="color:#586e75">### indicate email address </span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
-</span></span></code></pre></div></li>
-<li>
-<p>Set up Apache central repository.</p>
-<ul>
-<li>The parent pom of Dubbo project is apache pom</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;parent&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;groupId&gt;</span>org.apache<span style="color:#268bd2">&lt;/groupId&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;artifactId&gt;</span>apache<span style="color:#268bd2">&lt;/artifactId&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;version&gt;</span>19<span style="color:#268bd2">&lt;/version&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/parent&gt;</span>
-</span></span></code></pre></div><ul>
-<li>
-<p>Add the following contents to .m2/settings.xml</p>
-<p>Enter the passwords after
-encrypting by <a href="http://maven.apache.org/guides/mini/guide-encryption.html">maven-encryption-plugin</a></p>
-</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-xml" data-lang="xml"><span style="display:flex;"><span><span style="color:#268bd2">&lt;settings&gt;</span>
-</span></span><span style="display:flex;"><span>...
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;servers&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- To publish a snapshot of some part of Maven --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;server&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>apache.snapshots.https<span style="color:#268bd2">&lt;/id&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;username&gt;</span> <span style="color:#586e75">&lt;!-- YOUR APACHE LDAP USERNAME --&gt;</span> <span style="color:#268bd2">&lt;/username&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;password&gt;</span> <span style="color:#586e75">&lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&gt;</span> <span style="color:#268bd2">&lt;/password&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/server&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- To stage a release of some part of Maven --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;server&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>apache.releases.https<span style="color:#268bd2">&lt;/id&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;username&gt;</span> <span style="color:#586e75">&lt;!-- YOUR APACHE LDAP USERNAME --&gt;</span> <span style="color:#268bd2">&lt;/username&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;password&gt;</span> <span style="color:#586e75">&lt;!-- YOUR APACHE LDAP PASSWORD (encrypted) --&gt;</span> <span style="color:#268bd2">&lt;/password&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/server&gt;</span>
-</span></span><span style="display:flex;"><span> ...
-</span></span><span style="display:flex;"><span> <span style="color:#586e75">&lt;!-- gpg passphrase used when generate key --&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;server&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>gpg.passphrase<span style="color:#268bd2">&lt;/id&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;passphrase&gt;</span><span style="color:#586e75">&lt;!-- yourKeyPassword --&gt;</span><span style="color:#268bd2">&lt;/passphrase&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/server&gt;</span>
-</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/servers&gt;</span>
-</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/settings&gt;</span>
-</span></span></code></pre></div></li>
-</ol>
-<h2 id="pack--upload">Pack &amp; Upload</h2>
-<ol>
-<li>
-<p>Pull the new branch from the master branch as the release branch. If you want to release the ${release_version} version now, pull the new branch ${release_version}-release from 2.6.x. Then the
-modifications and taggings related to ${release_version} Release Candidates are applied to ${release_version}-release branch, and is merged into the master branch after the final release.</p>
-</li>
-<li>
-<p>First of all, verify that the maven component packing, source packing, signature, etc are working properly on the ${release_version}-release branch.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mvn clean install -Papache-release
-</span></span><span style="display:flex;"><span>$ mvn deploy
-</span></span></code></pre></div></li>
-</ol>
-<p>This push the snapshot package to the maven central repository.</p>
-<ol start="3">
-<li>
-<p>Release with maven-release-plugin</p>
-<ul>
-<li>verify with dryRun</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mvn release:prepare -Prelease -Darguments<span style="color:#719e07">=</span><span style="color:#2aa198">&#34;-Dmaven.test.skip=true&#34;</span> -DautoVersionSubmodules<span style="color:#719e07">=</span><span style="color:#b58900">tru [...]
-</span></span></code></pre></div><ul>
-<li>After verification, run release:prepare</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mvn release:clean
-</span></span><span style="display:flex;"><span>$ mvn release:prepare -Prelease -Darguments<span style="color:#719e07">=</span><span style="color:#2aa198">&#34;-Dmaven.test.skip=true&#34;</span> -DautoVersionSubmodules<span style="color:#719e07">=</span><span style="color:#b58900">true</span> -Dusername<span style="color:#719e07">=</span>YOUR GITHUB ID -DpushChanges<span style="color:#719e07">=</span><span style="color:#b58900">f [...]
-</span></span></code></pre></div><blockquote>
-<p>If you are promted to input password for pushing to GitHub (basically including adding new commits and tags), do not input your login password of GitHub. Use <code>Personal access tokens</code> instead. You can go to <a href="https://github.com/settings/profile">https://github.com/settings/profile</a>, click <code>Developer settings</code> -&gt; <code>Personal access tokens</code>, and generate a new token if not. Please refer to this <a href="https:/ [...]
-you need to choose the release artifactId, next artifactId and the release tag, the default tag is dubbo-parent-xxxx, you need to change it to dubbo-xxxx</p>
-</blockquote>
-<p>After executing the above commands, you will find that:</p>
-<ol>
-<li>source-release.zip and bin-release.zip are generated under dubbo-distribution directory, please unzip it and check the file structure</li>
-<li><code>-DpushChanges=false</code> tells maven not to push the commits and tags to the remote repostiroy. If not specified, the version tag will be pushed to github repository, you will see a commit called <code>[maven-release-plugin] prepare release dubbo-x.x.x</code> added.</li>
-<li>The branch version is upgraded to ${release_version+1}-SNAPSHOT automatically. If <code>-DpushChanges=true</code> is specified, the modifications will be pushed to the remote repository, you will see a commit called <code>[maven-release-plugin] prepare for next development iteration</code> added.</li>
-</ol>
-<p>If <code>-DpushChanges=false</code> is specified, you will have to manually push the commit to remote repository before go to next step.</p>
-<ul>
-<li>Run release:perform</li>
-</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mvn release:perform -Prelease -Darguments<span style="color:#719e07">=</span><span style="color:#2aa198">&#34;-Dmaven.test.skip=true&#34;</span> -DautoVersionSubmodules<span style="color:#719e07">=</span><span style="color:#b58900">tru [...]
-</span></span></code></pre></div><p>Maven will download the source code from the tag you just pushed, compile it, and deploy to remote maven repsoitry in staging state.</p>
-</li>
-</ol>
-<h3 id="note">Note</h3>
-<blockquote>
-<p>When you deploy the package into repository, it will be interrupted for network. So you must restart to desploy.<br>
-The problem is that missing package occurred many times at deploying. So you should check the quantity of package, especially parent package.</p>
-</blockquote>
-<h2 id="prepare-apache-release">Prepare Apache Release</h2>
-<ol>
-<li>
-<p>Prepare the svn local environment (Apache hosting the release content of project by svn)</p>
-</li>
-<li>
-<p>Checkout dubbo to local directory</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ svn checkout https://dist.apache.org/repos/dist/dev/dubbo
-</span></span></code></pre></div><p>Assume that the local directory is <code>~/apache/incubator/dubbo</code></p>
-</li>
-<li>
-<p>The current release version is ${release_version}, new directory</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ <span style="color:#b58900">cd</span> ~/apache/incubator/dubbo <span style="color:#586e75"># dubbo svn root directory</span>
-</span></span><span style="display:flex;"><span>$ mkdir <span style="color:#2aa198">${</span><span style="color:#268bd2">release_version</span><span style="color:#2aa198">}</span>
-</span></span></code></pre></div></li>
-<li>
-<p>Add public key to <a href="https://dist.apache.org/repos/dist/dev/dubbo/KEYS">KEYS</a> file if you are the first time to be a release manager. KEYS is mainly used to allow people who participate in the voting to be imported locally to verify the correctness of the sign.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ gpg -a --export your_key_id &gt;&gt; KEYS
-</span></span></code></pre></div><p>For more information on how to get your key id, please refer to this <a href="https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key">guide</a></p>
-</li>
-<li>
-<p>Copy the source.zip package from the Dubbo root directory to the svn local repository dubbo/${release_version}</p>
-</li>
-<li>
-<p>Generate sha512 sign</p>
-<p>For source-release.zip</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ shasum -a <span style="color:#2aa198">512</span> apache-dubbo-<span style="color:#2aa198">${</span><span style="color:#268bd2">release_version</span><span style="color:#2aa198">}</span>-source-release.zip &gt;&gt; apache-dubbo-<s [...]
-</span></span></code></pre></div><p>For bin-release.zip</p>
-<p>Please add <code>-b</code> paramter when generating sha512 for bin-release.zip, which indicates it is a binary file.</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ shasum -b -a <span style="color:#2aa198">512</span> apache-dubbo-<span style="color:#2aa198">${</span><span style="color:#268bd2">release_version</span><span style="color:#2aa198">}</span>-bin-release.zip &gt;&gt; apache-dubbo-<s [...]
-</span></span></code></pre></div><p>You should generate something like this:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>b8f13d1df6d6c9a1facc72fafc00b2d22bea1e600517c507467d8fca2f776a7a3877101742da53114bfa629ca5b941eb4d9ef989de43f0833e2a794e7ccf5c8a *apache-dubbo-spring-boot-project-2.7.0-bin-release.zip
-</span></span></code></pre></div><p>Note there is a <code>*</code> sign before the file name.</p>
-</li>
-<li>
-<p>If the binary release is accompanied with the source release. Run the following command in the dubbo-distribution module:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ mvn install
-</span></span></code></pre></div><p>Go to target directory, copy bin-release.zip and bin-release.zip.asc to svn local repository dubbo/${release_version}, and refer to step 6 to generate sha512 sign.</p>
-</li>
-<li>
-<p>Commit to Apache svn</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>$ svn status
-</span></span><span style="display:flex;"><span>$ svn commit -m <span style="color:#2aa198">&#39;prepare for ${release_version} RC1&#39;</span>
-</span></span></code></pre></div></li>
... 1165902 lines suppressed ...