微服務學習筆記 微服務治理得方式

2021-10-23 10:37:39 字數 2492 閱讀 4042

可能會出現一些問題:

一、節點管理

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

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

2、服務消費者摘除機制

服務消費者呼叫服務提供者節點失敗,就將這個節點從記憶體中儲存的可用服務提供者節點列表中移除。

二、負載均衡

服務提供者節點不是唯一的,多以集群方式存在,提供的效能有很大差異,對於消費者而言,,在從服務列表中選取可用節

時,如果能讓配置較高的新機器多承擔一些流量的話,就能充分利用新機器的效能。這就需要對負載均衡演算法做一些調整。

1、隨機演算法

從可用服務節點中隨機選取乙個節點。一般情況下,隨機演算法都是均勻的,後端服務節點無論配置好壞,最終得到的呼叫量都差不多。

2、輪詢演算法

按照固定的權重,對可用服務節點進行輪詢。如果所有服務節點的權重都是相同的,則每個節點的呼叫量也是差不多的。但可以給某些硬體配置較好的節點的權重調大些,這樣的話就會得到更大的呼叫量,從而充分發揮其效能優勢,提高整體呼叫的平均效能。

3、最少活躍呼叫演算法

在服務消費者這一端的記憶體裡動態維護著同每乙個服務節點之間的連線數,當呼叫某個服務節點時,就給與這個服務節點之間的連線數加 1,呼叫返回後,就給連線數減1。然後每次在選擇服務節點時,根據記憶體裡維護的連線數倒序排列,選擇連線數最小的節點發起呼叫,也就是選擇了呼叫量最小的服務節點,效能理論上也是最優的。

4、一致性hash演算法

相同引數的請求總是發到同一服務節點。當某乙個服務節點出現故障時,原本發往該節點的請求,基於虛擬節點機制,平攤到其他節點上,不會引起劇烈變動。

如果後端服務節點的配置沒有差異,同等呼叫量下效能也沒有差異的話,選擇隨機或者輪詢演算法比較合適;如果後端服務節點存在比較明顯的配置和效能差異,選擇最少活躍呼叫演算法比較合適。

三、服務路由

對於服務消費者而言,在記憶體中的可用服務節點列表中選擇哪個節點不僅由負載均衡演算法決定,還由路由規則確定。所謂的路由規則,通過一定的規則如條件表示式或者正規表示式來限定服務節點的選擇範圍。

1、業務存在灰度發布的需求

服務提供者做了功能變更,但希望先只讓部分人群使用,然後根據這部分人群的使用反饋,再來決定是否做全量發布。這個時候,就可以通過類似按尾號進行灰度的規則限定只有一定比例的人群才會訪問新發布的服務節點。

2、多機房就近訪問的需求

大部分業務規模中等及以上的網際網路公司,為了業務的高可用性,都會將自己的業務部署在不止乙個 idc 中。這個時候就存在乙個問題,不同 idc 之間的訪問由於要跨idc,通過專線訪問,尤其是 idc 相距比較遠時延遲就會比較大,比如北京和廣州的專線延遲一般在 30ms 左右,這對於某些延時敏感性的業務是不可接受的,所以就要一次服務呼叫盡量選擇同乙個 idc 內部的節點,從而減少網路耗時開銷,提高效能。這時一般可以通過 ip 段規則來控制訪問,在選擇服務節點時,優先選擇同一 ip 段的節點。

1、靜態配置

服務消費者本地存放服務呼叫的路由規則,在服務呼叫期間,路由規則不會發生改變,要想改變就需要修改服務消費者本地配置,上線後才能生效。

2、動態配置

路由規則是存在註冊中心的,服務消費者定期去請求註冊中心來保持同步,要想改變服務消費者的路由配置,可以通過修改註冊中心的配置,服務消費者在下乙個同步週期之後,就會請求註冊中心來更新配置,從而實現動態更新。

四、服務容錯

服務呼叫並不一定成功,需要手段自動恢復,來保證呼叫成功。

失敗自動切換。就是服務消費者發現呼叫失敗或者超時後,自動從可用的服務節點列表總選擇下乙個節點重新發起呼叫,也可以設定重試的次數。這種策略要求服務呼叫的操作必須是冪等的,也就是說無論呼叫多少次,只要是同乙個呼叫,返回的結果都是相同的,一般適合服務呼叫是讀請求的場景。

失敗通知。就是服務消費者呼叫失敗或者超時後,不再重試,而是根據失敗的詳細資訊,來決定後續的執行策略。比如對於非冪等的呼叫場景,如果呼叫失敗後,不能簡單地重試,而是應該查詢服務端的狀態,看呼叫到底是否實際生效,如果已經生效了就不能再重試了;如果沒有生效可以再發起一次呼叫。

失敗快取。就是服務消費者呼叫失敗或者超時後,不立即發起重試,而是隔一段時間後再次嘗試發起呼叫。比如後端服務可能一段時間內都有問題,如果立即發起重試,可能會加劇問題,反而不利於後端服務的恢復。如果隔一段時間待後端節點恢復後,再次發起呼叫效果會更好。

快速失敗。就是服務消費者呼叫一次失敗後,不再重試。實際在業務執行時,

一般非核心業務的呼叫,會採用快速失敗策略,呼叫失敗後一般就記錄下失敗日誌就返回

了。

微服務治理 hongxinerke

微服務遠端呼叫可能有如下問題 註冊中心宕機 服務提供者b有節點宕機 服務消費者a和註冊中心之間的網路不通 服務提供者b和註冊中心之間的網路不通 服務消費者a和服務提供者b之間的網路不通 服務提供者b有些節點效能變慢 服務提供者b短時間內出現問題。常用的服務治理手段 節點管理 服務呼叫失敗一般是由兩類...

微服務學習筆記 追蹤微服務呼叫

微服務系統追蹤微服務呼叫,跟蹤記錄一次使用者請求經過哪些呼叫,經過哪些服務處理,並且記錄每一次呼叫所設計的服務的詳細資訊。如果發生呼叫失敗,可以根據日誌快速定位出現問題的環節。一 作用 1.優化系統瓶頸 通過記錄呼叫經過的每一條鏈路上的耗時,快速定位系統中的瓶頸點。2.優化鏈路呼叫 通過服務追鍾可以...

微服務學習筆記 什麼是微服務

martin fowler 簡而言之,微服務架構風格這種開發方法,是以開發一組小型服務的方式來開發乙個獨立的應用系統的。其中每個小型服務都執行在自己的程序中,並經常採用http資源api這樣輕量的機制來相互通訊。這些服務圍繞業務功能進行構建,並能通過全自動的部署機制來進行獨立部署。這些微服務可以使用...