访问限流

Dubbo 分类

Dubbo当前常用的有2个分支版本,一个是apache dubbo(GroupID是org.apache.dubbo), 一个是dubbox (GroupID是com.alibaba)。两个分支的dubbo,对应不同的接入插件,大家接入之前可以先通过GroupID判断下当前项目依赖的是哪个分支的dubbo。

Apache Dubbo 接入

支持版本

当前只支持dubbo 2.x版本的接入,dubbo 3.x暂未支持。

引入依赖

首先,动态路由需要依赖以下2个插件,需要将2个插件引入POM中,插件版本建议使用最新版本。

  • org.apache.dubbo.extensions:dubbo-registry-polaris:北极星接入插件

  • org.apache.dubbo.extensions:dubbo-filter-polaris-ratelimit-dubbo2:北极星访问限流插件

  1. <dependency>
  2. <groupId>org.apache.dubbo.extensions</groupId>
  3. <artifactId>dubbo-registry-polaris</artifactId>
  4. <version>1.0.0<version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.dubbo.extensions</groupId>
  8. <artifactId>dubbo-ratelimit-polaris</artifactId>
  9. <version>1.0.0<version>
  10. </dependency>

配置北极星注册中心地址

接下来,需要添加北极星registry的配置,指定北极星的地址及相关配置信息,可以通过配置文件及代码的方式进行指定:

配置文件方式添加:

  1. <dubbo:registry address="polaris://127.0.0.1:8091"/>

使用动态路由能力

*** 说明 ***

访问限流可以实现在被调端基于dubbo的请求消息内容来对请求进行流量限制,比如将带了某些user标签的请求限制速率为100/s。

当前支持针对dubbo消息的以下内容进行流量限制:

消息类型dubbo消息内容路由规则请求类型
消息头attachment请求头(HEADER)
RPC方法method接口

*** 配置限流规则 ***

配置一个单机限流规则,对带有user为archer的请求,限制速率为100/s。

访问限流 - 图1

代码中无需额外添加限流判断代码,插件会自动在被调端进行请求的限流计算和拦截,假如出现限流,则会返回PolarisBlockException异常给调用端。

样例

访问限流样例包括2个工程,代表的是主调端和被调端,限流行为工作在被调端。