第1章 总体介绍
1. 概述
2. 功能描述
3. 应用限流策略
第2章 业务限流配置
1. 说明
2. Context管理
3. 令牌池管理
4. 优先级队列管理
第3章 应用端接入
1. 引入依赖
2. Spring配置
3. 业务限流API
4. 异常处理
名称 | 说明 | 备注 |
服务端 | 独立部署的限流应用服务端,提供优先策略配置,报警快照接收等功能 |
|
客户端 | 以jar包形式提供给业务应用使用接入限流功能 |
|
业务应用 | 对应具体的快钱产品应用 |
|
|
|
|
l 分配令牌时,按照请求的优先级查找对应令牌池队列中是否有空闲令牌,若有则返回,否则返回空。
l 业务处理完毕后,令牌释放,归还至令牌所属优先级的令牌池。
在运维监控系统中选择限流配置管理
在限流配置管理界面上可维护新增删除和修改context
context名称为任意字符串
快照发送时间为0时,不发送快照
暂停按钮可禁用该context的限流,此时业务请求都可通过
点击context名称可进入context下的令牌池界面
一个Context下可以配置多个令牌池
令牌池名称可为任意字符串
暂停按钮可禁用该令牌池的限流,此时业务请求都可通过
点击修改可修改令牌池的数量和超时时间等参数
点击令牌池名称可进入令牌池下的优先级配置界面
匹配值:可是是普通字符串和正则表达式,其中正则表达式要用/括起,如/.*/。其他形式视为普通字符串,多个匹配值之间用空格分开.除了/.*/以外,应尽量避免使用正则表达式,以免影响性能。
最大并发请求数:请求token是异步实现的,这个参数指定了异步请求队列的最大任务数量。
<dependency org="com.99bill" name="if-flowcontrol" rev="1" conf="zip->default"/> <dependency org="com.sun" name="javaee-api" rev="5" conf="compile->default"/> <dependency org="com.ibm" name="wsdl4j" rev="1.6.1" conf="compile->default"/> <dependency org="javax.xml" name="jaxrpc-api" rev="1.1" conf="compile->default"/> <dependency org="org.slf4j" name="slf4j-api" rev="1.5.8" conf="compile->default"/> <dependency org="org.spring" name="spring" rev="2.5.5" conf="zip->default"/> |
<bean id="tokenPoolManager" class="com.bill99.fc.service.token.TokenPoolManagerFactoryBean"> <property name="contextName" value="myContext" /> <property name="serverUrl" value="${inf.fc.server.url}" />
<!-- 以下参数可选 --> <!-- 获取token最大超时时间,默认为10000 --> <property name="tokenGettingTaskTimeOut" value="3000" /> <!-- 启动后加载配置的延迟时间,默认为60000 --> <property name="configReloadDelay" value="10000" /> <!-- 刷新配置的间隔时间,默认为30000 --> <property name="configReloadInterval" value="60000" /> </bean> |
其中myContext是你自已配置的context名称
${inf.fc.server.url}是服务端地址,如果接入ACMS的话可以直接引入这个占位符
类摘要 | |
令牌对象 | |
限流控制主入口 | |
|
java.lang.Object
com.bill99.fc.service.token.TokenPoolManager
public class TokenPoolManager
extends java.lang.Object
限流控制主入口
方法摘要 | |
|
|
|
|
参数: poolName - 令牌池名称,与服务端配置的令牌池名称对应 in - 业务参数,用于确定优先级 返回: 成功时为Token实例,无可用令牌时返回null | |
|
|
|
|
java.lang.Object
com.bill99.fc.service.token.Token
public class Token
extends java.lang.Object
令牌对象
方法摘要 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用示例:
//….. //获得令牌 Token t = TokenPoolManager.getTokenPoolManager.getToken(“/internal/txn”, ” 999451145110001 &PUR”); //业务处理 //…. //业务处理完毕,归还令牌 t.releaseToken(); |
异常情况 | 处理方式 |
客户端请求服务端同步策略配置失败 | 此种场景为客户端首次启动时发生,此时由于客户端无优先策略配置,对于所有请求都按同一优先级进行限流控制。当达到配置的轮询间隔时期后,客户端再次尝试向服务端请求策略配置信息。 |
|
|
联系客服