This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch asf-site-v2
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/asf-site-v2 by this push:
new a54f23017f5 deploy: 3499c246b1f97d504fde5c36237d48c257634ae9
a54f23017f5 is described below
commit a54f23017f5c0aa597186edfe7d83033c9df7f6e
Author: Alanxtl <[email protected]>
AuthorDate: Sun Aug 9 05:47:58 2026 +0000
deploy: 3499c246b1f97d504fde5c36237d48c257634ae9
---
en/index.xml | 2 +-
.../golang-sdk/tutorial/observability/index.xml | 2 +-
.../tutorial/observability/probe/index.html | 126 ++++++++++++++++-----
en/sitemap.xml | 2 +-
sitemap.xml | 2 +-
zh-cn/index.xml | 4 +-
.../golang-sdk/tutorial/observability/index.xml | 4 +-
.../tutorial/observability/probe/index.html | 126 ++++++++++++++++-----
zh-cn/sitemap.xml | 2 +-
9 files changed, 201 insertions(+), 69 deletions(-)
diff --git a/en/index.xml b/en/index.xml
index 05d0c68fb33..95fe9382388 100644
--- a/en/index.xml
+++ b/en/index.xml
@@ -3405,7 +3405,7 @@ For
example:</p></description></item><item><title>Dubbo SPI Plugins and De
</ul>
<p>For a complete runnable example, see:</p>
<blockquote>
-<p><a
href="https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe">https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe</a></p>
+<p><a
href="https://github.com/apache/dubbo-go-samples/tree/main/observability/probe">https://github.com/apache/dubbo-go-samples/tree/main/observability/probe</a></p>
</blockquote>
<hr>
<h1 id="1-design-goals">1. Design Goals</h1>
diff --git a/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
b/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
index f1116d58111..8e141b30a33 100644
--- a/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
+++ b/en/overview/mannual/golang-sdk/tutorial/observability/index.xml
@@ -49,7 +49,7 @@
</ul>
<p>For a complete runnable example, see:</p>
<blockquote>
-<p><a
href="https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe">https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe</a></p>
+<p><a
href="https://github.com/apache/dubbo-go-samples/tree/main/observability/probe">https://github.com/apache/dubbo-go-samples/tree/main/observability/probe</a></p>
</blockquote>
<hr>
<h1 id="1-design-goals">1. Design Goals</h1>
diff --git
a/en/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
b/en/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
index 0f5d990f559..13b0178d8af 100644
--- a/en/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
+++ b/en/overview/mannual/golang-sdk/tutorial/observability/probe/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://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/><link
rel=canonical
href=https://dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/probe/><script>var
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"])
[...]
+<!doctype html><html lang=en class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=alternate hreflang=zh-cn
href=https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/><link
rel=canonical
href=https://dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/probe/><script>var
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"])
[...]
<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>
@@ -693,8 +693,8 @@
<label for=m-enoverviewnoticesprotocol-check><a
href=/en/overview/notices/protocol/ class="align-left pl-0 td-sidebar-link
td-sidebar-link__page" id=m-enoverviewnoticesprotocol><span>RPC Protocol
Security</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child" id=m-enoverviewnoticesregistry-li><input
type=checkbox id=m-enoverviewnoticesregistry-check>
<label for=m-enoverviewnoticesregistry-check><a
href=/en/overview/notices/registry/ class="align-left pl-0 td-sidebar-link
td-sidebar-link__page" id=m-enoverviewnoticesregistry><span>Registry Center
Security</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child" id=m-enoverviewnoticesadmin-li><input
type=checkbox id=m-enoverviewnoticesadmin-check>
<label for=m-enoverviewnoticesadmin-check><a href=/en/overview/notices/admin/
class="align-left pl-0 td-sidebar-link td-sidebar-link__page"
id=m-enoverviewnoticesadmin><span>Dubbo Admin
Security</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child" id=m-enoverviewnoticeslog4j-li><input
type=checkbox id=m-enoverviewnoticeslog4j-check>
-<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></code></pre></div><p>The following paths are
available:</p><table><thead><tr><th>Endpoint</th><th>Description</th></tr></thead><tbody><tr><td>GET
/live</td><td>Process liveness check</td></tr><tr><td>GET
/ready</td><td>Service readiness check</td></tr><tr><td>GET
/startup</td><td>Application startup check</td></tr></tbody></table><hr><h2
id=response-rules>Response
Rules</h2><table><thead><tr><th>Condition</th><th>HTTP Status
Code</th></tr></thead><tbody><tr><td>All checks [...]
+<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></code></pre></div><p>The following paths are
available:</p><table><thead><tr><th>Endpoint</th><th>Description</th></tr></thead><tbody><tr><td>GET
/live</td><td>Process liveness check</td></tr><tr><td>GET
/ready</td><td>Service readiness check</td></tr><tr><td>GET
/startup</td><td>Application startup check</td></tr></tbody></table><hr><h2
id=response-rules>Response
Rules</h2><table><thead><tr><th>Condition</th><th>HTTP Status
Code</th></tr></thead><tbody><tr><td>All checks [...]
</span></span><span style=display:flex><span> dubbo.<span
style=color:#268bd2>WithMetrics</span>(
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbeEnabled</span>(),
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbePort</span>(<span
style=color:#2aa198>22222</span>),
@@ -704,7 +704,7 @@
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbeUseInternalState</span>(<span
style=color:#cb4b16>true</span>),
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span>)
-</span></span></code></pre></div><hr><h2 id=available-options>Available
Options</h2><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td>WithProbeEnabled()</td><td>Enable
Probe</td></tr><tr><td>WithProbePort(int)</td><td>Set Probe HTTP
port</td></tr><tr><td>WithProbeLivenessPath(string)</td><td>Set liveness
path</td></tr><tr><td>WithProbeReadinessPath(string)</td><td>Set readiness
path</td></tr><tr><td>WithProbeStartupPath(string)</td><td>Set startup
path</td> [...]
+</span></span></code></pre></div><hr><h2 id=available-options>Available
Options</h2><table><thead><tr><th>Option</th><th>Description</th></tr></thead><tbody><tr><td>WithProbeEnabled()</td><td>Enable
Probe</td></tr><tr><td>WithProbePort(int)</td><td>Set Probe HTTP
port</td></tr><tr><td>WithProbeLivenessPath(string)</td><td>Set liveness
path</td></tr><tr><td>WithProbeReadinessPath(string)</td><td>Set readiness
path</td></tr><tr><td>WithProbeStartupPath(string)</td><td>Set startup
path</td> [...]
</span></span><span style=display:flex><span> <span
style=color:#268bd2>probe</span>:
</span></span><span style=display:flex><span> <span
style=color:#268bd2>enabled</span>: <span style=color:#cb4b16>true</span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
@@ -733,33 +733,99 @@
</span></span><span style=display:flex><span> <span style=color:#586e75>//
check warmup completion</span>
</span></span><span style=display:flex><span> <span
style=color:#719e07>return</span> <span style=color:#cb4b16>nil</span>
</span></span><span style=display:flex><span>})
-</span></span></code></pre></div><hr><h2 id=execution-logic>Execution
Logic</h2><ul><li>All registered checks will be executed.</li><li>If any check
returns an error,</li><li>The probe returns HTTP 503.</li></ul><hr><h1
id=6-semantic-recommendations>6. Semantic Recommendations</h1><h2
id=liveness>Liveness</h2><p>Recommended usage:</p><ul><li>Detect process
crashes</li><li>Detect fatal core dependency failure</li></ul><p>⚠️ Failure
will trigger Pod restart.</p><hr><h2 id=readiness>Readine [...]
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /live
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>15</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>10</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>3</span>
+</span></span></code></pre></div><hr><h2 id=execution-logic>Execution
Logic</h2><ul><li>All registered checks will be executed.</li><li>If any check
returns an error,</li><li>The probe returns HTTP 503.</li></ul><hr><h1
id=6-semantic-recommendations>6. Semantic Recommendations</h1><h2
id=liveness>Liveness</h2><p>Recommended usage:</p><ul><li>Detect process
crashes</li><li>Detect fatal core dependency failure</li></ul><p>⚠️ Failure
will trigger Pod restart.</p><hr><h2 id=readiness>Readine [...]
+</span></span></code></pre></div><p>The script contents are:</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-bash data-lang=bash><span style=display:flex><span><span
style=color:#719e07>#!/bin/bash
+</span></span></span><span style=display:flex><span><span
style=color:#719e07></span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
Licensed to the Apache Software Foundation (ASF) under one or more</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
contributor license agreements. See the NOTICE file distributed with</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># this
work for additional information regarding copyright ownership.</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># The
ASF licenses this file to You under the Apache License, Version 2.0</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># (the
"License"); you may not use this file except in compliance with</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># the
License. You may obtain a copy of the License at</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
http://www.apache.org/licenses/LICENSE-2.0</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
Unless required by applicable law or agreed to in writing, software</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
distributed under the License is distributed on an "AS IS" BASIS,</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># See
the License for the specific language governing permissions and</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
limitations under the License.</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>readinessProbe</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /ready
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>2</span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>set</span> -e
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>startupProbe</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /startup
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span
style=color:#2aa198>25</span> <span style=color:#586e75># 120s startup budget
=> ceil(120 / 5) + 1</span>
-</span></span></code></pre></div><hr><h1 id=8-example-usage>8. Example
Usage</h1><p>Example path:</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>metrics/probe/
-</span></span></code></pre></div><hr><h2 id=run-locally>Run Locally</h2><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>go run
./metrics/probe/go-server/cmd/main.go
+</span></span><span style=display:flex><span><span
style=color:#b58900>echo</span> <span style=color:#2aa198>"Building probe
server image..."</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75># Build
from repository root.</span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>cd</span> <span style=color:#2aa198>"</span><span
style=color:#719e07>$(</span>dirname <span
style=color:#2aa198>"</span><span style=color:#268bd2>$0</span><span
style=color:#2aa198>"</span><span style=color:#719e07>)</span><span
style=color:#2aa198>/../../.."</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75># Build
linux binary first. This uses local `replace => ../dubbo-go` if
present.</span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>TARGET_OS</span><span style=color:#719e07>=</span><span
style=color:#2aa198>${</span><span style=color:#268bd2>TARGET_OS</span><span
style=color:#719e07>:-</span><span style=color:#268bd2>linux</span><span
style=color:#2aa198>}</span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>TARGET_ARCH</span><span style=color:#719e07>=</span><span
style=color:#2aa198>${</span><span style=color:#268bd2>TARGET_ARCH</span><span
style=color:#719e07>:-</span><span style=color:#268bd2>amd64</span><span
style=color:#2aa198>}</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>CGO_ENABLED</span><span style=color:#719e07>=</span><span
style=color:#2aa198>0</span> <span style=color:#268bd2>GOOS</span><span
style=color:#719e07>=</span><span style=color:#2aa198>"</span><span
style=color:#268bd2>$TARGET_OS</span><span style=color:#2aa198>"</span>
<span style=color:#268bd2>GOARCH</span><span style=color:#719e07>=</span><span
style=color:#2aa198>"</span><span style=color:#268bd2>$TARGE [...]
+</span></span><span style=display:flex><span>docker build -f
observability/probe/go-server/Dockerfile -t dubbo-go-probe-server:latest .
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>echo</span> <span style=color:#2aa198>"Build completed
successfully."</span>
+</span></span></code></pre></div><p>If you use a local Minikube cluster, you
can also load the image:</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>minikube
image load dubbo-go-probe-server:latest
+</span></span></code></pre></div><p>The following complete Deployment is based
on <a
href=https://github.com/apache/dubbo-go-samples/blob/main/observability/probe/deploy/server-deployment.yml>server-deployment.yml</a>
in dubbo-go-samples and configures liveness, readiness, and startup probes on
the container:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-yaml data-lang=yaml><span style=di [...]
+</span></span><span style=display:flex><span><span
style=color:#268bd2>kind</span>: Deployment
+</span></span><span style=display:flex><span><span
style=color:#268bd2>metadata</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>labels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span><span
style=color:#268bd2>spec</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>replicas</span>: <span style=color:#2aa198>1</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>selector</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>matchLabels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>template</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>metadata</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>labels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>spec</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>containers</span>:
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>name</span>: server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>image</span>: dubbo-go-probe-server:latest
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>imagePullPolicy</span>: IfNotPresent
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>ports</span>:
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>containerPort</span>: <span style=color:#2aa198>20000</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: triple
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>containerPort</span>: <span style=color:#2aa198>22222</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>livenessProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /live
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>10</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>readinessProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /ready
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>startupProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /startup
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>30</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>1</span>
+</span></span></code></pre></div><hr><p>Deploy to Kubernetes:</p><p>Run the
following commands from the dubbo-go-samples repository root:</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>kubectl
apply -f observability/probe/deploy/server-deployment.yml
+</span></span><span style=display:flex><span>kubectl rollout status
deploy/dubbo-go-probe-server
+</span></span></code></pre></div><hr><h1 id=8-example-usage>8. Example
Usage</h1><p>The example path and run commands below use the dubbo-go-samples
repository root as their working directory.</p><p>Example path:</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>observability/probe/
+</span></span></code></pre></div><hr><h2 id=run-locally>Run Locally</h2><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>go run
./observability/probe/go-server/cmd/main.go
+</span></span></code></pre></div><hr><h2 id=verify-probes-with-curl>Verify
Probes with curl</h2><p>After the service starts, you can request the three
probe endpoints separately:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-bash data-lang=bash><span style=display:flex><span><span
style=color:#586e75># liveness, expected 200</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span> http://127.0.0.1:22222/live
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
readiness, expected 503 before the service is ready</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span> http://127.0.0.1:22222/ready
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
startup, expected 503 before startup is complete</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span>
http://127.0.0.1:22222/startup
+</span></span></code></pre></div><p>You can also inspect the response
body:</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>curl -i
http://127.0.0.1:22222/live
+</span></span><span style=display:flex><span>curl -i
http://127.0.0.1:22222/ready
+</span></span><span style=display:flex><span>curl -i
http://127.0.0.1:22222/startup
</span></span></code></pre></div><hr><h2
id=monitor-probe-status-in-real-time>Monitor Probe Status in Real Time</h2><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>watch -n
<span style=color:#2aa198>1</span> <span style=color:#2aa198>'
</span></span></span><span style=display:flex><span><span
style=color:#2aa198>for p in live ready startup; do
</span></span></span><span style=display:flex><span><span style=color:#2aa198>
url="http://127.0.0.1:22222/$p"
@@ -772,7 +838,7 @@
</span></span></span><span style=display:flex><span><span
style=color:#2aa198>'</span>
</span></span></code></pre></div><hr><h2 id=expected-behavior>Expected
Behavior</h2><table><thead><tr><th>Phase</th><th>/live</th><th>/ready</th><th>/startup</th></tr></thead><tbody><tr><td>Just
started</td><td>200</td><td>503</td><td>503</td></tr><tr><td>Warm-up
phase</td><td>200</td><td>503</td><td>503</td></tr><tr><td>Warm-up
complete</td><td>200</td><td>200</td><td>200</td></tr></tbody></table><hr><h1
id=9-production-best-practices>9. Production Best Practices</h1><h2
id=recommended- [...]
</span></span></code></pre></div><h2 id=operational-guidance>Operational
Guidance</h2><ul><li>Keep <code>liveness</code> simple and reserve it for
failures that require a restart</li><li>Put service registry, database, Redis,
and downstream RPC checks in <code>readiness</code></li><li>Let
<code>startup</code> absorb slow initialization instead of inflating
<code>liveness.initialDelaySeconds</code></li><li>In microservice clusters,
enable <code>use-internal-state: true</code> and combine [...]
-<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
[...]
<button class="contact-btn qr-container"
onmouseover='showQRCode("dingding-qr")'
onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code
id=dingding-qr style=display:none><img
src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg
alt="DingTalk QR Code"></div></button>
<button class=contact-btn><a
href=https://github.com/apache/dubbo/>GitHub</a></button></div></div><div
class=footer-container-right><ul><li>DOCUMENTATION</li><li><a
href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick
Start</a></li><li><a
href=/en/contact/contributor/software-donation-guide_dev/>Developer
guide</a></li></ul><ul><li>RESOURCES</li><li><a
href=/en/contact/>Community</a></li></ul></div></div><div
style="width:85.125rem;height:0;border:1px solid #ddd [...]
project logo are either registered trademarks or trademarks of The Apache
Software Foundation in the United States
diff --git a/en/sitemap.xml b/en/sitemap.xml
index d30ff7ca8c8..c57b5bf3e7d 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://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://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5
[...]
\ 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://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://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5
[...]
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
index eab7894f143..61f6d0359f6 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://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2026-08-09T13:24:26+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-09T13:24:26+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://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2026-08-09T13:40:17+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-09T13:40:17+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/index.xml b/zh-cn/index.xml
index 62867ef55a8..16d8645e103 100644
--- a/zh-cn/index.xml
+++ b/zh-cn/index.xml
@@ -14167,7 +14167,7 @@ dubbo http服务需要传递 rest-service-version 和
rest-service-group 两个h
<li>可选内部生命周期对齐</li>
<li>可控的重启风险</li>
</ul>
-<p>以下是一个具体的使用示例,可查看 <a
href="https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe">示例完整源码</a>。</p>
+<p>以下是一个具体的使用示例,可查看 <a
href="https://github.com/apache/dubbo-go-samples/tree/main/observability/probe">示例完整源码</a>。</p>
<hr>
<h1 id="一设计目标">一、设计目标</h1>
<table>
@@ -14245,7 +14245,7 @@ dubbo http服务需要传递 rest-service-version 和
rest-service-group 两个h
</table>
<hr>
<h1 id="三配置方式">三、配置方式</h1>
-<p>Dubbo-Go 支持 <strong>New API(推荐)</strong> 与
<strong>Old API(YAML)</strong>
两种配置方式。</p></description></item><item><title>Dubbo Maven Plugin
的配置方式</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</guid><description><p>本文主要讲解
Dubbo Mav [...]
+<p>Dubbo-Go 支持 <strong>New API(推荐)</strong> 与
<strong>配置文件方式(YAML)</strong>
两种配置方式。</p></description></item><item><title>Dubbo Maven Plugin
的配置方式</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/config/maven-plugin/</guid><description><p>本文主要讲解
Dubbo Mave [...]
<p>当前 Dubbo Maven Plugin 支持以下功能:</p>
<ul>
<li>Dubbo Maven Plugin For Protobuf:生成 Dubbo 服务接口的 Stub 代码</li>
diff --git a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
index c0b03fc0e79..8af1820d81c 100644
--- a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
+++ b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/index.xml
@@ -104,7 +104,7 @@
<li>可选内部生命周期对齐</li>
<li>可控的重启风险</li>
</ul>
-<p>以下是一个具体的使用示例,可查看 <a
href="https://github.com/apache/dubbo-go-samples/tree/main/metrics/probe">示例完整源码</a>。</p>
+<p>以下是一个具体的使用示例,可查看 <a
href="https://github.com/apache/dubbo-go-samples/tree/main/observability/probe">示例完整源码</a>。</p>
<hr>
<h1 id="一设计目标">一、设计目标</h1>
<table>
@@ -182,7 +182,7 @@
</table>
<hr>
<h1 id="三配置方式">三、配置方式</h1>
-<p>Dubbo-Go 支持 <strong>New API(推荐)</strong> 与
<strong>Old API(YAML)</strong>
两种配置方式。</p></description></item><item><title>链路追踪</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/tracing/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/tracing/</guid><description><p>Dubbo-go
支持基于 <a href="https://openteleme [...]
+<p>Dubbo-Go 支持 <strong>New API(推荐)</strong> 与
<strong>配置文件方式(YAML)</strong>
两种配置方式。</p></description></item><item><title>链路追踪</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/tracing/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/tracing/</guid><description><p>Dubbo-go
支持基于 <a href="https://opentelemet [...]
<ul>
<li><a
href="https://opentelemetry.io/docs/specs/otel/logs/sdk_exporters/stdout/">Stdout
exporter</a></li>
<li><a
href="https://opentelemetry.io/docs/languages/js/exporters/#jaeger">Jaeger
exporter</a></li>
diff --git
a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
index c6ce9b4f6de..1869a448321 100644
--- a/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/index.html
+++ b/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/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://dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/probe/><link
rel=canonical
href=https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/><script>var
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"])
[...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS
content="INDEX, FOLLOW"><link rel=alternate hreflang=en
href=https://dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/observability/probe/><link
rel=canonical
href=https://dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/observability/probe/><script>var
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apache.org"])
[...]
<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>
@@ -688,8 +688,8 @@
<label for=m-zh-cnoverviewnoticesprotocol-check><a
href=/zh-cn/overview/notices/protocol/ class="align-left pl-0 td-sidebar-link
td-sidebar-link__page" id=m-zh-cnoverviewnoticesprotocol><span>RPC
协议安全</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child"
id=m-zh-cnoverviewnoticesregistry-li><input type=checkbox
id=m-zh-cnoverviewnoticesregistry-check>
<label for=m-zh-cnoverviewnoticesregistry-check><a
href=/zh-cn/overview/notices/registry/ class="align-left pl-0 td-sidebar-link
td-sidebar-link__page"
id=m-zh-cnoverviewnoticesregistry><span>注册中心安全</span></a></label></li><li
class="td-sidebar-nav__section-title td-sidebar-nav__section without-child"
id=m-zh-cnoverviewnoticesadmin-li><input type=checkbox
id=m-zh-cnoverviewnoticesadmin-check>
<label for=m-zh-cnoverviewnoticesadmin-check><a
href=/zh-cn/overview/notices/admin/ class="align-left pl-0 td-sidebar-link
td-sidebar-link__page" id=m-zh-cnoverviewnoticesadmin><span>Dubbo Admin
安全</span></a></label></li><li class="td-sidebar-nav__section-title
td-sidebar-nav__section without-child" id=m-zh-cnoverviewnoticeslog4j-li><input
type=checkbox id=m-zh-cnoverviewnoticeslog4j-check>
-<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></code></pre></div><p>暴露以下路径:</p><table><thead><tr><th>Endpoint</th><th>说明</th></tr></thead><tbody><tr><td>GET
/live</td><td>进程存活检查</td></tr><tr><td>GET
/ready</td><td>服务就绪检查</td></tr><tr><td>GET
/startup</td><td>启动阶段检查</td></tr></tbody></table><hr><h2
id=响应规则>响应规则</h2><table><thead><tr><th>条件</th><th>HTTP
状态码</th></tr></thead><tbody><tr><td>所有检查通过</td><td>200</td></tr><tr><td>任意检查失败</td><td>503</td></tr></tbody></table><hr><h1
id=三配置方式>三、配置方式</h1><p>Dubbo-Go 支持 <strong>New [...]
+<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></code></pre></div><p>暴露以下路径:</p><table><thead><tr><th>Endpoint</th><th>说明</th></tr></thead><tbody><tr><td>GET
/live</td><td>进程存活检查</td></tr><tr><td>GET
/ready</td><td>服务就绪检查</td></tr><tr><td>GET
/startup</td><td>启动阶段检查</td></tr></tbody></table><hr><h2
id=响应规则>响应规则</h2><table><thead><tr><th>条件</th><th>HTTP
状态码</th></tr></thead><tbody><tr><td>所有检查通过</td><td>200</td></tr><tr><td>任意检查失败</td><td>503</td></tr></tbody></table><hr><h1
id=三配置方式>三、配置方式</h1><p>Dubbo-Go 支持 <strong>New [...]
</span></span><span style=display:flex><span> dubbo.<span
style=color:#268bd2>WithMetrics</span>(
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbeEnabled</span>(),
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbePort</span>(<span
style=color:#2aa198>22222</span>),
@@ -699,7 +699,7 @@
</span></span><span style=display:flex><span> metrics.<span
style=color:#268bd2>WithProbeUseInternalState</span>(<span
style=color:#cb4b16>true</span>),
</span></span><span style=display:flex><span> ),
</span></span><span style=display:flex><span>)
-</span></span></code></pre></div><hr><h2 id=可用-option>可用
Option</h2><table><thead><tr><th>Option</th><th>说明</th></tr></thead><tbody><tr><td>WithProbeEnabled()</td><td>启用
Probe</td></tr><tr><td>WithProbePort(int)</td><td>设置 Probe
端口</td></tr><tr><td>WithProbeLivenessPath(string)</td><td>设置 liveness
路径</td></tr><tr><td>WithProbeReadinessPath(string)</td><td>设置 readiness
路径</td></tr><tr><td>WithProbeStartupPath(string)</td><td>设置 startup
路径</td></tr><tr><td>WithProbeUseInternalState(bool)</ [...]
+</span></span></code></pre></div><hr><h2 id=可用-option>可用
Option</h2><table><thead><tr><th>Option</th><th>说明</th></tr></thead><tbody><tr><td>WithProbeEnabled()</td><td>启用
Probe</td></tr><tr><td>WithProbePort(int)</td><td>设置 Probe
端口</td></tr><tr><td>WithProbeLivenessPath(string)</td><td>设置 liveness
路径</td></tr><tr><td>WithProbeReadinessPath(string)</td><td>设置 readiness
路径</td></tr><tr><td>WithProbeStartupPath(string)</td><td>设置 startup
路径</td></tr><tr><td>WithProbeUseInternalState(bool)</ [...]
</span></span><span style=display:flex><span> <span
style=color:#268bd2>probe</span>:
</span></span><span style=display:flex><span> <span
style=color:#268bd2>enabled</span>: <span style=color:#cb4b16>true</span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
@@ -728,33 +728,99 @@
</span></span><span style=display:flex><span> <span style=color:#586e75>//
check warmup completion</span>
</span></span><span style=display:flex><span> <span
style=color:#719e07>return</span> <span style=color:#cb4b16>nil</span>
</span></span><span style=display:flex><span>})
-</span></span></code></pre></div><hr><h2
id=执行逻辑>执行逻辑</h2><ul><li>所有注册的检查函数都会执行</li><li>只要有一个返回 error</li><li>Probe 返回
503</li></ul><hr><h1 id=六语义建议>六、语义建议</h1><h2
id=liveness>Liveness</h2><ul><li><p>建议仅用于:</p><ul><li>进程是否崩溃</li><li>核心依赖是否彻底不可用</li></ul></li></ul><p>⚠️
失败会触发 Pod 重启。</p><hr><h2
id=readiness>Readiness</h2><ul><li><p>可绑定:</p><ul><li>注册中心状态</li><li>数据库</li><li>Redis</li><li>下游
RPC</li><li>本地缓存</li></ul></li></ul><p>用于控制流量是否进入。</p><hr><h2
id=startup>Startup</h2><ul><li><p>用于: [...]
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /live
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>15</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>10</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>3</span>
+</span></span></code></pre></div><hr><h2
id=执行逻辑>执行逻辑</h2><ul><li>所有注册的检查函数都会执行</li><li>只要有一个返回 error</li><li>Probe 返回
503</li></ul><hr><h1 id=六语义建议>六、语义建议</h1><h2
id=liveness>Liveness</h2><ul><li><p>建议仅用于:</p><ul><li>进程是否崩溃</li><li>核心依赖是否彻底不可用</li></ul></li></ul><p>⚠️
失败会触发 Pod 重启。</p><hr><h2
id=readiness>Readiness</h2><ul><li><p>可绑定:</p><ul><li>注册中心状态</li><li>数据库</li><li>Redis</li><li>下游
RPC</li><li>本地缓存</li></ul></li></ul><p>用于控制流量是否进入。</p><hr><h2
id=startup>Startup</h2><ul><li><p>用于: [...]
+</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-bash data-lang=bash><span style=display:flex><span><span
style=color:#719e07>#!/bin/bash
+</span></span></span><span style=display:flex><span><span
style=color:#719e07></span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
Licensed to the Apache Software Foundation (ASF) under one or more</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
contributor license agreements. See the NOTICE file distributed with</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># this
work for additional information regarding copyright ownership.</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># The
ASF licenses this file to You under the Apache License, Version 2.0</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># (the
"License"); you may not use this file except in compliance with</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># the
License. You may obtain a copy of the License at</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
http://www.apache.org/licenses/LICENSE-2.0</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
Unless required by applicable law or agreed to in writing, software</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
distributed under the License is distributed on an "AS IS" BASIS,</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span>
+</span></span><span style=display:flex><span><span style=color:#586e75># See
the License for the specific language governing permissions and</span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
limitations under the License.</span>
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>readinessProbe</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /ready
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>2</span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>set</span> -e
</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2>startupProbe</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /startup
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: <span style=color:#2aa198>22222</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>timeoutSeconds</span>: <span style=color:#2aa198>2</span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span
style=color:#2aa198>25</span> <span style=color:#586e75># 120 秒启动预算 =>
ceil(120 / 5) + 1</span>
-</span></span></code></pre></div><hr><h1
id=八示例运行说明>八、示例运行说明</h1><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>metrics/probe/
-</span></span></code></pre></div><hr><h2 id=本地运行>本地运行</h2><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>go run
./metrics/probe/go-server/cmd/main.go
+</span></span><span style=display:flex><span><span
style=color:#b58900>echo</span> <span style=color:#2aa198>"Building probe
server image..."</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75># Build
from repository root.</span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>cd</span> <span style=color:#2aa198>"</span><span
style=color:#719e07>$(</span>dirname <span
style=color:#2aa198>"</span><span style=color:#268bd2>$0</span><span
style=color:#2aa198>"</span><span style=color:#719e07>)</span><span
style=color:#2aa198>/../../.."</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75># Build
linux binary first. This uses local `replace => ../dubbo-go` if
present.</span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>TARGET_OS</span><span style=color:#719e07>=</span><span
style=color:#2aa198>${</span><span style=color:#268bd2>TARGET_OS</span><span
style=color:#719e07>:-</span><span style=color:#268bd2>linux</span><span
style=color:#2aa198>}</span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>TARGET_ARCH</span><span style=color:#719e07>=</span><span
style=color:#2aa198>${</span><span style=color:#268bd2>TARGET_ARCH</span><span
style=color:#719e07>:-</span><span style=color:#268bd2>amd64</span><span
style=color:#2aa198>}</span>
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span
style=color:#268bd2>CGO_ENABLED</span><span style=color:#719e07>=</span><span
style=color:#2aa198>0</span> <span style=color:#268bd2>GOOS</span><span
style=color:#719e07>=</span><span style=color:#2aa198>"</span><span
style=color:#268bd2>$TARGET_OS</span><span style=color:#2aa198>"</span>
<span style=color:#268bd2>GOARCH</span><span style=color:#719e07>=</span><span
style=color:#2aa198>"</span><span style=color:#268bd2>$TARGE [...]
+</span></span><span style=display:flex><span>docker build -f
observability/probe/go-server/Dockerfile -t dubbo-go-probe-server:latest .
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span
style=color:#b58900>echo</span> <span style=color:#2aa198>"Build completed
successfully."</span>
+</span></span></code></pre></div><p>如果使用 Minikube 本地集群,可以再执行:</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>minikube
image load dubbo-go-probe-server:latest
+</span></span></code></pre></div><p>以下是一个完整的 Deployment 示例,参考自 <a
href=https://github.com/apache/dubbo-go-samples/blob/main/observability/probe/deploy/server-deployment.yml>dubbo-go-samples
的 server-deployment.yml</a>,将 liveness、readiness、startup 三类探针配置在容器上:</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-yaml data-lang=yaml><span style=display:flex><span><span
style=color:#268bd2>apiVersio [...]
+</span></span><span style=display:flex><span><span
style=color:#268bd2>kind</span>: Deployment
+</span></span><span style=display:flex><span><span
style=color:#268bd2>metadata</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>labels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span><span
style=color:#268bd2>spec</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>replicas</span>: <span style=color:#2aa198>1</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>selector</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>matchLabels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>template</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>metadata</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>labels</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>app</span>: dubbo-go-probe-server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>spec</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>containers</span>:
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>name</span>: server
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>image</span>: dubbo-go-probe-server:latest
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>imagePullPolicy</span>: IfNotPresent
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>ports</span>:
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>containerPort</span>: <span style=color:#2aa198>20000</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: triple
+</span></span><span style=display:flex><span> - <span
style=color:#268bd2>containerPort</span>: <span style=color:#2aa198>22222</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>name</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>livenessProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /live
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>10</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>readinessProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /ready
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>initialDelaySeconds</span>: <span
style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>5</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>startupProbe</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>httpGet</span>:
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>path</span>: /startup
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>port</span>: probe
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>failureThreshold</span>: <span style=color:#2aa198>30</span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2>periodSeconds</span>: <span style=color:#2aa198>1</span>
+</span></span></code></pre></div><hr><p>部署到 Kubernetes:</p><p>在
dubbo-go-samples 仓库根目录执行:</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>kubectl
apply -f observability/probe/deploy/server-deployment.yml
+</span></span><span style=display:flex><span>kubectl rollout status
deploy/dubbo-go-probe-server
+</span></span></code></pre></div><hr><h1
id=八示例运行说明>八、示例运行说明</h1><p>示例路径和运行命令均以 dubbo-go-samples
仓库根目录为基准。</p><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>observability/probe/
+</span></span></code></pre></div><hr><h2 id=本地运行>本地运行</h2><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>go run
./observability/probe/go-server/cmd/main.go
+</span></span></code></pre></div><hr><h2 id=使用-curl-验证探针>使用 curl
验证探针</h2><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-bash data-lang=bash><span style=display:flex><span><span
style=color:#586e75># liveness,预期 200</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span> http://127.0.0.1:22222/live
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
readiness,未就绪时预期 503</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span> http://127.0.0.1:22222/ready
+</span></span><span style=display:flex><span>
+</span></span><span style=display:flex><span><span style=color:#586e75>#
startup,未启动完成时预期 503</span>
+</span></span><span style=display:flex><span>curl -s -o /dev/null -w <span
style=color:#2aa198>"%{http_code}\n"</span>
http://127.0.0.1:22222/startup
+</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-bash data-lang=bash><span style=display:flex><span>curl -i
http://127.0.0.1:22222/live
+</span></span><span style=display:flex><span>curl -i
http://127.0.0.1:22222/ready
+</span></span><span style=display:flex><span>curl -i
http://127.0.0.1:22222/startup
</span></span></code></pre></div><hr><h2 id=实时观察-probe-状态>实时观察 Probe
状态</h2><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>watch -n
<span style=color:#2aa198>1</span> <span style=color:#2aa198>'
</span></span></span><span style=display:flex><span><span
style=color:#2aa198>for p in live ready startup; do
</span></span></span><span style=display:flex><span><span style=color:#2aa198>
url="http://127.0.0.1:22222/$p"
@@ -767,7 +833,7 @@
</span></span></span><span style=display:flex><span><span
style=color:#2aa198>'</span>
</span></span></code></pre></div><hr><h2
id=预期行为>预期行为</h2><table><thead><tr><th>阶段</th><th>/live</th><th>/ready</th><th>/startup</th></tr></thead><tbody><tr><td>刚启动</td><td>200</td><td>503</td><td>503</td></tr><tr><td>预热阶段</td><td>200</td><td>503</td><td>503</td></tr><tr><td>预热完成</td><td>200</td><td>200</td><td>200</td></tr></tbody></table><hr><h1
id=九生产最佳实践>九、生产最佳实践</h1><h2 id=推荐参数起点>推荐参数起点</h2><table><thead><tr><th>Probe
类型</th><th>推荐值</th><th>说明</th></tr></thead><tbody><tr><td>livenes [...]
</span></span></code></pre></div><h2
id=落地建议>落地建议</h2><ul><li><code>liveness</code>
保持简单,只检测“必须重启才能恢复”的故障</li><li><code>readiness</code> 绑定注册中心、数据库、Redis、下游 RPC
等波动依赖</li><li><code>startup</code> 单独承担慢启动保护,避免把大
<code>initialDelaySeconds</code> 堆到 <code>liveness</code> 上</li><li>微服务集群建议开启
<code>use-internal-state: true</code>,再结合 <code>probe.SetReady(...)</code>
做主动摘流</li></ul><div id=pre-footer><h2>反馈</h2><p
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4
feedbac [...]
-<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
[...]
<button class="contact-btn qr-container"
onmouseover='showQRCode("dingding-qr")'
onmouseout='hideQRCode("dingding-qr")'>钉钉<div class=qr-code id=dingding-qr
style=display:none><img
src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg
alt="DingTalk QR Code"></div></button>
<button class=contact-btn><a
href=https://github.com/apache/dubbo/>GitHub</a></button></div></div><div
class=footer-container-right><ul><li>文档</li><li><a
href=/zh-cn/overview/home/>概览</a></li><li><a
href=/zh-cn/overview/quickstart/>快速开始</a></li><li><a
href=/zh-cn/contact/contributor/software-donation-guide_dev/>开发者指南</a></li></ul><ul><li>资源</li><li><a
href=/zh-cn/contact/>社区</a></li></ul></div></div><div
style="width:85.125rem;height:0;border:1px solid
#dddee4;margin-bottom:32px"></div>< [...]
project logo are either registered trademarks or trademarks of The Apache
Software Foundation in the United States
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index 99798bf67e7..70fc9dda93f 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://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://dubbo.apach [...]
\ 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://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://dubbo.apach [...]
\ No newline at end of file