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 f886c515856 deploy: 0a801bafc76be241088358255924f94f3e5baeb8
f886c515856 is described below

commit f886c515856db2053e6e26f925bf38983de7f088
Author: Alanxtl <[email protected]>
AuthorDate: Mon Aug 24 13:07:19 2026 +0000

    deploy: 0a801bafc76be241088358255924f94f3e5baeb8
---
 css/app.css                                        |  2 +-
 css/chunk-vendors.css                              |  2 +-
 en/index.xml                                       | 16 +----
 .../mannual/golang-sdk/tutorial/traffic/index.xml  | 16 +----
 .../tutorial/traffic/script_router/index.html      | 26 +++++---
 en/sitemap.xml                                     |  2 +-
 js/app.js                                          |  3 +-
 js/chunk-vendors.js                                | 61 +------------------
 sitemap.xml                                        |  2 +-
 zh-cn/index.xml                                    | 71 ++++++++++++----------
 .../mannual/golang-sdk/tutorial/traffic/index.xml  | 67 ++++++++++----------
 .../tutorial/traffic/script_router/index.html      | 22 +++++--
 zh-cn/sitemap.xml                                  |  2 +-
 13 files changed, 117 insertions(+), 175 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/index.xml b/en/index.xml
index ab641918604..e51446fa252 100644
--- a/en/index.xml
+++ b/en/index.xml
@@ -1099,20 +1099,8 @@ The Istio Bookinfo sample consists of four separate 
microservices, each with mul
 &lt;/ul&gt;
 &lt;h2 id="deploying-the-mall-system"&gt;Deploying the Mall System&lt;/h2&gt;
 &lt;p&gt;For convenience, we will deploy the entire system on a Kubernetes 
cluster. Execute the following command to complete the mall project deployment. 
The source code example is in &lt;a 
href="https://github.com/apache/dubbo-samples/tree/master/10-task/dubbo-samples-shop"&gt;dubbo-samples/task&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Script
 
Router</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/</link><pubDate>Mon,
 0 [...]
-&lt;h2 id="how-to-use"&gt;How to use&lt;/h2&gt;
-&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
-&lt;ul&gt;
-&lt;li&gt;Docker and Docker Compose environment to deploy Nacos 
registry.&lt;/li&gt;
-&lt;li&gt;Nacos Version 2.x+&lt;/li&gt;
-&lt;li&gt;Go 1.23+&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h4 id="run-nacos"&gt;Run Nacos&lt;/h4&gt;
-&lt;p&gt;Follow this instruction
-to &lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;install
 and start Nacos server&lt;/a&gt;.&lt;/p&gt;
-&lt;h3 id="script-router"&gt;Script router&lt;/h3&gt;
-&lt;p&gt;Similar to the condition router, the script router enables traffic 
control using expressions. However,
-while it offers more powerful matching capabilities, this comes at the cost of 
higher resource consumption.
-Therefore, it should be used sparingly in production 
environments.&lt;/p&gt;</description></item><item><title>Seata Distributed 
Transactions</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/transaction/seata/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/transaction/seata/</guid><description>&lt;ol&gt;
+&lt;p&gt;Script Router runs on the consumer and uses a JavaScript script to 
filter candidate providers. It currently supports application-scoped dynamic 
rules. Use it when routing decisions depend on runtime information such as a 
provider URL, RPC method, or invocation attachment, for example to pin traffic 
to a port or select instances by tenant or gray-release marker.&lt;/p&gt;
+&lt;p&gt;For simple matching by address, method, or application name, prefer 
Condition Router. Script Router is more expressive, but scripts cost more to 
execute and maintain. Keep production scripts small and verify that they always 
return callable providers.&lt;/p&gt;</description></item><item><title>Seata 
Distributed 
Transactions</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/transaction/seata/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 +0000</pubDate>< [...]
 &lt;li&gt;
 &lt;p&gt;First, execute the following command to start the 
seata-server.&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:#b58900"&gt;cd&lt;/span&gt; ../dockercompose
diff --git a/en/overview/mannual/golang-sdk/tutorial/traffic/index.xml 
b/en/overview/mannual/golang-sdk/tutorial/traffic/index.xml
index 4127a373ee2..61adcdab965 100644
--- a/en/overview/mannual/golang-sdk/tutorial/traffic/index.xml
+++ b/en/overview/mannual/golang-sdk/tutorial/traffic/index.xml
@@ -18,20 +18,8 @@ to &lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/int
 It uses &lt;code&gt;consumer =&amp;gt; provider&lt;/code&gt; expressions to 
manage traffic for both providers and consumers.&lt;/p&gt;
 &lt;p&gt;Expression example:&lt;/p&gt;
 &lt;p&gt;&lt;code&gt;host = 127.0.0.1 =&amp;gt; host = 127.0.0.1, 
192.168.1.1&lt;/code&gt;&lt;/p&gt;</description></item><item><title>Script 
Router</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/</guid><description>&lt;p&gt;Sample
 source: &lt;a href="https://github.com/apache/dubbo- [...]
-&lt;h2 id="how-to-use"&gt;How to use&lt;/h2&gt;
-&lt;h3 id="prerequisites"&gt;Prerequisites&lt;/h3&gt;
-&lt;ul&gt;
-&lt;li&gt;Docker and Docker Compose environment to deploy Nacos 
registry.&lt;/li&gt;
-&lt;li&gt;Nacos Version 2.x+&lt;/li&gt;
-&lt;li&gt;Go 1.23+&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h4 id="run-nacos"&gt;Run Nacos&lt;/h4&gt;
-&lt;p&gt;Follow this instruction
-to &lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;install
 and start Nacos server&lt;/a&gt;.&lt;/p&gt;
-&lt;h3 id="script-router"&gt;Script router&lt;/h3&gt;
-&lt;p&gt;Similar to the condition router, the script router enables traffic 
control using expressions. However,
-while it offers more powerful matching capabilities, this comes at the cost of 
higher resource consumption.
-Therefore, it should be used sparingly in production 
environments.&lt;/p&gt;</description></item><item><title>Tag 
Router</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/tag_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/tag_router/</guid><description>&lt;p&gt;Related
 samples:&lt;/p&gt;
+&lt;p&gt;Script Router runs on the consumer and uses a JavaScript script to 
filter candidate providers. It currently supports application-scoped dynamic 
rules. Use it when routing decisions depend on runtime information such as a 
provider URL, RPC method, or invocation attachment, for example to pin traffic 
to a port or select instances by tenant or gray-release marker.&lt;/p&gt;
+&lt;p&gt;For simple matching by address, method, or application name, prefer 
Condition Router. Script Router is more expressive, but scripts cost more to 
execute and maintain. Keep production scripts small and verify that they always 
return callable providers.&lt;/p&gt;</description></item><item><title>Tag 
Router</title><link>https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/tag_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dub [...]
 &lt;ul&gt;
 &lt;li&gt;Dynamic tag router: &lt;a 
href="https://github.com/apache/dubbo-go-samples/tree/main/router/tag"; 
target="_blank"&gt;dubbo-go-samples/router/tag&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;Static tag router: &lt;a 
href="https://github.com/apache/dubbo-go-samples/tree/main/router/static_config/tag";
 
target="_blank"&gt;dubbo-go-samples/router/static_config/tag&lt;/a&gt;&lt;/li&gt;
diff --git 
a/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html 
b/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html
index b7cd4f3ad18..9478bbadbcf 100644
--- a/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html
+++ b/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/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/tutorial/traffic/script_router/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apa
 [...]
+<!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/tutorial/traffic/script_router/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/en/overview/mannual/golang-sdk/tutorial/traffic/script_router/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apa
 [...]
 <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,12 +693,14 @@
 <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  [...]
-to <a 
href=https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/>install
 and start Nacos server</a>.</p><h3 id=script-router>Script 
router</h3><p>Similar to the condition router, the script router enables 
traffic control using expressions. However,
-while it offers more powerful matching capabilities, this comes at the cost of 
higher resource consumption.
-Therefore, it should be used sparingly in production environments.</p><p>The 
example code for the script router is similar to that of the condition router,
-with slight differences in the Nacos configuration.
-Therefore, only the Nacos configuration is provided here.</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>scope</span>: <span 
style=color:#2aa198>&#34;application&#34;</span>
+<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 
style=color:#719e07>if</span> (<span style=color:#719e07>!</span>invokers <span 
style=color:#719e07>||</span> invokers.length <span 
style=color:#719e07>===</span> <span style=color:#2aa198>0</span>) <span 
style=color:#719e07>return</span> [];
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> invokers.filter(<span 
style=color:#268bd2>function</span>(invoker) {
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>var</span> url <span style=color:#719e07>=</span> 
invoker.GetURL();
+</span></span><span style=display:flex><span>    <span 
style=color:#719e07>return</span> url <span 
style=color:#719e07>&amp;&amp;</span> url.Port <span 
style=color:#719e07>===</span> <span style=color:#2aa198>&#34;20000&#34;</span>;
+</span></span><span style=display:flex><span>  });
+</span></span><span style=display:flex><span>})(invokers, invocation, context);
+</span></span></code></pre></div><h2 id=configure-script-router>Configure 
Script Router</h2><p>The sample consumer connects to the Nacos configuration 
center through <code>dubbo.WithConfigCenter</code>. After the providers start, 
Script Router subscribes to the rule for the provider application.</p><p>Create 
the following configuration in 
Nacos:</p><table><thead><tr><th>Setting</th><th>Value</th></tr></thead><tbody><tr><td>Data
 ID</td><td><code>script-server.script-router</code></td></tr [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>key</span>: <span 
style=color:#2aa198>&#34;script-server&#34;</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>type</span>: <span 
style=color:#2aa198>&#34;javascript&#34;</span>
@@ -710,11 +712,15 @@ Therefore, only the Nacos configuration is provided 
here.</p><div class=highligh
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
     return url &amp;&amp; url.Port === &#34;20000&#34;;
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
   });
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
 })(invokers, invocation, context);</span>
-</span></span></code></pre></div><div id=pre-footer><h2>Feedback</h2><p 
class=feedback--prompt>Was this page helpful?</p><button class="btn btn-primary 
mb-4 feedback--yes">Yes</button>
-<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
 [...]
+</span></span></code></pre></div><p>Field 
descriptions:</p><table><thead><tr><th>Field</th><th>Description</th></tr></thead><tbody><tr><td><code>scope</code></td><td>The
 Script Router scope; use 
<code>application</code>.</td></tr><tr><td><code>key</code></td><td>The 
application name of the target 
provider.</td></tr><tr><td><code>enabled</code></td><td>Whether to enable the 
rule; <code>false</code> skips script 
execution.</td></tr><tr><td><code>type</code></td><td>The script type; the sam 
[...]
+</span></span><span style=display:flex><span>go run 
./go-node2-server/cmd/server_node2.go  <span style=color:#586e75># port 
20001</span>
+</span></span></code></pre></div><p>Then start the consumer:</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>go run 
./go-client/cmd/client.go
+</span></span></code></pre></div><p>The consumer calls <code>Greet</code> 
every five seconds. Before the rule is published in Nacos, responses alternate 
between providers on <code>20000</code> and <code>20001</code>. After saving 
the rule, the consumer does not need to restart and subsequent logs should only 
contain 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-te [...]
+</span></span></code></pre></div><p>Delete the Nacos configuration or set 
<code>enabled</code> to <code>false</code> to allow calls to route to both 
providers again. If the rule does not take effect, check the Data ID, Group, 
configuration-center connection, and script return value.</p><h2 
id=script-router-vs-condition-router>Script Router vs. Condition 
Router</h2><table><thead><tr><th>Aspect</th><th>Script Router</th><th>Condition 
Router</th></tr></thead><tbody><tr><td>Rule expression</ [...]
+<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/tutorial/traffic/script_router?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+Edi
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=Script%20Router"; 
target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> Create project issue</a></div><nav 
id=TableOfContents><ul><li><a href=#how-to-use>How to use</a><ul><li><a 
href=#prerequisites>Prerequisites</a></li><li><a href=#script-router>Script 
router</a></li></ul></li></ul></nav></div></div></div></div><footer><div 
class=footer-container><div class=footer-container-left><div 
class=footer-container-left-title>Follow us</div><div class=footer-containe 
[...]
+<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><ul><li><a 
href=#start-nacos>Start Nacos</a></li></ul></li><li><a 
href=#script-arguments>Script arguments</a></li><li><a 
href=#configure-script-router>Configure Script Router</a></li><li><a 
href=#run-and-verify>Run and verify</a></li><li><a 
href=#script-router-vs-condition-router>Script Ro [...]
 <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 4c03f4f5fa2..9804b999596 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 ad5e9d04466..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.48d8cf2a.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 d5ecf73f458..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.d5312e18.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 31707b5c0bd..eb17b774641 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-08-17T18:54:46+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-17T18:54:46+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2026-08-24T21:00:49+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2026-08-24T21:00:49+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/index.xml b/zh-cn/index.xml
index c39d203eeb3..d645224904b 100644
--- a/zh-cn/index.xml
+++ b/zh-cn/index.xml
@@ -7715,50 +7715,55 @@ Zipkin: &lt;a 
href="https://github.com/openzipkin/zipkin-helm"&gt;https://github
 &lt;/ul&gt;
 &lt;h2 id="一站式微服务解决方案"&gt;一站式微服务解决方案&lt;/h2&gt;
 &lt;p&gt;Dubbo 
提供了从服务定义、服务发现、服务通信到流量管控等几乎所有的服务治理能力,并且尝试从使用上对用户屏蔽底层细节,以提供更好的易用性。&lt;/p&gt;</description></item><item><title>脚本路由</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/</guid><description>&lt;p&gt;示例源码:&lt;a
 href="https://github.com/apache/dubbo-go-samples/tree/main/rou [...]
-&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
-&lt;h3 id="前置准备"&gt;前置准备&lt;/h3&gt;
-&lt;ul&gt;
-&lt;li&gt;Docker 以及 Docker compose 环境来部署Nacos配置中心。&lt;/li&gt;
-&lt;li&gt;Nacos 2.x+&lt;/li&gt;
-&lt;li&gt;Go 1.23+&lt;/li&gt;
-&lt;/ul&gt;
-&lt;h4 id="启动nacos配置中心"&gt;启动Nacos配置中心&lt;/h4&gt;
-&lt;p&gt;参考这个教程来&lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;启动Nacos&lt;/a&gt;。&lt;/p&gt;
-&lt;h3 id="script-router-介绍"&gt;Script router 介绍&lt;/h3&gt;
-&lt;p&gt;Script router与condition router类似,都提供了使用表达式进行流量管控的功能。
-但是Script router具有更强大的匹配功能,与此同时带来的是匹配消耗的资源更多,因此在生产环境中应当尽量少使用。&lt;/p&gt;
-&lt;p&gt;Script router的示例代码与Condition 
router类似,在nacos配置上略有差别,这里仅提供nacos上的简单配置。&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-yaml" data-lang="yaml"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;scope&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;application&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;key&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;script-server&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;enabled&lt;/span&gt;: &lt;span 
style="color:#cb4b16"&gt;true&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;type&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;script&lt;/span&gt;: |&lt;span 
style="color:#2aa198"&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; 
(function(invokers, invocation, context) {
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; if 
(!invokers || invokers.length === 0) return [];
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; return 
invokers.filter(function(invoker) {
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; var url 
= invoker.GetURL();
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; return 
url &amp;amp;&amp;amp; url.Port === &amp;#34;20000&amp;#34;;
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; });
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; 
})(invokers, invocation, context);&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参数说明:&lt;/p&gt;
+&lt;p&gt;Script Router 在消费端通过 JavaScript 脚本筛选候选 Provider,目前支持应用级动态规则。它适合根据 
Provider URL、RPC 方法、调用附件等运行时信息实现自定义路由,例如将流量固定到指定端口、按租户或灰度标识选择实例。&lt;/p&gt;
+&lt;p&gt;对于只需按地址、方法或应用名进行简单匹配的场景,优先使用 Condition Router。Script Router 
的表达能力更强,但脚本执行和维护成本更高,生产环境应限制脚本复杂度,并验证脚本始终返回可调用的 Provider 列表。&lt;/p&gt;
+&lt;h2 id="前置准备"&gt;前置准备&lt;/h2&gt;
+&lt;ul&gt;
+&lt;li&gt;Docker 和 Docker Compose,用于运行 Nacos。&lt;/li&gt;
+&lt;li&gt;Nacos 2.x+。&lt;/li&gt;
+&lt;li&gt;Go 1.23+。&lt;/li&gt;
+&lt;li&gt;已下载 &lt;code&gt;dubbo-go-samples/router/script&lt;/code&gt; 
示例。&lt;/li&gt;
+&lt;/ul&gt;
+&lt;h3 id="启动-nacos"&gt;启动 Nacos&lt;/h3&gt;
+&lt;p&gt;按照 &lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;Nacos
 快速开始&lt;/a&gt; 启动 Nacos。示例中的注册中心和配置中心地址均为 
&lt;code&gt;127.0.0.1:8848&lt;/code&gt;。&lt;/p&gt;
+&lt;h2 id="脚本入参"&gt;脚本入参&lt;/h2&gt;
+&lt;p&gt;路由脚本以 
&lt;code&gt;invokers&lt;/code&gt;、&lt;code&gt;invocation&lt;/code&gt;、&lt;code&gt;context&lt;/code&gt;
 三个参数执行,必须返回由原始候选项组成的数组。&lt;/p&gt;
 &lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;
- &lt;th&gt;参数&lt;/th&gt;
- &lt;th&gt;说明&lt;/th&gt;
+ &lt;th&gt;入参&lt;/th&gt;
+ &lt;th&gt;含义&lt;/th&gt;
+ &lt;th&gt;常见用法&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
- &lt;td&gt;type&lt;/td&gt;
- &lt;td&gt;script的类型,目前仅可使用js&lt;/td&gt;
+ &lt;td&gt;&lt;code&gt;invokers&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前可用的候选 Provider 列表。每项可通过 &lt;code&gt;GetURL()&lt;/code&gt; 获取服务 
URL。&lt;/td&gt;
+ &lt;td&gt;根据 URL 的端口、地址或参数过滤实例。&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
- &lt;td&gt;script&lt;/td&gt;
- &lt;td&gt;script实际内容&lt;/td&gt;
+ &lt;td&gt;&lt;code&gt;invocation&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前 RPC 调用信息。&lt;/td&gt;
+ &lt;td&gt;根据方法名、参数或 attachments 实现按调用维度的路由。&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;tr&gt;
+ &lt;td&gt;&lt;code&gt;context&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前调用上下文。&lt;/td&gt;
+ &lt;td&gt;在脚本需要时读取调用链路中的上下文信息。&lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
-&lt;/table&gt;</description></item><item><title>接入 Ingress 
流量</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</guid><description>&lt;h2
 id="1-准备工作"&gt;1. 准备工作&lt;/h2&gt;
+&lt;/table&gt;
+&lt;p&gt;下面的脚本只保留端口为 &lt;code&gt;20000&lt;/code&gt; 的 Provider:&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-javascript" data-lang="javascript"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;(&lt;span 
style="color:#268bd2"&gt;function&lt;/span&gt;(invokers, invocation, context) {
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;if&lt;/span&gt; (&lt;span 
style="color:#719e07"&gt;!&lt;/span&gt;invokers &lt;span 
style="color:#719e07"&gt;||&lt;/span&gt; invokers.length &lt;span 
style="color:#719e07"&gt;===&lt;/span&gt; &lt;span 
style="color:#2aa198"&gt;0&lt;/span&gt;) &lt;span 
style="color:#719e07"&gt;return&lt;/span&gt; [];
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;return&lt;/span&gt; invokers.filter(&lt;span 
style="color:#268bd2"&gt;function&lt;/span&gt;(invoker) {
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#268bd2"&gt;var&lt;/span&gt; url &lt;span 
style="color:#719e07"&gt;=&lt;/span&gt; invoker.GetURL();
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;return&lt;/span&gt; url &lt;span 
style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; url.Port &lt;span 
style="color:#719e07"&gt;===&lt;/span&gt; &lt;span 
style="color:#2aa198"&gt;&amp;#34;20000&amp;#34;&lt;/span&gt;;
+&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;})(invokers, invocation, context);
+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 
id="配置-script-router"&gt;配置 Script Router&lt;/h2&gt;
+&lt;p&gt;示例 consumer 通过 &lt;code&gt;dubbo.WithConfigCenter&lt;/code&gt; 连接 
Nacos 配置中心。启动 Provider 后,Script Router 会按照 Provider 
的应用名订阅规则。&lt;/p&gt;</description></item><item><title>接入 Ingress 
流量</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/gateway/http_triple/</guid><description>&lt;h2
 id="1-准备工作"&g [...]
 &lt;ul&gt;
 &lt;li&gt;kubectl&lt;/li&gt;
 &lt;li&gt;一个 k8s 集群,配置好 kubeconfig&lt;/li&gt;
diff --git a/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/index.xml 
b/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/index.xml
index 535cd7ba6f9..74436178004 100644
--- a/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/index.xml
+++ b/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/index.xml
@@ -39,50 +39,55 @@
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ctx 
&lt;span style="color:#719e07"&gt;:=&lt;/span&gt; context.&lt;span 
style="color:#268bd2"&gt;WithValue&lt;/span&gt;(context.&lt;span 
style="color:#268bd2"&gt;Background&lt;/span&gt;(), constant.AttachmentKey, 
atta)
 &lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;resp, 
err &lt;span style="color:#719e07"&gt;:=&lt;/span&gt; svc.&lt;span 
style="color:#268bd2"&gt;Greet&lt;/span&gt;(ctx, &lt;span 
style="color:#719e07"&gt;&amp;amp;&lt;/span&gt;greet.GreetRequest{Name: name})
 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参数:&lt;/p&gt;</description></item><item><title>脚本路由</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/</guid><description>&lt;p&gt;示例源码:&lt;a
 href="https://github.com/apache/dubbo-go-samples/tree/main/router/ [...]
-&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
-&lt;h3 id="前置准备"&gt;前置准备&lt;/h3&gt;
+&lt;p&gt;Script Router 在消费端通过 JavaScript 脚本筛选候选 Provider,目前支持应用级动态规则。它适合根据 
Provider URL、RPC 方法、调用附件等运行时信息实现自定义路由,例如将流量固定到指定端口、按租户或灰度标识选择实例。&lt;/p&gt;
+&lt;p&gt;对于只需按地址、方法或应用名进行简单匹配的场景,优先使用 Condition Router。Script Router 
的表达能力更强,但脚本执行和维护成本更高,生产环境应限制脚本复杂度,并验证脚本始终返回可调用的 Provider 列表。&lt;/p&gt;
+&lt;h2 id="前置准备"&gt;前置准备&lt;/h2&gt;
 &lt;ul&gt;
-&lt;li&gt;Docker 以及 Docker compose 环境来部署Nacos配置中心。&lt;/li&gt;
-&lt;li&gt;Nacos 2.x+&lt;/li&gt;
-&lt;li&gt;Go 1.23+&lt;/li&gt;
+&lt;li&gt;Docker 和 Docker Compose,用于运行 Nacos。&lt;/li&gt;
+&lt;li&gt;Nacos 2.x+。&lt;/li&gt;
+&lt;li&gt;Go 1.23+。&lt;/li&gt;
+&lt;li&gt;已下载 &lt;code&gt;dubbo-go-samples/router/script&lt;/code&gt; 
示例。&lt;/li&gt;
 &lt;/ul&gt;
-&lt;h4 id="启动nacos配置中心"&gt;启动Nacos配置中心&lt;/h4&gt;
-&lt;p&gt;参考这个教程来&lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;启动Nacos&lt;/a&gt;。&lt;/p&gt;
-&lt;h3 id="script-router-介绍"&gt;Script router 介绍&lt;/h3&gt;
-&lt;p&gt;Script router与condition router类似,都提供了使用表达式进行流量管控的功能。
-但是Script router具有更强大的匹配功能,与此同时带来的是匹配消耗的资源更多,因此在生产环境中应当尽量少使用。&lt;/p&gt;
-&lt;p&gt;Script router的示例代码与Condition 
router类似,在nacos配置上略有差别,这里仅提供nacos上的简单配置。&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-yaml" data-lang="yaml"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;scope&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;application&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;key&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;script-server&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;enabled&lt;/span&gt;: &lt;span 
style="color:#cb4b16"&gt;true&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;type&lt;/span&gt;: &lt;span 
style="color:#2aa198"&gt;&amp;#34;javascript&amp;#34;&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span 
style="color:#268bd2"&gt;script&lt;/span&gt;: |&lt;span 
style="color:#2aa198"&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; 
(function(invokers, invocation, context) {
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; if 
(!invokers || invokers.length === 0) return [];
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; return 
invokers.filter(function(invoker) {
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; var url 
= invoker.GetURL();
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; return 
url &amp;amp;&amp;amp; url.Port === &amp;#34;20000&amp;#34;;
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; });
-&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#2aa198"&gt; 
})(invokers, invocation, context);&lt;/span&gt;
-&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;参数说明:&lt;/p&gt;
+&lt;h3 id="启动-nacos"&gt;启动 Nacos&lt;/h3&gt;
+&lt;p&gt;按照 &lt;a 
href="https://dubbo-next.staged.apache.org/zh-cn/overview/reference/integrations/nacos/"&gt;Nacos
 快速开始&lt;/a&gt; 启动 Nacos。示例中的注册中心和配置中心地址均为 
&lt;code&gt;127.0.0.1:8848&lt;/code&gt;。&lt;/p&gt;
+&lt;h2 id="脚本入参"&gt;脚本入参&lt;/h2&gt;
+&lt;p&gt;路由脚本以 
&lt;code&gt;invokers&lt;/code&gt;、&lt;code&gt;invocation&lt;/code&gt;、&lt;code&gt;context&lt;/code&gt;
 三个参数执行,必须返回由原始候选项组成的数组。&lt;/p&gt;
 &lt;table&gt;
  &lt;thead&gt;
  &lt;tr&gt;
- &lt;th&gt;参数&lt;/th&gt;
- &lt;th&gt;说明&lt;/th&gt;
+ &lt;th&gt;入参&lt;/th&gt;
+ &lt;th&gt;含义&lt;/th&gt;
+ &lt;th&gt;常见用法&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
  &lt;tr&gt;
- &lt;td&gt;type&lt;/td&gt;
- &lt;td&gt;script的类型,目前仅可使用js&lt;/td&gt;
+ &lt;td&gt;&lt;code&gt;invokers&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前可用的候选 Provider 列表。每项可通过 &lt;code&gt;GetURL()&lt;/code&gt; 获取服务 
URL。&lt;/td&gt;
+ &lt;td&gt;根据 URL 的端口、地址或参数过滤实例。&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;tr&gt;
+ &lt;td&gt;&lt;code&gt;invocation&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前 RPC 调用信息。&lt;/td&gt;
+ &lt;td&gt;根据方法名、参数或 attachments 实现按调用维度的路由。&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
- &lt;td&gt;script&lt;/td&gt;
- &lt;td&gt;script实际内容&lt;/td&gt;
+ &lt;td&gt;&lt;code&gt;context&lt;/code&gt;&lt;/td&gt;
+ &lt;td&gt;当前调用上下文。&lt;/td&gt;
+ &lt;td&gt;在脚本需要时读取调用链路中的上下文信息。&lt;/td&gt;
  &lt;/tr&gt;
  &lt;/tbody&gt;
-&lt;/table&gt;</description></item><item><title>条件路由</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</guid><description>&lt;p&gt;相关示例:&lt;/p&gt;
+&lt;/table&gt;
+&lt;p&gt;下面的脚本只保留端口为 &lt;code&gt;20000&lt;/code&gt; 的 Provider:&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-javascript" data-lang="javascript"&gt;&lt;span 
style="display:flex;"&gt;&lt;span&gt;(&lt;span 
style="color:#268bd2"&gt;function&lt;/span&gt;(invokers, invocation, context) {
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;if&lt;/span&gt; (&lt;span 
style="color:#719e07"&gt;!&lt;/span&gt;invokers &lt;span 
style="color:#719e07"&gt;||&lt;/span&gt; invokers.length &lt;span 
style="color:#719e07"&gt;===&lt;/span&gt; &lt;span 
style="color:#2aa198"&gt;0&lt;/span&gt;) &lt;span 
style="color:#719e07"&gt;return&lt;/span&gt; [];
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;return&lt;/span&gt; invokers.filter(&lt;span 
style="color:#268bd2"&gt;function&lt;/span&gt;(invoker) {
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#268bd2"&gt;var&lt;/span&gt; url &lt;span 
style="color:#719e07"&gt;=&lt;/span&gt; invoker.GetURL();
+&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;span style="color:#719e07"&gt;return&lt;/span&gt; url &lt;span 
style="color:#719e07"&gt;&amp;amp;&amp;amp;&lt;/span&gt; url.Port &lt;span 
style="color:#719e07"&gt;===&lt;/span&gt; &lt;span 
style="color:#2aa198"&gt;&amp;#34;20000&amp;#34;&lt;/span&gt;;
+&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;})(invokers, invocation, context);
+&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 
id="配置-script-router"&gt;配置 Script Router&lt;/h2&gt;
+&lt;p&gt;示例 consumer 通过 &lt;code&gt;dubbo.WithConfigCenter&lt;/code&gt; 连接 
Nacos 配置中心。启动 Provider 后,Script Router 会按照 Provider 
的应用名订阅规则。&lt;/p&gt;</description></item><item><title>条件路由</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/condition_router/</guid><description>&lt;p&gt;相关示例:&lt;/p&gt;
 &lt;ul&gt;
 &lt;li&gt;动态 condition router:&lt;a 
href="https://github.com/apache/dubbo-go-samples/tree/main/router/condition"; 
target="_blank"&gt;dubbo-go-samples/router/condition&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;静态 condition router:&lt;a 
href="https://github.com/apache/dubbo-go-samples/tree/main/router/static_config/condition";
 
target="_blank"&gt;dubbo-go-samples/router/static_config/condition&lt;/a&gt;&lt;/li&gt;
diff --git 
a/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html 
b/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html
index 7ac68027a3e..0cda71847fa 100644
--- 
a/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/index.html
+++ 
b/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/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/tutorial/traffic/script_router/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apa
 [...]
+<!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/tutorial/traffic/script_router/><link
 rel=canonical 
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/traffic/script_router/><script>var
 
_paq=window._paq=window._paq||[];_paq.push(["setDocumentTitle",document.domain+"/"+document.title]),_paq.push(["setCookieDomain","*.dubbo.apa
 [...]
 <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,14 @@
 <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 
[...]
-但是Script router具有更强大的匹配功能,与此同时带来的是匹配消耗的资源更多,因此在生产环境中应当尽量少使用。</p><p>Script 
router的示例代码与Condition router类似,在nacos配置上略有差别,这里仅提供nacos上的简单配置。</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>scope</span>: <span 
style=color:#2aa198>&#34;application&#34;</span>
+<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 
style=color:#719e07>if</span> (<span style=color:#719e07>!</span>invokers <span 
style=color:#719e07>||</span> invokers.length <span 
style=color:#719e07>===</span> <span style=color:#2aa198>0</span>) <span 
style=color:#719e07>return</span> [];
+</span></span><span style=display:flex><span>  <span 
style=color:#719e07>return</span> invokers.filter(<span 
style=color:#268bd2>function</span>(invoker) {
+</span></span><span style=display:flex><span>    <span 
style=color:#268bd2>var</span> url <span style=color:#719e07>=</span> 
invoker.GetURL();
+</span></span><span style=display:flex><span>    <span 
style=color:#719e07>return</span> url <span 
style=color:#719e07>&amp;&amp;</span> url.Port <span 
style=color:#719e07>===</span> <span style=color:#2aa198>&#34;20000&#34;</span>;
+</span></span><span style=display:flex><span>  });
+</span></span><span style=display:flex><span>})(invokers, invocation, context);
+</span></span></code></pre></div><h2 id=配置-script-router>配置 Script 
Router</h2><p>示例 consumer 通过 <code>dubbo.WithConfigCenter</code> 连接 Nacos 
配置中心。启动 Provider 后,Script Router 会按照 Provider 的应用名订阅规则。</p><p>在 Nacos 
配置中心新增配置:</p><table><thead><tr><th>配置项</th><th>值</th></tr></thead><tbody><tr><td>Data
 
ID</td><td><code>script-server.script-router</code></td></tr><tr><td>Group</td><td><code>DEFAULT_GROUP</code></td></tr><tr><td>格式</td><td><code>YAML</code></td></tr></tbody></table><p>Data
 ID 的命名 [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>key</span>: <span 
style=color:#2aa198>&#34;script-server&#34;</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>type</span>: <span 
style=color:#2aa198>&#34;javascript&#34;</span>
@@ -701,11 +707,15 @@
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
     return url &amp;&amp; url.Port === &#34;20000&#34;;
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
   });
 </span></span></span><span style=display:flex><span><span style=color:#2aa198> 
 })(invokers, invocation, context);</span>
-</span></span></code></pre></div><p>参数说明:</p><table><thead><tr><th>参数</th><th>说明</th></tr></thead><tbody><tr><td>type</td><td>script的类型,目前仅可使用js</td></tr><tr><td>script</td><td>script实际内容</td></tr></tbody></table><div
 id=pre-footer><h2>反馈</h2><p class=feedback--prompt>此页是否对您有帮助?</p><button 
class="btn btn-primary mb-4 feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+</span></span></code></pre></div><p>字段说明:</p><table><thead><tr><th>字段</th><th>说明</th></tr></thead><tbody><tr><td><code>scope</code></td><td>Script
 Router 使用 <code>application</code> 
作用域。</td></tr><tr><td><code>key</code></td><td>规则目标 Provider 
的应用名。</td></tr><tr><td><code>enabled</code></td><td>是否启用规则;设置为 
<code>false</code> 时不执行脚本。</td></tr><tr><td><code>type</code></td><td>脚本类型,当前支持 
<code>javascript</code>。</td></tr><tr><td><code>script</code></td><td>返回过滤后 
Provider 列表的 JavaScript 脚本。</t [...]
+</span></span><span style=display:flex><span>go run 
./go-node2-server/cmd/server_node2.go  <span style=color:#586e75># 端口 
20001</span>
+</span></span></code></pre></div><p>再启动 consumer:</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>go run 
./go-client/cmd/client.go
+</span></span></code></pre></div><p>consumer 每 5 秒调用一次 <code>Greet</code>。未在 
Nacos 下发规则时,响应会在 <code>20000</code> 和 <code>20001</code> 两个 Provider 
之间切换。保存上述规则后无需重启 consumer,后续日志应只包含端口 <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-text data-lang=text><span style=display:flex><span>receive: 
hello world from: 20000
+</span></span></code></pre></div><p>删除 Nacos 配置或将 <code>enabled</code> 改为 
<code>false</code> 后,调用会恢复为可路由到两个 Provider。若规则未生效,请检查 Data 
ID、Group、配置中心连接以及脚本返回值。</p><h2 id=与-condition-router-的区别>与 Condition Router 
的区别</h2><table><thead><tr><th>对比项</th><th>Script Router</th><th>Condition 
Router</th></tr></thead><tbody><tr><td>规则表达</td><td>JavaScript 
脚本</td><td>声明式条件表达式,例如 <code>consumer => 
provider</code></td></tr><tr><td>适用场景</td><td>自定义计算、复杂筛选或基于调用信息决策</td><td>地址、方法、应用名等常规匹配</td></tr><tr><td
 [...]
+<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/tutorial/traffic/script_router?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+
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e8%84%9a%e6%9c%ac%e8%b7%af%e7%94%b1";
 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><ul><li><a href=#前置准备>前置准备</a></li><li><a 
href=#script-router-介绍>Script router 
介绍</a></li></ul></li></ul></nav></div></div></div></div><footer><div 
class=footer-container><div class=footer-container-left><div 
class=footer-container-left-title>关注我们</div><div 
class=footer-container-left-des>请通过以下任一或多个渠道关注社区动态,与社区开发者保持密切沟通。 [...]
+<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><ul><li><a href=#启动-nacos>启动 Nacos</a></li></ul></li><li><a 
href=#脚本入参>脚本入参</a></li><li><a href=#配置-script-router>配置 Script 
Router</a></li><li><a href=#运行并验证>运行并验证</a></li><li><a 
href=#与-condition-router-的区别>与 Condition Router 
的区别</a></li></ul></nav></div></div></div></div><footer><div 
class=footer-container><div class=f [...]
 <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 49062addb66..ecc9a9c84eb 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