微服務學習之路(六)——微服務治理

微服務治理背景,服務消費者A須要經過註冊中心查詢服務提供者B的地址,而後發起調用,可能會發送以下狀況:正則表達式

  註冊中心宕機算法

  服務提供者B由節點宕機緩存

  服務消費者A和註冊中心之間的網絡不通服務器

  服務提供者B和註冊中心之間的網絡不通網絡

  服務消費者A和服務提供者B之間的網絡不通負載均衡

  服務提供者B有些節點性能變慢微服務

  服務提供者B短期內出現問題性能

對此,咱們須要相應的服務治理手段。進程

  

  節點管理內存

  服務調用失敗,通常由兩類緣由引發,一類時服務提供者自身出現問題,如服務器宕機、進程意外退出等;一類時網絡問題,如服務提供者、註冊中心、服務消費者這三者任意二者之間的網絡出現問題。主要有以下兩種節點管理手段:

  一、註冊中心主動摘除機制

  要求服務提供者定時向註冊中心彙報心跳,註冊中心根據服務提供者節點最近一次彙報心跳的時間與上一次彙報心跳時間做比較,若是超出必定時間,就認爲服務提供者出現問題,繼而把節點從服務列表中摘除,並把最近的可用服務列表推送給服務消費者。

  二、服務消費者摘除機制

  雖然註冊中心主動摘除機制能夠解決服務提供者節點異常的問題,但若是是由於註冊中心與服務提供者之間的網絡出現異常,最壞的狀況是註冊中心會把服務節點所有摘除,致使服務消費者沒有可用的服務節點調用,但其實這時候服務提供者自己是正常的。因此,將存活探測機制用在服務消費者這一端更合理,若是服務消費者調用服務提供者節點失敗,就將這個節點從內存中保存的可用服務提供者節點列表中移除。

 

  負載均衡

  通常狀況下,服務提供者節點不是惟一的,可能是以集羣的方式存在。因爲機器採購批次的不一樣,不一樣服務節點自己的配置也可能存在很大差別,新採購的機器CPU和內存配置可能要高一些,同等請求狀況下,性能要好於舊的機器。對於服務消費者而言,在從服務列表中選取可用節點時,若是能讓配置較高的新機器多承載一些流量的話,就能充分利用新機器的性能。

  經常使用的負載均衡算法主要包括以下幾種。

  一、隨機算法

  從可用的服務節點隨機選取一個節點。

  二、按照固定的權重,對可用服務節點進行輪詢,若是全部服務節點的權重都是相同的,則每一個節點的調用量也是差很少的。但能夠給某些硬件配置好的節點的權重調大一點。

  三、最少活躍調用算法

  該算法在服務消費者這一段的內存裏動態維護着同每個服務節點之間的鏈接數,當調用某個服務節點時,就給與這個服務節點之間的鏈接數加1,調用返回後,就給鏈接數減1。而後每次在選擇服務節點時,根據內存裏維護的鏈接倒序排列,選擇鏈接數最小的節點發起調用,也就是選擇了調用量最小的服務節點,性能理論上時最優的。

  四、一致性Hash算法

  指相同參數的請求老是發到同一服務節點。當某個服務節點出現故障時,本來發往該節點的請求,基於虛擬節點機制,平攤到節點上,不會引發劇烈變更。

 

  服務路由

  對於服務消費者而言,在內存中的可用服務節點列表中選擇哪一個節點不只由負載均衡算法決定,還由路由規則決定。

  路由規則:經過必定的規則如條件表達式或者正則表達式來限定服務節點的選擇範圍。

  爲何要制定路由規則?由以下兩個緣由

  一、業務存在灰度發佈需求

  服務提供者作了功能變動,只但願部分人先使用。

  二、多機房就近訪問需求

  不一樣IDC之間的訪問因爲要跨IDC,有些對時效性高的業務,應該儘可能在同一個IDC內部。通常能夠經過IP段規則來控制訪問。

 

  服務容錯

  背景:對於服務調用失敗的狀況,須要手段自動恢復,保證調用成功。經常使用方法以下:

  FailOver:失敗自動切換。服務消費者發現調用失敗或者超時後,自動從可用的服務節點列表中選擇下一個節點從新發起調用,也能夠設置重試次數。要求服務調用的操做必須是冪等的。

  FailBack:失敗經過。就是服務消費者調用失敗或者超時後,再也不重試,而是根據失敗的詳細信息,來決定後續的執行策略。

  FailCache:失敗緩存。就是服務消費者調用失敗或者超時後,不當即發起重試。

  FailFast:快速失敗。就是服務消費者調用一次失敗後,不在重試。

相關文章
相關標籤/搜索