Dubbo3 服務(wù)流量管理

2022-03-29 16:25 更新

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

流量管理

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


其中:

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

Dubbo流量管理介紹

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

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

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

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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號