最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Cloud?Alibaba?Nacos兩種檢查機制

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

前言:

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

兩種健康檢查機制

Nacos 中提供了兩種健康檢查機制:

  • 客戶端主動上報機制。
  • 服務器端反向探測機制。

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

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

以上這兩種方法和 Nacos 的兩種健康檢查機制類似,也就是客戶端主動上報機制,是客戶端每隔一段時間,主動向 Nacos 服務器端上報自己的健康狀況,而服務器端反向探測機制是 Nacos 服務器端來檢測客戶端是否健康。 

如何設置健康檢查機制?

Nacos 中的健康檢查機制不能主動設置,但健康檢查機制是和 Nacos 的服務實例類型強相關(guān)的。

 也就是說 Nacos 中的兩種服務實例分別對應了兩種健康檢查機制:

  • 臨時實例(也可以叫做非持久化實例):對應的是客戶端主動上報機制。
  • 永久實例(也可以叫做持久化實例):服務端反向探測機制。

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

客戶端主動上報機制

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

如下圖所示: 

 從上述圖片可以看出,Nacos 客戶端會以每 5s 一次的頻率來上報自己的健康情況,請求信息如下:

/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

服務端反向探測機制

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

TCP 探測

默認情況下,永久實例使用的是 TCP 探測,這點可以在 Nacos 控制臺觀察到,如下圖所示: 

 默認會使用 IP端口來檢查,如下圖所示: 

 TCP 探測的大體邏輯是通過與注冊實例建立 channel,不斷 ping 注冊實例的端口,來判斷實例是否健康。

HTTP 探測

HTTP 探測需要在 Nacos 控制臺手動配置,如下圖所示: 

 我們在服務實例中添加探測接口的實現(xiàn)代碼: 

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

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

集群下的健康檢查機制

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

總結(jié)

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

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

相關(guān)文章

  • Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法

    Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法

    這篇文章主要給大家介紹了關(guān)于Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法,MySQL是一款常用的關(guān)系型數(shù)據(jù)庫,它的JDBC驅(qū)動程序使得我們可以通過Java程序連接MySQL數(shù)據(jù)庫進行數(shù)據(jù)操作,需要的朋友可以參考下
    2023-11-11
  • Java類和對象習題及詳細答案解析

    Java類和對象習題及詳細答案解析

    這篇文章主要介紹了Java類和對象的相關(guān)知識,包括局部變量初始化、靜態(tài)方法、靜態(tài)導入、構(gòu)造方法、代碼塊執(zhí)行順序、toString方法重寫、類變量和靜態(tài)成員變量的訪問等,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • SpringBoot+Vue+JWT的前后端分離登錄認證詳細步驟

    SpringBoot+Vue+JWT的前后端分離登錄認證詳細步驟

    這篇文章主要介紹了SpringBoot+Vue+JWT的前后端分離登錄認證,其實創(chuàng)建后端springboot工程也很簡單,本文安裝idea步驟一步步給大家詳細介紹,需要的朋友可以參考下
    2021-09-09
  • java實現(xiàn)多線程賣票功能

    java實現(xiàn)多線程賣票功能

    這篇文章主要為大家詳細介紹了java實現(xiàn)多線程賣票功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • SpringBoot解析LocalDateTime失?。篣niapp傳輸時間變1970的原因與解決方案

    SpringBoot解析LocalDateTime失敗:Uniapp傳輸時間變1970的原因與解決方案

    這篇文章主要介紹了SpringBoot解析LocalDateTime失???Uniapp傳輸時間變1970的原因與解決方案,文中通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2025-03-03
  • 淺析Java中對象的創(chuàng)建與對象的數(shù)據(jù)類型轉(zhuǎn)換

    淺析Java中對象的創(chuàng)建與對象的數(shù)據(jù)類型轉(zhuǎn)換

    這篇文章主要介紹了Java中對象的創(chuàng)建與對象的數(shù)據(jù)類型轉(zhuǎn)換,是Java入門學習中的基礎知識,需要的朋友可以參考下
    2016-01-01
  • JAVA 16位ID生成工具類含16位不重復的隨機數(shù)數(shù)字+大小寫

    JAVA 16位ID生成工具類含16位不重復的隨機數(shù)數(shù)字+大小寫

    這篇文章主要介紹了JAVA 16位ID生成工具類含16位不重復的隨機數(shù)數(shù)字+大小寫,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 教新手使用java如何對一個大的文本文件內(nèi)容進行去重

    教新手使用java如何對一個大的文本文件內(nèi)容進行去重

    用HashSet對內(nèi)容去重這個過程jvm會內(nèi)存溢出,只能首先將這個大文件中的內(nèi)容讀取出來,對每行String的hashCode取模取正整數(shù),可用取模結(jié)果作為文件名,將相同模數(shù)的行寫入同一個文件,再單獨對每個小文件進行去重,最后再合并
    2021-06-06
  • maven打包加入本地jar包的實現(xiàn)

    maven打包加入本地jar包的實現(xiàn)

    在使用maven打包的過程中,有時候我們需要添加一些本地的jar包,本文主要介紹了maven打包加入本地jar包的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • springboot集成mybatisplus的詳細步驟

    springboot集成mybatisplus的詳細步驟

    MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,這篇文章主要介紹了springboot四步集成mybatisplus,需要的朋友可以參考下
    2022-10-10

最新評論

宁陕县| 汶川县| 华蓥市| 广州市| 祥云县| 健康| 黑龙江省| 黄浦区| 邯郸市| 武冈市| 宕昌县| 神农架林区| 利辛县| 泗洪县| 大同市| 嵩明县| 东至县| 麻栗坡县| 静海县| 永川市| 齐河县| 丰台区| 柳江县| 运城市| 巴中市| 河南省| 沙坪坝区| 启东市| 治县。| 铜川市| 英山县| 额敏县| 吉林省| 将乐县| 怀化市| 马龙县| 琼中| 富裕县| 大余县| 北碚区| 安顺市|