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 2023/05/23 12:49:29 UTC

[dubbo-website] branch cn-site updated: deploy: 6dc40a03236513ff0a9a90053796112b2fb6c0c5

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

github-bot pushed a commit to branch cn-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/cn-site by this push:
     new 2b9489f758 deploy: 6dc40a03236513ff0a9a90053796112b2fb6c0c5
2b9489f758 is described below

commit 2b9489f758cfe513f2ae30bc4f534a70d54ce5d7
Author: AlbumenJ <Al...@users.noreply.github.com>
AuthorDate: Tue May 23 12:49:24 2023 +0000

    deploy: 6dc40a03236513ff0a9a90053796112b2fb6c0c5
---
 sitemap.xml                                        |  2 +-
 .../observability/index.xml                        |  2 +-
 .../observability/tracing/index.html               |  6 +++---
 .../advanced-features-and-usage/triple/index.xml   |  4 ++--
 .../triple/streaming/index.html                    | 24 +++++++++++-----------
 zh-cn/sitemap.xml                                  |  2 +-
 zh/download/spi-extensions/index.html              |  2 +-
 7 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/sitemap.xml b/sitemap.xml
index 30ce2e61da..4f2f7d9f2c 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-05-23T20:43:10+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-05-23T20:43:45+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
index a42333bae5..9f123bf6d1 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
@@ -274,7 +274,7 @@
 &lt;li>&lt;a href="https://cn.dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/skywalking/">使用 Skywalking 实现 Dubbo 全链路追踪&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;h2 id="关联日志">关联日志&lt;/h2>
-&lt;p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 &lt;code>%X{traceId:-},%X{spanId:-}]&lt;/code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 &lt;a href="https://github.com/apache/dubbo-samples/blob/master/4-governance/dubbo-samples-spring-boot-tracing/dubbo-samples-spring-boot-tracing-provider/src/main/resources/application.yml#L46">Tracing 日志上下文配置示例&lt;/a>。&lt;/p></description></item><item><title>Overview: 日志管理</title><link>https://cn.dubbo.apache.org/zh-c [...]
+&lt;p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 &lt;code>%X{traceId:-},%X{spanId:-}]&lt;/code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 &lt;a href="https://github.com/apache/dubbo-samples/blob/master/4-governance/dubbo-samples-spring-boot-tracing/dubbo-samples-spring-boot-tracing-otel-otlp/provider/src/main/resources/application.yml">Tracing 日志上下文配置示例&lt;/a>。&lt;/p></description></item><item><title>Overview: 日志管理</title><link>https://cn.dubbo.apache.or [...]
 &lt;p>在 Dubbo 框架内所有的日志输出都是通过 LoggerFactory 这个静态工厂类来获得 Logger 的对象实体,并且抽离了一个 LoggerAdapter 用于对接第三方日志框架,所以就有了JDKLoggerAdapter, Log4jLoggerAdapter, SLF4JLoggerAdapter等一些实现子类,分别对接了不同 Log 第三方实现。既然 Dubbo 能够支持这么多log实现,那么这些实现在 Dubbo 中优先级是在呢么样的呢?这里的优先级是指未配置指定的 logger 提供方的情况下,由 Dubbo 框架自己选择。优先级如下:&lt;/p>
 &lt;table>
 &lt;thead>
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
index 919688ded0..ab122380e0 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><meta nam [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><meta nam [...]
 <script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css as=style><link href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="链路追踪"><meta property="og:description" content="链路追踪"><meta name=twitter:description content="链路追踪"><meta property="og:url" content="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/"><meta property="og:title" content="链路追踪"><meta name=t [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link href=/css/language.css rel=stylesheet><script src=/js/script.js></script></head><body class="td-page td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" [...]
@@ -673,8 +673,8 @@
 </span></span><span style=display:flex><span>    <span style=color:#268bd2>&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-otel-zipkin-starter<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.1-SNAPSHOT<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><p>更多完整示例请参见:</p><ul><li><a href=/zh-cn/overview/tasks/observability/tracing/zipkin/>使用 Zipkin 实现 Dubbo 全链路追踪</a></li><li><a href=/zh-cn/overview/tasks/observability/tracing/skywalking/>使用 Skywalking 实现 Dubbo 全链路追踪</a></li></ul><h2 id=关联日志>关联日志</h2><p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 <code>%X{traceId:-},%X{spanId:-}]</code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 <a href=https://github.com/apache/dubbo-samples [...]
-<button class="btn btn-primary mb-4 feedback--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__disabled [...]
+</span></span></code></pre></div><p>更多完整示例请参见:</p><ul><li><a href=/zh-cn/overview/tasks/observability/tracing/zipkin/>使用 Zipkin 实现 Dubbo 全链路追踪</a></li><li><a href=/zh-cn/overview/tasks/observability/tracing/skywalking/>使用 Skywalking 实现 Dubbo 全链路追踪</a></li></ul><h2 id=关联日志>关联日志</h2><p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 <code>%X{traceId:-},%X{spanId:-}]</code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 <a href=https://github.com/apache/dubbo-samples [...]
+<button class="btn btn-primary mb-4 feedback--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__disabled [...]
 <a href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing.md?filename=change-me.md&amp;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-s [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=%e9%93%be%e8%b7%af%e8%bf%bd%e8%b8%aa" target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#概述>概述</a></li><li><a href=#使用方式>使用方式</a></li><li><a href=#关联日志>关联日志</a></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0"><div class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 text-xs-center order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item [...]
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/index.xml b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/index.xml
index db9ea821e7..a4a40ec9b4 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/index.xml
@@ -348,7 +348,7 @@ IDL 格式的服务依赖 Protobuf 编译器,用来生成可以被用户调用
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#268bd2">&amp;lt;/dependency&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Overview: Streaming 通信模式</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/</guid><description>
 &lt;p>具体用例可以参考:&lt;a href="https://github.com/apache/dubbo-samples/tree/master/3-extensions/protocol/dubbo-samples-triple/src/main/java/org/apache/dubbo/sample/tri/pojo">dubbo-samples-triple/pojo&lt;/a>;&lt;/p>
-&lt;h2 id="开启-triple-新特性--stream-流">开启 Triple 新特性 —— Stream (流)&lt;/h2>
+&lt;h2 id="stream-流">Stream (流)&lt;/h2>
 &lt;p>Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:&lt;/p>
 &lt;ul>
 &lt;li>接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送&lt;/li>
@@ -378,7 +378,7 @@ IDL 格式的服务依赖 Protobuf 编译器,用来生成可以被用户调用
 &lt;li>全双工,发送不需要等待&lt;/li>
 &lt;li>支持取消和超时&lt;/li>
 &lt;/ul>
-&lt;h3 id="非-pb-序列化的流">非 PB 序列化的流&lt;/h3>
+&lt;h2 id="非-pb-序列化的流">非 PB 序列化的流&lt;/h2>
 &lt;ol>
 &lt;li>api&lt;/li>
 &lt;/ol>
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/index.html b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/index.html
index 1dd1bd37a9..ef56a919fd 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/index.html
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/index.html
@@ -1,19 +1,19 @@
 <!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><meta name=vie [...]
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
 对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。
 流的语义保证
-提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta property="og:type" content="article"><meta property="og:url" content=" [...]
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta property="og:type" content="article"><meta property="og:url" content=" [...]
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
 对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。
 流的语义保证
-提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta itemprop=dateModified content="2023-03-02T10:12:02+08:00"><meta itempr [...]
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta itemprop=dateModified content="2023-05-23T20:43:31+08:00"><meta itempr [...]
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
@@ -22,21 +22,21 @@ SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双
 提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><script async src="https://www.googletagmanager.com/gtag/js?id=G-NM6FFMT51J" [...]
 <script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css as=style><link href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="具体用例可以参考:dubbo-samples-triple/pojo;
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
 对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。
 流的语义保证
 提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta property="og:description" content="具体用例可以参考:dubbo-samples-triple/pojo;
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
 对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。
 流的语义保证
 提供消息边界,可以方便地对消息单独处理 严格有序,发送端的顺序和接收端顺序一致 全双工,发送不需要等待 支持取消和超时 非 PB 序列化的流 api public interface IWrapperGreeter { StreamObserver<String> sayHelloStream(StreamObserver<String> response); void sayHelloServerStream(String request, StreamObserver<String> response); } Stream 方法的方法入参和返回值是严格约定的,为防止写错而导致问题,Dubbo3 框架侧做了对参数的检查, 如果出错则会抛出异常。 对于 双向流(BIDIRECTIONAL_STREAM), 需要注意参数中的 StreamObserver 是响应流,返回参数中的 StreamObserver 为请求流。"><meta name=twitter:description content="具体用例可以参考:dubbo-samples-triple/pojo;
-开启 Triple 新特性 —— Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
+Stream (流) Stream 是 Dubbo3 新提供的一种调用类型,在以下场景时建议使用流的方式:
 接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC 方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送 流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的 推送类场景,多个消息在同一个调用的上下文中被发送和处理 Stream 分为以下三种:
 SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双向流) 由于 java 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。
 在 Dubbo3 中,流式接口以 SteamObserver 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。
@@ -710,10 +710,10 @@ SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双
 <label for=m-zh-cnoverviewreferenceprotocols-check><a href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 协议规范</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 协议规范</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 协议规范</span></a></label></li></ul></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://cn.dubbo.apache.org/zh-c [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 协议规范</span></a></label></li></ul></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://cn.dubbo.apache.org/zh-c [...]
 <img src=/imgs/v3/migration/tri/migrate-server-stream.png alt=SERVER_STREAM></li><li>CLIENT_STREAM(客户端流)
 <img src=/imgs/v3/migration/tri/migrate-client-stream.png alt=CLIENT_STREAM></li><li>BIDIRECTIONAL_STREAM(双向流)
-<img src=/imgs/v3/migration/tri/migrate-bi-stream.png alt=BIDIRECTIONAL_STREAM></li></ul><blockquote><p>由于 <code>java</code> 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。</p></blockquote><p>在 Dubbo3 中,流式接口以 <code>SteamObserver</code> 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。</p><blockquote><p>对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。</p></blockquote><p>流的语义保证</p><ul><li>提供消息边界,可以方便地对消息单独处理</li><li>严格有序,发送端的顺序和接收端顺序一致</li><li>全双工,发送不 [...]
+<img src=/imgs/v3/migration/tri/migrate-bi-stream.png alt=BIDIRECTIONAL_STREAM></li></ul><blockquote><p>由于 <code>java</code> 语言的限制,BIDIRECTIONAL_STREAM 和 CLIENT_STREAM 的实现是一样的。</p></blockquote><p>在 Dubbo3 中,流式接口以 <code>SteamObserver</code> 声明和使用,用户可以通过使用和实现这个接口来发送和处理流的数据、异常和结束。</p><blockquote><p>对于 Dubbo2 用户来说,可能会对StreamObserver感到陌生,这是Dubbo3定义的一种流类型,Dubbo2 中并不存在 Stream 的类型,所以对于迁移场景没有任何影响。</p></blockquote><p>流的语义保证</p><ul><li>提供消息边界,可以方便地对消息单独处理</li><li>严格有序,发送端的顺序和接收端顺序一致</li><li>全双工,发送不 [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>    StreamObserver<span style=color:#719e07>&lt;</span>String<span style=color:#719e07>&gt;</span> <span style=color:#268bd2>sayHelloStream</span><span style=color:#719e07>(</span>StreamObserver<span style=color:#719e07>&lt;</span>String<span style=color:#719e07>&gt;</span> response<span style=color:#719e07>);</span>
 </span></span><span style=display:flex><span>
@@ -918,10 +918,10 @@ SERVER_STREAM(服务端流) CLIENT_STREAM(客户端流) BIDIRECTIONAL_STREAM(双
 </span></span><span style=display:flex><span>            <span style=color:#268bd2>&lt;version&gt;</span>3.19.4<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><div id=pre-footer><h2>反馈</h2><p class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 feedback--yes">是</button>
-<button class="btn btn-primary mb-4 feedback--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__disabled [...]
+<button class="btn btn-primary mb-4 feedback--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__disabled [...]
 <a href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/triple/streaming.md?filename=change-me.md&amp;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-starte [...]
 <a href="https://github.com/apache/dubbo-website/issues/new?title=Streaming%20%e9%80%9a%e4%bf%a1%e6%a8%a1%e5%bc%8f" target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#开启-triple-新特性--stream-流>开启 Triple 新特性 —— Stream (流)</a><ul><li><a href=#非-pb-序列化的流>非 PB 序列化的流</a></li></ul></li><li><a href=#使用-protobuf-序列化的流>使用 Protobuf 序列化的流</a><ul><li><a href=#完整用例>完整用例</a></li><li><a href=#常见问题>常见问题</a></li></ul></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0 [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#stream-流>Stream (流)</a></li><li><a href=#非-pb-序列化的流>非 PB 序列化的流</a></li><li><a href=#使用-protobuf-序列化的流>使用 Protobuf 序列化的流</a><ul><li><a href=#完整用例>完整用例</a></li><li><a href=#常见问题>常见问题</a></li></ul></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none footer-margin-0"><div class="container-fluid mx-sm-5"><d [...]
 <script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script>
 <script src=/js/main.min.b075178d232d3b0039b3cb6af2fc2e9d90071820167a60f4eea3a79169975ee8.js integrity="sha256-sHUXjSMtOwA5s8tq8vwunZAHGCAWemD07qOnkWmXXug=" crossorigin=anonymous></script>
 <script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script>
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index aa4b0fe820..3e9208b80e 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu [...]
\ No newline at end of file
diff --git a/zh/download/spi-extensions/index.html b/zh/download/spi-extensions/index.html
index f7bcb98d5f..f001104aef 100644
--- a/zh/download/spi-extensions/index.html
+++ b/zh/download/spi-extensions/index.html
@@ -1 +1 @@
-<!doctype html><html lang=en-us><head><title>https://cn.dubbo.apache.org/zh-cn/download/spi-extensions/</title><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/download/spi-extensions/><meta name=robots content="noindex"><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://cn.dubbo.apache.org/zh-cn/download/spi-extensions/"></head></html>
\ No newline at end of file
+<!doctype html><html lang=en-us><head><title>https://cn.dubbo.apache.org/en/download/spi-extensions/</title><link rel=canonical href=https://cn.dubbo.apache.org/en/download/spi-extensions/><meta name=robots content="noindex"><meta charset=utf-8><meta http-equiv=refresh content="0; url=https://cn.dubbo.apache.org/en/download/spi-extensions/"></head></html>
\ No newline at end of file