应用限流接入手册
2015-08-03 23:58
162 查看
第1章总体介绍
1.概述
2.功能描述
3.应用限流策略
第2章业务限流配置
1.说明
2.Context管理
3.令牌池管理
4.优先级队列管理
第3章应用端接入
1.引入依赖
2.Spring配置
3.业务限流API
4.异常处理
2.同步令牌优先策略:客户端从服务端加载策略配置信息变化,并将策略实时运用于对应令牌池。
令牌排队队列维护:按照优先策略维护排队队列,包括按业务优先级插队,超时踢出。
限流参数服务:通过http提供限流参数。
1.限流参数配置维护。
l业务处理完毕后,令牌释放,归还至令牌所属优先级的令牌池。
context名称为任意字符串
快照发送时间为0时,不发送快照
暂停按钮可禁用该context的限流,此时业务请求都可通过
点击context名称可进入context下的令牌池界面
令牌池名称可为任意字符串
暂停按钮可禁用该令牌池的限流,此时业务请求都可通过
点击修改可修改令牌池的数量和超时时间等参数
点击令牌池名称可进入令牌池下的优先级配置界面
匹配值:可是是普通字符串和正则表达式,其中正则表达式要用/括起,如/.*/。其他形式视为普通字符串,多个匹配值之间用空格分开.除了/.*/以外,应尽量避免使用正则表达式,以免影响性能。
最大并发请求数:请求token是异步实现的,这个参数指定了异步请求队列的最大任务数量。
其中myContext是你自已配置的context名称
${inf.fc.server.url}是服务端地址,如果接入ACMS的话可以直接引入这个占位符
com.bill99.fc.service.token
限流控制主入口
com.bill99.fc.service.token
令牌对象
使用示例:
1.概述
2.功能描述
3.应用限流策略
第2章业务限流配置
1.说明
2.Context管理
3.令牌池管理
4.优先级队列管理
第3章应用端接入
1.引入依赖
2.Spring配置
3.业务限流API
4.异常处理
第1章总体介绍
1.概述
1.1.名词说明:
名称 | 说明 | 备注 |
服务端 | 独立部署的限流应用服务端,提供优先策略配置,报警快照接收等功能 | |
客户端 | 以jar包形式提供给业务应用使用接入限流功能 | |
业务应用 | 对应具体的快钱产品应用 | |
2.功能描述
2.1.限流客户端
1.令牌分配:按照既定令牌容量,超时时间对令牌的发放,释放,超时释放进行管理。2.同步令牌优先策略:客户端从服务端加载策略配置信息变化,并将策略实时运用于对应令牌池。
令牌排队队列维护:按照优先策略维护排队队列,包括按业务优先级插队,超时踢出。
限流参数服务:通过http提供限流参数。
1.限流参数配置维护。
2.2.限流服务端
2.3.运维Website
3.应用限流策略
l分配令牌时,按照请求的优先级查找对应令牌池队列中是否有空闲令牌,若有则返回,否则返回空。l业务处理完毕后,令牌释放,归还至令牌所属优先级的令牌池。
第2章业务限流配置
1.说明
在运维监控系统中选择限流配置管理2.Context管理
在限流配置管理界面上可维护新增删除和修改contextcontext名称为任意字符串
快照发送时间为0时,不发送快照
暂停按钮可禁用该context的限流,此时业务请求都可通过
点击context名称可进入context下的令牌池界面
3.令牌池管理
一个Context下可以配置多个令牌池令牌池名称可为任意字符串
暂停按钮可禁用该令牌池的限流,此时业务请求都可通过
点击修改可修改令牌池的数量和超时时间等参数
点击令牌池名称可进入令牌池下的优先级配置界面
4.优先级队列管理
匹配值:可是是普通字符串和正则表达式,其中正则表达式要用/括起,如/.*/。其他形式视为普通字符串,多个匹配值之间用空格分开.除了/.*/以外,应尽量避免使用正则表达式,以免影响性能。
最大并发请求数:请求token是异步实现的,这个参数指定了异步请求队列的最大任务数量。
第3章应用端接入
1.引入依赖
<dependencyorg="com.99bill"name="if-flowcontrol"rev="1"conf="zip->default"/> <dependencyorg="com.sun"name="javaee-api"rev="5"conf="compile->default"/> <dependencyorg="com.ibm"name="wsdl4j"rev="1.6.1"conf="compile->default"/> <dependencyorg="javax.xml"name="jaxrpc-api"rev="1.1"conf="compile->default"/> <dependencyorg="org.slf4j"name="slf4j-api"rev="1.5.8"conf="compile->default"/> <dependencyorg="org.spring"name="spring"rev="2.5.5"conf="zip->default"/> |
2.Spring配置
<beanid="tokenPoolManager" class="com.bill99.fc.service.token.TokenPoolManagerFactoryBean"> <propertyname="contextName"value="myContext"/> <propertyname="serverUrl"value="${inf.fc.server.url}"/> <!--以下参数可选--> <!--获取token最大超时时间,默认为10000--> <propertyname="tokenGettingTaskTimeOut"value="3000"/> <!--启动后加载配置的延迟时间,默认为60000--> <propertyname="configReloadDelay"value="10000"/> <!--刷新配置的间隔时间,默认为30000--> <propertyname="configReloadInterval"value="60000"/> </bean> |
${inf.fc.server.url}是服务端地址,如果接入ACMS的话可以直接引入这个占位符
3.业务限流API
软件包com.bill99.fc.service.token
类摘要 | |
Token | 令牌对象 |
TokenPoolManager | 限流控制主入口 |
TokenPoolManagerFactoryBean |
com.bill99.fc.service.token
类TokenPoolManager
java.lang.Object
com.bill99.fc.service.token.TokenPoolManager
publicclassTokenPoolManager
extendsjava.lang.Object
限流控制主入口
方法摘要 | |
void | active () 激活限流功能 |
void | deactive () 暂停令牌功能 |
Token | getToken (java.lang.StringpoolName,java.lang.Stringin) 从令牌池中获取令牌 参数: poolName-令牌池名称,与服务端配置的令牌池名称对应 in-业务参数,用于确定优先级 返回: 成功时为Token实例,无可用令牌时返回null |
staticTokenPoolManager | getTokenPoolManager () 获取 TokenPoolManager唯一入口 |
boolean | isActive () 判断是否激活 |
com.bill99.fc.service.token
类Token
java.lang.Object
com.bill99.fc.service.token.Token
publicclassToken
extendsjava.lang.Object
令牌对象
方法摘要 | |
long | getHeldDuration () 获得保持时长 |
java.lang.String | getId () 获得令牌标识 |
long | getIssueTime () 获得颁发时间 |
java.lang.String | getPoolName () 获得所属令牌池名称 |
java.lang.Integer | getPriority () 获得优先级 |
boolean | isExpired () 是否过期 |
void | release () 释放令牌 |
4.异常处理
异常情况 | 处理方式 |
客户端请求服务端同步策略配置失败 | 此种场景为客户端首次启动时发生,此时由于客户端无优先策略配置,对于所有请求都按同一优先级进行限流控制。当达到配置的轮询间隔时期后,客户端再次尝试向服务端请求策略配置信息。 |
相关文章推荐
- java线程之线程中断的用处
- 关于AR学院
- Swift入门(七)——结构体(Struct)
- Linux资源管理之cgroups简介
- UVA - 12532 Interval Product
- 原码、反码、补码
- muduo::EventLoop分析
- ASP.NET MVC 小牛之旅3:Routing——网址路由
- JFinal model简单包装,版本2
- OpenGL像素缓冲对象(PBO)
- 数字三角形
- SPOJ QTREE4 Query on a tree IV (边分治 + 堆)
- CRM项目图形交互界面设计
- volley学习笔记(四):Android利用Volley异步加载数据(JSON和图片)完整示例
- hdoj 2078 复习时间
- 中国工程院院士张尧学:透明计算/云计算操作系统
- 033 Search in Rotated Sorted Array[Leetcode]
- 08 JAVA 线程
- Joke with permutation
- jQuery - 自定义li元素的FocusColor