This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch cn-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/cn-site by this push:
new 67a314de345 deploy: e2c3c45727c144db98f833f1344892ae44735cb4
67a314de345 is described below
commit 67a314de34580f0dd5de1cbb6b93e48c57b461eb
Author: AlbumenJ <[email protected]>
AuthorDate: Fri Oct 11 05:43:09 2024 +0000
deploy: e2c3c45727c144db98f833f1344892ae44735cb4
---
css/app.css | 2 +-
css/chunk-vendors.css | 2 +-
en/index.xml | 74 ++++++++++---
.../java-sdk/tasks/protocols/triple/idl/index.html | 120 +++++++--------------
.../java-sdk/tasks/protocols/triple/index.xml | 74 ++++++++++---
en/sitemap.xml | 2 +-
js/app.js | 3 +-
js/chunk-vendors.js | 37 +------
sitemap.xml | 2 +-
zh-cn/index.xml | 116 +++++++++++++-------
.../java-sdk/tasks/protocols/triple/idl/index.html | 120 +++++++--------------
.../java-sdk/tasks/protocols/triple/index.xml | 116 +++++++++++++-------
zh-cn/sitemap.xml | 2 +-
13 files changed, 361 insertions(+), 309 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 f801c91a395..6ab999d455c 100644
--- a/en/index.xml
+++ b/en/index.xml
@@ -2574,19 +2574,67 @@ This example will demonstrate how to compile the
dubbo-pilot control plane and h
</span></span><span style="display:flex;"><span>prometheus-server
ClusterIP 10.109.160.254 &lt;none&gt; 9090/TCP 4m
</span></span></code></pre></div><h2
id="deploy-sample">Deploy Sample</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-yaml" data-lang="yaml"><span
style="display:flex;"><span>kubectl apply -f
https://raw.githubusercontent.com/apache/dubbo-samples/master/4-governance/dubbo-samples-metrics-spring-boot/Deployment.yml
-</span></span></code></pre></div><p>Wait for the sample
application to run normally, and confirm the application status using the
following command:</p></description></item><item><title>Developing Triple
Communication Services Using Protobuf
(IDL)</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/
[...]
-<p>You can view the <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api-idl">full
code for this example</a>.</p>
-
-
-<div class="alert alert-info" role="alert">
-<h4 class="alert-heading">Note</h4>
-
- The example used in this article is based on native API coding; here is a
<a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot-idl">Spring
Boot version of the example</a> for reference, which also follows the
<code>protobuf+triple</code> model but includes service discovery
configuration.
-
-</div>
-
-<h2 id="run-the-example">Run the Example</h2>
-<p>First, download the example source code with the following
command:</p></description></item><item><title>Implementation of the
underlying serialization mechanism when developing triple services based on the
Java interface
model</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/se
[...]
+</span></span></code></pre></div><p>Wait for the sample
application to run normally, and confirm the application status using the
following command:</p></description></item><item><title>Developing Triple
Communication Services Using Protobuf
(IDL)</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/
[...]
+<h3 id="pom-dependency">POM dependency</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span
style="display:flex;"><span><span
style="color:#268bd2">&lt;plugin&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span
style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-maven-plugin<span
style="color:#268bd2">&lt;/artifactId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;version&gt;</span>${dubbo.version}<span
style="color:#268bd2">&lt;/version&gt;</span> <span
style="color:#586e75">&lt;!-- Version 3.3.0 and above --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;configuration&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;outputDir&gt;</span>build/generated/source/proto/main/java<span
style="color:#268bd2">&lt;/outputDir&gt;</span> <span
style="color:#586e75">&lt;!-- Refer to the following text for configurable
parameters --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/configuration&gt;</span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">&lt;/plugin&gt;</span>
+</span></span></code></pre></div><p>Configurable
parameters</p>
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: center">Parameter</th>
+ <th style="text-align: center">Required</th>
+ <th style="text-align: center">Default value</th>
+ <th style="text-align: center">Description</th>
+ <th style="text-align: center">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: center">outputDir</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align:
center">${project.build.directory}/generated-sources/protobuf/java</td>
+ <td style="text-align: center">Generated java file storage
directory</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protoSourceDir</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">${basedir}/src/main/proto</td>
+ <td style="text-align: center">proto file directory</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocArtifact</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align:
center">com.google.protobuf:protoc:3.25.0:exe:Operating System Name:Operating
System Architecture</td>
+ <td style="text-align: center">proto compiler component</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocVersion</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">3.25.0</td>
+ <td style="text-align: center">version of protobuf-java</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">dubboGenerateType</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">tri</td>
+ <td style="text-align: center">Code generation type</td>
+ <td style="text-align: center">Can be filled with tri or
tri_reactor</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="service-definition">Service Definition</h3>
+<p>Define the Greeter service using Protocol
Buffers.</p></description></item><item><title>Implementation of the
underlying serialization mechanism when developing triple services based on the
Java interface
model</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/serialization/triple/wrapper/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/reference-manual/serialization/tripl
[...]
<p>The triple protocol implemented by Dubbo offers better usability (not
binding Protobuf), allowing developers to directly define services using Java
interfaces. For users expecting a smooth upgrade, with no multilingual
services, or unfamiliar with Protobuf, the Java interface approach is the
simplest way to use triple.</p>
<p>The following details the underlying serialization specifics in this
protocol model: the framework will wrap the request and response using a
built-in protobuf object, <strong>which means the object will be serialized
twice. The first serialization is done using the method specified by
<code>serialization=hessian</code>, and the second is to wrap the byte[]
serialized in the first step with the protobuf wrapper before
transmission</strong>.</p></description></item><i [...]
<p>There are two ways to create a private protocol: the first is to wrap
the existing protocol and add specific business logic. The second is to
completely customize a protocol. The former is simpler to implement and is
widely used in <code>dubbo</code>, such as
<code>ProtocolFilterWrapper</code>,
<code>QosProtocolWrapper</code>, and
<code>ProtocolListenerWrapper</code>. The latter is relatively complex
but offers maximum flexibility; for instance, the built-in [...]
diff --git a/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
b/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
index bee2308b6c9..f7068eb3540 100644
--- a/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
+++ b/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
@@ -1,5 +1,5 @@
<!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/java-sdk/tasks/protocols/triple/idl/><link
rel=canonical
href=https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElem
[...]
-<meta property="og:site_name" content="Apache Dubbo"><meta property="og:title"
content="Developing Triple Communication Services Using Protobuf (IDL)"><meta
property="og:description" content="The Triple protocol supports defining
services using Protocol Buffers (Protobuf), making it more user-friendly for
those who choose Protobuf for various scenarios such as multi-language, gRPC,
and security."><meta property="og:locale" content="en"><meta property="og:type"
content="article"><meta pro [...]
+<meta property="og:site_name" content="Apache Dubbo"><meta property="og:title"
content="Developing Triple Communication Services Using Protobuf (IDL)"><meta
property="og:description" content="The Triple protocol supports defining
services using Protocol Buffers (Protobuf), making it more user-friendly for
those who choose Protobuf for various scenarios such as multi-language, gRPC,
and security."><meta property="og:locale" content="en"><meta property="og:type"
content="article"><meta pro [...]
<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>
@@ -624,75 +624,15 @@
<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>Change to the example source code
directory:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span><span
style=color:#b58900>cd</span> dubbo-samples/1-basic/dubbo-samples-api-idl
-</span></span></code></pre></div><p>Compile the project to generate code from
the IDL, which calls the protoc plugin provided by Dubbo to generate the
corresponding service definition code:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
compile
-</span></span></code></pre></div><p>The generated code is as follows:</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-text data-lang=text><span style=display:flex><span>├── build
-</span></span><span style=display:flex><span>│ └── generated
-</span></span><span style=display:flex><span>│ └── source
-</span></span><span style=display:flex><span>│ └── proto
-</span></span><span style=display:flex><span>│ └── main
-</span></span><span style=display:flex><span>│ └── java
-</span></span><span style=display:flex><span>│ └── org
-</span></span><span style=display:flex><span>│ └──
apache
-</span></span><span style=display:flex><span>│
└── dubbo
-</span></span><span style=display:flex><span>│
└── samples
-</span></span><span style=display:flex><span>│
└── tri
-</span></span><span style=display:flex><span>│
└── unary
-</span></span><span style=display:flex><span>│
├── DubboGreeterTriple.java
-</span></span><span style=display:flex><span>│
├── Greeter.java
-</span></span><span style=display:flex><span>│
├── GreeterOuterClass.java
-</span></span><span style=display:flex><span>│
├── GreeterReply.java
-</span></span><span style=display:flex><span>│
├── GreeterReplyOrBuilder.java
-</span></span><span style=display:flex><span>│
├── GreeterRequest.java
-</span></span><span style=display:flex><span>│
└── GreeterRequestOrBuilder.java
-</span></span></code></pre></div><h3 id=start-server>Start Server</h3><p>Run
the following command to start the server.</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryServer"</span>
-</span></span></code></pre></div><h3 id=access-the-service>Access the
Service</h3><p>There are two ways to access the Triple
service:</p><ul><li>Using standard HTTP tools</li><li>Using Dubbo client
SDK</li></ul><h4 id=curl-access>cURL Access</h4><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>curl <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --header <span
style=color:#2aa198>"Content-Type: application/json"</span> <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --data <span
style=color:#2aa198>'{"name":"Dubbo"}'</span> <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span>
http://localhost:50052/org.apache.dubbo.samples.tri.unary.Greeter/greet/
-</span></span></code></pre></div><h4 id=dubbo-client-access>Dubbo Client
Access</h4><p>Run the following command to start the Dubbo client and complete
the service call.</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.sa [...]
-</span></span></code></pre></div><h3 id=source-code-explanation>Source Code
Explanation</h3><h3 id=project-dependencies>Project Dependencies</h3><p>Due to
the use of the IDL development model, the dependencies such as dubbo,
protobuf-java must be added. Additionally, plugins like protobuf-maven-plugin
must be configured to generate the stub 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=langu [...]
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2><dependency></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>com.google.protobuf<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.6<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2><dependency></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>com.google.protobuf<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java-util<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.6<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span></code></pre></div><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span><span
style=color:#268bd2><plugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocArtifact></span>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}<span
style=color:#268bd2></protocArtifact></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDirectory></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDirectory></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocPlugins></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocPlugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><id></span>dubbo<span
style=color:#268bd2></id></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-compiler<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><mainClass></span>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator<span
style=color:#268bd2></mainClass></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></protocPlugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></protocPlugins></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><executions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goal></span>compile<span
style=color:#268bd2></goal></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></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:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-maven-plugin<span
style=color:#268bd2></artifactId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span> <span style=color:#586e75><!--
Version 3.3.0 and above --></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDir></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDir></span> <span
style=color:#586e75><!-- Refer to the following text for configurable
parameters --></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
-</span></span></code></pre></div><div class="alert alert-warning"
role=alert><h4 class=alert-heading>protoc Plugin Version Note</h4></div><h3
id=service-definition>Service Definition</h3><p>Define the Greeter service
using Protocol Buffers.</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-protobuf data-lang=protobuf><span
style=display:flex><span>syntax <span style=color:#719e07>=</span> <sp [...]
+</span></span></code></pre></div><p>Configurable
parameters</p><table><thead><tr><th style=text-align:center>Parameter</th><th
style=text-align:center>Required</th><th style=text-align:center>Default
value</th><th style=text-align:center>Description</th><th
style=text-align:center>Notes</th></tr></thead><tbody><tr><td
style=text-align:center>outputDir</td><td style=text-align:center>false</td><td
style=text-align:center>${project.build.directory}/generated-sources/protobuf/java</td><td
s [...]
</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> java_multiple_files <span
style=color:#719e07>=</span> <span style=color:#cb4b16>true</span>;
</span></span><span style=display:flex><span><span
style=color:#719e07>package</span> org<span
style=color:#719e07>.</span>apache.dubbo.samples.tri.unary;
</span></span><span style=display:flex><span>
@@ -752,15 +692,7 @@
</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java-util<span
style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.4<span
style=color:#268bd2></version></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span></code></pre></div><h3
id=generated-code-cannot-compile>Generated Code Cannot Compile</h3><p>When
using Protobuf, ensure that the core Dubbo library version matches the protoc
plugin version and run <code>mvn clean compile</code> to regenerate the
code.</p><p><strong>1. After version 3.3.0</strong></p><p>Starting from version
3.3.0+, configure the protoc plugin using <code>dubbo-maven-plugin</code>. The
version of <code>dubbo-maven-plugin</code> must match the core dubbo ve [...]
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
-</span></span></code></pre></div><p><strong>2. Before version
3.3.0</strong></p><p>Versions before 3.3.0 use
<code>protobuf-maven-plugin</code> to configure the protoc plugin, and the
<code>dubbo-compiler</code> must match the core dubbo version used:</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span><span
style=color:#268bd2><plugin></span>
+</span></span></code></pre></div><h3
id=generated-code-cannot-compile>Generated Code Cannot Compile</h3><p>When
using Protobuf, ensure that the core Dubbo library version matches the protoc
plugin version and run <code>mvn clean compile</code> to regenerate the
code.</p><p><strong>Before version 3.3.0</strong></p><p>Versions before 3.3.0
use <code>protobuf-maven-plugin</code> to configure the protoc plugin, and the
<code>dubbo-compiler</code> must match the core dubbo version used:</p><d [...]
</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
@@ -785,11 +717,39 @@
</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
+</span></span></code></pre></div><h2 id=run-the-example>Run the
Example</h2><p>This example demonstrates how to define a service using Protocol
Buffers and publish it as an externally callable Triple protocol service. If
you have multi-language interoperability, gRPC interaction, or are familiar
with and prefer Protobuf development, you can use this approach; otherwise,
consider the previous Java interface-based triple development model.</p><p>You
can view the <a href=https://github.com/ [...]
+</span></span></code></pre></div><p>Change to the example source code
directory:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span><span
style=color:#b58900>cd</span> dubbo-samples/1-basic/dubbo-samples-api-idl
+</span></span></code></pre></div><p>Compile the project to generate code from
the IDL, which calls the protoc plugin provided by Dubbo to generate the
corresponding service definition code:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
compile
+</span></span></code></pre></div><p>The generated code is as follows:</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-text data-lang=text><span style=display:flex><span>├── build
+</span></span><span style=display:flex><span>│ └── generated
+</span></span><span style=display:flex><span>│ └── source
+</span></span><span style=display:flex><span>│ └── proto
+</span></span><span style=display:flex><span>│ └── main
+</span></span><span style=display:flex><span>│ └── java
+</span></span><span style=display:flex><span>│ └── org
+</span></span><span style=display:flex><span>│ └──
apache
+</span></span><span style=display:flex><span>│
└── dubbo
+</span></span><span style=display:flex><span>│
└── samples
+</span></span><span style=display:flex><span>│
└── tri
+</span></span><span style=display:flex><span>│
└── unary
+</span></span><span style=display:flex><span>│
├── DubboGreeterTriple.java
+</span></span><span style=display:flex><span>│
├── Greeter.java
+</span></span><span style=display:flex><span>│
├── GreeterOuterClass.java
+</span></span><span style=display:flex><span>│
├── GreeterReply.java
+</span></span><span style=display:flex><span>│
├── GreeterReplyOrBuilder.java
+</span></span><span style=display:flex><span>│
├── GreeterRequest.java
+</span></span><span style=display:flex><span>│
└── GreeterRequestOrBuilder.java
+</span></span></code></pre></div><h3 id=start-server>Start Server</h3><p>Run
the following command to start the server.</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryServer"</span>
+</span></span></code></pre></div><h3 id=access-the-service>Access the
Service</h3><p>There are two ways to access the Triple
service:</p><ul><li>Using standard HTTP tools</li><li>Using Dubbo client
SDK</li></ul><h4 id=curl-access>cURL Access</h4><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>curl <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --header <span
style=color:#2aa198>"Content-Type: application/json"</span> <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --data <span
style=color:#2aa198>'{"name":"Dubbo"}'</span> <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span>
http://localhost:50052/org.apache.dubbo.samples.tri.unary.Greeter/greet/
+</span></span></code></pre></div><h4 id=dubbo-client-access>Dubbo Client
Access</h4><p>Run the following command to start the Dubbo client and complete
the service call.</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.sa [...]
</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
[...]
+<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/java-sdk/tasks/protocols/triple/idl?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+the+
[...]
<a
href="https://github.com/apache/dubbo-website/issues/new?title=Developing%20Triple%20Communication%20Services%20Using%20Protobuf%20%28IDL%29"
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=#run-the-example>Run the
Example</a><ul><li><a href=#start-server>Start Server</a></li><li><a
href=#access-the-service>Access the Service</a></li><li><a
href=#source-code-explanation>Source Code Explanation</a></li><li><a
href=#project-dependencies>Project Dependencies</a></li><li><a
href=#service-definition>Service Defi [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas
fa-tasks fa-fw"></i> Create project issue</a></div><nav
id=TableOfContents><ul><li><a href=#usage>Usage</a><ul><li><a
href=#pom-dependency>POM dependency</a></li><li><a
href=#service-definition>Service Definition</a></li><li><a
href=#service-implementation>Service Implementation</a></li><li><a
href=#write-client-logic>Write Client Logic</a></li></ul></li><li><a
href=#frequently-asked-questions>Frequently Asked [...]
<button class="contact-btn qr-container"
onmouseover='showQRCode("dingding-qr")'
onmouseout='hideQRCode("dingding-qr")'>DINGTALK CHANNEL<div class=qr-code
id=dingding-qr style=display:none><img
src=https://img.alicdn.com/imgextra/i4/O1CN01buuadT274Lj33QZWQ_!!6000000007743-0-tps-1170-1477.jpg
alt="DingTalk QR Code"></div></button>
<button class=contact-btn><a
href=https://github.com/apache/dubbo/>GITHUB</a></button></div></div><div
class=footer-container-right><ul><li>DOCUMENTATION</li><li><a
href=/en/overview/>Overview</a></li><li><a href=/en/overview/quickstart/>Quick
Start</a></li><li><a
href=/zh-cn/contact/contributor/software-donation-guide_dev/>Developer
guide</a></li></ul><ul><li>RESOURCES</li><li><a
href=/zh-cn/contact/>Community</a></li></ul></div></div><div
style="width:85.125rem;height:0;border:1px soli [...]
project logo are either registered trademarks or trademarks of The Apache
Software Foundation in the United States
diff --git a/en/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
b/en/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
index 8de8b6d62d7..ef65ec1e7ce 100644
--- a/en/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
+++ b/en/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
@@ -1,17 +1,65 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"
xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RPC Communication
Protocol Based on HTTP1/2 - triple on Apache
Dubbo</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/</link><description>Recent
content in RPC Communication Protocol Based on HTTP1/2 - triple on Apache
Dubbo</description><generator>Hugo</generator><language>en</language><atom:link
href="https://cn.d [...]
-<p>Below is a basic example of developing a Dubbo service using the
<code>Java interface</code>, which uses triple protocol communication.
You can view the <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api">full
code for this
example</a>.</p></description></item><item><title>Developing Triple
Communication Services Using Protobuf
(IDL)</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</
[...]
-<p>You can view the <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api-idl">full
code for this example</a>.</p>
-
-
-<div class="alert alert-info" role="alert">
-<h4 class="alert-heading">Note</h4>
-
- The example used in this article is based on native API coding; here is a
<a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot-idl">Spring
Boot version of the example</a> for reference, which also follows the
<code>protobuf+triple</code> model but includes service discovery
configuration.
-
-</div>
-
-<h2 id="run-the-example">Run the Example</h2>
-<p>First, download the example source code with the following
command:</p></description></item><item><title>Streaming
Communication</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</guid><description><p>In
the section <a href="../../protocol/">Choosing RPC Communication P [...]
+<p>Below is a basic example of developing a Dubbo service using the
<code>Java interface</code>, which uses triple protocol communication.
You can view the <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api">full
code for this
example</a>.</p></description></item><item><title>Developing Triple
Communication Services Using Protobuf
(IDL)</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/idl/</
[...]
+<h3 id="pom-dependency">POM dependency</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span
style="display:flex;"><span><span
style="color:#268bd2">&lt;plugin&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span
style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-maven-plugin<span
style="color:#268bd2">&lt;/artifactId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;version&gt;</span>${dubbo.version}<span
style="color:#268bd2">&lt;/version&gt;</span> <span
style="color:#586e75">&lt;!-- Version 3.3.0 and above --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;configuration&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;outputDir&gt;</span>build/generated/source/proto/main/java<span
style="color:#268bd2">&lt;/outputDir&gt;</span> <span
style="color:#586e75">&lt;!-- Refer to the following text for configurable
parameters --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/configuration&gt;</span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">&lt;/plugin&gt;</span>
+</span></span></code></pre></div><p>Configurable
parameters</p>
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: center">Parameter</th>
+ <th style="text-align: center">Required</th>
+ <th style="text-align: center">Default value</th>
+ <th style="text-align: center">Description</th>
+ <th style="text-align: center">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: center">outputDir</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align:
center">${project.build.directory}/generated-sources/protobuf/java</td>
+ <td style="text-align: center">Generated java file storage
directory</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protoSourceDir</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">${basedir}/src/main/proto</td>
+ <td style="text-align: center">proto file directory</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocArtifact</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align:
center">com.google.protobuf:protoc:3.25.0:exe:Operating System Name:Operating
System Architecture</td>
+ <td style="text-align: center">proto compiler component</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocVersion</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">3.25.0</td>
+ <td style="text-align: center">version of protobuf-java</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">dubboGenerateType</td>
+ <td style="text-align: center">false</td>
+ <td style="text-align: center">tri</td>
+ <td style="text-align: center">Code generation type</td>
+ <td style="text-align: center">Can be filled with tri or
tri_reactor</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="service-definition">Service Definition</h3>
+<p>Define the Greeter service using Protocol
Buffers.</p></description></item><item><title>Streaming
Communication</title><link>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/en/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</guid><description><p>In
the section <a href="../../protocol/">Choosing RPC Communication
Protocol</a>, i [...]
<ul>
<li>The interface needs to send a large amount of data that cannot be
placed in a single RPC request or response and needs to be sent in batches. If
the application layer cannot solve sequence and performance issues using
traditional multiple RPC methods, it can only be sent serially to ensure
order.</li>
<li>In streaming scenarios, data needs to be processed in the order it is
sent, and the data itself does not have fixed boundaries.</li>
diff --git a/en/sitemap.xml b/en/sitemap.xml
index 623477df9b9..c441d706c36 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 20f0c814e65..069248774b1 100644
--- a/js/app.js
+++ b/js/app.js
@@ -1,2 +1 @@
-(function(){"use strict";var t={9763:function(t,e,s){var
r=s(2856),l=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.b9807eee.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 fb67251dec6..069248774b1 100644
--- a/js/chunk-vendors.js
+++ b/js/chunk-vendors.js
@@ -1,36 +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],
[...]
-/*!
- * 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.c8f5525d.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 8042a1825c5..0a84a256a99 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>2024-09-18T10:31:50+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2024-09-30T18:03:21+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>2024-10-11T13:37:52+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2024-10-11T13:37:52+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/index.xml b/zh-cn/index.xml
index 165b47ea36b..836ab659df0 100644
--- a/zh-cn/index.xml
+++ b/zh-cn/index.xml
@@ -10054,46 +10054,82 @@ Istio 安装文档(<a
href="https://istio.io/latest/docs/setup/getting-starte
</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/dependency&gt;</span>
</span></span><span style="display:flex;"><span><span
style="color:#268bd2">&lt;/dependencies&gt;</span>
</span></span></code></pre></div><h3 id="22-配置启用">2.2
配置启用</h3>
-<p>只要是基于 <a
href="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Java
接口方式模式使用 triple 协议</a> ,就会使用 protobuf wrapper 序列化,只要定义 Java 接口并启用 triple
协议即可:</p></description></item><item><title>使用 Protobuf(IDL) 开发 triple
通信服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-s
[...]
-<p>可在此查看 <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api-idl">本示例的完整代码</a>。</p>
-
-
-<div class="alert alert-info" role="alert">
-<h4 class="alert-heading">注意</h4>
-
- 本文使用的示例是基于原生 API 编码的,这里还有一个 <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot-idl">Spring
Boot 版本的示例</a> 供参考,同样是 <code>protobuf+triple</code> 的模式,但额外加入了服务发现配置。
-
-</div>
-
-<h2 id="运行示例">运行示例</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-shell" data-lang="shell"><span
style="display:flex;"><span>git clone --depth<span
style="color:#719e07">=</span><span style="color:#2aa198">1</span>
https://github.com/apache/dubbo-samples.git
-</span></span></code></pre></div><p>进入示例源码目录:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span><span style="color:#b58900">cd</span>
dubbo-samples/1-basic/dubbo-samples-api-idl
-</span></span></code></pre></div><p>编译项目,由 IDL 生成代码,这会调用
dubbo 提供的 protoc 插件生成对应的服务定义代码:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span>mvn clean compile
-</span></span></code></pre></div><p>生成代码如下</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-text" data-lang="text"><span
style="display:flex;"><span>├── build
-</span></span><span style="display:flex;"><span>│ └── generated
-</span></span><span style="display:flex;"><span>│ └── source
-</span></span><span style="display:flex;"><span>│ └── proto
-</span></span><span style="display:flex;"><span>│ └── main
-</span></span><span style="display:flex;"><span>│ └── java
-</span></span><span style="display:flex;"><span>│ └── org
-</span></span><span style="display:flex;"><span>│ └── apache
-</span></span><span style="display:flex;"><span>│ └── dubbo
-</span></span><span style="display:flex;"><span>│ └── samples
-</span></span><span style="display:flex;"><span>│ └── tri
-</span></span><span style="display:flex;"><span>│ └── unary
-</span></span><span style="display:flex;"><span>│ ├──
DubboGreeterTriple.java
-</span></span><span style="display:flex;"><span>│ ├──
Greeter.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterOuterClass.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterReply.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterReplyOrBuilder.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterRequest.java
-</span></span><span style="display:flex;"><span>│ └──
GreeterRequestOrBuilder.java
-</span></span></code></pre></div><h3
id="启动server">启动Server</h3>
-<p>运行以下命令启动
server。</p></description></item><item><title>Protocol</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/extensibility/protocol/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/extensibility/protocol/</guid><description><p>在
<a
href="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/">通信协议</a>
一章中,我们了解了 Dubbo 内置的几个核心 RPC 协议 <c [...]
+<p>只要是基于 <a
href="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/">Java
接口方式模式使用 triple 协议</a> ,就会使用 protobuf wrapper 序列化,只要定义 Java 接口并启用 triple
协议即可:</p></description></item><item><title>使用 Protobuf(IDL) 开发 triple
通信服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-s
[...]
+<h3 id="pom依赖">POM依赖</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span
style="display:flex;"><span><span
style="color:#268bd2">&lt;plugin&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span
style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-maven-plugin<span
style="color:#268bd2">&lt;/artifactId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;version&gt;</span>${dubbo.version}<span
style="color:#268bd2">&lt;/version&gt;</span> <span
style="color:#586e75">&lt;!-- 3.3.0及以上版本 --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;configuration&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;outputDir&gt;</span>build/generated/source/proto/main/java<span
style="color:#268bd2">&lt;/outputDir&gt;</span> <span
style="color:#586e75">&lt;!-- 参考下文可配置参数 --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/configuration&gt;</span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">&lt;/plugin&gt;</span>
+</span></span></code></pre></div><p>configuration可配置参数</p>
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: center">参数</th>
+ <th style="text-align: center">必填参数</th>
+ <th style="text-align: center">默认值</th>
+ <th style="text-align: center">说明</th>
+ <th style="text-align: center">备注</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: center">outputDir</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align:
center">${project.build.directory}/generated-sources/protobuf/java</td>
+ <td style="text-align: center">生成的java文件存放目录</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protoSourceDir</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">${basedir}/src/main/proto</td>
+ <td style="text-align: center">proto文件目录</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocArtifact</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align:
center">com.google.protobuf:protoc:3.25.0:exe:操作系统名:操作系统架构</td>
+ <td style="text-align: center">proto编译器组件</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocVersion</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">3.25.0</td>
+ <td style="text-align: center">protobuf-java的版本</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">dubboGenerateType</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">tri</td>
+ <td style="text-align: center">代码生成类型</td>
+ <td style="text-align: center">可填tri或者tri_reactor</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="服务定义">服务定义</h3>
+<p>使用 Protocol Buffers 定义 Greeter 服务</p>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-protobuf" data-lang="protobuf"><span
style="display:flex;"><span>syntax <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;proto3&#34;</span>;
+</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> java_multiple_files <span
style="color:#719e07">=</span> <span style="color:#cb4b16">true</span>;
+</span></span><span style="display:flex;"><span><span
style="color:#719e07">package</span> org<span
style="color:#719e07">.</span>apache.dubbo.samples.tri.unary;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">GreeterRequest</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> name <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
+</span></span><span style="display:flex;"><span>}
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">GreeterReply</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> <span
style="color:#268bd2">message</span> <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
+</span></span><span style="display:flex;"><span>}
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">service</span> Greeter{
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">rpc</span> greet(GreeterRequest) <span
style="color:#719e07">returns</span> (GreeterReply);
+</span></span><span style="display:flex;"><span>}
+</span></span></code></pre></div><p>请注意以上 package 定义
<code>package org.apache.dubbo.samples.tri.unary;</code>,在此示例中 package
定义的路径将同时作为 java 包名和服务名前缀。这意味着 rpc
服务的完整定义是:<code>org.apache.dubbo.samples.tri.unary.Greeter</code>,与生成代码的路径完全一致。</p></description></item><item><title>Protocol</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/extensibility/protocol/</link><pubDate>Mon,
01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn. [...]
<p>自定义一套私有协议有两种方式,第一种是对原有的协议进行包装,添加一些特定的业务逻辑。另外一种是完全自定义一套协议。前者实现简单,在<code>dubbo</code>中也是有广泛的使用,比如:<code>ProtocolFilterWrapper</code>,
<code>QosProtocolWrapper</code>,
<code>ProtocolListenerWrapper</code>等。后者实现相对复杂,但却具有最大的灵活性,比如 Dubbo
框架内置的协议 <code>dubbo</code>、<code>triple</code> 协议都可以算作这种实现方式。</p>
<p>本示例的完整源码请参见 <a
href="https://github.com/apache/dubbo-samples/blob/master/10-task/dubbo-samples-extensibility/">dubbo-samples-extensibility</a>。除了本示例之外,Dubbo
核心仓库 apache/dubbo 以及扩展库 <a
href="https://github.com/apache/dubbo-spi-extensions/tree/master/dubbo-protocol-extensions/">apache/dubbo-spi-extensions</a>
中的众多 Protocol 实现,都可以作为扩展参考实现:</p>
<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-properties" data-lang="properties"><span
style="display:flex;"><span><span style="color:#586e75">#
Dubbo对外支持的常用协议</span>
diff --git
a/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
b/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
index edc73465f69..a2f239b4cb7 100644
--- a/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
+++ b/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/index.html
@@ -1,5 +1,5 @@
<!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/java-sdk/tasks/protocols/triple/idl/><link
rel=canonical
href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/><script>var
_hmt=_hmt||[];(function(){var
e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElem
[...]
-<meta property="og:site_name" content="Apache Dubbo"><meta property="og:title"
content="使用 Protobuf(IDL) 开发 triple 通信服务"><meta property="og:description"
content="Triple 协议支持使用 Protocol Buffers (Protobuf)
定义服务,对于因为多语言、gRPC、安全性等场景选型protobuf 的用户更友好。"><meta property="og:locale"
content="zh_cn"><meta property="og:type" content="article"><meta
property="article:section" content="overview"><meta
property="article:modified_time" content="2024-09-13T15:29:11+08:00"><meta
itemprop=name content="使用 [...]
+<meta property="og:site_name" content="Apache Dubbo"><meta property="og:title"
content="使用 Protobuf(IDL) 开发 triple 通信服务"><meta property="og:description"
content="Triple 协议支持使用 Protocol Buffers (Protobuf)
定义服务,对于因为多语言、gRPC、安全性等场景选型protobuf 的用户更友好。"><meta property="og:locale"
content="zh_cn"><meta property="og:type" content="article"><meta
property="article:section" content="overview"><meta
property="article:modified_time" content="2024-10-11T13:37:52+08:00"><meta
itemprop=name content="使用 [...]
<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>
@@ -626,75 +626,15 @@
<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><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span><span
style=color:#b58900>cd</span> dubbo-samples/1-basic/dubbo-samples-api-idl
-</span></span></code></pre></div><p>编译项目,由 IDL 生成代码,这会调用 dubbo 提供的 protoc
插件生成对应的服务定义代码:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
compile
-</span></span></code></pre></div><p>生成代码如下</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-text data-lang=text><span style=display:flex><span>├── build
-</span></span><span style=display:flex><span>│ └── generated
-</span></span><span style=display:flex><span>│ └── source
-</span></span><span style=display:flex><span>│ └── proto
-</span></span><span style=display:flex><span>│ └── main
-</span></span><span style=display:flex><span>│ └── java
-</span></span><span style=display:flex><span>│ └── org
-</span></span><span style=display:flex><span>│ └──
apache
-</span></span><span style=display:flex><span>│
└── dubbo
-</span></span><span style=display:flex><span>│
└── samples
-</span></span><span style=display:flex><span>│
└── tri
-</span></span><span style=display:flex><span>│
└── unary
-</span></span><span style=display:flex><span>│
├── DubboGreeterTriple.java
-</span></span><span style=display:flex><span>│
├── Greeter.java
-</span></span><span style=display:flex><span>│
├── GreeterOuterClass.java
-</span></span><span style=display:flex><span>│
├── GreeterReply.java
-</span></span><span style=display:flex><span>│
├── GreeterReplyOrBuilder.java
-</span></span><span style=display:flex><span>│
├── GreeterRequest.java
-</span></span><span style=display:flex><span>│
└── GreeterRequestOrBuilder.java
-</span></span></code></pre></div><h3 id=启动server>启动Server</h3><p>运行以下命令启动
server。</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryServer"</span>
-</span></span></code></pre></div><h3 id=访问服务>访问服务</h3><p>有两种方式可以访问 Triple
服务:</p><ul><li>以标准 HTTP 工具访问</li><li>以 Dubbo client sdk 访问</li></ul><h4
id=curl-访问>cURL 访问</h4><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>curl <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --header <span
style=color:#2aa198>"Content-Type: application/json"</span> <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --data <span
style=color:#2aa198>'{"name":"Dubbo"}'</span> <span
style=color:#cb4b16>\
-</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span>
http://localhost:50052/org.apache.dubbo.samples.tri.unary.Greeter/greet/
-</span></span></code></pre></div><h4 id=dubbo-client-访问>Dubbo client
访问</h4><p>运行以下命令,启动 Dubbo client 并完成服务调用</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryClient"</span>
-</span></span></code></pre></div><h2 id=源码讲解>源码讲解</h2><h3
id=项目依赖>项目依赖</h3><p>由于使用 IDL 开发模式,因此要添加 dubbo、protobuf-java 等依赖,同时还要配置
protobuf-maven-plugin 等插件,用于生成桩代码。</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span><span
style=color:#268bd2><dependency></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2><dependency></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>com.google.protobuf<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.6<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2><dependency></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>com.google.protobuf<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java-util<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.6<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span></code></pre></div><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span><span
style=color:#268bd2><plugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocArtifact></span>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}<span
style=color:#268bd2></protocArtifact></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDirectory></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDirectory></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocPlugins></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><protocPlugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><id></span>dubbo<span
style=color:#268bd2></id></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-compiler<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><mainClass></span>org.apache.dubbo.gen.tri.Dubbo3TripleGenerator<span
style=color:#268bd2></mainClass></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></protocPlugin></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></protocPlugins></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><executions></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><goal></span>compile<span
style=color:#268bd2></goal></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></goals></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></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:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-maven-plugin<span
style=color:#268bd2></artifactId></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span> <span style=color:#586e75><!--
3.3.0及以上版本 --></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2><outputDir></span>build/generated/source/proto/main/java<span
style=color:#268bd2></outputDir></span> <span
style=color:#586e75><!-- 参考下文可配置参数 --></span>
+</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
-</span></span></code></pre></div><div class="alert alert-warning"
role=alert><h4 class=alert-heading>protoc 插件版本说明</h4></div><h3
id=服务定义>服务定义</h3><p>使用 Protocol Buffers 定义 Greeter 服务</p><div
class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-protobuf data-lang=protobuf><span
style=display:flex><span>syntax <span style=color:#719e07>=</span> <span
style=color:#2aa198>"proto3"</span>;
+</span></span></code></pre></div><p>configuration可配置参数</p><table><thead><tr><th
style=text-align:center>参数</th><th style=text-align:center>必填参数</th><th
style=text-align:center>默认值</th><th style=text-align:center>说明</th><th
style=text-align:center>备注</th></tr></thead><tbody><tr><td
style=text-align:center>outputDir</td><td style=text-align:center>否</td><td
style=text-align:center>${project.build.directory}/generated-sources/protobuf/java</td><td
style=text-align:center>生成的java文件存放目录</td>< [...]
</span></span><span style=display:flex><span><span
style=color:#719e07>option</span> java_multiple_files <span
style=color:#719e07>=</span> <span style=color:#cb4b16>true</span>;
</span></span><span style=display:flex><span><span
style=color:#719e07>package</span> org<span
style=color:#719e07>.</span>apache.dubbo.samples.tri.unary;
</span></span><span style=display:flex><span>
@@ -754,15 +694,7 @@
</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-java-util<span
style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>3.19.4<span
style=color:#268bd2></version></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></dependency></span>
-</span></span></code></pre></div><h3 id=生成的代码无法编译>生成的代码无法编译</h3><p>在使用
Protobuf 时,请尽量保持 dubbo 核心库版本与 protoc 插件版本一致,并运行 <code>mvn clean compile</code>
重新生成代码。</p><p><strong>1. 3.3.0 版本之后</strong></p><p>3.3.0+ 版本开始使用
<code>dubbo-maven-plugin</code> 配置 protoc 插件,<code>dubbo-maven-plugin</code>
的版本必须保持和使用的内核 dubbo 版本一致:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span sty [...]
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.apache.dubbo<span
style=color:#268bd2></groupId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>dubbo-maven-plugin<span
style=color:#268bd2></artifactId></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>${dubbo.version}<span
style=color:#268bd2></version></span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2><configuration></span>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <span
style=color:#268bd2></configuration></span>
-</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
-</span></span></code></pre></div><p><strong>2. 3.3.0 版本之前</strong></p><p>3.3.0
之前的版本使用 <code>protobuf-maven-plugin</code> 配置 protoc 插件,其中
<code>dubbo-compiler</code> 必须保持和使用的内核 dubbo 版本一致:</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span style=display:flex><span><span
style=color:#268bd2><plugin></span>
+</span></span></code></pre></div><h3 id=生成的代码无法编译>生成的代码无法编译</h3><p>在使用
Protobuf 时,请尽量保持 dubbo 核心库版本与 protoc 插件版本一致,并运行 <code>mvn clean compile</code>
重新生成代码。</p><p><strong>3.3.0 版本之前的POM依赖</strong></p><p>3.3.0 之前的版本使用
<code>protobuf-maven-plugin</code> 配置 protoc 插件,其中 <code>dubbo-compiler</code>
必须保持和使用的内核 dubbo 版本一致:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-xml data-lang=xml><span s [...]
</span></span><span style=display:flex><span> <span
style=color:#268bd2><groupId></span>org.xolstice.maven.plugins<span
style=color:#268bd2></groupId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><artifactId></span>protobuf-maven-plugin<span
style=color:#268bd2></artifactId></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2><version></span>0.6.1<span
style=color:#268bd2></version></span>
@@ -787,11 +719,39 @@
</span></span><span style=display:flex><span> <span
style=color:#268bd2></execution></span>
</span></span><span style=display:flex><span> <span
style=color:#268bd2></executions></span>
</span></span><span style=display:flex><span><span
style=color:#268bd2></plugin></span>
+</span></span></code></pre></div><h2 id=运行示例>运行示例</h2><p>本示例演示如何使用 Protocol
Buffers 定义服务,并将其发布为对外可调用的 triple 协议服务。如果你有多语言业务互调、gRPC互通,或者熟悉并喜欢 Protobuf
的开发方式,则可以使用这种模式,否则可以考虑上一篇基于Java接口的 triple 开发模式。</p><p>可在此查看 <a
href=https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api-idl>本示例的完整代码</a>。</p><div
class="alert alert-info" role=alert><h4
class=alert-heading>注意</h4>本文使用的示例是基于原生 API 编码的,这里还有一个 <a
href=https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-s [...]
+</span></span></code></pre></div><p>进入示例源码目录:</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span><span
style=color:#b58900>cd</span> dubbo-samples/1-basic/dubbo-samples-api-idl
+</span></span></code></pre></div><p>编译项目,由 IDL 生成代码,这会调用 dubbo 提供的 protoc
插件生成对应的服务定义代码:</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn clean
compile
+</span></span></code></pre></div><p>生成代码如下</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-text data-lang=text><span style=display:flex><span>├── build
+</span></span><span style=display:flex><span>│ └── generated
+</span></span><span style=display:flex><span>│ └── source
+</span></span><span style=display:flex><span>│ └── proto
+</span></span><span style=display:flex><span>│ └── main
+</span></span><span style=display:flex><span>│ └── java
+</span></span><span style=display:flex><span>│ └── org
+</span></span><span style=display:flex><span>│ └──
apache
+</span></span><span style=display:flex><span>│
└── dubbo
+</span></span><span style=display:flex><span>│
└── samples
+</span></span><span style=display:flex><span>│
└── tri
+</span></span><span style=display:flex><span>│
└── unary
+</span></span><span style=display:flex><span>│
├── DubboGreeterTriple.java
+</span></span><span style=display:flex><span>│
├── Greeter.java
+</span></span><span style=display:flex><span>│
├── GreeterOuterClass.java
+</span></span><span style=display:flex><span>│
├── GreeterReply.java
+</span></span><span style=display:flex><span>│
├── GreeterReplyOrBuilder.java
+</span></span><span style=display:flex><span>│
├── GreeterRequest.java
+</span></span><span style=display:flex><span>│
└── GreeterRequestOrBuilder.java
+</span></span></code></pre></div><h3 id=启动server>启动Server</h3><p>运行以下命令启动
server。</p><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryServer"</span>
+</span></span></code></pre></div><h3 id=访问服务>访问服务</h3><p>有两种方式可以访问 Triple
服务:</p><ul><li>以标准 HTTP 工具访问</li><li>以 Dubbo client sdk 访问</li></ul><h4
id=curl-访问>cURL 访问</h4><div class=highlight><pre tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>curl <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --header <span
style=color:#2aa198>"Content-Type: application/json"</span> <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span> --data <span
style=color:#2aa198>'{"name":"Dubbo"}'</span> <span
style=color:#cb4b16>\
+</span></span></span><span style=display:flex><span><span
style=color:#cb4b16></span>
http://localhost:50052/org.apache.dubbo.samples.tri.unary.Greeter/greet/
+</span></span></code></pre></div><h4 id=dubbo-client-访问>Dubbo client
访问</h4><p>运行以下命令,启动 Dubbo client 并完成服务调用</p><div class=highlight><pre
tabindex=0
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
class=language-shell data-lang=shell><span style=display:flex><span>mvn
compile exec:java -Dexec.mainClass<span style=color:#719e07>=</span><span
style=color:#2aa198>"org.apache.dubbo.samples.tri.unary.TriUnaryClient"</span>
</span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4
feedback--yes">是</button>
-<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
+<button class="btn btn-primary mb-4
feedback--no">否</button></div><script>const
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
[...]
<a
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn//overview/mannual/java-sdk/tasks/protocols/triple/idl?filename=change-me.md&value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+Edit+t
[...]
<a
href="https://github.com/apache/dubbo-website/issues/new?title=%e4%bd%bf%e7%94%a8%20Protobuf%28IDL%29%20%e5%bc%80%e5%8f%91%20triple%20%e9%80%9a%e4%bf%a1%e6%9c%8d%e5%8a%a1"
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=#启动server>启动Server</a></li><li><a
href=#访问服务>访问服务</a></li></ul></li><li><a href=#源码讲解>源码讲解</a><ul><li><a
href=#项目依赖>项目依赖</a></li><li><a href=#服务定义>服务定义</a></li><li><a
href=#服务实现>服务实现</a></li><li><a href=#编写-client-逻辑>编写 client
逻辑</a></li></ul></li><li><a href=#常见问题>常见问题</a><ul><li><a href=#protobuf-类找不到>p
[...]
+<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=#pom依赖>POM依赖</a></li><li><a
href=#服务定义>服务定义</a></li><li><a href=#服务实现>服务实现</a></li><li><a
href=#编写-client-逻辑>编写 client 逻辑</a></li></ul></li><li><a
href=#常见问题>常见问题</a><ul><li><a href=#protobuf-类找不到>protobuf 类找不到</a></li><li><a
href=#生成的代码无法编译>生成的代码无法编译</a></li></ul></li><li><a
href=#运行示例>运行示例</a><ul><li><a [...]
<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/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
b/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
index 04b9b58556b..667418cbe14 100644
--- a/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/index.xml
@@ -31,46 +31,82 @@
</span></span></code></pre></div><h4 id="sdk-client">SDK
Client</h4>
<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-bash" data-lang="bash"><span
style="display:flex;"><span>mvn -Dexec.mainClass<span
style="color:#719e07">=</span>org.apache.dubbo.samples.client.Application
exec:java
</span></span></code></pre></div><h2 id="源码讲解">源码讲解</h2>
-<p>如果您是 Dubbo 老用户,你会发现以下内容与之前 Dubbo2 的开发模式基本一样,只是协议名称从
<code>dubbo</code> 换成了
<code>tri</code>。</p></description></item><item><title>使用
Protobuf(IDL) 开发 triple
通信服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</guid><description><p>本示例演示如何使用
Protocol Buffers 定义服务,并 [...]
-<p>可在此查看 <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-api-idl">本示例的完整代码</a>。</p>
-
-
-<div class="alert alert-info" role="alert">
-<h4 class="alert-heading">注意</h4>
-
- 本文使用的示例是基于原生 API 编码的,这里还有一个 <a
href="https://github.com/apache/dubbo-samples/tree/master/1-basic/dubbo-samples-spring-boot-idl">Spring
Boot 版本的示例</a> 供参考,同样是 <code>protobuf+triple</code> 的模式,但额外加入了服务发现配置。
-
-</div>
-
-<h2 id="运行示例">运行示例</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-shell" data-lang="shell"><span
style="display:flex;"><span>git clone --depth<span
style="color:#719e07">=</span><span style="color:#2aa198">1</span>
https://github.com/apache/dubbo-samples.git
-</span></span></code></pre></div><p>进入示例源码目录:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span><span style="color:#b58900">cd</span>
dubbo-samples/1-basic/dubbo-samples-api-idl
-</span></span></code></pre></div><p>编译项目,由 IDL 生成代码,这会调用
dubbo 提供的 protoc 插件生成对应的服务定义代码:</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-shell" data-lang="shell"><span
style="display:flex;"><span>mvn clean compile
-</span></span></code></pre></div><p>生成代码如下</p>
-<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-text" data-lang="text"><span
style="display:flex;"><span>├── build
-</span></span><span style="display:flex;"><span>│ └── generated
-</span></span><span style="display:flex;"><span>│ └── source
-</span></span><span style="display:flex;"><span>│ └── proto
-</span></span><span style="display:flex;"><span>│ └── main
-</span></span><span style="display:flex;"><span>│ └── java
-</span></span><span style="display:flex;"><span>│ └── org
-</span></span><span style="display:flex;"><span>│ └── apache
-</span></span><span style="display:flex;"><span>│ └── dubbo
-</span></span><span style="display:flex;"><span>│ └── samples
-</span></span><span style="display:flex;"><span>│ └── tri
-</span></span><span style="display:flex;"><span>│ └── unary
-</span></span><span style="display:flex;"><span>│ ├──
DubboGreeterTriple.java
-</span></span><span style="display:flex;"><span>│ ├──
Greeter.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterOuterClass.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterReply.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterReplyOrBuilder.java
-</span></span><span style="display:flex;"><span>│ ├──
GreeterRequest.java
-</span></span><span style="display:flex;"><span>│ └──
GreeterRequestOrBuilder.java
-</span></span></code></pre></div><h3
id="启动server">启动Server</h3>
-<p>运行以下命令启动 server。</p></description></item><item><title>Streaming
通信</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</guid><description><p>在
<a href="../../protocol/">选择 RPC 通信协议</a> 一节提到,Streaming 是 Dubbo3 新提供的一种
RPC 数据传输模式,适用于以下场景:</p>
+<p>如果您是 Dubbo 老用户,你会发现以下内容与之前 Dubbo2 的开发模式基本一样,只是协议名称从
<code>dubbo</code> 换成了
<code>tri</code>。</p></description></item><item><title>使用
Protobuf(IDL) 开发 triple
通信服务</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</link><pubDate>Mon,
01 Jan 0001 00:00:00
+0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/idl/</guid><description><h2
id="使用方式">使用方式</h2>
+<h3 id="pom依赖">POM依赖</h3>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-xml" data-lang="xml"><span
style="display:flex;"><span><span
style="color:#268bd2">&lt;plugin&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;groupId&gt;</span>org.apache.dubbo<span
style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;artifactId&gt;</span>dubbo-maven-plugin<span
style="color:#268bd2">&lt;/artifactId&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;version&gt;</span>${dubbo.version}<span
style="color:#268bd2">&lt;/version&gt;</span> <span
style="color:#586e75">&lt;!-- 3.3.0及以上版本 --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;configuration&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;outputDir&gt;</span>build/generated/source/proto/main/java<span
style="color:#268bd2">&lt;/outputDir&gt;</span> <span
style="color:#586e75">&lt;!-- 参考下文可配置参数 --&gt;</span>
+</span></span><span style="display:flex;"><span> <span
style="color:#268bd2">&lt;/configuration&gt;</span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">&lt;/plugin&gt;</span>
+</span></span></code></pre></div><p>configuration可配置参数</p>
+<table>
+ <thead>
+ <tr>
+ <th style="text-align: center">参数</th>
+ <th style="text-align: center">必填参数</th>
+ <th style="text-align: center">默认值</th>
+ <th style="text-align: center">说明</th>
+ <th style="text-align: center">备注</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="text-align: center">outputDir</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align:
center">${project.build.directory}/generated-sources/protobuf/java</td>
+ <td style="text-align: center">生成的java文件存放目录</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protoSourceDir</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">${basedir}/src/main/proto</td>
+ <td style="text-align: center">proto文件目录</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocArtifact</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align:
center">com.google.protobuf:protoc:3.25.0:exe:操作系统名:操作系统架构</td>
+ <td style="text-align: center">proto编译器组件</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">protocVersion</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">3.25.0</td>
+ <td style="text-align: center">protobuf-java的版本</td>
+ <td style="text-align: center"></td>
+ </tr>
+ <tr>
+ <td style="text-align: center">dubboGenerateType</td>
+ <td style="text-align: center">否</td>
+ <td style="text-align: center">tri</td>
+ <td style="text-align: center">代码生成类型</td>
+ <td style="text-align: center">可填tri或者tri_reactor</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="服务定义">服务定义</h3>
+<p>使用 Protocol Buffers 定义 Greeter 服务</p>
+<div class="highlight"><pre tabindex="0"
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code
class="language-protobuf" data-lang="protobuf"><span
style="display:flex;"><span>syntax <span
style="color:#719e07">=</span> <span
style="color:#2aa198">&#34;proto3&#34;</span>;
+</span></span><span style="display:flex;"><span><span
style="color:#719e07">option</span> java_multiple_files <span
style="color:#719e07">=</span> <span style="color:#cb4b16">true</span>;
+</span></span><span style="display:flex;"><span><span
style="color:#719e07">package</span> org<span
style="color:#719e07">.</span>apache.dubbo.samples.tri.unary;
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">GreeterRequest</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> name <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
+</span></span><span style="display:flex;"><span>}
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">message</span> <span
style="color:#268bd2">GreeterReply</span> {
+</span></span><span style="display:flex;"><span> <span
style="color:#dc322f">string</span> <span
style="color:#268bd2">message</span> <span
style="color:#719e07">=</span> <span style="color:#2aa198">1</span>;
+</span></span><span style="display:flex;"><span>}
+</span></span><span style="display:flex;"><span>
+</span></span><span style="display:flex;"><span><span
style="color:#268bd2">service</span> Greeter{
+</span></span><span style="display:flex;"><span> <span
style="color:#719e07">rpc</span> greet(GreeterRequest) <span
style="color:#719e07">returns</span> (GreeterReply);
+</span></span><span style="display:flex;"><span>}
+</span></span></code></pre></div><p>请注意以上 package 定义
<code>package org.apache.dubbo.samples.tri.unary;</code>,在此示例中 package
定义的路径将同时作为 java 包名和服务名前缀。这意味着 rpc
服务的完整定义是:<code>org.apache.dubbo.samples.tri.unary.Greeter</code>,与生成代码的路径完全一致。</p></description></item><item><title>Streaming
通信</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/tasks/protocols/triple/streaming/</link><pubDate>Mon,
01 Jan 0001 00:00:00 +0000</pubDate><guid>htt [...]
<ul>
<li>接口需要发送大量数据,这些数据无法被放在一个 RPC 的请求或响应中,需要分批发送,但应用层如果按照传统的多次 RPC
方式无法解决顺序和性能的问题,如果需要保证有序,则只能串行发送</li>
<li>流式场景,数据需要按照发送顺序处理, 数据本身是没有确定边界的</li>
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index 7efa651fe7f..576df19e504 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