10 | 路由策略:怎么讓請求按照設計的規則發到不同的節點上?
我們在真實的環境中,服務提供方是以集群的方式對外提供服務,這對于服務呼叫方來說,就是一個借口會有多個服務提供方同時提供服務,所以RCP在每次發起請求的時候,都需要從多個服務提供方節點里面選擇一個用于發送請求,
當服務在線上運行時,我們如果有變更,會涉及到如何升級,升級程序中可能會影響服務介面,這樣會導致系統變的不穩定,甚至系統崩潰,為了減少這種風向,我們一般會選擇灰度發布的方式來升級我們的服務實體,例如我們可以發布少量實體來觀察是否有例外,然后根據觀察的結果,來決定是發布更多實體還是回滾到舊版本,
雖然我們的服務在上線前會有測驗的程序,但是因為線上環境太復雜了,測驗只能是降低出現風險的概率,想要徹底驗證所有場景是不可能的,
我們可以考慮在上線完成后,先讓一小部分呼叫方請求過來進行邏輯驗證,待沒有問題后再接入其他呼叫方,從而實作流量隔離的效果,
因為注冊中心會維護所有服務提供方的資訊,所以我們可以在注冊中心中來做流量隔離嗎?一般不采用這種方式,注冊中心在RPC中的定位是用來存盤資料并保證資料一致性,如果把復雜的請求隔離的計算邏輯放到注冊中心里面,那么當集群節點變多時,會導致注冊中心壓力過大,而且大部分時候,我們采用開源軟體來打架注冊中心,要加入其他計算邏輯的話,還需要進行二次開發,所以從實際的角度出發,在注冊中心中實作請求隔離是不劃算的,
呼叫法發起RPC呼叫的整個流程中,在RPC發起真實請求的時候,有一個步驟就是從服務提供方節點集合里面選擇一個合適的節點(也就是負載均衡),那么我們可以考慮在這個節點之前,加入一個“篩選邏輯”,把符合我們要求的節點篩選出來,
這個“篩選程序”,我們稱之為“路由策略”,
我們可以設計不同的分路由策略:
- IP路由,根據服務呼叫方的IP地址,來決定哪些服務提供方的實體可以處理相關請求,
- 引數路由,根據服務呼叫方發送請求中的引數值,來決定哪些服務提供方的實體可以處理相關請求,
引數路由是比IP路由更靈活、粒度更細的路由規則,它為服務提供方應用提供了另外一個服務治理的手段,
灰度發布功能是RPC路由功能的一個典型應用場景,通過RPC的路由策略的組合使用可以讓服務提供方更加靈活的管理、呼叫自己的流量,進一步降低可能導致的風險,
在RPC里面,不論是哪種路由策略,其核心思想是一樣的,就是讓請求按照我們設定的規則發送到目標節點上,從而實作流量隔離的效果,
作者:李潘 出處:http://wing011203.cnblogs.com/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542413.html
標籤:其他
上一篇:Python內置函式
下一篇:淺談PHP設計模式的中介者模式
