2

以下に貼り付けた Spike Arrest ポリシーを Apigee API に追加すると、そのクライアント IP から Apigee へのすべての API 呼び出しがカウントされ、制限を超えたかどうかが計算されますか? それとも、API ごとに個別にカウントを維持し、API/API バンドルごとにポリシーを適用しますか?

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SpikeArrest enabled="true" continueOnError="true" async="false" name="SpikeArrestCheck">
    <DisplayName>Spike Arrest Policy</DisplayName>
    <FaultRules/>
    <Properties/>
    <Identifier ref="proxy.client.ip"/>
    <Rate>100ps</Rate>
</SpikeArrest>
4

4 に答える 4

3

以下に貼り付けた Spike Arrest ポリシーを Apigee API に追加すると、そのクライアント IP から Apigee へのすべての API 呼び出しがカウントされ、制限を超えたかどうかが計算されますか? それとも、API ごとに個別にカウントを維持し、API/API バンドルごとにポリシーを適用しますか?

カウントは、API バンドルごと、ポリシー名ごとに保持されます (org と env は指定されています)。バンドル間で同じ識別子を使用したとしても、異なる API バンドルのスパイク停止を結び付ける方法はありません。

私は SpikeArrest ポリシーを使用してこれをratelimit.<spike arrest policy name>.used.countテストし、2 つの異なる API バンドルでテストされた値を観察しました。両方のポリシーが同じ名前と同じ識別子です。 2 つのバケット/カウンターは個別に処理されます

于 2014-02-12T01:36:09.500 に答える
2

次のように、Spike Arrest 識別子を設定できます。

<SpikeArrest name="SpikeArrest">
    <Rate>10ps</Rate>
    <Identifier ref="someVariable" />
</SpikeArrest>

上記の Spike Arrest ポリシーの範囲は、現在の組織、環境、バンドル、およびポリシー名に限定されています。異なるポリシー、バンドル、環境、または組織を通過するトラフィックは、上記のポリシーのスパイク阻止に影響しません。また、識別子を指定しているため、「someVariable」に格納された値が同じトラフィックのみをまとめて「カウント」します。ポリシーに識別子が指定されていない場合、同じポリシー、バンドル、環境、および組織のすべてのトラフィックがまとめてカウントされます。

Spike Arrest は、メッセージ プロセッサごとに個別に追跡されることに注意してください。これらは現在、カウントではなくレート制限として実装されています。1 秒あたり 100 を指定すると、リクエストは 10 ミリ秒 (1/100 秒) ごとに 1 つしか受信できないことを意味します。同じメッセージ プロセッサでの 10 ミリ秒以内の 2 番目のリクエストは拒否されます。通常、少数は推奨されません。数が多い場合でも、2 つの要求がほぼ同時に同じメッセージ プロセッサに到着すると、1 つが拒否されます。

于 2014-02-06T21:37:22.090 に答える