日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Consul的反熵

發布時間:2023/12/4 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul的反熵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

熵是衡量某個體系中事物混亂程度的一個指標,是從熱力學第二定律借鑒過來的。

熵增原理

孤立系統的熵永不自動減少,熵在可逆過程中不變,在不可逆過程中增加。
熵增加原理是熱力學第二定律的又一種表述,它更為概括地指出了不可逆過程的進行方向;同時,更深刻地指出了熱力學第二定律是大量分子無規則運動所具有的統計規律,因此只適用于大量分子構成的系統,不適用于單個分子或少量分子構成的系統。

[來自百度百科]

Consul為什么要反熵

舉個現實社會的例子,國家是由一個個的人組成的,小國家幾萬人口,大國家幾億人口,每個人都有自己的想法,不可能這些人沒有組織就能維持這個國家的運轉。我國有省市縣鄉四級行政區劃,鄉管理幾十個村,縣管理十幾個鄉,市管理十幾個縣,省管理十幾個市。如果讓省直接去管理以萬為單位的村,李村的村長貪污了補貼款,張村的馬路被壓壞了,隔壁王村放開二胎后還是沒人生孩子…,肯定是管不過來的。通過這種層級的行政劃分,國家得到了有序的治理,而不是亂哄哄一片。

Consul面對的問題也是類似的,它是一個分布式的服務發現系統,需要做服務注冊、健康檢查、服務發現,以及在成員之間共享這些服務信息。大點的系統可能有成千上萬的服務,分布在成百上千的節點,服務應該注冊在哪些節點,數據在節點之間怎么同步,節點失敗了怎么辦,怎樣保證增加節點數量不會導致性能明顯下降…如果不解決好這些問題,整個系統可能就會變得混亂,走向失控和崩潰。

理解兩個組件

這里首先介紹跟服務和健康檢查緊密相關的兩個部件:Agent和Catalog,可以讓大家更容易理解Consul的反熵。

Agent

Agent存在于Consul的每一個節點中,負責維護注冊到其上的服務和健康檢查,以及執行這些健康檢查,更新本地服務的健康信息。

Catalog

Catalog存在于Server 節點,聚合了各個Agent采集的信息,包括服務、健康檢查、相關的節點,以及它們對應的狀態,服務發現就是基于Catalog來做的。

然而Catalog中這些信息的字段要比Agent維護的少很多,因為Catelog只是一個視圖,它沒有關于服務、健康檢查和節點的設置項信息。

反熵機制

根據前邊對熵的說明,Consul 的反熵就是讓Consul集群更有序,而其反熵機制就和上邊提到的兩個部件緊密相關。

當服務或健康檢查在Agent注冊后,信息就會通知到Catalog中;當Agent中根據健康檢查的服務狀態發生變化時,狀態也會通知到Catalog中;當服務或健康檢查從Agent中消失后,Catalog中也會移除相對應的信息。

Agent負責注冊到其上的服務及健康檢查,Catalog負責聚合集群各個Agent的數據用于服務發現,Agent同步最新數據到Catalog,各個Agent的數據不斷收斂到Catalog,從而實現集群的有序運作。波斯碼建議大家通過調用Consul API中的Agent和Catalog接口來驗證這個機制。

周期同步

除了當變化發生時Agent主動通知外,Agent還有一個定時器執行到Catalog的完整同步操作。極端情況下,如果在Catalog中移除了某個Agent的所有信息,過一會這些信息也會重新同步到Catalog中。為了降低同步可能導致的并發影響,針對不同的集群規模默認了不同的同步周期:

集群規模同步周期
1 – 1281 minute
129 – 2562 minutes
257 – 5123 minutes
513 – 10244 minutes

這個同步間隔只是一個近似值,為了防止大量節點同時同步導致驚群效應,實際程序中會在同步周期內引入一個隨機值來錯開同時請求。

同步的異常處理

同步的時候可能會出現各種問題,比如Agent配置錯誤、磁盤滿了、沒有寫入權限、網絡不通等等,出現這些問題時,Agent會記錄日志后繼續運行,然后等待下一次周期同步嘗試。

啟用Tag Override

如果開啟這個選項,則Agent同步數據到Catalog時,將不會同步服務的tag數據。舉個實際的例子:主從部署的redis,使用sentinel監控實例的狀態,如果主redis下線,則某個從redis升級為可寫的主實例。假設使用服務的tag作為主從的標識,這里就不能使用服務注冊時的tag,而應該通過sentinel獲取redis實例的主從狀態,然后設置到Catalog中,服務發現才能獲取到當前實際的redis主實例。

這篇文章由Consul官方文檔整理而來,加入了波斯碼個人的一些理解。點此查看原文。

原文鏈接:https://www.cnblogs.com/bossma/p/11354245.html


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Consul的反熵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。