第1章 總體介紹
1. 概述
2. 功能描述
3. 應(yīng)用限流策略
第2章 業(yè)務(wù)限流配置
1. 說明
2. Context管理
3. 令牌池管理
4. 優(yōu)先級(jí)隊(duì)列管理
第3章 應(yīng)用端接入
1. 引入依賴
2. Spring配置
3. 業(yè)務(wù)限流API
4. 異常處理
名稱 | 說明 | 備注 |
服務(wù)端 | 獨(dú)立部署的限流應(yīng)用服務(wù)端,提供優(yōu)先策略配置,報(bào)警快照接收等功能 |
|
客戶端 | 以jar包形式提供給業(yè)務(wù)應(yīng)用使用接入限流功能 |
|
業(yè)務(wù)應(yīng)用 | 對(duì)應(yīng)具體的快錢產(chǎn)品應(yīng)用 |
|
|
|
|
l 分配令牌時(shí),按照請(qǐng)求的優(yōu)先級(jí)查找對(duì)應(yīng)令牌池隊(duì)列中是否有空閑令牌,若有則返回,否則返回空。
l 業(yè)務(wù)處理完畢后,令牌釋放,歸還至令牌所屬優(yōu)先級(jí)的令牌池。
在運(yùn)維監(jiān)控系統(tǒng)中選擇限流配置管理
在限流配置管理界面上可維護(hù)新增刪除和修改context
context名稱為任意字符串
快照發(fā)送時(shí)間為0時(shí),不發(fā)送快照
暫停按鈕可禁用該context的限流,此時(shí)業(yè)務(wù)請(qǐng)求都可通過
點(diǎn)擊context名稱可進(jìn)入context下的令牌池界面
一個(gè)Context下可以配置多個(gè)令牌池
令牌池名稱可為任意字符串
暫停按鈕可禁用該令牌池的限流,此時(shí)業(yè)務(wù)請(qǐng)求都可通過
點(diǎn)擊修改可修改令牌池的數(shù)量和超時(shí)時(shí)間等參數(shù)
點(diǎn)擊令牌池名稱可進(jìn)入令牌池下的優(yōu)先級(jí)配置界面
匹配值:可是是普通字符串和正則表達(dá)式,其中正則表達(dá)式要用/括起,如/.*/。其他形式視為普通字符串,多個(gè)匹配值之間用空格分開.除了/.*/以外,應(yīng)盡量避免使用正則表達(dá)式,以免影響性能。
最大并發(fā)請(qǐng)求數(shù):請(qǐng)求token是異步實(shí)現(xiàn)的,這個(gè)參數(shù)指定了異步請(qǐng)求隊(duì)列的最大任務(wù)數(shù)量。
<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}" />
<!-- 以下參數(shù)可選 --> <!-- 獲取token最大超時(shí)時(shí)間,默認(rèn)為10000 --> <property name="tokenGettingTaskTimeOut" value="3000" /> <!-- 啟動(dòng)后加載配置的延遲時(shí)間,默認(rèn)為60000 --> <property name="configReloadDelay" value="10000" /> <!-- 刷新配置的間隔時(shí)間,默認(rèn)為30000 --> <property name="configReloadInterval" value="60000" /> </bean> |
其中myContext是你自已配置的context名稱
${inf.fc.server.url}是服務(wù)端地址,如果接入ACMS的話可以直接引入這個(gè)占位符
類摘要 | |
令牌對(duì)象 | |
限流控制主入口 | |
|
java.lang.Object
com.bill99.fc.service.token.TokenPoolManager
public class TokenPoolManager
extends java.lang.Object
限流控制主入口
方法摘要 | |
|
|
|
|
參數(shù): poolName - 令牌池名稱,與服務(wù)端配置的令牌池名稱對(duì)應(yīng) in - 業(yè)務(wù)參數(shù),用于確定優(yōu)先級(jí) 返回: 成功時(shí)為Token實(shí)例,無可用令牌時(shí)返回null | |
|
|
|
|
java.lang.Object
com.bill99.fc.service.token.Token
public class Token
extends java.lang.Object
令牌對(duì)象
方法摘要 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用示例:
//….. //獲得令牌 Token t = TokenPoolManager.getTokenPoolManager.getToken(“/internal/txn”, ” 999451145110001 &PUR”); //業(yè)務(wù)處理 //…. //業(yè)務(wù)處理完畢,歸還令牌 t.releaseToken(); |
異常情況 | 處理方式 |
客戶端請(qǐng)求服務(wù)端同步策略配置失敗 | 此種場(chǎng)景為客戶端首次啟動(dòng)時(shí)發(fā)生,此時(shí)由于客戶端無優(yōu)先策略配置,對(duì)于所有請(qǐng)求都按同一優(yōu)先級(jí)進(jìn)行限流控制。當(dāng)達(dá)到配置的輪詢間隔時(shí)期后,客戶端再次嘗試向服務(wù)端請(qǐng)求策略配置信息。 |
|
|
聯(lián)系客服