使用方法

2022-04-24 13:47 更新

Pod 的生命周期 與服務(wù)調(diào)度息息相關(guān),通過對(duì) Kubernetes 官方探針的實(shí)現(xiàn),能夠使 Dubbo 乃至整個(gè)應(yīng)用的生命周期與 Pod 的生命周期對(duì)齊。

通過 Dubbo 的 SPI 機(jī)制,在內(nèi)部實(shí)現(xiàn)多種“探針”,基于 Dubbo QOS 運(yùn)維模塊的 HTTP 服務(wù),使容器探針能夠獲取到應(yīng)用內(nèi)對(duì)應(yīng)探針的狀態(tài)。另外,SPI 的實(shí)現(xiàn)機(jī)制也利于用戶自行拓展內(nèi)部“探針”,使整個(gè)應(yīng)用的生命周期更有效的進(jìn)行管控。

使用方法

參考配置(具體可以參考 dubbo-samples 中 Kubernetes 注冊(cè)中心的配置文件)

livenessProbe:
  httpGet:
    path: /live
    port: 22222
  initialDelaySeconds: 5
  periodSeconds: 5
readinessProbe:
  httpGet:
    path: /ready
    port: 22222
  initialDelaySeconds: 5
  periodSeconds: 5
startupProbe:
  httpGet:
    path: /startup
    port: 22222
  failureThreshold: 30
  periodSeconds: 10

目前三種探針均有對(duì)應(yīng)的接口,路徑為 QOS 中的命令,端口信息請(qǐng)根據(jù) QOS 配置進(jìn)行對(duì)應(yīng)修改(默認(rèn)端口為 22222)。其他參數(shù)請(qǐng)參考官方文檔說明。

注:為了使 Kubernetes 集群能夠正常訪問到探針,需要開啟 QOS 允許遠(yuǎn)程訪問,此操作有可能帶來安全風(fēng)險(xiǎn),請(qǐng)仔細(xì)評(píng)估后再打開。

實(shí)現(xiàn)細(xì)節(jié)

三種探針對(duì)應(yīng)的 SPI 接口如下:

  • livenessProbe: org.apache.dubbo.qos.probe.LivenessProbe
  • readinessProbe: org.apache.dubbo.qos.probe.ReadinessProbe
  • startupProbe: org.apache.dubbo.qos.probe.StartupProbe

接口將自動(dòng)獲取當(dāng)前應(yīng)用所有 SPI 的實(shí)現(xiàn),對(duì)應(yīng)接口的 SPI 實(shí)現(xiàn)均成功就緒則接口返回成功。

存活檢測(cè)

對(duì)于 livenessProbe 存活檢測(cè),由于 Dubbo 框架本身無法獲取到應(yīng)用的存活狀態(tài),因此本接口無默認(rèn)實(shí)現(xiàn),且默認(rèn)返回成功。開發(fā)者可以根據(jù) SPI 定義對(duì)此 SPI 接口進(jìn)行拓展,從應(yīng)用層次對(duì)是否存活進(jìn)行判斷。

就緒檢測(cè)

對(duì)于 readinessProbe 就緒檢測(cè),目前 Dubbo 默認(rèn)提供了兩個(gè)檢測(cè)維度,一是對(duì) Dubbo 服務(wù)自身是否啟停做判斷,另外是對(duì)所有服務(wù)是否存在已注冊(cè)接口,如果所有服務(wù)均已從注冊(cè)中心下線(可以通過 QOS 運(yùn)維進(jìn)行操作)將返回未就緒的狀態(tài)。

啟動(dòng)檢測(cè)

對(duì)于 startupProbe 啟動(dòng)檢測(cè),目前Dubbo 默認(rèn)提供了一個(gè)檢測(cè)維度,即是在所有啟動(dòng)流程(接口暴露、注冊(cè)中心寫入等)均結(jié)束后返回已就緒狀態(tài)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)