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

github-actions[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 9f28ea89b5a deploy: 8da99c6eb6683261a00a81b5805f4ddabc087959
9f28ea89b5a is described below

commit 9f28ea89b5ab21ee89f6608ead5ad6f46684a878
Author: Alanxtl <[email protected]>
AuthorDate: Fri Aug 7 12:59:12 2026 +0000

    deploy: 8da99c6eb6683261a00a81b5805f4ddabc087959
---
 css/app.css                                        |   2 +-
 css/chunk-vendors.css                              |   2 +-
 .../mannual/golang-sdk/quickstart/rpc/index.html   | 110 ++++++++++++++-------
 en/sitemap.xml                                     |   2 +-
 js/app.js                                          |   3 +-
 js/chunk-vendors.js                                |  61 +-----------
 sitemap.xml                                        |   2 +-
 zh-cn/index.xml                                    |  10 +-
 .../mannual/golang-sdk/quickstart/index.xml        |  10 +-
 .../mannual/golang-sdk/quickstart/rpc/index.html   | 110 ++++++++++++++-------
 zh-cn/sitemap.xml                                  |   2 +-
 11 files changed, 163 insertions(+), 151 deletions(-)

diff --git a/css/app.css b/css/app.css
index 44c2a2c2469..b9457c8de14 100644
--- a/css/app.css
+++ b/css/app.css
@@ -1 +1 @@
-h3[data-v-76eccb7f]{margin:40px 0 
0}ul[data-v-76eccb7f]{list-style-type:none;padding:0}li[data-v-76eccb7f]{display:inline-block;margin:0
 
10px}a[data-v-76eccb7f]{color:#42b983}.form-layout[data-v-76eccb7f]{display:flex;justify-content:space-between;align-items:flex-start}.left-form[data-v-76eccb7f]{flex:1;max-width:calc(50%
 - 
20px);margin-right:20px}.right-text[data-v-76eccb7f]{flex-shrink:0;width:calc(50%
 - 20px)}.left-form 
.el-form-item__label[data-v-76eccb7f]{text-align:left}.left-form [...]
\ No newline at end of file
+/*Respond to static link checks, which will be dynamically replaced at build 
time*/
\ No newline at end of file
diff --git a/css/chunk-vendors.css b/css/chunk-vendors.css
index 61c66238ea8..b9457c8de14 100644
--- a/css/chunk-vendors.css
+++ b/css/chunk-vendors.css
@@ -1 +1 @@
-@font-face{font-family:element-icons;src:url(../fonts/element-icons.ff18efd1.woff)
 format("woff"),url(../fonts/element-icons.f1a45d74.ttf) 
format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*="
 
el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:gr
 [...]
\ No newline at end of file
+/*Respond to static link checks, which will be dynamically replaced at build 
time*/
\ No newline at end of file
diff --git a/en/overview/mannual/golang-sdk/quickstart/rpc/index.html 
b/en/overview/mannual/golang-sdk/quickstart/rpc/index.html
index 0c9baf490fc..5ba015eb4c8 100644
--- a/en/overview/mannual/golang-sdk/quickstart/rpc/index.html
+++ b/en/overview/mannual/golang-sdk/quickstart/rpc/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/quickstart/rpc/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"]),_paq.push(["trackPage
 [...]
+<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/quickstart/rpc/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"]),_paq.push(["trackPage
 [...]
 <a class=dropdown-item href=/en/overview/notices/>Security Notices</a>
 <a class=dropdown-item href=/en/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>ECOSYSTEM</ [...]
 <a class=dropdown-item 
href=/zh-cn/overview/mannual/control-plane/>Visualizable Console</a>
@@ -696,25 +696,23 @@
 <label for=m-enoverviewnoticeslog4j-check><a href=/en/overview/notices/log4j/ 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-enoverviewnoticeslog4j><span>Log4j Vulnerability 
Impact</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/overview/>Documentation</a></li><li class=breadcrumb-item><a  [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>git clone --depth <span 
style=color:#2aa198>1</span> https://github.com/apache/dubbo-go.git
-</span></span><span style=display:flex><span><span 
style=color:#b58900>cd</span> dubbo-go/tools/protoc-gen-go-triple
-</span></span><span style=display:flex><span>go install .
-</span></span></code></pre></div><p>Make sure <code>protoc-gen-go</code> and 
<code>protoc-gen-go-triple</code> are in your <code>PATH</code>. You can verify 
this with <code>which protoc-gen-go</code>. If that command does not work, 
please execute the following commands:</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:#71 [...]
+</span></span><span style=display:flex><span><span 
style=color:#719e07>(</span><span style=color:#b58900>cd</span> 
dubbo-go/tools/protoc-gen-go-triple <span style=color:#719e07>&amp;&amp;</span> 
go install .<span style=color:#719e07>)</span>
+</span></span></code></pre></div><p>Make sure <code>protoc-gen-go</code> and 
<code>protoc-gen-go-triple</code> are in your <code>PATH</code>. You can verify 
this with <code>which protoc-gen-go</code> and <code>which 
protoc-gen-go-triple</code>. If either command does not work, run:</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 sty 
[...]
 </span></span><span style=display:flex><span><span 
style=color:#719e07>[</span> -n <span style=color:#2aa198>&#34;</span><span 
style=color:#719e07>$(</span>go env GOPATH<span 
style=color:#719e07>)</span><span style=color:#2aa198>&#34;</span> <span 
style=color:#719e07>]</span> <span style=color:#719e07>&amp;&amp;</span> <span 
style=color:#b58900>export</span> <span style=color:#268bd2>PATH</span><span 
style=color:#719e07>=</span><span style=color:#2aa198>&#34;</span><span 
style=color:#719 [...]
 </span></span></code></pre></div><p><code>protoc-gen-go-triple</code> is now 
maintained in the dubbo-go repository under
 <a 
href=https://github.com/apache/dubbo-go/tree/main/tools/protoc-gen-go-triple 
target=_blank>tools/protoc-gen-go-triple</a>.
 Install it from that directory, and keep the generated 
<code>*.triple.go</code> files in sync when you change the <code>.proto</code>
-service definition.</p></li></ol><h2 id=quick-run-example>Quick Run 
Example</h2><h3 id=download-example-source-code>Download Example Source 
Code</h3><p>We maintain a series of dubbo-go usage examples in the <a 
href=https://github.com/apache/dubbo-go-samples/ 
target=_blank>apache/dubbo-go-samples</a> repository to help users quickly 
learn how to use dubbo-go.</p><p>You can <a 
href=https://github.com/apache/dubbo-go-samples/archive/refs/heads/main.zip 
target=_blank>download the example zip [...]
-</span></span></code></pre></div><p>Switch to the quick start example 
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> dubbo-go-samples/helloworld
-</span></span></code></pre></div><h3 id=run-server>Run Server</h3><p>In the 
<code>go-server/cmd</code> directory:</p><p>Run the following command to start 
the server:</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>$ go run 
server.go
-</span></span></code></pre></div><p>Use <code>cURL</code> to verify that the 
server has been started correctly:</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>$ curl 
<span style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;: &#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      http://localhost:20000/greet.GreetService/Greet
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>Greeting: Hello world
-</span></span></code></pre></div><h3 id=run-client>Run Client</h3><p>Open a 
new terminal and run the following command in the <code>go-client/cmd</code> 
directory to start the client:</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>$ go run 
client.go
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>Greeting: Hello world
+service definition.</p></li></ol><h2 id=quick-run-example>Quick Run 
Example</h2><h3 id=download-example-source-code>Download Example Source 
Code</h3><p>We maintain a series of dubbo-go usage examples in the <a 
href=https://github.com/apache/dubbo-go-samples/ 
target=_blank>apache/dubbo-go-samples</a> repository to help users quickly 
learn how to use dubbo-go.</p><p>You can <a 
href=https://github.com/apache/dubbo-go-samples/archive/refs/heads/main.zip 
target=_blank>download the example zip [...]
+</span></span><span style=display:flex><span><span 
style=color:#b58900>cd</span> dubbo-go-samples/helloworld
+</span></span></code></pre></div><h3 id=run-server>Run Server</h3><p>Run all 
the following commands from the <code>helloworld</code> root directory. Start 
the server with:</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>go run 
./go-server/cmd/main.go
+</span></span></code></pre></div><p>Use <code>cURL</code> to verify that the 
server has been started correctly:</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>curl <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;:&#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  http://localhost:20000/greet.GreetService/Greet
+</span></span></code></pre></div><p>The response 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-json data-lang=json><span style=display:flex><span>{<span 
style=color:#268bd2>&#34;greeting&#34;</span>:<span 
style=color:#2aa198>&#34;Dubbo&#34;</span>}
+</span></span></code></pre></div><h3 id=run-client>Run Client</h3><p>Open 
another terminal, return to the <code>helloworld</code> root directory, and 
start the client:</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> dubbo-go-samples/helloworld
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go
+</span></span></code></pre></div><p>The logs include the following response 
(prefixes such as the timestamp, log level, and call site vary by 
environment):</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>Greet 
response: hello world
 </span></span></code></pre></div><p>This is a complete development process of 
a dubbo-go RPC communication service.</p><h2 id=source-code-explanation>Source 
Code Explanation</h2><p>Next, we will explain the source code of the 
<code>dubbo-go-samples/helloworld</code> example.</p><h3 
id=define-service>Define Service</h3><p>The example uses Protocol Buffer (IDL) 
to define the Dubbo service.</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4; [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#719e07>package</span> greet;
@@ -731,21 +729,43 @@ service definition.</p></li></ol><h2 
id=quick-run-example>Quick Run Example</h2>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>service</span> GreetService {
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>rpc</span> Greet(GreetRequest) <span 
style=color:#719e07>returns</span> (GreetResponse) {}
 </span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>This file declares a service called 
<code>GreetService</code>, defining the Greet method along with its request 
parameter GreetRequest and return value GreetResponse.</p><h3 
id=generate-code>Generate Code</h3><p>Before running the server or client, we 
need to generate the relevant code using <code>protoc-gen-go</code> and 
<code>protoc-gen-go-triple</code>.</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-siz [...]
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --go-triple_out<span 
style=color:#719e07>=</span>. --go-triple_opt<span 
style=color:#719e07>=</span><span style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    ./greet.proto
-</span></span></code></pre></div><p>After running the above command, you will 
see the following generated files in the target 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-fallback data-lang=fallback><span style=display:flex><span> 
proto
-</span></span><span style=display:flex><span>    ├── greet.pb.go
-</span></span><span style=display:flex><span>    ├── greet.proto
-</span></span><span style=display:flex><span>    └── greet.triple.go
-</span></span></code></pre></div><p>In the proto/greet/v1 package, there are 
two parts:</p><ul><li><code>greet.pb.go</code> is generated by Google&rsquo;s 
standard <code>protoc-gen-go</code>, which contains the structures of 
<code>GreetRequest</code>, <code>GreetResponse</code>, and the 
encoding/decoding rules.</li><li><code>greet.triple.go</code> is produced by 
the custom Dubbo plugin <code>protoc-gen-go-triple</code> and includes key 
information, including the generated interface <code [...]
+</span></span></code></pre></div><p><code>proto/greet.proto</code> declares 
the <code>GreetService</code> service and defines the <code>Greet</code> RPC, 
its <code>GreetRequest</code> request, and its <code>GreetResponse</code> 
response.</p><h3 id=generate-code>Generate Code</h3><p>Before running the 
server or client, generate the code with <code>protoc-gen-go</code> and 
<code>protoc-gen-go-triple</code> from the <code>helloworld</code> root 
directory:</p><div class=highlight><pre tabind [...]
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go_out<span style=color:#719e07>=</span>. <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go_opt<span style=color:#719e07>=</span><span 
style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go-triple_out<span style=color:#719e07>=</span>. 
<span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go-triple_opt<span 
style=color:#719e07>=</span><span style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  ./proto/greet.proto
+</span></span></code></pre></div><p>After the command completes, the 
<code>proto</code> directory has the following structure:</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>proto/
+</span></span><span style=display:flex><span>├── greet.proto
+</span></span><span style=display:flex><span>├── greet.pb.go
+</span></span><span style=display:flex><span>└── greet.triple.go
+</span></span></code></pre></div><p>The generated files have different 
responsibilities:</p><ul><li><code>greet.pb.go</code> is generated by the 
standard <code>protoc-gen-go</code> plugin. It primarily contains Protobuf 
messages such as <code>GreetRequest</code> and <code>GreetResponse</code>, 
together with their encoding and decoding 
code.</li><li><code>greet.triple.go</code> is generated by 
<code>protoc-gen-go-triple</code>. It primarily contains Triple server 
registration, the client  [...]
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> (srv <span 
style=color:#719e07>*</span>GreetTripleServer) <span 
style=color:#268bd2>Greet</span>(ctx context.Context, req <span 
style=color:#719e07>*</span>greet.GreetRequest) (<span 
style=color:#719e07>*</span>greet.GreetResponse, <span 
style=color:#dc322f>error</span>) {
+</span></span><span style=display:flex><span>  resp <span 
style=color:#719e07>:=</span> <span 
style=color:#719e07>&amp;</span>greet.GreetResponse{Greeting: req.Name}
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> resp, <span style=color:#cb4b16>nil</span>
 </span></span><span style=display:flex><span>}
+</span></span></code></pre></div><h3 id=start-server>Start 
Server</h3><p>Create a Server and register the <code>GreetTripleServer</code> 
implementation with <code>RegisterGreetServiceHandler</code>. The Server 
listens on port <code>20000</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-go data-lang=go><span style=display:flex><span><span 
style=color:#719e07>package</span> main
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#719e07>import</span> (
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;context&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  _ <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/imports&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/protocol&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/server&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;github.com/dubbogo/gost/log/logger&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  greet <span 
style=color:#2aa198>&#34;github.com/apache/dubbo-go-samples/helloworld/proto&#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>type</span> GreetTripleServer <span 
style=color:#268bd2>struct</span>{}
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> (srv <span 
style=color:#719e07>*</span>GreetTripleServer) <span 
style=color:#268bd2>Greet</span>(ctx context.Context, req <span 
style=color:#719e07>*</span>greet.GreetRequest) (<span 
style=color:#719e07>*</span>greet.GreetResponse, <span 
style=color:#dc322f>error</span>) {
 </span></span><span style=display:flex><span>  resp <span 
style=color:#719e07>:=</span> <span 
style=color:#719e07>&amp;</span>greet.GreetResponse{Greeting: req.Name}
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> resp, <span style=color:#cb4b16>nil</span>
 </span></span><span style=display:flex><span>}
-</span></span></code></pre></div><h3 id=start-server>Start 
Server</h3><p>Create a new Server, register the <code>GreetTripleServer</code> 
we implemented earlier, and then initialize and start the Server, which will 
listen for requests on the specified port.</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-go data-lang=go><span style=display:flex><span><span 
style=color:#268bd2>func</span> <s [...]
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> <span style=color:#268bd2>main</span>() {
 </span></span><span style=display:flex><span>  srv, err <span 
style=color:#719e07>:=</span> server.<span style=color:#268bd2>NewServer</span>(
 </span></span><span style=display:flex><span>          server.<span 
style=color:#268bd2>WithServerProtocol</span>(
 </span></span><span style=display:flex><span>                  protocol.<span 
style=color:#268bd2>WithPort</span>(<span style=color:#2aa198>20000</span>),
@@ -753,44 +773,66 @@ service definition.</p></li></ol><h2 
id=quick-run-example>Quick Run Example</h2>
 </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>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create server: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</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>if</span> err <span style=color:#719e07>:=</span> 
greet.<span style=color:#268bd2>RegisterGreetServiceHandler</span>(srv, <span 
style=color:#719e07>&amp;</span>GreetTripleServer{}); err <span 
style=color:#719e07>!=</span> <span style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
register greet service handler: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</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>if</span> err <span style=color:#719e07>:=</span> srv.<span 
style=color:#268bd2>Serve</span>(); err <span style=color:#719e07>!=</span> 
<span style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Error</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
serve: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>}
 </span></span></code></pre></div><h3 id=access-service>Access 
Service</h3><p>The simplest way is to use an HTTP/1.1 POST request to access 
the service, passing the parameters as standard JSON format in the HTTP 
payload. Here is an example using a cURL 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-shell data-lang=shell><span style=display:flex><span>curl <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;: &#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    http://localhost:20000/greet.GreetService/Greet
-</span></span></code></pre></div><p>You can also use a Dubbo client to request 
the service. First, obtain the service proxy from the generated code in the 
<code>greet</code> package, specify the server address, and initialize it. Then 
you can initiate an RPC call.</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-go data-lang=go><span style=display:flex><span><span 
style=color:#268bd2>func</s [...]
+</span></span></code></pre></div><p>You can also use a Dubbo client to request 
the service. First, obtain the service proxy from the generated code in the 
<code>greet</code> package, specify the server address, and initialize it. Then 
you can initiate an RPC call.</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-go data-lang=go><span style=display:flex><span><span 
style=color:#719e07>package [...]
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#719e07>import</span> (
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;context&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;time&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/client&#34;</span>
+</span></span><span style=display:flex><span>  _ <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/imports&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;github.com/dubbogo/gost/log/logger&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  greet <span 
style=color:#2aa198>&#34;github.com/apache/dubbo-go-samples/helloworld/proto&#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>func</span> <span style=color:#268bd2>main</span>() {
 </span></span><span style=display:flex><span>  cli, err <span 
style=color:#719e07>:=</span> client.<span style=color:#268bd2>NewClient</span>(
 </span></span><span style=display:flex><span>          client.<span 
style=color:#268bd2>WithClientURL</span>(<span 
style=color:#2aa198>&#34;127.0.0.1:20000&#34;</span>),
 </span></span><span style=display:flex><span>  )
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create client: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>  svc, err <span 
style=color:#719e07>:=</span> greet.<span 
style=color:#268bd2>NewGreetService</span>(cli)
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create greet service: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>  resp, err <span 
style=color:#719e07>:=</span> svc.<span 
style=color:#268bd2>Greet</span>(context.<span 
style=color:#268bd2>Background</span>(), <span 
style=color:#719e07>&amp;</span>greet.GreetRequest{Name: <span 
style=color:#2aa198>&#34;hello world&#34;</span>})
+</span></span><span style=display:flex><span>  ctx, cancel <span 
style=color:#719e07>:=</span> context.<span 
style=color:#268bd2>WithTimeout</span>(context.<span 
style=color:#268bd2>Background</span>(), time.Second)
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>defer</span> <span style=color:#268bd2>cancel</span>()
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  resp, err <span 
style=color:#719e07>:=</span> svc.<span style=color:#268bd2>Greet</span>(ctx, 
<span style=color:#719e07>&amp;</span>greet.GreetRequest{Name: <span 
style=color:#2aa198>&#34;hello world&#34;</span>})
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Error</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
greet: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>  logger.<span 
style=color:#268bd2>Infof</span>(<span style=color:#2aa198>&#34;Greet response: 
%s&#34;</span>, resp.Greeting)
 </span></span><span style=display:flex><span>}
 </span></span></code></pre></div><p>This is the basic working principle of 
dubbo-go RPC!</p><p>After the basic unary call is working, the same generated 
Triple client and server also support server streaming,
 client streaming, bidirectional streaming, request metadata, response headers 
and trailers, filters, health checks,
 timeouts, retries, and OpenAPI exposure. Continue with the RPC framework 
guides for these capabilities.</p><h2 id=more-content>More Content</h2><section 
id=section-0><div class="td-content list-page"><div class=lead></div><header 
class=article-meta></header><div class=row><div class="col-sm col-md-6 
mb-4"><div class="h-100 card shadow" href=#><div class=card-body><h4 
class=card-title><a href=/en/overview/mannual/golang-sdk/tutorial/rpc/>More 
Features of RPC Framework</a></h4><p>Learn abo [...]
-<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
 [...]
+<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//overview/mannual/golang-sdk/quickstart/rpc?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-started.md%60%0A%2A+Edit+the+%22front+m
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=Develop%20RPC%20Server%20&amp;amp;%20RPC%20Client";
 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=#prerequisites>Prerequisites</a></li><li><a 
href=#quick-run-example>Quick Run Example</a><ul><li><a 
href=#download-example-source-code>Download Example Source Code</a></li><li><a 
href=#run-server>Run Server</a></li><li><a href=#run-client>Run 
Client</a></li></ul></li><li><a href=#source-code-explanation>Source Code Expla 
[...]
diff --git a/en/sitemap.xml b/en/sitemap.xml
index 0611d9a2745..a85f5e99116 100644
--- a/en/sitemap.xml
+++ b/en/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/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</loc><lastmod>2024-09-30T17:53:33+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="zh-cn" 
href="https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7
 [...]
\ 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/en/blog/2023/01/16/alibaba-upgrades-dubbo3-to-fully-replace-hsf2/</loc><lastmod>2024-09-30T17:53:33+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="zh-cn" 
href="https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7
 [...]
\ No newline at end of file
diff --git a/js/app.js b/js/app.js
index 4aed2c48182..069248774b1 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1,2 +1 @@
-(function(){"use strict";var t={5030:function(t,e,r){var 
n=r(2856),o=function(){var t=this,e=t._self._c;return 
e("div",{attrs:{id:"app"}},[e("el-row",[e("el-col",{attrs:{span:24}},[e("div",{staticStyle:{"font-size":"30px"}},[t._v("Dubbo
 
基准测试")])])],1),e("el-row",[e("el-col",{attrs:{span:24}},[e("div",{staticStyle:{"font-size":"15px","text-align":"right"}},[e("a",{attrs:{target:"_blank",href:"https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-
 [...]
-//# sourceMappingURL=app.c906e183.js.map
\ No newline at end of file
+// Respond to static link checks, which will be dynamically replaced at build 
time
\ No newline at end of file
diff --git a/js/chunk-vendors.js b/js/chunk-vendors.js
index af87a80870e..069248774b1 100644
--- a/js/chunk-vendors.js
+++ b/js/chunk-vendors.js
@@ -1,60 +1 @@
-(self["webpackChunkdubbo_benchmark"]=self["webpackChunkdubbo_benchmark"]||[]).push([[504],{1656:function(e,t,n){"use
 strict";function i(e,t,n,i,r,o,a,s){var l,u="function"===typeof 
e?e.options:e;if(t&&(u.render=t,u.staticRenderFns=n,u._compiled=!0),i&&(u.functional=!0),o&&(u._scopeId="data-v-"+o),a?(l=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof
 __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),r&& [...]
-/**
- * @license
- * Lodash <https://lodash.com/>
- * Copyright JS Foundation and other contributors <https://js.foundation/>
- * Released under MIT license <https://lodash.com/license>
- * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
- * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & 
Editors
- */(function(){var o,a="4.17.10",s=200,l="Unsupported core-js use. Try 
https://npms.io/search?q=ponyfill.",u="Expected a 
function",c="__lodash_hash_undefined__",h=500,d="__lodash_placeholder__",p=1,f=2,g=4,v=1,m=2,y=1,b=2,_=4,x=8,w=16,S=32,C=64,k=128,M=256,T=512,D=30,I="...",O=800,A=16,E=1,P=2,L=3,N=1/0,R=9007199254740991,$=17976931348623157e292,z=NaN,V=4294967295,F=V-1,B=V>>>1,j=[["ary",k],["bind",y],["bindKey",b],["curry",x],["curryRight",w],["flip",T],["partial",S],["partialRight",C],
 [...]
-/**
- * @fileOverview Kickass library to create and place poppers near their 
reference elements.
- * @version {{version}}
- * @license
- * Copyright (c) 2016 Federico Zivolo and contributors
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to 
deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in 
all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
THE
- * SOFTWARE.
- */(function(o,a){i=a,r="function"===typeof i?i.call(t,n,t,e):i,void 
0===r||(e.exports=r)})(0,function(){var 
e=window,t={placement:"bottom",gpuAcceleration:!0,offset:0,boundariesElement:"viewport",boundariesPadding:5,preventOverflowOrder:["left","right","top","bottom"],flipBehavior:"flip",arrowElement:"[x-arrow]",arrowOffset:0,modifiers:["shift","offset","preventOverflow","keepTogether","arrow","flip","applyStyle"],modifiersIgnored:[],forceAbsolute:!1};function
 n(e,n,i){this._reference=e [...]
-/*!
- * jQuery JavaScript Library v3.7.1
- * https://jquery.com/
- *
- * Copyright OpenJS Foundation and other contributors
- * Released under the MIT license
- * https://jquery.org/license
- *
- * Date: 2023-08-28T13:37Z
- */
-function(t,n){"use strict";"object"===typeof 
e.exports?e.exports=t.document?n(t,!0):function(e){if(!e.document)throw new 
Error("jQuery requires a window with a document");return 
n(e)}:n(t)}("undefined"!==typeof window?window:this,function(n,o){"use 
strict";var a=[],s=Object.getPrototypeOf,l=a.slice,u=a.flat?function(e){return 
a.flat.call(e)}:function(e){return 
a.concat.apply([],e)},c=a.push,h=a.indexOf,d={},p=d.toString,f=d.hasOwnProperty,g=f.toString,v=g.call(Object),m={},y=function(e){
 [...]
-/**
- * Checks if an event is supported in the current execution environment.
- *
- * NOTE: This will not work correctly for non-generic events such as `change`,
- * `reset`, `load`, `error`, and `select`.
- *
- * Borrows from Modernizr.
- *
- * @param {string} eventNameSuffix Event name, e.g. "click".
- * @param {?boolean} capture Check if the capture phase is supported.
- * @return {boolean} True if the event is supported.
- * @internal
- * @license Modernizr 3.0.0pre (Custom Build) | MIT
- */
-function o(e,t){if(!r.canUseDOM||t&&!("addEventListener"in 
document))return!1;var n="on"+e,o=n in document;if(!o){var 
a=document.createElement("div");a.setAttribute(n,"return;"),o="function"===typeof
 
a[n]}return!o&&i&&"wheel"===e&&(o=document.implementation.hasFeature("Events.wheel","3.0")),o}r.canUseDOM&&(i=document.implementation&&document.implementation.hasFeature&&!0!==document.implementation.hasFeature("","")),e.exports=o},9030:function(e,t,n){"use
 strict";var i=n(8656),r=n(2021),o= [...]
-//# sourceMappingURL=chunk-vendors.d27db076.js.map
\ No newline at end of file
+// Respond to static link checks, which will be dynamically replaced at build 
time
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index 072f55dc576..020f48e1985 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/zh-cn/sitemap.xml</loc><lastmod>2026-07-29T17:42:13+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-06-23T02:09:33+00: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>2026-08-07T20:51:37+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-07T20:51:37+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/index.xml b/zh-cn/index.xml
index dbe7b0ba042..df0a5d3b9a2 100644
--- a/zh-cn/index.xml
+++ b/zh-cn/index.xml
@@ -7797,14 +7797,8 @@ Zipkin: &lt;a 
href="https://github.com/openzipkin/zipkin-helm"&gt;https://github
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code
 class="language-shell" data-lang="shell"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;go install 
google.golang.org/protobuf/cmd/protoc-gen-go@latest
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git 
clone --depth &lt;span style="color:#2aa198"&gt;1&lt;/span&gt; 
https://github.com/apache/dubbo-go.git
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#b58900"&gt;cd&lt;/span&gt; dubbo-go/tools/protoc-gen-go-triple
-&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go 
install .
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确保 
&lt;code&gt;protoc-gen-go&lt;/code&gt;、&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 在你的 &lt;code&gt;PATH&lt;/code&gt; 中。这可以通过 &lt;code&gt;which 
protoc-gen-go&lt;/code&gt; 验证,如果该命令不能正常工作的话,请执行以下命令:&lt;/p&gt;
-&lt;div class="highlight"&gt;&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code
 class="language-shell" data-lang="shell"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;[&lt;/span&gt; -n &lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt;&lt;span 
style="color:#719e07"&gt;$(&lt;/span&gt;go env GOBIN&lt;span 
style="color:#719e07"&gt;)&lt;/span&gt;&lt;span style="color:#2aa198"&gt; [...]
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;[&lt;/span&gt; -n &lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt;&lt;span 
style="color:#719e07"&gt;$(&lt;/span&gt;go env GOPATH&lt;span 
style="color:#719e07"&gt;)&lt;/span&gt;&lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt; &lt;span 
style="color:#719e07"&gt;]&lt;/span&gt; &lt;span 
style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span 
style="color:#b58900" [...]
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 现在维护在 dubbo-go 仓库的
-&lt;a 
href="https://github.com/apache/dubbo-go/tree/main/tools/protoc-gen-go-triple"; 
target="_blank"&gt;tools/protoc-gen-go-triple&lt;/a&gt;
-目录下。请从该目录安装;修改 &lt;code&gt;.proto&lt;/code&gt; 服务定义后,请同步重新生成 
&lt;code&gt;*.triple.go&lt;/code&gt; 
文件。&lt;/p&gt;</description></item><item><title>可观测性</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/observability/console/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/observability/console/</guid><description>&lt;p&gt;管理
 Dubbo 最直接的方式就是通过 Dubbo 控制面(即 dubbo-control-plane)提供的可视化界面, [...]
+&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;(&lt;/span&gt;&lt;span 
style="color:#b58900"&gt;cd&lt;/span&gt; dubbo-go/tools/protoc-gen-go-triple 
&lt;span style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; go install 
.&lt;span style="color:#719e07"&gt;)&lt;/span&gt;
+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确保 
&lt;code&gt;protoc-gen-go&lt;/code&gt;、&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 在你的 &lt;code&gt;PATH&lt;/code&gt; 中。这可以通过 &lt;code&gt;which 
protoc-gen-go&lt;/code&gt; 和 &lt;code&gt;which 
protoc-gen-go-triple&lt;/code&gt; 
验证。如果命令不能正常工作,请执行以下命令:&lt;/p&gt;</description></item><item><title>可观测性</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/observability/console/</link><pubDate>Mon
 [...]
 &lt;p&gt;&lt;strong&gt;&lt;code&gt;dubbo-control-plane&lt;/code&gt; 
支持可视化的展示、监控集群状态,还支持实时下发流量管控规则。&lt;/strong&gt;&lt;/p&gt;
 &lt;h2 id="安装控制台"&gt;安装控制台&lt;/h2&gt;
 &lt;p&gt;为了体验效果,我们首先需要安装 dubbo-control-plane,以下是在 Linux 环境下安装 
dubbo-control-plane 的具体步骤:&lt;/p&gt;
diff --git a/zh-cn/overview/mannual/golang-sdk/quickstart/index.xml 
b/zh-cn/overview/mannual/golang-sdk/quickstart/index.xml
index 0ca49cb6699..5fe3aa9a5e5 100644
--- a/zh-cn/overview/mannual/golang-sdk/quickstart/index.xml
+++ b/zh-cn/overview/mannual/golang-sdk/quickstart/index.xml
@@ -14,14 +14,8 @@
 &lt;div class="highlight"&gt;&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code
 class="language-shell" data-lang="shell"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;go install 
google.golang.org/protobuf/cmd/protoc-gen-go@latest
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;git 
clone --depth &lt;span style="color:#2aa198"&gt;1&lt;/span&gt; 
https://github.com/apache/dubbo-go.git
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#b58900"&gt;cd&lt;/span&gt; dubbo-go/tools/protoc-gen-go-triple
-&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;go 
install .
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确保 
&lt;code&gt;protoc-gen-go&lt;/code&gt;、&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 在你的 &lt;code&gt;PATH&lt;/code&gt; 中。这可以通过 &lt;code&gt;which 
protoc-gen-go&lt;/code&gt; 验证,如果该命令不能正常工作的话,请执行以下命令:&lt;/p&gt;
-&lt;div class="highlight"&gt;&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code
 class="language-shell" data-lang="shell"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;[&lt;/span&gt; -n &lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt;&lt;span 
style="color:#719e07"&gt;$(&lt;/span&gt;go env GOBIN&lt;span 
style="color:#719e07"&gt;)&lt;/span&gt;&lt;span style="color:#2aa198"&gt; [...]
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;[&lt;/span&gt; -n &lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt;&lt;span 
style="color:#719e07"&gt;$(&lt;/span&gt;go env GOPATH&lt;span 
style="color:#719e07"&gt;)&lt;/span&gt;&lt;span 
style="color:#2aa198"&gt;&amp;#34;&lt;/span&gt; &lt;span 
style="color:#719e07"&gt;]&lt;/span&gt; &lt;span 
style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span 
style="color:#b58900" [...]
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 现在维护在 dubbo-go 仓库的
-&lt;a 
href="https://github.com/apache/dubbo-go/tree/main/tools/protoc-gen-go-triple"; 
target="_blank"&gt;tools/protoc-gen-go-triple&lt;/a&gt;
-目录下。请从该目录安装;修改 &lt;code&gt;.proto&lt;/code&gt; 服务定义后,请同步重新生成 
&lt;code&gt;*.triple.go&lt;/code&gt; 
文件。&lt;/p&gt;</description></item><item><title>开发微服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/microservices/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/microservices/</guid><description>&lt;p&gt;本示例演示了使用
 dubbo-go 开发微服务应用,为应用增加包括服务发现、负载均衡、流量管控等微服务核心能力。&lt;/p&gt;
+&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#719e07"&gt;(&lt;/span&gt;&lt;span 
style="color:#b58900"&gt;cd&lt;/span&gt; dubbo-go/tools/protoc-gen-go-triple 
&lt;span style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; go install 
.&lt;span style="color:#719e07"&gt;)&lt;/span&gt;
+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;确保 
&lt;code&gt;protoc-gen-go&lt;/code&gt;、&lt;code&gt;protoc-gen-go-triple&lt;/code&gt;
 在你的 &lt;code&gt;PATH&lt;/code&gt; 中。这可以通过 &lt;code&gt;which 
protoc-gen-go&lt;/code&gt; 和 &lt;code&gt;which 
protoc-gen-go-triple&lt;/code&gt; 
验证。如果命令不能正常工作,请执行以下命令:&lt;/p&gt;</description></item><item><title>开发微服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/microservices/</link><pubDate>Mon
 [...]
 &lt;p&gt;示例源码:&lt;a 
href="https://github.com/apache/dubbo-go-samples/tree/main/registry/nacos"; 
target="_blank"&gt;dubbo-go-samples/registry/nacos&lt;/a&gt;。&lt;/p&gt;
 &lt;h2 id="前置条件"&gt;前置条件&lt;/h2&gt;
 &lt;p&gt;本示例我们继续使用 Protobuf 开发微服务应用,请参考 &lt;a href="../rpc"&gt;开发 rpc server 和 
rpc client&lt;/a&gt; 了解如何安装 protoc、protoc-gen-go-triple 等必须插件。&lt;/p&gt;
diff --git a/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/index.html 
b/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/index.html
index b45d112465e..98c16d02709 100644
--- a/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/index.html
+++ b/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=alternate hreflang=en 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/quickstart/rpc/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"]),_paq.push(["trackPage
 [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=alternate hreflang=en 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/quickstart/rpc/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/quickstart/rpc/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"]),_paq.push(["trackPage
 [...]
 <a class=dropdown-item href=/zh-cn/overview/notices/>安全公告</a>
 <a class=dropdown-item href=/zh-cn/contact/>贡献者指南</a></div></li><li 
class="nav-item nav-item-line px-2 mb-2 mb-lg-0"><a class=nav-link 
href=/zh-cn/blog/><span>博客</span></a></li><li class="nav-item nav-item-line 
px-2 mb-2 mb-lg-0"><a class=nav-link 
href=/zh-cn/download/><span>下载</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>生态</a><div class="dropdo [...]
 <a class=dropdown-item href=/zh-cn/overview/mannual/control-plane/>可视化控制台</a>
@@ -691,24 +691,22 @@
 <label for=m-zh-cnoverviewnoticeslog4j-check><a 
href=/zh-cn/overview/notices/log4j/ class="align-left pl-0 td-sidebar-link 
td-sidebar-link__page" id=m-zh-cnoverviewnoticeslog4j><span>Log4j 
漏洞影响</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=/zh-cn/overview/>文档</a></li><li class=breadcrumb-item><a href=/zh-cn/ove 
[...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>git clone --depth <span 
style=color:#2aa198>1</span> https://github.com/apache/dubbo-go.git
-</span></span><span style=display:flex><span><span 
style=color:#b58900>cd</span> dubbo-go/tools/protoc-gen-go-triple
-</span></span><span style=display:flex><span>go install .
-</span></span></code></pre></div><p>确保 
<code>protoc-gen-go</code>、<code>protoc-gen-go-triple</code> 在你的 
<code>PATH</code> 中。这可以通过 <code>which protoc-gen-go</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-shell data-lang=shell><span style=display:flex><span><span 
style=color:#719e07>[</span> -n <span style=color:#2aa198>&#34;</span><span 
style=color:#719e07>$ [...]
+</span></span><span style=display:flex><span><span 
style=color:#719e07>(</span><span style=color:#b58900>cd</span> 
dubbo-go/tools/protoc-gen-go-triple <span style=color:#719e07>&amp;&amp;</span> 
go install .<span style=color:#719e07>)</span>
+</span></span></code></pre></div><p>确保 
<code>protoc-gen-go</code>、<code>protoc-gen-go-triple</code> 在你的 
<code>PATH</code> 中。这可以通过 <code>which protoc-gen-go</code> 和 <code>which 
protoc-gen-go-triple</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-shell data-lang=shell><span style=display:flex><span><span 
style=color:#719e07>[</span> -n <span style=color:#2aa198> [...]
 </span></span><span style=display:flex><span><span 
style=color:#719e07>[</span> -n <span style=color:#2aa198>&#34;</span><span 
style=color:#719e07>$(</span>go env GOPATH<span 
style=color:#719e07>)</span><span style=color:#2aa198>&#34;</span> <span 
style=color:#719e07>]</span> <span style=color:#719e07>&amp;&amp;</span> <span 
style=color:#b58900>export</span> <span style=color:#268bd2>PATH</span><span 
style=color:#719e07>=</span><span style=color:#2aa198>&#34;</span><span 
style=color:#719 [...]
 </span></span></code></pre></div><p><code>protoc-gen-go-triple</code> 现在维护在 
dubbo-go 仓库的
 <a 
href=https://github.com/apache/dubbo-go/tree/main/tools/protoc-gen-go-triple 
target=_blank>tools/protoc-gen-go-triple</a>
-目录下。请从该目录安装;修改 <code>.proto</code> 服务定义后,请同步重新生成 <code>*.triple.go</code> 
文件。</p></li></ol><h2 id=快速运行示例>快速运行示例</h2><h3 id=下载示例源码>下载示例源码</h3><p>我们在 <a 
href=https://github.com/apache/dubbo-go-samples/ 
target=_blank>apache/dubbo-go-samples</a> 仓库维护了一系列 dubbo-go 使用示例,用来帮助用户快速学习 
dubbo-go 使用方式。</p><p>你可以 <a 
href=https://github.com/apache/dubbo-go-samples/archive/refs/heads/main.zip 
target=_blank>下载示例 zip 包并解压</a>,或者克隆仓库:</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-c [...]
-</span></span></code></pre></div><p>切换到快速开始示例目录:</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> dubbo-go-samples/helloworld
-</span></span></code></pre></div><h3 id=运行-server>运行 server</h3><p>在 
<code>go-server/cmd</code> 目录:</p><p>运行以下命令,启动 server:</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>$ go run 
server.go
-</span></span></code></pre></div><p>使用 <code>cURL</code> 验证 server 
已经正常启动:</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>$ curl 
<span style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;: &#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>      http://localhost:20000/greet.GreetService/Greet
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>Greeting: Hello world
-</span></span></code></pre></div><h3 id=运行-client>运行 client</h3><p>打开一个新的 
terminal,运行以下命令,在 <code>go-client/cmd</code> 目录运行以下命令,启动 client</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>$ go run 
client.go
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>Greeting: Hello world
+目录下。请从该目录安装;修改 <code>.proto</code> 服务定义后,请同步重新生成 <code>*.triple.go</code> 
文件。</p></li></ol><h2 id=快速运行示例>快速运行示例</h2><h3 id=下载示例源码>下载示例源码</h3><p>我们在 <a 
href=https://github.com/apache/dubbo-go-samples/ 
target=_blank>apache/dubbo-go-samples</a> 仓库维护了一系列 dubbo-go 使用示例,用来帮助用户快速学习 
dubbo-go 使用方式。</p><p>你可以 <a 
href=https://github.com/apache/dubbo-go-samples/archive/refs/heads/main.zip 
target=_blank>下载示例 zip 包并解压</a>,或者克隆仓库:</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-c [...]
+</span></span><span style=display:flex><span><span 
style=color:#b58900>cd</span> dubbo-go-samples/helloworld
+</span></span></code></pre></div><h3 id=运行-server>运行 server</h3><p>以下命令均从 
<code>helloworld</code> 根目录运行。启动 server:</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>go run 
./go-server/cmd/main.go
+</span></span></code></pre></div><p>使用 <code>cURL</code> 验证 server 
已经正常启动:</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>curl <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;:&#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  http://localhost:20000/greet.GreetService/Greet
+</span></span></code></pre></div><p>响应为:</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 
style=color:#268bd2>&#34;greeting&#34;</span>:<span 
style=color:#2aa198>&#34;Dubbo&#34;</span>}
+</span></span></code></pre></div><h3 id=运行-client>运行 
client</h3><p>打开一个新的终端,重新进入 <code>helloworld</code> 根目录并启动 client:</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> dubbo-go-samples/helloworld
+</span></span><span style=display:flex><span>go run ./go-client/cmd/main.go
+</span></span></code></pre></div><p>日志中包含以下响应(时间、日志级别和调用位置等前缀会因运行环境而异):</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>Greet 
response: hello world
 </span></span></code></pre></div><p>以上就是一个完整的 dubbo-go RPC 通信服务开发过程。</p><h2 
id=源码讲解>源码讲解</h2><p>接下来,我们将对 <code>dubbo-go-samples/helloworld</code> 
示例进行源码层面的讲解。</p><h3 id=定义服务>定义服务</h3><p>示例使用 Protocol Buffer (IDL) 来定义 Dubbo 
服务。</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-protobuf data-lang=protobuf><span 
style=display:flex><span>syntax <span style=color:#719e07>=</span> <span 
style=color [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#719e07>package</span> greet;
@@ -725,21 +723,43 @@
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>service</span> GreetService {
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>rpc</span> Greet(GreetRequest) <span 
style=color:#719e07>returns</span> (GreetResponse) {}
 </span></span><span style=display:flex><span>}
-</span></span></code></pre></div><p>这个文件声明了一个叫做 <code>GreetService</code> 
的服务,为这个服务定义了 Greet 方法以及它的请求参数 GreetRequest 和返回值 GreetResponse。</p><h3 
id=生成代码>生成代码</h3><p>在运行 server 或者 client 之前,我们需要使用 
<code>protoc-gen-go</code>、<code>protoc-gen-go-triple</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-bash data-lang=bash><span style=display:flex><span>protoc 
--go_out<span style=col [...]
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --go-triple_out<span 
style=color:#719e07>=</span>. --go-triple_opt<span 
style=color:#719e07>=</span><span style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    ./greet.proto
-</span></span></code></pre></div><p>运行以上命令后,在目标目录中看到以下生成的文件:</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> 
proto
-</span></span><span style=display:flex><span>    ├── greet.pb.go
-</span></span><span style=display:flex><span>    ├── greet.proto
-</span></span><span style=display:flex><span>    └── greet.triple.go
-</span></span></code></pre></div><p>在 proto/greet/v1 
包下有两部分内容:</p><ul><li><code>greet.pb.go</code> 是由谷歌标准的 
<code>protoc-gen-go</code>生成,它包含 
<code>GreetRequest</code>、<code>GreetResponse</code> 
结构体和响应的编解码规则。</li><li><code>greet.triple.go</code> 是由 Dubbo 
自定义的插件<code>protoc-gen-go-triple</code>成,其中关键的信息包括生成的接口 
<code>GreetService</code>、构造器等。</li></ul><h3 
id=实现服务>实现服务</h3><p>接下来我们就需要添加业务逻辑了,实现 <code>greet.GreetService</code> 
接口即可。</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;b [...]
+</span></span></code></pre></div><p><code>proto/greet.proto</code> 声明了名为 
<code>GreetService</code> 的服务,并定义了 RPC 方法 <code>Greet</code>、请求 
<code>GreetRequest</code> 和响应 <code>GreetResponse</code>。</p><h3 
id=生成代码>生成代码</h3><p>在运行 server 或 client 之前,需要在 <code>helloworld</code> 根目录使用 
<code>protoc-gen-go</code> 和 <code>protoc-gen-go-triple</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=lang [...]
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go_out<span style=color:#719e07>=</span>. <span 
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go_opt<span style=color:#719e07>=</span><span 
style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go-triple_out<span style=color:#719e07>=</span>. 
<span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  --go-triple_opt<span 
style=color:#719e07>=</span><span style=color:#268bd2>paths</span><span 
style=color:#719e07>=</span>source_relative <span style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>  ./proto/greet.proto
+</span></span></code></pre></div><p>运行后,<code>proto</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>proto/
+</span></span><span style=display:flex><span>├── greet.proto
+</span></span><span style=display:flex><span>├── greet.pb.go
+</span></span><span style=display:flex><span>└── greet.triple.go
+</span></span></code></pre></div><p>其中:</p><ul><li><code>greet.pb.go</code> 
由标准的 <code>protoc-gen-go</code> 生成,主要包含 
<code>GreetRequest</code>、<code>GreetResponse</code> 等 Protobuf 
消息及编解码代码。</li><li><code>greet.triple.go</code> 由 
<code>protoc-gen-go-triple</code> 生成,主要包含 Triple 服务端注册、客户端代理和 RPC 调用相关代码,例如 
<code>RegisterGreetServiceHandler</code> 和 
<code>NewGreetService</code>。</li></ul><p>修改 <code>proto/greet.proto</code> 
后,需要重新运行上述命令,同时更新这两个生成文件。</p><h3 id=实现服务>实现服务</h3><p>接下来添加业务逻辑。<code [...]
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> (srv <span 
style=color:#719e07>*</span>GreetTripleServer) <span 
style=color:#268bd2>Greet</span>(ctx context.Context, req <span 
style=color:#719e07>*</span>greet.GreetRequest) (<span 
style=color:#719e07>*</span>greet.GreetResponse, <span 
style=color:#dc322f>error</span>) {
+</span></span><span style=display:flex><span>  resp <span 
style=color:#719e07>:=</span> <span 
style=color:#719e07>&amp;</span>greet.GreetResponse{Greeting: req.Name}
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> resp, <span style=color:#cb4b16>nil</span>
 </span></span><span style=display:flex><span>}
+</span></span></code></pre></div><h3 id=启动-server>启动 Server</h3><p>创建 
Server,并通过 <code>RegisterGreetServiceHandler</code> 注册上一步实现的 
<code>GreetTripleServer</code>。Server 在 <code>20000</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-go data-lang=go><span style=display:flex><span><span 
style=color:#719e07>package</span> main
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#719e07>import</span> (
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;context&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  _ <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/imports&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/protocol&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/server&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;github.com/dubbogo/gost/log/logger&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  greet <span 
style=color:#2aa198>&#34;github.com/apache/dubbo-go-samples/helloworld/proto&#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>type</span> GreetTripleServer <span 
style=color:#268bd2>struct</span>{}
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> (srv <span 
style=color:#719e07>*</span>GreetTripleServer) <span 
style=color:#268bd2>Greet</span>(ctx context.Context, req <span 
style=color:#719e07>*</span>greet.GreetRequest) (<span 
style=color:#719e07>*</span>greet.GreetResponse, <span 
style=color:#dc322f>error</span>) {
 </span></span><span style=display:flex><span>  resp <span 
style=color:#719e07>:=</span> <span 
style=color:#719e07>&amp;</span>greet.GreetResponse{Greeting: req.Name}
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> resp, <span style=color:#cb4b16>nil</span>
 </span></span><span style=display:flex><span>}
-</span></span></code></pre></div><h3 id=启动-server>启动 Server</h3><p>创建一个新的 
Server,把我们上一步中实现的 <code>GreeterServer</code>注册给它,接下来就可以直接初始化和启动 Server 
了,它将在指定的端口接收请求。</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-go data-lang=go><span style=display:flex><span><span 
style=color:#268bd2>func</span> <span style=color:#268bd2>main</span>() {
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#268bd2>func</span> <span style=color:#268bd2>main</span>() {
 </span></span><span style=display:flex><span>  srv, err <span 
style=color:#719e07>:=</span> server.<span style=color:#268bd2>NewServer</span>(
 </span></span><span style=display:flex><span>          server.<span 
style=color:#268bd2>WithServerProtocol</span>(
 </span></span><span style=display:flex><span>                  protocol.<span 
style=color:#268bd2>WithPort</span>(<span style=color:#2aa198>20000</span>),
@@ -747,44 +767,66 @@
 </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>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create server: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</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>if</span> err <span style=color:#719e07>:=</span> 
greet.<span style=color:#268bd2>RegisterGreetServiceHandler</span>(srv, <span 
style=color:#719e07>&amp;</span>GreetTripleServer{}); err <span 
style=color:#719e07>!=</span> <span style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
register greet service handler: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</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>if</span> err <span style=color:#719e07>:=</span> srv.<span 
style=color:#268bd2>Serve</span>(); err <span style=color:#719e07>!=</span> 
<span style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Error</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
serve: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>}
 </span></span></code></pre></div><h3 id=访问服务>访问服务</h3><p>最简单方式是使用 HTTP/1.1 
POST 请求访问服务,参数则作以标准 JSON 格式作为 HTTP 负载传递。如下是使用 cURL 命令的访问示例:</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>curl <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --header <span 
style=color:#2aa198>&#34;Content-Type: application/json&#34;</span> <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    --data <span 
style=color:#2aa198>&#39;{&#34;name&#34;: &#34;Dubbo&#34;}&#39;</span> <span 
style=color:#cb4b16>\
 </span></span></span><span style=display:flex><span><span 
style=color:#cb4b16></span>    http://localhost:20000/greet.GreetService/Greet
-</span></span></code></pre></div><p>也可以使用 Dubbo client 请求服务,我们首先需要从生成代码即 
<code>greet</code> 包中获取服务代理,为它指定 server 地址并初始化,之后就可以发起 RPC 调用了。</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-go data-lang=go><span style=display:flex><span><span 
style=color:#268bd2>func</span> <span style=color:#268bd2>main</span>() {
+</span></span></code></pre></div><p>也可以使用 Dubbo client 请求服务,我们首先需要从生成代码即 
<code>greet</code> 包中获取服务代理,为它指定 server 地址并初始化,之后就可以发起 RPC 调用了。</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-go data-lang=go><span style=display:flex><span><span 
style=color:#719e07>package</span> main
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span 
style=color:#719e07>import</span> (
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;context&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;time&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/client&#34;</span>
+</span></span><span style=display:flex><span>  _ <span 
style=color:#2aa198>&#34;dubbo.apache.org/dubbo-go/v3/imports&#34;</span>
+</span></span><span style=display:flex><span>  <span 
style=color:#2aa198>&#34;github.com/dubbogo/gost/log/logger&#34;</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  greet <span 
style=color:#2aa198>&#34;github.com/apache/dubbo-go-samples/helloworld/proto&#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>func</span> <span style=color:#268bd2>main</span>() {
 </span></span><span style=display:flex><span>  cli, err <span 
style=color:#719e07>:=</span> client.<span style=color:#268bd2>NewClient</span>(
 </span></span><span style=display:flex><span>          client.<span 
style=color:#268bd2>WithClientURL</span>(<span 
style=color:#2aa198>&#34;127.0.0.1:20000&#34;</span>),
 </span></span><span style=display:flex><span>  )
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create client: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>  svc, err <span 
style=color:#719e07>:=</span> greet.<span 
style=color:#268bd2>NewGreetService</span>(cli)
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          <span 
style=color:#b58900>panic</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
create greet service: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>  resp, err <span 
style=color:#719e07>:=</span> svc.<span 
style=color:#268bd2>Greet</span>(context.<span 
style=color:#268bd2>Background</span>(), <span 
style=color:#719e07>&amp;</span>greet.GreetRequest{Name: <span 
style=color:#2aa198>&#34;hello world&#34;</span>})
+</span></span><span style=display:flex><span>  ctx, cancel <span 
style=color:#719e07>:=</span> context.<span 
style=color:#268bd2>WithTimeout</span>(context.<span 
style=color:#268bd2>Background</span>(), time.Second)
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>defer</span> <span style=color:#268bd2>cancel</span>()
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span>  resp, err <span 
style=color:#719e07>:=</span> svc.<span style=color:#268bd2>Greet</span>(ctx, 
<span style=color:#719e07>&amp;</span>greet.GreetRequest{Name: <span 
style=color:#2aa198>&#34;hello world&#34;</span>})
 </span></span><span style=display:flex><span>  <span 
style=color:#719e07>if</span> err <span style=color:#719e07>!=</span> <span 
style=color:#cb4b16>nil</span> {
-</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Error</span>(err)
+</span></span><span style=display:flex><span>          logger.<span 
style=color:#268bd2>Errorf</span>(<span style=color:#2aa198>&#34;failed to 
greet: %v&#34;</span>, err)
+</span></span><span style=display:flex><span>          <span 
style=color:#719e07>return</span>
 </span></span><span style=display:flex><span>  }
 </span></span><span style=display:flex><span>  logger.<span 
style=color:#268bd2>Infof</span>(<span style=color:#2aa198>&#34;Greet response: 
%s&#34;</span>, resp.Greeting)
 </span></span><span style=display:flex><span>}
 </span></span></code></pre></div><p>以上即是 dubbo-go rpc 的基本工作原理!</p><p>完成基础 
unary 调用后,同一套生成的 Triple client 和 server 还支持服务端流、客户端流、双向流、请求
 metadata、响应 header/trailer、filter、健康检查、超时、重试和 OpenAPI 暴露等能力。可以继续阅读 RPC
 框架部分的专题文档。</p><h2 id=更多内容>更多内容</h2><section id=section-0><div 
class="td-content list-page"><div class=lead></div><header 
class=article-meta></header><div class=row><div class="col-sm col-md-6 
mb-4"><div class="h-100 card shadow" href=#><div class=card-body><h4 
class=card-title><a href=/zh-cn/overview/mannual/golang-sdk/tutorial/rpc/>RPC 
框架更多特性</a></h4><p>学习 Streaming 
通信模型、配置超时时间、传递headers等更多框架配置。</p></div></div></div><div class="col-sm col-md-6 
mb-4"><div class="h-100 card shadow" href=# [...]
-<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/golang-sdk/quickstart/rpc?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-started.md%60%0A%2A+Edit+the+%22fron
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e5%bc%80%e5%8f%91%20RPC%20Server%20&amp;amp;%20RPC%20Client";
 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><ul><li><a 
href=#下载示例源码>下载示例源码</a></li><li><a href=#运行-server>运行 server</a></li><li><a 
href=#运行-client>运行 client</a></li></ul></li><li><a 
href=#源码讲解>源码讲解</a><ul><li><a href=#定义服务>定义服务</a></li><li><a 
href=#生成代码>生成代码</a></li><li><a href=#实现服务>实现服务</a></li><li><a 
href=#启动-server>启动 Server< [...]
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index d254cb29470..cc27999c7a5 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-11-28T15:14:12+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="en" href="https://cn.dubbo [...]
\ 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-11-28T15:14:12+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority><xhtml:link
 rel="alternate" hreflang="en" href="https://cn.dubbo [...]
\ No newline at end of file

Reply via email to