Dubbo3 服務流量管理

2022-03-29 16:25 更新

通過 Dubbo 定義的路由規(guī)則,實現對流量分布的控制

流量管理

流量管理的本質是將請求根據制定好的路由規(guī)則分發(fā)到應用服務上,如下圖所示:


其中:

  • 路由規(guī)則可以有多個,不同的路由規(guī)則之間存在優(yōu)先級。如:Router(1) -> Router(2) -> …… -> Router(n)
  • 一個路由規(guī)則可以路由到多個不同的應用服務。如:Router(2)既可以路由到Service(1)也可以路由到Service(2)
  • 多個不同的路由規(guī)則可以路由到同一個應用服務。如:Router(1)和Router(2)都可以路由到Service(2)
  • 路由規(guī)則也可以不路由到任何應用服務。如:Router(m)沒有路由到任何一個Service上,所有命中Router(m)的請求都會因為沒有對應的應用服務處理而導致報錯
  • 應用服務可以是單個的實例,也可以是一個應用集群。

Dubbo流量管理介紹

Dubbo提供了支持mesh方式的流量管理策略,可以很容易實現 A/B測試金絲雀發(fā)布、藍綠發(fā)布等能力。

Dubbo將整個流量管理分成VirtualServiceDestinationRule兩部分。當Consumer接收到一個請求時,會根據VirtualService中定義的DubboRouteDubboRouteDetail匹配到對應的DubboDestination中的subnet,最后根據DestinationRule中配置的subnet信息中的labels找到對應需要具體路由的Provider集群。其中:

  • VirtualService主要處理入站流量分流的規(guī)則,支持服務級別和方法級別的分流。
  • DubboRoute主要解決服務級別的分流問題。同時,還提供的重試機制、超時、故障注入、鏡像流量等能力。
  • DubboRouteDetail主要解決某個服務中方法級別的分流問題。支持方法名、方法參數、參數個數、參數類型、header等各種維度的分流能力。同時也支持方法級的重試機制、超時、故障注入、鏡像流量等能力。
  • DubboDestination用來描述路由流量的目標地址,支持host、port、subnet等方式。
  • DestinationRule主要處理目標地址規(guī)則,可以通過hosts、subnet等方式關聯到Provider集群。同時可以通過trafficPolicy來實現負載均衡。

這種設計理念很好的解決流量分流和目標地址之間的耦合問題。不僅將配置規(guī)則進行了簡化有效避免配置冗余的問題,還支持VirtualServiceDestinationRule的任意組合,可以非常靈活的支持各種業(yè)務使用場景。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號