欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Cloud?Alibaba?Nacos兩種檢查機(jī)制

 更新時(shí)間:2022年05月09日 16:34:25   作者:??Java中文社群????  
這篇文章主要介紹了Spring?Cloud?Alibaba?Nacos兩種檢查機(jī)制,作為注冊(cè)中心不止提供了服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,它還提供了服務(wù)可用性監(jiān)測(cè)的機(jī)制,下面我們就一起進(jìn)入文章了解具體詳情吧

前言:

Spring Cloud Alibaba Nacos 作為注冊(cè)中心不止提供了服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能,它還提供了服務(wù)可用性監(jiān)測(cè)的機(jī)制。有了此機(jī)制之后,Nacos 才能感知服務(wù)的健康狀態(tài),從而為服務(wù)調(diào)用者提供健康的服務(wù)實(shí)例,最終保證了業(yè)務(wù)系統(tǒng)能夠正常的執(zhí)行。

兩種健康檢查機(jī)制

Nacos 中提供了兩種健康檢查機(jī)制:

  • 客戶端主動(dòng)上報(bào)機(jī)制。
  • 服務(wù)器端反向探測(cè)機(jī)制。

如何理解這兩種機(jī)制呢? 想象?下這么?個(gè)場(chǎng)景,你所在的地區(qū)突然發(fā)生地質(zhì)災(zāi)害,你被掩蓋在廢墟下面,搜救隊(duì)必須要知道你在廢墟里面,那么才能對(duì)你進(jìn)行施救。那有什么方法可以讓救援隊(duì)知道你在廢墟下面?

  • 第?種,你在廢墟里面大喊 help! help! I am here! ,讓搜救隊(duì)知道你的位置和健康狀態(tài)。
  • 第二種,搜救隊(duì)使用了他們的專業(yè)檢查設(shè)備,探測(cè)到你正埋在廢墟下面。

以上這兩種方法和 Nacos 的兩種健康檢查機(jī)制類似,也就是客戶端主動(dòng)上報(bào)機(jī)制,是客戶端每隔一段時(shí)間,主動(dòng)向 Nacos 服務(wù)器端上報(bào)自己的健康狀況,而服務(wù)器端反向探測(cè)機(jī)制是 Nacos 服務(wù)器端來(lái)檢測(cè)客戶端是否健康。 

如何設(shè)置健康檢查機(jī)制?

Nacos 中的健康檢查機(jī)制不能主動(dòng)設(shè)置,但健康檢查機(jī)制是和 Nacos 的服務(wù)實(shí)例類型強(qiáng)相關(guān)的。

 也就是說(shuō) Nacos 中的兩種服務(wù)實(shí)例分別對(duì)應(yīng)了兩種健康檢查機(jī)制:

  • 臨時(shí)實(shí)例(也可以叫做非持久化實(shí)例):對(duì)應(yīng)的是客戶端主動(dòng)上報(bào)機(jī)制。
  • 永久實(shí)例(也可以叫做持久化實(shí)例):服務(wù)端反向探測(cè)機(jī)制。

為什么需要兩種服務(wù)實(shí)例呢? 以淘寶為例,雙十一大促期間,流量會(huì)比平常高出很多,此時(shí)服務(wù)肯定需要增加更多實(shí)例來(lái)應(yīng)對(duì)高并發(fā),而這些實(shí)例在雙十一之后就無(wú)需繼續(xù)使用了,采用臨時(shí)實(shí)例比較合適。而對(duì)于服務(wù)的一些常備實(shí)例,則使用永久實(shí)例更合適。

客戶端主動(dòng)上報(bào)機(jī)制

臨時(shí)實(shí)例每隔 5 秒會(huì)主動(dòng)上報(bào)一次自己的健康狀況,發(fā)送的數(shù)據(jù)包叫做心跳包,發(fā)送心跳包的機(jī)制叫做心跳機(jī)制。 如果心跳包的間隔時(shí)間超過(guò)了 15 秒,那么 Nacos 服務(wù)器端就會(huì)將此服務(wù)實(shí)例標(biāo)記為非健康實(shí)例,如果心跳包超過(guò)了 30s 秒,那么 Nacos 服務(wù)器端將會(huì)把此服務(wù)實(shí)例從服務(wù)列表中刪除掉。 運(yùn)行 Nacos 項(xiàng)目時(shí),可以看到客戶端主動(dòng)上報(bào)心跳包的日志,

如下圖所示: 

 從上述圖片可以看出,Nacos 客戶端會(huì)以每 5s 一次的頻率來(lái)上報(bào)自己的健康情況,請(qǐng)求信息如下:

/nacos/v1/ns/instance/beat?app=unknown&namespaceId=public&port=8081&clusterName=DEFAULT&ip=192.168.3.72&serviceName=DEFAULT_GROUP@@spring-cloud-nacos-producer2

服務(wù)端反向探測(cè)機(jī)制

永久實(shí)例使用的服務(wù)器端反向探測(cè)的方式實(shí)現(xiàn)健康檢查的,它的探測(cè)周期是 2000 毫秒 + 隨機(jī)數(shù)(5000 毫秒以內(nèi)),如果檢測(cè)異常會(huì)將此服務(wù)實(shí)例,標(biāo)記為非健康實(shí)例,但不會(huì)把服務(wù)實(shí)例向臨時(shí)實(shí)例那樣進(jìn)行刪除。 Nacos 服務(wù)器反向探測(cè)目前內(nèi)置了 3 種探測(cè)協(xié)議:HTTP 探測(cè)、TCP 探測(cè)和 MySQL 探測(cè)。 ?般而言 HTTP 和 TCP 探測(cè)已經(jīng)可以涵蓋絕大多數(shù)的健康檢查場(chǎng)景,MySQL 主要用于特殊的業(yè)務(wù)場(chǎng)景,例如數(shù)據(jù)庫(kù)的主備需要通過(guò)服務(wù)名對(duì)外提供訪問(wèn),需要確定當(dāng)前訪問(wèn)數(shù)據(jù)庫(kù)是否為主庫(kù)時(shí),那么我們此時(shí)的健康檢查接口,是?個(gè)檢查數(shù)據(jù)庫(kù)是否為主庫(kù)的 MySQL 命令。 

TCP 探測(cè)

默認(rèn)情況下,永久實(shí)例使用的是 TCP 探測(cè),這點(diǎn)可以在 Nacos 控制臺(tái)觀察到,如下圖所示: 

 默認(rèn)會(huì)使用 IP端口來(lái)檢查,如下圖所示: 

 TCP 探測(cè)的大體邏輯是通過(guò)與注冊(cè)實(shí)例建立 channel,不斷 ping 注冊(cè)實(shí)例的端口,來(lái)判斷實(shí)例是否健康。

HTTP 探測(cè)

HTTP 探測(cè)需要在 Nacos 控制臺(tái)手動(dòng)配置,如下圖所示: 

 我們?cè)诜?wù)實(shí)例中添加探測(cè)接口的實(shí)現(xiàn)代碼: 

 此時(shí)我們重新啟動(dòng)服務(wù)實(shí)例,在服務(wù)詳情中可以看到我們配置的 HTTP 探測(cè)已經(jīng)生效了,可以檢查出實(shí)例是健康的,如下圖所示: 

 Nacos 服務(wù)器端通過(guò)檢查 HTTP 的接口是否返回 200 狀態(tài)碼,來(lái)判斷實(shí)例是否為健康狀態(tài)。

集群下的健康檢查機(jī)制

集群下的健康檢查機(jī)制可以用一句話來(lái)概括,那就是“各司其職”。每個(gè)服務(wù)對(duì)應(yīng)了一個(gè)主注冊(cè)中心,當(dāng)注冊(cè)中心接收到臨時(shí)實(shí)例的心跳包之后,將健康狀態(tài)同步給其他注冊(cè)中心。而永久實(shí)例也是類似的,每個(gè)服務(wù)對(duì)應(yīng)了一個(gè)主注冊(cè)中心,當(dāng)負(fù)責(zé)的注冊(cè)中心探測(cè)到服務(wù)實(shí)例的健康狀態(tài)發(fā)生改變時(shí),再會(huì)將實(shí)例的健康狀況同步到其他注冊(cè)中心,從而實(shí)現(xiàn)了集群下的健康檢查機(jī)制。 

總結(jié)

Nacos 中提供了兩種健康檢查機(jī)制:臨時(shí)實(shí)例的客戶端主動(dòng)上報(bào)機(jī)制和永久實(shí)例的服務(wù)端反向探測(cè)機(jī)制。臨時(shí)實(shí)例每隔 5s 發(fā)送一個(gè)心跳包給 Nacos 服務(wù)器端,服務(wù)器端接收到心跳包之后再將健康狀況同步給其他注冊(cè)中心。永久實(shí)例支持 3 種探測(cè)協(xié)議,TCP、HTTP 和 MySQL,默認(rèn)探測(cè)協(xié)議為 TCP,也就是通過(guò)不斷 ping 的方式來(lái)判斷實(shí)例是否健康。

到此這篇關(guān)于Spring Cloud Alibaba Nacos兩種檢查機(jī)制的文章就介紹到這了,更多相關(guān)Spring Cloud Alibaba Nacos 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring?Cloud?OpenFeign模版化客戶端搭建過(guò)程

    Spring?Cloud?OpenFeign模版化客戶端搭建過(guò)程

    OpenFeign是一個(gè)顯示聲明式的WebService客戶端。使用OpenFeign能讓編寫(xiě)Web Service客戶端更加簡(jiǎn)單,這篇文章主要介紹了Spring?Cloud?OpenFeign模版化客戶端,需要的朋友可以參考下
    2022-06-06
  • Java經(jīng)典面試題匯總:Spring Boot

    Java經(jīng)典面試題匯總:Spring Boot

    本篇總結(jié)的是Spring-Boot框架相關(guān)的面試題,后續(xù)會(huì)持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • Java回調(diào)機(jī)制解讀

    Java回調(diào)機(jī)制解讀

    本文主要介紹了Java回調(diào)機(jī)制的相關(guān)知識(shí),具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • Java操作Redis詳細(xì)介紹

    Java操作Redis詳細(xì)介紹

    這篇文章主要介紹了Java操作Redis詳細(xì)介紹,涉及對(duì)key的操作,string數(shù)據(jù)類型,list數(shù)據(jù)類型等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 詳解Java對(duì)象創(chuàng)建的過(guò)程及內(nèi)存布局

    詳解Java對(duì)象創(chuàng)建的過(guò)程及內(nèi)存布局

    今天給大家?guī)?lái)的文章是Java對(duì)象創(chuàng)建的過(guò)程及內(nèi)存布局,文中有非常詳細(xì)的圖文示例及介紹,需要的朋友可以參考下
    2021-06-06
  • Java編程實(shí)現(xiàn)從給定范圍內(nèi)隨機(jī)N個(gè)不重復(fù)數(shù)生成隨機(jī)數(shù)的方法小結(jié)

    Java編程實(shí)現(xiàn)從給定范圍內(nèi)隨機(jī)N個(gè)不重復(fù)數(shù)生成隨機(jī)數(shù)的方法小結(jié)

    這篇文章主要介紹了Java編程實(shí)現(xiàn)從給定范圍內(nèi)隨機(jī)N個(gè)不重復(fù)數(shù)生成隨機(jī)數(shù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了java根據(jù)指定范圍生成不重復(fù)隨機(jī)數(shù)的相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    Java中不用第三個(gè)變量來(lái)互換兩個(gè)變量的值

    在程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),應(yīng)用程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來(lái)標(biāo)識(shí)。這些內(nèi)存單元被稱為變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值
    2021-10-10
  • 詳解Java如何利用位操作符創(chuàng)建位掩碼

    詳解Java如何利用位操作符創(chuàng)建位掩碼

    在本文中,我們來(lái)看看如何使用位操作符實(shí)現(xiàn)低級(jí)別的位掩碼。我們將看到我們?nèi)绾螌⒁粋€(gè)單一的int變量作為一個(gè)單獨(dú)的數(shù)據(jù)容器,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • SpringBoot快速過(guò)濾出一次請(qǐng)求的所有日志的示例代碼

    SpringBoot快速過(guò)濾出一次請(qǐng)求的所有日志的示例代碼

    在現(xiàn)網(wǎng)出現(xiàn)故障時(shí),我們經(jīng)常需要獲取一次請(qǐng)求流程里的所有日志進(jìn)行定位,本文給大家介紹了SpringBoot如何快速過(guò)濾出一次請(qǐng)求的所有日志,文中有相關(guān)的代碼和示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • Autowired的注入過(guò)程源碼解析

    Autowired的注入過(guò)程源碼解析

    這篇文章主要為大家介紹了Autowired的注入過(guò)程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論