You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by gi...@apache.org on 2023/04/13 12:18:29 UTC
[dubbo-website] branch cn-site updated: deploy: 2f02d34cd42980c4dd031a1b7e2a0b3dbfe12437
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 07c613ec19 deploy: 2f02d34cd42980c4dd031a1b7e2a0b3dbfe12437
07c613ec19 is described below
commit 07c613ec19321b2daa43f5f59f9bc81964fecb06
Author: CrazyHZM <Cr...@users.noreply.github.com>
AuthorDate: Thu Apr 13 12:18:23 2023 +0000
deploy: 2f02d34cd42980c4dd031a1b7e2a0b3dbfe12437
---
sitemap.xml | 2 +-
.../performance/index.xml | 274 +++++++++------------
.../performance/support-graalvm/index.html | 229 ++++++++---------
zh-cn/sitemap.xml | 2 +-
4 files changed, 224 insertions(+), 283 deletions(-)
diff --git a/sitemap.xml b/sitemap.xml
index fd1f3f6534..b29f700294 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>2023-04-12T00:54:23+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-04-12T00:54:23+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://cn.dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-04-13T20:14:22+08:00</lastmod></sitemap><sitemap><loc>https://cn.dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-04-12T00:54:23+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/index.xml b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/index.xml
index a9c669af60..f2e4265c92 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/index.xml
@@ -855,7 +855,7 @@
</span></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dubbo:reference&gt;</span>
</span></span></code></pre></div></description></item><item><title>Overview: 支持 Graal VM</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/</guid><description>
<h2 id="功能说明">功能说明</h2>
-<p>Dubbo3.0 支持 Native-Image 文档, 本文档将介绍将 dubbo3.0 项目接入 GraalVM,进行 native-image 编译为二进制的流程。</p>
+<p>Dubbo3.2 支持 Native-Image 文档, 本文档将介绍将 dubbo3.0 项目接入 GraalVM,进行 native-image 编译为二进制的流程。</p>
<p>关于 GraalVm 的更多信息可以阅读 <a href="https://www.graalvm.org/docs/getting-started/container-images/">https://www.graalvm.org/docs/getting-started/container-images/</a> 此文档。</p>
<h2 id="使用场景">使用场景</h2>
<ol>
@@ -868,167 +868,131 @@
</ol>
<h2 id="使用方式">使用方式</h2>
<p>在编译我们的dubbo项目之前,需要确保我们正基于graalVm的环境。</p>
-<h3 id="安装graalvm">安装GraalVM</h3>
-<p>进入 <a href="https://www.graalvm.org/">https://www.graalvm.org/</a> 官网根据自己的系统选取最新版本安装:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/graalvmgw.jpg" alt="img"></p>
-<p>安装完成后,修改配置 JAVA_HOME 的路径,生效后查看本地 jdk 可以看到如下:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/graalvm_env.jpg" alt="img">
-这里我们使用的基于jdk1.8版本的GraalVM。</p>
-<ul>
-<li>安装native-image,只需执行gu install native-image即可。</li>
-</ul>
+<h3 id="第一步安装graalvm">第一步:安装GraalVM</h3>
<ol>
-<li>拉取dubbo代码,切换到<a href="https://github.com/apache/dubbo">apache:3.0</a>分支。</li>
-<li>手动执行生成SPI代码。</li>
+<li>在Graalvm官网根据自己的系统选取对应Graalvm版本:https://www.graalvm.org/downloads/</li>
+<li>根据官方文档安装native-image:https://www.graalvm.org/latest/reference-manual/native-image/#install-native-image</li>
</ol>
-<p>由于目前编译native-image不支持代码动态生成编译,所以有关代码动态生成的部分需要我们手动先生成,这里提供了工具函数:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/code_generator.jpg" alt="img">
-执行CodeGenerator即可在dubbo-native模块下生成SPI代码。</p>
-<h3 id="在根目录下执行install">在根目录下执行install</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-go" data-lang="go"><span style="display:flex;"><span>MacdeMacBook<span style="color:#719e07">-</span>pro<span style="color:#719e07">-</span><span style="color:#2aa198">3</span>:incubator<span style="color:#719e07">-</span>dubbo mac$ pwd
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span><span style="color:#719e07">/</span>Users<span style="color:#719e07">/</span>mac<span style="color:#719e07">/</span>Documents<span style="color:#719e07">/</span>Mi<span style="color:#719e07">/</span>project<span style="color:#719e07">/</span>incubator<span style="color:#719e07">-</span>dubbo
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>MacdeMacBook<span style="color:#719e07">-</span>pro<span style="color:#719e07">-</span><span style="color:#2aa198">3</span>:incubator<span style="color:#719e07">-</span>dubbo mac$ mvn clean <span style="color:#719e07">package</span> install <span style="color:#719e07">-</span>Dmaven.test.skip=<span style="color:#cb4b16">true</span>
-</span></span></code></pre></div><h3 id="编译demo项目">编译demo项目</h3>
-<p>这里我们提供了可直接进行编译的示例项目,dubbo-demo/dubbo-demo-native。上面步骤install完成后,先到dubbo-demo-native的provider下,执行native-image编译:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span> mvn clean <span style="color:#719e07">package</span> <span style="color:#719e07">-</span>P native <span style="color:#719e07">-</span>Dmaven.test.skip=<span style="color:#cb4b16">true</span>
-</span></span></code></pre></div><p>这里由于我们在maven中引入了native-image插件,所以直接-P native即可执行该插件。</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/native_image_build.jpg" alt="img">
-编译成功后可以在target下看到已经生成的二进制文件,本地启动一个zookeeper,直接执行该二进制,可见启动成功如下:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/run_provider.jpg" alt="img">
-consumer端同样执行编译,在consumer的target下也会生成二进制文件:demo-native-consumer,执行该二进制可以看到调用结果如下:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/run_consumer.jpg" alt="img"></p>
-<h3 id="具体步骤">具体步骤</h3>
-<p>实际上在这个demo下我们做了一些工作来确保项目可以编译执行,主要有以下几个步骤</p>
+<h3 id="第二步配置profiles">第二步:配置profiles</h3>
+<p>其中包括maven-compiler-plugin、spring-boot-maven-plugin、native-maven-plugin、dubbo-maven-plugin,修改dubbo-maven-plugin中的mainClass为所需的启动类全路径。(其中API使用方式无需添加spring-boot-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">&lt;profiles&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;profile&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>native<span style="color:#268bd2">&lt;/id&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;build&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;plugins&gt;</span>
+</span></span><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;artifactId&gt;</span>maven-compiler-plugin<span style="color:#268bd2">&lt;/artifactId&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;release&gt;</span>17<span style="color:#268bd2">&lt;/release&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;fork&gt;</span>true<span style="color:#268bd2">&lt;/fork&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;verbose&gt;</span>true<span style="color:#268bd2">&lt;/verbose&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><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.springframework.boot<span style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>spring-boot-maven-plugin<span style="color:#268bd2">&lt;/artifactId&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;executions&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>process-aot<span style="color:#268bd2">&lt;/id&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goal&gt;</span>process-aot<span style="color:#268bd2">&lt;/goal&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/executions&gt;</span>
+</span></span><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;plugin&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;groupId&gt;</span>org.graalvm.buildtools<span style="color:#268bd2">&lt;/groupId&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;artifactId&gt;</span>native-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>0.9.20<span style="color:#268bd2">&lt;/version&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;classesDirectory&gt;</span>${project.build.outputDirectory}<span style="color:#268bd2">&lt;/classesDirectory&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;metadataRepository&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;enabled&gt;</span>true<span style="color:#268bd2">&lt;/enabled&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/metadataRepository&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;requiredVersion&gt;</span>22.3<span style="color:#268bd2">&lt;/requiredVersion&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;executions&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;id&gt;</span>add-reachability-metadata<span style="color:#268bd2">&lt;/id&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goal&gt;</span>add-reachability-metadata<span style="color:#268bd2">&lt;/goal&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/executions&gt;</span>
+</span></span><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;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></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;mainClass&gt;</span>com.example.nativedemo.NativeDemoApplication<span style="color:#268bd2">&lt;/mainClass&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;executions&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;phase&gt;</span>process-sources<span style="color:#268bd2">&lt;/phase&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;goal&gt;</span>dubbo-process-aot<span style="color:#268bd2">&lt;/goal&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/goals&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/execution&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/executions&gt;</span>
+</span></span><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;/plugins&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/build&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/profile&gt;</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">&lt;/profiles&gt;</span>
+</span></span></code></pre></div><h3 id="第三步在pom依赖中添加native相关的依赖">第三步:在Pom依赖中添加native相关的依赖:</h3>
+<p>其中API使用方式无需添加dubbo-config-spring6依赖。</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">&lt;dependency&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-config-spring6<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></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;dependency&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-native<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></span><span style="display:flex;"><span><span style="color:#268bd2">&lt;/dependency&gt;</span>
+</span></span></code></pre></div><h3 id="第四步调整compilerproxyserialization和logger">第四步:调整compiler、proxy、serialization和logger</h3>
<ul>
-<li>引入dubbo-native依赖</li>
+<li>序列化方式目前支持的比较好的是Fastjson2</li>
+<li>compiler、proxy目前只能选择jdk</li>
+<li>logger目前需要配置slf4j,目前仅支持logback</li>
</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>&lt;dependency&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;groupId&gt;org.apache.dubbo&lt;/groupId&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;artifactId&gt;dubbo-native&lt;/artifactId&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;version&gt;${project.version}&lt;/version&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>&lt;/dependency&gt;
-</span></span></code></pre></div><p>该模块下有我们生成的SPI代码。</p>
+<p>示例配置如下:</p>
+<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#268bd2">dubbo</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">application</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: ${spring.application.name}
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">logger</span>: slf4j
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">compiler</span>: jdk
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">protocol</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">name</span>: dubbo
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">port</span>: -<span style="color:#2aa198">1</span>
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">serialization</span>: fastjson2
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">registry</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">id</span>: zk-registry
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">config-center</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">metadata-report</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">provider</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">proxy</span>: jdk
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">serialization</span>: fastjson2
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">consumer</span>:
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">proxy</span>: jdk
+</span></span><span style="display:flex;"><span> <span style="color:#268bd2">serialization</span>: fastjson2
+</span></span></code></pre></div><h3 id="第五步编译">第五步:编译</h3>
+<p>在项目根路径下执行以下编译命令:</p>
<ul>
-<li>引入native-image插件</li>
+<li>API方式直接执行</li>
</ul>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>&lt;plugin&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;groupId&gt;org.graalvm.nativeimage&lt;/groupId&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;artifactId&gt;native-image-maven-plugin&lt;/artifactId&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;version&gt;21.0.0.2&lt;/version&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;executions&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;execution&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;goals&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;goal&gt;native-image&lt;/goal&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;/goals&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;phase&gt;package&lt;/phase&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;/execution&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;/executions&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;configuration&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;skip&gt;false&lt;/skip&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;imageName&gt;demo-native-provider&lt;/imageName&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;mainClass&gt;org.apache.dubbo.demo.graalvm.provider.Application&lt;/mainClass&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;buildArgs&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --no-fallback
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.MDC
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.LoggerFactory
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.StaticLoggerBinder
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.helpers.Loader
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.Logger
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.helpers.LogLog
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.LogManager
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.apache.log4j.spi.LoggingEvent
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerFactory
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerAdapter
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-build-time=org.eclipse.collections.api.factory.Sets
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.Epoll
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.Native
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventLoop
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventArray
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.DefaultFileRegion
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventArray
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.kqueue.Native
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Errors
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.IovArray
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Limits
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.unix.Socket
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --initialize-at-run-time=io.netty.channel.ChannelHandlerMask
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --report-unsupported-elements-at-runtime
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --allow-incomplete-classpath
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> --enable-url-protocols=http
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> -H:+ReportExceptionStackTraces
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;/buildArgs&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span> &lt;/configuration&gt;
-</span></span><span style="display:flex;"><span>
-</span></span><span style="display:flex;"><span>&lt;/plugin&gt;
-</span></span></code></pre></div><p>其中定义了生成的镜像名以及一些构建镜像的参数。</p>
-<ul>
-<li>挂载native-image-agent</li>
+<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span> mvn clean install -P native -Dmaven.test.skip=true
+</span></span></code></pre></div><ul>
+<li>注解和xml方式(Springboot3集成的方式)</li>
</ul>
-<p>由于我们需要将一些反射、JNI等类先指定出来,我们需要先使用该agent以正常方式运行一遍生成这些类的json形式的信息。</p>
-<p>在启动参数中添加:</p>
-<div class="highlight"><pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-fallback" data-lang="fallback"><span style="display:flex;"><span>-agentlib:native-image-agent=config-output-dir=/tmp/config/,config-write-period-secs=300,config-write-initial-delay-secs=5
-</span></span></code></pre></div><p>以正常方式启动,在项目的resources下建立文件夹META-INF.native-image,把在本地目录中生成的文件粘进去:</p>
-<p><img src="https://cn.dubbo.apache.org/imgs/blog/dubbo3.0-graalvm-support/resources.jpg" alt="img">
-(可能会有缺漏没有生成的类信息,需要根据编译或运行时的报错信息手动添加。)</p>
-<p><strong>完成以上几步后就可以进行项目的编译了。</strong></p></description></item><item><title>Overview: 导出线程堆栈</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/dump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/dump/</guid><description>
+<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 install -P native native:compile -Dmaven.test.skip<span style="color:#719e07">=</span><span style="color:#b58900">true</span>
+</span></span></code></pre></div><h3 id="第六步执行二进制文件即可">第六步:执行二进制文件即可</h3>
+<p>二进制文件在target/目录下,一般以工程名称为二进制包的名称,比如target/native-demo</p></description></item><item><title>Overview: 导出线程堆栈</title><link>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/dump/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/dump/</guid><description>
<h2 id="功能说明">功能说明</h2>
<p>dubbo 通过 Jstack 自动导出线程堆栈来保留现场,方便排查问题。</p>
<p>默认策略</p>
diff --git a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/index.html b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/index.html
index e577d63b02..1da69960a6 100644
--- a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/index.html
+++ b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><me [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/><script>var _hmt=_hmt||[];(function(){var e,t=document.createElement("script");t.src="https://hm.baidu.com/hm.js?3b78f49ba47181e4d998a66b689446e9",e=document.getElementsByTagName("script")[0],e.parentNode.insertBefore(t,e)})()</script><meta charset=utf-8><me [...]
<script>var doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-NM6FFMT51J",{anonymize_ip:!1})}</script><link rel=preload href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css as=style><link href=/scss/main.min.7fa6d3c7f521df6fedf4e016ce03c86424bbf48f7b0d070a25f450054a7fcfeb.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/a [...]
<link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta name=theme-color content="#326ce5"><link rel=stylesheet href=/css/feature-states.css><meta name=description content="Dubbo 支持 Graal VM"><meta property="og:description" content="Dubbo 支持 Graal VM"><meta name=twitter:description content="Dubbo 支持 Graal VM"><meta property="og:url" content="https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm/"><meta pr [...]
<link href=/css/community.css rel=stylesheet><link href=/css/contactus.css rel=stylesheet><link href=/css/language.css rel=stylesheet><script src=/js/script.js></script></head><body class="td-page td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" [...]
@@ -725,133 +725,110 @@
<label for=m-zh-cnoverviewreferenceproposalsadmin-check><a href=/zh-cn/overview/reference/proposals/admin/ title="Dubbo Admin 控制面总体架构设计" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsadmin><span>Admin 架构设计</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsmetrics-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsmetrics-check>
<label for=m-zh-cnoverviewreferenceproposalsmetrics-check><a href=/zh-cn/overview/reference/proposals/metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsmetrics><span>指标埋点</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-li><input type=checkbox id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-check>
<label for=m-zh-cnoverviewreferenceproposalsheuristic-flow-control-check><a href=/zh-cn/overview/reference/proposals/heuristic-flow-control/ title=自适应负载均衡与限流 class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsheuristic-flow-control><span>服务柔性</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-zh-cnoverviewreferenceproposalsservice-discovery-li><input type=checkbox id=m-zh-cnoverviewref [...]
-<label for=m-zh-cnoverviewreferenceproposalsservice-discovery-check><a href=/zh-cn/overview/reference/proposals/service-discovery/ title="Dubbo3 应用级服务发现设计" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsservice-discovery><span>应用级服务发现</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li [...]
-这里我们使用的基于jdk1.8版本的GraalVM。</p><ul><li>安装native-image,只需执行gu install native-image即可。</li></ul><ol><li>拉取dubbo代码,切换到<a href=https://github.com/apache/dubbo>apache:3.0</a>分支。</li><li>手动执行生成SPI代码。</li></ol><p>由于目前编译native-image不支持代码动态生成编译,所以有关代码动态生成的部分需要我们手动先生成,这里提供了工具函数:</p><p><img src=/imgs/blog/dubbo3.0-graalvm-support/code_generator.jpg alt=img>
-执行CodeGenerator即可在dubbo-native模块下生成SPI代码。</p><h3 id=在根目录下执行install>在根目录下执行install</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-go data-lang=go><span style=display:flex><span>MacdeMacBook<span style=color:#719e07>-</span>pro<span style=color:#719e07>-</span><span style=color:#2aa198>3</span>:incubator<span style=color:#719e07>-</span>dubbo mac$ pwd
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span><span style=color:#719e07>/</span>Users<span style=color:#719e07>/</span>mac<span style=color:#719e07>/</span>Documents<span style=color:#719e07>/</span>Mi<span style=color:#719e07>/</span>project<span style=color:#719e07>/</span>incubator<span style=color:#719e07>-</span>dubbo
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>MacdeMacBook<span style=color:#719e07>-</span>pro<span style=color:#719e07>-</span><span style=color:#2aa198>3</span>:incubator<span style=color:#719e07>-</span>dubbo mac$ mvn clean <span style=color:#719e07>package</span> install <span style=color:#719e07>-</span>Dmaven.test.skip=<span style=color:#cb4b16>true</span>
-</span></span></code></pre></div><h3 id=编译demo项目>编译demo项目</h3><p>这里我们提供了可直接进行编译的示例项目,dubbo-demo/dubbo-demo-native。上面步骤install完成后,先到dubbo-demo-native的provider下,执行native-image编译:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-go data-lang=go><span style=display:flex><span> mvn clean <span style=color:#719e07>package</span> <span style=color:#719e07>-</span>P native <span style=color:#719e07> [...]
-</span></span></code></pre></div><p>这里由于我们在maven中引入了native-image插件,所以直接-P native即可执行该插件。</p><p><img src=/imgs/blog/dubbo3.0-graalvm-support/native_image_build.jpg alt=img>
-编译成功后可以在target下看到已经生成的二进制文件,本地启动一个zookeeper,直接执行该二进制,可见启动成功如下:</p><p><img src=/imgs/blog/dubbo3.0-graalvm-support/run_provider.jpg alt=img>
-consumer端同样执行编译,在consumer的target下也会生成二进制文件:demo-native-consumer,执行该二进制可以看到调用结果如下:</p><p><img src=/imgs/blog/dubbo3.0-graalvm-support/run_consumer.jpg alt=img></p><h3 id=具体步骤>具体步骤</h3><p>实际上在这个demo下我们做了一些工作来确保项目可以编译执行,主要有以下几个步骤</p><ul><li>引入dubbo-native依赖</li></ul><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span><dependency>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <groupId>org.apache.dubbo</groupId>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <artifactId>dubbo-native</artifactId>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <version>${project.version}</version>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span></dependency>
-</span></span></code></pre></div><p>该模块下有我们生成的SPI代码。</p><ul><li>引入native-image插件</li></ul><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span><plugin>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <groupId>org.graalvm.nativeimage</groupId>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <artifactId>native-image-maven-plugin</artifactId>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <version>21.0.0.2</version>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <executions>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <execution>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <goals>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <goal>native-image</goal>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> </goals>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <phase>package</phase>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> </execution>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> </executions>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <configuration>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <skip>false</skip>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <imageName>demo-native-provider</imageName>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <mainClass>org.apache.dubbo.demo.graalvm.provider.Application</mainClass>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> <buildArgs>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --no-fallback
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.slf4j.MDC
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.slf4j.LoggerFactory
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.slf4j.impl.StaticLoggerBinder
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.apache.log4j.helpers.Loader
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.apache.log4j.Logger
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.apache.log4j.helpers.LogLog
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.apache.log4j.LogManager
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.apache.log4j.spi.LoggingEvent
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerFactory
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.slf4j.impl.Log4jLoggerAdapter
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-build-time=org.eclipse.collections.api.factory.Sets
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.epoll.Epoll
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.epoll.Native
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventLoop
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.epoll.EpollEventArray
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.DefaultFileRegion
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventArray
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.kqueue.KQueueEventLoop
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.kqueue.Native
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.unix.Errors
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.unix.IovArray
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.unix.Limits
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.util.internal.logging.Log4JLogger
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.unix.Socket
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --initialize-at-run-time=io.netty.channel.ChannelHandlerMask
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --report-unsupported-elements-at-runtime
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --allow-incomplete-classpath
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> --enable-url-protocols=http
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> -H:+ReportExceptionStackTraces
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> </buildArgs>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span> </configuration>
-</span></span><span style=display:flex><span>
-</span></span><span style=display:flex><span></plugin>
-</span></span></code></pre></div><p>其中定义了生成的镜像名以及一些构建镜像的参数。</p><ul><li>挂载native-image-agent</li></ul><p>由于我们需要将一些反射、JNI等类先指定出来,我们需要先使用该agent以正常方式运行一遍生成这些类的json形式的信息。</p><p>在启动参数中添加:</p><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span>-agentlib:native-image-agent=config-output-dir=/tmp/config/,config-write-period-secs=300,config-write-in [...]
-</span></span></code></pre></div><p>以正常方式启动,在项目的resources下建立文件夹META-INF.native-image,把在本地目录中生成的文件粘进去:</p><p><img src=/imgs/blog/dubbo3.0-graalvm-support/resources.jpg alt=img>
-(可能会有缺漏没有生成的类信息,需要根据编译或运行时的报错信息手动添加。)</p><p><strong>完成以上几步后就可以进行项目的编译了。</strong></p><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 [...]
+<label for=m-zh-cnoverviewreferenceproposalsservice-discovery-check><a href=/zh-cn/overview/reference/proposals/service-discovery/ title="Dubbo3 应用级服务发现设计" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-zh-cnoverviewreferenceproposalsservice-discovery><span>应用级服务发现</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb class=td-breadcrumbs><ol class=breadcrumb><li [...]
+</span></span><span style=display:flex><span> <span style=color:#268bd2><profile></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><id></span>native<span style=color:#268bd2></id></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><build></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><plugins></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><plugin></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>maven-compiler-plugin<span style=color:#268bd2></artifactId></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><release></span>17<span style=color:#268bd2></release></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><fork></span>true<span style=color:#268bd2></fork></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><verbose></span>true<span style=color:#268bd2></verbose></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><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.springframework.boot<span style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>spring-boot-maven-plugin<span style=color:#268bd2></artifactId></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><id></span>process-aot<span style=color:#268bd2></id></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>process-aot<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>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></plugin></span>
+</span></span><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.graalvm.buildtools<span style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>native-maven-plugin<span style=color:#268bd2></artifactId></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><version></span>0.9.20<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><classesDirectory></span>${project.build.outputDirectory}<span style=color:#268bd2></classesDirectory></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><metadataRepository></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><enabled></span>true<span style=color:#268bd2></enabled></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></metadataRepository></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><requiredVersion></span>22.3<span style=color:#268bd2></requiredVersion></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><id></span>add-reachability-metadata<span style=color:#268bd2></id></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>add-reachability-metadata<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>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></plugin></span>
+</span></span><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.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 style=color:#268bd2><mainClass></span>com.example.nativedemo.NativeDemoApplication<span style=color:#268bd2></mainClass></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><phase></span>process-sources<span style=color:#268bd2></phase></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>dubbo-process-aot<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>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></plugin></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></plugins></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></build></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></profile></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2></profiles></span>
+</span></span></code></pre></div><h3 id=第三步在pom依赖中添加native相关的依赖>第三步:在Pom依赖中添加native相关的依赖:</h3><p>其中API使用方式无需添加dubbo-config-spring6依赖。</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-config-spring6<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>org.apache.dubbo<span style=color:#268bd2></groupId></span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2><artifactId></span>dubbo-native<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></code></pre></div><h3 id=第四步调整compilerproxyserialization和logger>第四步:调整compiler、proxy、serialization和logger</h3><ul><li>序列化方式目前支持的比较好的是Fastjson2</li><li>compiler、proxy目前只能选择jdk</li><li>logger目前需要配置slf4j,目前仅支持logback</li></ul><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-yaml data-lang=yaml><span style=display:flex><span><span style=color:#268bd2>dubbo</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>application</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: ${spring.application.name}
+</span></span><span style=display:flex><span> <span style=color:#268bd2>logger</span>: slf4j
+</span></span><span style=display:flex><span> <span style=color:#268bd2>compiler</span>: jdk
+</span></span><span style=display:flex><span> <span style=color:#268bd2>protocol</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>name</span>: dubbo
+</span></span><span style=display:flex><span> <span style=color:#268bd2>port</span>: -<span style=color:#2aa198>1</span>
+</span></span><span style=display:flex><span> <span style=color:#268bd2>serialization</span>: fastjson2
+</span></span><span style=display:flex><span> <span style=color:#268bd2>registry</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>id</span>: zk-registry
+</span></span><span style=display:flex><span> <span style=color:#268bd2>address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style=display:flex><span> <span style=color:#268bd2>config-center</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style=display:flex><span> <span style=color:#268bd2>metadata-report</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>address</span>: zookeeper://127.0.0.1:2181
+</span></span><span style=display:flex><span> <span style=color:#268bd2>provider</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>proxy</span>: jdk
+</span></span><span style=display:flex><span> <span style=color:#268bd2>serialization</span>: fastjson2
+</span></span><span style=display:flex><span> <span style=color:#268bd2>consumer</span>:
+</span></span><span style=display:flex><span> <span style=color:#268bd2>proxy</span>: jdk
+</span></span><span style=display:flex><span> <span style=color:#268bd2>serialization</span>: fastjson2
+</span></span></code></pre></div><h3 id=第五步编译>第五步:编译</h3><p>在项目根路径下执行以下编译命令:</p><ul><li>API方式直接执行</li></ul><div class=highlight><pre tabindex=0 style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-fallback data-lang=fallback><span style=display:flex><span> mvn clean install -P native -Dmaven.test.skip=true
+</span></span></code></pre></div><ul><li>注解和xml方式(Springboot3集成的方式)</li></ul><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 install -P native native:compile -Dmaven.test.skip<span style=color:#719e07>=</span><span style=color:#b58900>true</span>
+</span></span></code></pre></div><h3 id=第六步执行二进制文件即可>第六步:执行二进制文件即可</h3><p>二进制文件在target/目录下,一般以工程名称为二进制包的名称,比如target/native-demo</p><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 [...]
<a href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/performance/support-graalvm.md?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.+%60get [...]
<a href="https://github.com/apache/dubbo-website/issues/new?title=%e6%94%af%e6%8c%81%20Graal%20VM" target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
-<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#功能说明>功能说明</a></li><li><a href=#使用场景>使用场景</a></li><li><a href=#使用方式>使用方式</a><ul><li><a href=#安装graalvm>安装GraalVM</a></li><li><a href=#在根目录下执行install>在根目录下执行install</a></li><li><a href=#编译demo项目>编译demo项目</a></li><li><a href=#具体步骤>具体步骤</a></li></ul></li></ul></nav></div></div></div></div><footer class="bg-dark py-5 row d-print-none foot [...]
+<a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> 提交项目问题</a></div><nav id=TableOfContents><ul><li><a href=#功能说明>功能说明</a></li><li><a href=#使用场景>使用场景</a></li><li><a href=#使用方式>使用方式</a><ul><li><a href=#第一步安装graalvm>第一步:安装GraalVM</a></li><li><a href=#第二步配置profiles>第二步:配置profiles</a></li><li><a href=#第三步在pom依赖中添加native相关的依赖>第三步:在Pom依赖中添加native相关的依赖:</a></li><li><a href=#第四步调整compilerproxyserialization和logger>第四步:调整compiler、proxy、serialization和 [...]
<script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script>
<script src=/js/main.min.b075178d232d3b0039b3cb6af2fc2e9d90071820167a60f4eea3a79169975ee8.js integrity="sha256-sHUXjSMtOwA5s8tq8vwunZAHGCAWemD07qOnkWmXXug=" crossorigin=anonymous></script>
<script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script>
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index 5411f95e87..1a3a9e0145 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://cn.dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://cn.dubbo.apache.org/zh-cn/overview/mannu [...]
\ No newline at end of file