<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kubernetes 生命周期对齐探针 on Apache Dubbo</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/</link><description>Recent content in Kubernetes 生命周期对齐探针 on Apache Dubbo</description><generator>Hugo</generator><language>zh-cn</language><atom:link href="https://dubbo.apache.org/zh-cn/docs/references/lifecycle/index.xml" rel="self" type="application/rss+xml"/><item><title>使用方法</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/brief/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/brief/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;code&gt;最新版本&lt;/code&gt;)。&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/zh/docs/concepts/workloads/pods/pod-lifecycle/"&gt;Pod 的生命周期&lt;/a&gt; 与服务调度息息相关，通过对 Kubernetes 官方探针的实现，能够使 Dubbo 乃至整个应用的生命周期与 Pod 的生命周期对齐。&lt;/p&gt;
&lt;p&gt;通过 Dubbo 的 SPI 机制，在内部实现多种“探针”，基于 Dubbo QOS 运维模块的 HTTP 服务，使容器探针能够获取到应用内对应探针的状态。另外，SPI 的实现机制也利于用户自行拓展内部“探针”，使整个应用的生命周期更有效的进行管控。&lt;/p&gt;
&lt;h2 id="使用方法"&gt;使用方法&lt;/h2&gt;
&lt;p&gt;参考配置（具体可以参考 dubbo-samples 中 Kubernetes 注册中心的配置文件）&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;livenessProbe&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;httpGet&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;path&lt;/span&gt;: /live
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;port&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;22222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;initialDelaySeconds&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;periodSeconds&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;readinessProbe&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;httpGet&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;path&lt;/span&gt;: /ready
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;port&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;22222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;initialDelaySeconds&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;periodSeconds&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;5&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;startupProbe&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;httpGet&lt;/span&gt;:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;path&lt;/span&gt;: /startup
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;port&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;22222&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;failureThreshold&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;30&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;periodSeconds&lt;/span&gt;: &lt;span style="color:#2aa198"&gt;10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;目前三种探针均有对应的接口，路径为 QOS 中的命令，端口信息请根据 QOS 配置进行对应修改（默认端口为 22222）。其他参数请参考&lt;a href="https://kubernetes.io/zh/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/"&gt;官方文档说明&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;注：为了使 Kubernetes 集群能够正常访问到探针，需要开启 QOS 允许远程访问，此操作有可能带来安全风险，请仔细评估后再打开。&lt;/p&gt;
&lt;h2 id="实现细节"&gt;实现细节&lt;/h2&gt;
&lt;p&gt;三种探针对应的 SPI 接口如下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;livenessProbe: &lt;code&gt;org.apache.dubbo.qos.probe.LivenessProbe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;readinessProbe: &lt;code&gt;org.apache.dubbo.qos.probe.ReadinessProbe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;startupProbe: &lt;code&gt;org.apache.dubbo.qos.probe.StartupProbe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;接口将自动获取当前应用所有 SPI 的实现，对应接口的 SPI 实现均成功就绪则接口返回成功。&lt;/p&gt;</description></item><item><title>Liveness 存活探针</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/liveness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/liveness/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/liveness/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="扩展说明"&gt;扩展说明&lt;/h2&gt;
&lt;p&gt;拓展应用存活的检测点。&lt;/p&gt;
&lt;h2 id="扩展接口"&gt;扩展接口&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;org.apache.dubbo.qos.probe.LivenessProbe&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="扩展配置"&gt;扩展配置&lt;/h2&gt;
&lt;p&gt;Dubbo QOS &lt;code&gt;live&lt;/code&gt; 命令自动发现&lt;/p&gt;
&lt;h2 id="已知扩展"&gt;已知扩展&lt;/h2&gt;
&lt;p&gt;暂无默认实现&lt;/p&gt;
&lt;h2 id="扩展示例"&gt;扩展示例&lt;/h2&gt;
&lt;p&gt;Maven 项目结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;src
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-java
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-XxxLivenessProbe.java (实现LivenessProbe接口)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-resources
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-META-INF
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-dubbo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-org.apache.dubbo.qos.probe.LivenessProbe (纯文本文件，内容为：xxx=com.xxx.XxxLivenessProbe)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;XxxLivenessProbe.java：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#719e07"&gt;package&lt;/span&gt; com.xxx;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;class&lt;/span&gt; &lt;span style="color:#268bd2"&gt;XxxLivenessProbe&lt;/span&gt; &lt;span style="color:#268bd2"&gt;implements&lt;/span&gt; LivenessProbe {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#dc322f"&gt;boolean&lt;/span&gt; &lt;span style="color:#268bd2"&gt;check&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#586e75"&gt;// ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;META-INF/dubbo/org.apache.dubbo.qos.probe.LivenessProbe：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xxx=com.xxx.XxxLivenessProbe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Readiness 就绪探针</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/readiness/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/readiness/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/readiness/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="扩展说明"&gt;扩展说明&lt;/h2&gt;
&lt;p&gt;拓展应用就绪的检测点。&lt;/p&gt;
&lt;h2 id="扩展接口"&gt;扩展接口&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;org.apache.dubbo.qos.probe.ReadinessProbe&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="扩展配置"&gt;扩展配置&lt;/h2&gt;
&lt;p&gt;Dubbo QOS &lt;code&gt;ready&lt;/code&gt;  命令自动发现&lt;/p&gt;
&lt;h2 id="已知扩展"&gt;已知扩展&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;org.apache.dubbo.qos.probe.impl.BootstrapReadinessProbe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;org.apache.dubbo.qos.probe.impl.ProviderReadinessProbe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="扩展示例"&gt;扩展示例&lt;/h2&gt;
&lt;p&gt;Maven 项目结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;src
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-java
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-XxxReadinessProbe.java (实现ReadinessProbe接口)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-resources
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-META-INF
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-dubbo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-org.apache.dubbo.qos.probe.ReadinessProbe (纯文本文件，内容为：xxx=com.xxx.XxxReadinessProbe)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;XxxReadinessProbe.java：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#719e07"&gt;package&lt;/span&gt; com.xxx;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;class&lt;/span&gt; &lt;span style="color:#268bd2"&gt;XxxReadinessProbe&lt;/span&gt; &lt;span style="color:#268bd2"&gt;implements&lt;/span&gt; ReadinessProbe {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#dc322f"&gt;boolean&lt;/span&gt; &lt;span style="color:#268bd2"&gt;check&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#586e75"&gt;// ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;META-INF/dubbo/org.apache.dubbo.qos.probe.ReadinessProbe：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xxx=com.xxx.XxxReadinessProbe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Startup 启动探针</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/startup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/startup/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/spi/description/startup/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="扩展说明"&gt;扩展说明&lt;/h2&gt;
&lt;p&gt;拓展应用启动的检测点。&lt;/p&gt;
&lt;h2 id="扩展接口"&gt;扩展接口&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;org.apache.dubbo.qos.probe.StartupProbe&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="扩展配置"&gt;扩展配置&lt;/h2&gt;
&lt;p&gt;Dubbo QOS &lt;code&gt;startup&lt;/code&gt;   命令自动发现&lt;/p&gt;
&lt;h2 id="已知扩展"&gt;已知扩展&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;org.apache.dubbo.qos.probe.impl.BootstrapLivenessProbe&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="扩展示例"&gt;扩展示例&lt;/h2&gt;
&lt;p&gt;Maven 项目结构：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;src
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-main
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-java
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-com
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-xxx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-XxxStartupProbe.java (实现StartupProbe接口)
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-resources
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-META-INF
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-dubbo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; |-org.apache.dubbo.qos.probe.StartupProbe (纯文本文件，内容为：xxx=com.xxx.XxxStartupProbe)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;XxxStartupProbee.java：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#719e07"&gt;package&lt;/span&gt; com.xxx;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#268bd2"&gt;class&lt;/span&gt; &lt;span style="color:#268bd2"&gt;XxxStartupProbe&lt;/span&gt; &lt;span style="color:#268bd2"&gt;implements&lt;/span&gt; StartupProbe {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#268bd2"&gt;public&lt;/span&gt; &lt;span style="color:#dc322f"&gt;boolean&lt;/span&gt; &lt;span style="color:#268bd2"&gt;check&lt;/span&gt;() {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#586e75"&gt;// ...&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;META-INF/dubbo/org.apache.dubbo.qos.probe.StartupProbe：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;xxx=com.xxx.XxxStartupProbe
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>开发 REST 应用</title><link>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/rest/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://dubbo.apache.org/zh-cn/docs/references/lifecycle/rest/</guid><description>&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;此文档已经不再维护。您当前查看的是快照版本。如果想要查看最新版本的文档，请参阅&lt;a href="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/"&gt;最新版本&lt;/a&gt;。&lt;/p&gt;

&lt;/div&gt;



&lt;div class="pageinfo pageinfo-primary"&gt;
&lt;p&gt;作者：沈理&lt;/p&gt;
&lt;p&gt;文档版权：&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;Apache 2.0许可证 署名-禁止演绎&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;本文篇幅较长，因为REST本身涉及面较多。另外，本文参照 Spring 等的文档风格，不仅仅局限于框架用法的阐述，同时也努力呈现框架的设计理念和优良应用的架构思想。
对于想粗略了解 dubbo 和 REST 的人，只需浏览 概述 至 标准Java REST API：JAX-RS简介 几节即可。&lt;/p&gt;

&lt;/div&gt;

&lt;h2 id="目录"&gt;目录&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;概述&lt;/li&gt;
&lt;li&gt;REST的优点&lt;/li&gt;
&lt;li&gt;应用场景&lt;/li&gt;
&lt;li&gt;快速入门&lt;/li&gt;
&lt;li&gt;标准Java REST API：JAX-RS简介&lt;/li&gt;
&lt;li&gt;REST服务提供端详解
&lt;ul&gt;
&lt;li&gt;HTTP POST/GET的实现&lt;/li&gt;
&lt;li&gt;Annotation放在接口类还是实现类&lt;/li&gt;
&lt;li&gt;JSON、XML等多数据格式的支持&lt;/li&gt;
&lt;li&gt;中文字符支持&lt;/li&gt;
&lt;li&gt;XML数据格式的额外要求&lt;/li&gt;
&lt;li&gt;定制序列化&lt;/li&gt;
&lt;li&gt;配置REST Server的实现&lt;/li&gt;
&lt;li&gt;获取上下文（Context）信息&lt;/li&gt;
&lt;li&gt;配置端口号和Context Path&lt;/li&gt;
&lt;li&gt;配置线程数和IO线程数&lt;/li&gt;
&lt;li&gt;配置长连接&lt;/li&gt;
&lt;li&gt;配置最大的HTTP连接数&lt;/li&gt;
&lt;li&gt;配置每个消费端的超时时间和HTTP连接数&lt;/li&gt;
&lt;li&gt;GZIP数据压缩&lt;/li&gt;
&lt;li&gt;用Annotation取代部分Spring XML配置&lt;/li&gt;
&lt;li&gt;添加自定义的Filter、Interceptor等&lt;/li&gt;
&lt;li&gt;添加自定义的Exception处理&lt;/li&gt;
&lt;li&gt;配置HTTP日志输出&lt;/li&gt;
&lt;li&gt;输入参数的校验&lt;/li&gt;
&lt;li&gt;是否应该透明发布REST服务&lt;/li&gt;
&lt;li&gt;Dubbo的REST提供端在被调用时使用header&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;REST服务消费端详解
&lt;ul&gt;
&lt;li&gt;场景1：非dubbo的消费端调用dubbo的REST服务&lt;/li&gt;
&lt;li&gt;场景2：dubbo消费端调用dubbo的REST服务&lt;/li&gt;
&lt;li&gt;场景3：dubbo的消费端调用非dubbo的REST服务&lt;/li&gt;
&lt;li&gt;Dubbo的消费端在调用REST服务时配置自定义header&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dubbo中JAX-RS的限制&lt;/li&gt;
&lt;li&gt;REST常见问题解答（REST FAQ）
&lt;ul&gt;
&lt;li&gt;Dubbo REST的服务能和Dubbo注册中心、监控中心集成吗？&lt;/li&gt;
&lt;li&gt;Dubbo REST中如何实现负载均衡和容错（failover）？&lt;/li&gt;
&lt;li&gt;JAX-RS中重载的方法能够映射到同一URL地址吗？&lt;/li&gt;
&lt;li&gt;JAX-RS中作POST的方法能够接收多个参数吗？&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dubbo当前体系可能的不足之处（与REST相关的）
&lt;ul&gt;
&lt;li&gt;RpcContext的侵入性&lt;/li&gt;
&lt;li&gt;Protocol配置的局限性&lt;/li&gt;
&lt;li&gt;XML命名不符合spring规范&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;REST最佳实践&lt;/li&gt;
&lt;li&gt;性能基准测试
&lt;ul&gt;
&lt;li&gt;测试环境&lt;/li&gt;
&lt;li&gt;测试脚本&lt;/li&gt;
&lt;li&gt;测试结果&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;扩展讨论
&lt;ul&gt;
&lt;li&gt;REST与Thrift、Protobuf等的对比&lt;/li&gt;
&lt;li&gt;REST与传统WebServices的对比&lt;/li&gt;
&lt;li&gt;JAX-RS与Spring MVC的对比&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;未来&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="概述"&gt;概述&lt;/h2&gt;
&lt;p&gt;dubbo支持多种远程调用方式，例如dubbo RPC（二进制序列化 + tcp协议）、http invoker（二进制序列化 + http协议，至少在开源版本没发现对文本序列化的支持）、hessian（二进制序列化 + http协议）、WebServices （文本序列化 + http协议）等等，但缺乏对当今特别流行的REST风格远程调用（文本序列化 + http协议）的支持。&lt;/p&gt;</description></item></channel></rss>