<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>打包并部署应用 on Apache Dubbo</title><link>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/</link><description>Recent content in 打包并部署应用 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/index.xml" rel="self" type="application/rss+xml"/><item><title>传统基于 Zookeeper、Nacos 的注册中心部署架构，部署 Dubbo 应用到虚拟机环境</title><link>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-vm/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-vm/</guid><description>&lt;p>下图是使用 Nacos、Zookeeper 作为注册中心的典型 Dubbo 微服务部署架构。&lt;/p>
&lt;img src="https://deploy-preview-3203--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes.png" style="max-width:650px;height:auto;" />
&lt;h2 id="安装-nacos">安装 Nacos&lt;/h2>
&lt;p>请参考以下文档了解如何在本地 &lt;code>安装 Nacos&lt;/code>。&lt;/p>
&lt;h2 id="部署应用">部署应用&lt;/h2>
&lt;p>我们仍然以 &lt;code>快速开始&lt;/code> 中的项目为例，演示应用打包部署的具体步骤。&lt;/p>
&lt;p>克隆示例项目到本地：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ git clone -b master --depth &lt;span style="color:#2aa198">1&lt;/span> https://github.com/apache/dubbo-samples
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>切换到示例目录：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#b58900">cd&lt;/span> dubbo-samples/11-quickstart
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以下是两种打包部署模式：&lt;/p>
&lt;h3 id="方式一本地进程">方式一：本地进程&lt;/h3>
&lt;p>本地打包进程：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ mvn clean package
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>启动 Dubbo 进程：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ java -jar ./quickstart-service/target/quickstart-service-0.0.1-SNAPSHOT.jar
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>

&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">提示&lt;/h4>

 为了程序正常运行，请确保 &lt;code>application.yml&lt;/code> 文件中的注册中心地址已经正确指向你想要的注册中心。

&lt;/div>

&lt;h3 id="方式二docker容器">方式二：docker容器&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ docker build -f ./Dockerfile -t quickstart
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ docker run quickstart -p port1:port2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># 对于一些端口或连接注册中心的细节要写清楚&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>

&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">提示&lt;/h4>

 &lt;p>Docker 容器环境下，不同容器间用于网络通信的地址需要特别关注，因此你可能需要设置 Dubbo 进程监听或者注册到注册中心的地址，请参考以下链接了解更多内容。&lt;/p></description></item><item><title>部署 Dubbo 应用到 Kubernetes 环境</title><link>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes/</guid><description>&lt;p>这种模式与传统的非 Kubernetes 部署并无太大差异，如下图所示，仍然使用 Nacos 或者 Zookeeper 等作为注册中心，只不过将 Kubernetes 作为应用生命周期调度的底层平台。&lt;/p>
&lt;img src="https://deploy-preview-3203--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes.png" style="max-width:650px;height:auto;" />
&lt;h2 id="安装-nacos">安装 Nacos&lt;/h2>
&lt;p>在 Kubernetes 模式下，我们推荐使用 &lt;code>dubboctl&lt;/code> 快速安装 Nacos、dubbo-control-plane、prometheus 等组件：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>$ dubboctl install --profile=demo
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>

&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">提示&lt;/h4>

 &lt;ol>
&lt;li>请查看 dubboctl 了解更多细节&lt;/li>
&lt;li>您也可以在此了解 Nacos 官方提供的 Kubernetes 集群安装方案&lt;/li>
&lt;/ol>


&lt;/div>

&lt;h2 id="部署应用">部署应用&lt;/h2>
&lt;p>我们仍然以 &lt;code>快速开始&lt;/code> 中的项目为例，演示应用打包部署的具体步骤。&lt;/p>
&lt;p>首先，克隆示例项目到本地：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ git clone -b master --depth &lt;span style="color:#2aa198">1&lt;/span> https://github.com/apache/dubbo-samples
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>切换到示例目录：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ &lt;span style="color:#b58900">cd&lt;/span> dubbo-samples/11-quickstart
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="打包镜像">打包镜像&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ dubboctl build
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#586e75"># 具体写一下推送到 docker 仓库&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="部署">部署&lt;/h3>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ dubboctl deploy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>以下是生成的完整 Kubernetes manifests：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;/code>&lt;/pre>&lt;/div>&lt;p>执行以下命令，将应用部署到 Kubernetes 集群：&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>$ kubectl apply -f xxx.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="查看部署状态">查看部署状态&lt;/h3>
&lt;p>如果之前已经使用 &lt;code>dubboctl&lt;/code> 安装 dubbo-control-plane，则可以通过以下方式查看服务部署情况：&lt;/p></description></item><item><title>部署 Dubbo 应用到虚拟机环境</title><link>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes-service/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-3203--dubbo.netlify.app/zh-cn/overview/mannual/java-sdk/tasks/deploy/deploy-on-kubernetes-service/</guid><description>&lt;p>这种模式将 Dubbo Service 与 &lt;code>Kubernetes Service&lt;/code> 概念映射起来，不再需要 Nacos 等传统注册中心，而是由 Kubernetes APISERVER 承担注册中心指责。&lt;/p>
&lt;img src="https://deploy-preview-3203--dubbo.netlify.app/imgs/v3/manual/java/tutorial/kubernetes/kubernetes-service.png" style="max-width:650px;height:auto;" />
&lt;h2 id="安装-control-plane">安装 Control Plane&lt;/h2>
&lt;p>在这个模式下，我们需要安装 &lt;code>dubbo-control-plane&lt;/code>&lt;/p>
&lt;blockquote>
&lt;p>这里是要用 istio 配合一起工作（提供xds推送能力），还是dubbo-control-plane自己实现xds server？&lt;/p>
&lt;/blockquote>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>dubboctl manifests install --profile=control-plane
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="部署应用">部署应用&lt;/h2>
&lt;h3 id="打包镜像">打包镜像&lt;/h3>
&lt;h3 id="定义-yaml">定义 YAML&lt;/h3>
&lt;p>请查看 dubbo-samples 了解示例&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">kind&lt;/span>: service
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#268bd2">kind&lt;/span>: deployment
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="优雅上下线">优雅上下线&lt;/h3>
&lt;p>配置 probe
配置 pre-stop&lt;/p>
&lt;h3 id="观测服务状态">观测服务状态&lt;/h3>
&lt;h2 id="与-service-mesh-的区别">与 Service Mesh 的区别&lt;/h2>
&lt;h2 id="特性说明">特性说明&lt;/h2>
&lt;p>&lt;a href="https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/">Pod 的生命周期&lt;/a> 与服务调度息息相关，通过对 Kubernetes 官方探针的实现，能够使 Dubbo3 乃至整个应用的生命周期与 Pod 的生命周期，在 Pod 的整个生命周期中，影响到 Pod 的就只有健康检查这一部分, 我们可以通过配置 liveness probe（存活探针）和 readiness probe（可读性探针）来影响容器的生命周期。&lt;/p>
&lt;p>通过 Dubbo3 的 SPI 机制，在内部实现多种“探针”，基于 Dubbo3 QOS 运维模块的 HTTP 服务，使容器探针能够获取到应用内对应探针的状态。另外，SPI 的实现机制也利于用户自行拓展内部“探针”，使整个应用的生命周期更有效的进行管控。&lt;/p></description></item></channel></rss>