成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊 Spring Cloud Alibaba Nacos 的兩種健康檢查機制!

開發 架構
Nacos 中提供了兩種健康檢查機制:臨時實例的客戶端主動上報機制和永久實例的服務端反向探測機制。

作者 | 磊哥

來源 | Java中文社群(ID:javacn666)

轉載請聯系授權(微信ID:GG_Stone)

Spring Cloud Alibaba Nacos 作為注冊中心不止提供了服務注冊和服務發現功能,它還提供了服務可用性監測的機制。有了此機制之后,Nacos 才能感知服務的健康狀態,從而為服務調用者提供健康的服務實例,最終保證了業務系統能夠正常的執行。

兩種健康檢查機制

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

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

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

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

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

如何設置健康檢查機制?

Nacos 中的健康檢查機制不能主動設置,但健康檢查機制是和 Nacos 的服務實例類型強相關的。也就是說 Nacos 中的兩種服務實例分別對應了兩種健康檢查機制:

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

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

客戶端主動上報機制

臨時實例每隔 5 秒會主動上報一次自己的健康狀況,發送的數據包叫做心跳包,發送心跳包的機制叫做心跳機制。如果心跳包的間隔時間超過了 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

服務端反向探測機制

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

TCP 探測

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

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

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

HTTP 探測

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

我們在服務實例中添加探測接口的實現代碼:

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

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

集群下的健康檢查機制集

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

總結

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

責任編輯:姜華 來源: Java中文社群
相關推薦

2017-08-25 10:20:46

Docker容器機制

2021-04-18 10:34:28

Spring Clou郵件釘釘

2023-05-09 07:34:25

Docker健康檢查方式

2024-02-27 17:30:11

2023-03-02 07:20:10

GRPC服務健康檢查協議

2023-02-18 13:34:14

Nacos健康檢查機制

2023-03-03 08:19:35

KubernetesgRPC

2023-03-01 08:33:37

gRPC健康檢查代碼

2022-02-14 07:02:04

Spring閾值Nacos

2021-07-15 10:25:15

集群節點檢查

2021-07-05 06:51:41

Nacos微服務源碼

2022-02-07 07:10:32

服務注冊功能

2020-12-07 06:29:13

SpringBoot

2023-10-14 15:36:14

PodKubernetes

2021-09-18 16:10:48

Spring BootJava微服務

2018-07-10 14:55:32

Git存儲配置

2022-09-07 09:19:49

Docker健康檢查

2022-02-09 07:03:01

SpringNacos服務注冊

2009-09-08 15:22:20

Spring依賴注入

2009-06-23 18:18:13

SpringHibernate
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美一区二区三区视频 | 午夜电影网 | av特级毛片 | 久久国产精品-国产精品 | 亚洲精品一区二区三区在线 | 久久国产精品视频 | 国产丝袜人妖cd露出 | 精品国产精品三级精品av网址 | 亚洲综合视频 | 大学生a级毛片免费视频 | 国产在线视频一区二区 | 欧美一卡二卡在线 | 激情小说综合网 | 亚洲精品久久久久久久久久久久久 | 色成人免费网站 | 午夜在线 | 伊人一区 | 日韩精品一区二区三区视频播放 | 亚洲精品福利在线 | 国产精品一区二区在线 | 欧美日韩国产一区二区 | 国产精品国产三级国产aⅴ中文 | 亚洲一区在线日韩在线深爱 | 一区二区三区成人 | 亚洲一区黄色 | 日日夜夜精品免费视频 | 91中文在线观看 | 国产精品一区二区三区在线 | 在线欧美小视频 | 麻豆精品国产免费 | 国产精品美女久久久久久免费 | 91丨九色丨国产在线 | 精品乱人伦一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 久久精品青青大伊人av | 亚洲国产精品成人无久久精品 | 久久久精品视频免费看 | 久草网站| 日本精品视频在线观看 | 91精品久久久久久久久中文字幕 | 久久精品这里精品 |