第 1 章 概要
1。概要
2. 機能説明
3. 電流制限ポリシーを適用する
第 2 章 ビジネス電流制限の構成
1. 説明
2. コンテキスト管理
3. トークンプール管理
4. 優先キュー管理
第 3 章 アプリケーションへのアクセス
1. 依存関係を導入する
2. スプリング構成
3.業務電流制限API
4. 例外処理
第 1 章 概要
1。概要
1.1. 用語の説明:
名前 |
説明する |
述べる |
サーバ |
独自に導入された電流制限アプリケーション サーバーは、優先ポリシーの設定やアラーム スナップショットの受信などの機能を提供します。 |
|
クライアント |
アクセス電流制限機能を利用する業務アプリケーションにjarパッケージで提供 |
|
ビジネスアプリケーション |
特定の即金商品用途に対応 |
|
|
|
|
2. 機能説明
2.1. 電流制限クライアント
- 1. トークンの割り当て:設定されたトークン容量とタイムアウト時間に従って、トークンの発行、解放、タイムアウト解放が管理されます。
- 2. 同期トークン優先戦略: クライアントはサーバーからポリシー設定情報の変更をロードし、対応するトークン プールにリアルタイムでポリシーを適用します。
- トークン キューイング キューのメンテナンス: ビジネス優先度に応じたキューの挿入やタイムアウト後のキックアウトなど、優先度ポリシーに従ってキューイング キューをメンテナンスします。
- 電流制限パラメータサービス:http経由で電流制限パラメータを提供します。
- 1. 電流制限パラメータの設定とメンテナンス。
2.2. 電流制限サーバー
2.3. ウェブサイトの運営および保守
3. 電流制限ポリシーを適用する
l トークンを割り当てるときは、リクエストの優先度に従って、対応するトークン プール キューにアイドル状態のトークンがあるかどうかを確認し、存在する場合はそれを返し、そうでない場合は空を返します。
l 業務処理が完了すると、トークンは解放され、トークンが属する優先度のトークンプールに戻されます。
第 2 章 ビジネス電流制限の構成
1. 説明
運用保守監視システムにおける電流制限構成管理の選択
2. コンテキスト管理
新規、削除、および変更されたコンテキストは、現在の制限設定管理インターフェイス上で維持できます。
コンテキスト名は任意の文字列です
スナップショット送信時間が0の場合、スナップショットは送信されません。
一時停止ボタンを使用すると、コンテキストの現在の制限を無効にできます。このとき、すべてのビジネス リクエストは通過できます。
コンテキスト名をクリックして、そのコンテキストの下のトークン プール インターフェイスに入ります。
3. トークンプール管理
複数のトークン プールを 1 つのコンテキストで構成できます
トークン プール名には任意の文字列を使用できます
一時停止ボタンを使用すると、トークン プールの現在の制限を無効にすることができます。このとき、ビジネス リクエストは通過できます。
「変更」をクリックして、トークン・プールの数やタイムアウト時間などのパラメータを変更します。
トークン プール名をクリックして、トークン プールの下の優先設定インターフェイスに入ります。
4. 優先キュー管理
一致する値: 通常の文字列または正規表現を使用できます。正規表現は /.*/ のように / で囲む必要があります。その他の形式は通常の文字列として扱われ、複数の一致する値はスペースで区切られます。/.*/ を除いて、パフォーマンスへの影響を避けるために、正規表現はできるだけ避ける必要があります。
同時リクエストの最大数: リクエスト トークンは非同期で実装され、このパラメータは非同期リクエスト キュー内のタスクの最大数を指定します。
第 3 章 アプリケーションへのアクセス
1. 依存関係を導入する
<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"/> |
2. スプリング構成
<bean id= "tokenPoolManager" クラス = "com.bill99.fc.service.token.TokenPoolManagerFactoryBean" > <プロパティ名= "contextName"値= "myContext" /> <プロパティ名= "serverUrl"値= "${inf.fc.server.url}" />
<!-- 次のパラメータはオプションです --> <!-- トークン取得の最大タイムアウト、デフォルトは 10000 --> <プロパティ名= "tokenGettingTaskTimeOut"値= "3000" /> <!-- 起動後の設定ロードの遅延時間、デフォルトは 60000 --> <プロパティ名= "configReloadDelay"値= "10000" /> <!-- 構成を更新する間隔、デフォルトは 30000 --> <プロパティ名= "configReloadInterval"値= "60000" /> </豆> |
ここで、myContext は自分で設定したコンテキスト名です。
${inf.fc.server.url} はサーバー アドレスです。ACMS に接続する場合は、このプレースホルダーを直接導入できます。
3.業務電流制限API
软件包 com.bill99.fc.service.token
类摘要 |
|
令牌对象 |
|
限流控制主入口 |
|
|
com.bill99.fc.service.token
类 TokenPoolManager
java.lang.Object
com.bill99.fc.service.token.TokenPoolManager
public class TokenPoolManager
extends java.lang.Object
限流控制主入口
方法摘要 |
|
|
|
|
|
参数: poolName - 令牌池名称,与服务端配置的令牌池名称对应 in - 业务参数,用于确定优先级 返回: 成功时为Token实例,无可用令牌时返回null |
|
|
|
|
|
com.bill99.fc.service.token
类 Token
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();
|
4. 异常处理
异常情况 |
处理方式 |
客户端请求服务端同步策略配置失败 |
此种场景为客户端首次启动时发生,此时由于客户端无优先策略配置,对于所有请求都按同一优先级进行限流控制。当达到配置的轮询间隔时期后,客户端再次尝试向服务端请求策略配置信息。 |
|
|