《RPC實戰與核心原理》學習筆記Day9

10 | 路由策略:怎麼讓請求按照設計的規則發到不同的節點上?

我們在真實的環境中,服務提供方是以集羣的方式對外提供服務,這對於服務調用方來說,就是一個藉口會有多個服務提供方同時提供服務,所以RCP在每次發起請求的時候,都需要從多個服務提供方節點裏面選擇一個用於發送請求。

當服務在線上運行時,我們如果有變更,會涉及到如何升級,升級過程中可能會影響服務接口,這樣會導致系統變的不穩定,甚至系統崩潰,爲了減少這種風向,我們一般會選擇灰度發佈的方式來升級我們的服務實例,例如我們可以發佈少量實例來觀察是否有異常,然後根據觀察的結果,來決定是發佈更多實例還是回滾到舊版本。

雖然我們的服務在上線前會有測試的過程,但是因爲線上環境太複雜了,測試只能是降低出現風險的概率,想要徹底驗證所有場景是不可能的。

我們可以考慮在上線完成後,先讓一小部分調用方請求過來進行邏輯驗證,待沒有問題後再接入其他調用方,從而實現流量隔離的效果。

因爲註冊中心會維護所有服務提供方的信息,所以我們可以在註冊中心中來做流量隔離嗎?一般不採用這種方式,註冊中心在RPC中的定位是用來存儲數據並保證數據一致性,如果把複雜的請求隔離的計算邏輯放到註冊中心裏面,那麼當集羣節點變多時,會導致註冊中心壓力過大,而且大部分時候,我們採用開源軟件來打架註冊中心,要加入其他計算邏輯的話,還需要進行二次開發,所以從實際的角度出發,在註冊中心中實現請求隔離是不划算的。

調用法發起RPC調用的整個流程中,在RPC發起真實請求的時候,有一個步驟就是從服務提供方節點集合裏面選擇一個合適的節點(也就是負載均衡),那麼我們可以考慮在這個節點之前,加入一個“篩選邏輯”,把符合我們要求的節點篩選出來。

這個“篩選過程”,我們稱之爲“路由策略”。

我們可以設計不同的分路由策略:

  • IP路由,根據服務調用方的IP地址,來決定哪些服務提供方的實例可以處理相關請求。
  • 參數路由,根據服務調用方發送請求中的參數值,來決定哪些服務提供方的實例可以處理相關請求。

參數路由是比IP路由更靈活、粒度更細的路由規則,它爲服務提供方應用提供了另外一個服務治理的手段。

灰度發佈功能是RPC路由功能的一個典型應用場景,通過RPC的路由策略的組合使用可以讓服務提供方更加靈活的管理、調用自己的流量,進一步降低可能導致的風險。

在RPC裏面,不論是哪種路由策略,其核心思想是一樣的,就是讓請求按照我們設定的規則發送到目標節點上,從而實現流量隔離的效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章