访问限流
Dubbo 分类
Dubbo当前常用的有2个分支版本,一个是apache dubbo(GroupID是org.apache.dubbo), 一个是dubbox (GroupID是com.alibaba)。两个分支的dubbo,对应不同的接入插件,大家接入之前可以先通过GroupID判断下当前项目依赖的是哪个分支的dubbo。
Apache Dubbo
引入依赖
首先,动态路由需要依赖以下2个插件,需要将2个插件引入POM中,插件版本建议使用源码库的最新版本:release:
- com.tencent.polaris:dubbo-ratelimit-polaris:北极星访问限流插件
<dependency>
<groupId>com.tencent.polaris</groupId>
<artifactId>dubbo-ratelimit-polaris</artifactId>
<version>${latest_version}<version>
</dependency>
配置北极星注册中心地址
注册中心地址配置可参考:服务注册。
使用动态路由能力
*** 说明 ***
访问限流可以实现在被调端基于dubbo的请求消息内容来对请求进行流量限制,比如将带了某些user标签的请求限制速率为100/s。
当前支持针对dubbo消息的以下内容进行流量限制:
消息类型 | dubbo消息内容 | 路由规则请求类型 |
---|---|---|
消息头 | attachment | 请求头(HEADER) |
RPC方法 | method | 接口 |
*** 配置限流规则 ***
配置一个单机限流规则,对带有user为archer的请求,限制速率为100/s。
代码中无需额外添加限流判断代码,插件会自动在被调端进行请求的限流计算和拦截,假如出现限流,则会返回PolarisBlockException异常给调用端。
样例
访问限流样例包括2个工程,代表的是主调端和被调端,限流行为工作在被调端。
- consumer工程:dubbo-ratelimit-consumer
provider工程:dubbo-ratelimit-provider
- 下一篇→