Chính sách định mức

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Nội dung

Sử dụng Chính sách hạn mức để định cấu hình số lượng thông báo yêu cầu mà proxy API cho phép trong một khoảng thời gian, chẳng hạn như một phút, một giờ, một ngày, một tuần hoặc một tháng. Bạn có thể đặt hạn mức giống nhau cho tất cả ứng dụng truy cập vào proxy API hoặc bạn có thể đặt hạn mức dựa trên:

  • Sản phẩm chứa proxy API
  • Ứng dụng yêu cầu API
  • Nhà phát triển ứng dụng
  • Nhiều tiêu chí khác

Đừng sử dụng Hạn mức để bảo vệ khỏi tình trạng lưu lượng truy cập tăng đột biến tổng thể. Để làm việc đó, hãy sử dụng chính sách Ngăn chặn sự cố tăng đột biến. Xem Chính sách về hành vi tăng đột biến.

Video

Những video này giới thiệu cách quản lý hạn mức theo Chính sách về hạn mức:

Giới thiệu (Edge mới)

Giới thiệu (Edge phiên bản cũ)

Hạn mức động

Phân tán và đồng bộ

Trọng số thông báo

Lịch

Cửa sổ lăn

Flexi

Hạn mức có điều kiện

Biến flow

Xử lý lỗi

Mẫu

Các mã mẫu chính sách này minh hoạ cách bắt đầu và kết thúc khoảng thời gian hạn mức theo:

Hạn mức linh hoạt hơn

<Quota name="CheckQuota"> 
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
  <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/>
</Quota>

Hạn mức động cho phép bạn định cấu hình một Chính sách hạn mức duy nhất để thực thi nhiều chế độ cài đặt Hạn mức dựa trên thông tin được chuyển đến Chính sách hạn mức. Một thuật ngữ khác cho chế độ cài đặt Hạn mức trong ngữ cảnh này là "Gói dịch vụ". Hạn mức động sẽ kiểm tra "Gói dịch vụ" của ứng dụng, sau đó thực thi các chế độ cài đặt đó.

Lưu ý: Nếu bạn chỉ định cả giá trị và tham chiếu cho một phần tử, thì tham chiếu sẽ được ưu tiên. Nếu tham chiếu không phân giải được trong thời gian chạy, thì giá trị này sẽ được sử dụng.

Ví dụ: khi tạo một sản phẩm API, bạn có thể tuỳ ý đặt giới hạn hạn mức, đơn vị thời gian và khoảng thời gian được phép. Tuy nhiên, việc đặt các giá trị này trên sản phẩm API không buộc phải sử dụng các giá trị đó trong proxy API. Bạn cũng phải thêm Chính sách hạn mức vào proxy API để đọc các giá trị này. Hãy xem bài viết Tạo sản phẩm API để biết thêm thông tin.

Trong ví dụ trên, proxy API chứa chính sách Hạn mức sử dụng sử dụng chính sách VerifyAPIKey có tên là verify-api-key để xác thực khoá API được truyền trong một yêu cầu. Sau đó, chính sách Hạn mức sẽ truy cập vào các biến luồng từ chính sách Xác minhAPIKey để đọc các giá trị hạn mức được đặt trên sản phẩm API. Để biết thêm về các biến luồng VerifyAPIKey, hãy xem Chính sách về khoá API xác minh.

Một cách khác là đặt các thuộc tính tuỳ chỉnh trên từng nhà phát triển hoặc ứng dụng, sau đó đọc các giá trị đó trong Chính sách hạn mức. Ví dụ: bạn muốn đặt các giá trị hạn mức khác nhau cho mỗi nhà phát triển. Trong trường hợp này, bạn đặt các thuộc tính tuỳ chỉnh trên nhà phát triển chứa giới hạn, đơn vị thời gian và khoảng thời gian. Sau đó, bạn tham chiếu các giá trị này trong Chính sách hạn mức như minh hoạ bên dưới:

<Quota name="DeveloperQuota"> 
  <Identifier ref="verifyapikey.verify-api-key.client_id"/> 
  <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> 
  <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> 
  <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> 
</Quota>

Ví dụ này cũng sử dụng các biến luồng VerifyAPIKey để tham chiếu đến các thuộc tính tuỳ chỉnh được đặt trên nhà phát triển.

Bạn có thể sử dụng bất kỳ biến nào để đặt các thông số của Chính sách hạn mức. Các biến đó có thể đến từ:

  • Biến flow
  • Thuộc tính trên sản phẩm, ứng dụng hoặc nhà phát triển API
  • Bản đồ khoá-giá trị (KVM)
  • Tiêu đề, tham số truy vấn, tham số biểu mẫu, v.v.

Đối với mỗi proxy API, bạn có thể thêm một chính sách Hạn mức tham chiếu đến cùng một biến như tất cả các chính sách Hạn mức khác trong tất cả các proxy khác hoặc chính sách Hạn mức có thể tham chiếu đến các biến riêng biệt cho chính sách và proxy đó.

Thời gian bắt đầu

<Quota name="QuotaPolicy" type="calendar">
  <StartTime>2017-02-18 10:30:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

Đối với Hạn mức có type được đặt thành calendar, bạn phải xác định giá trị <StartTime> rõ ràng. Giá trị thời gian là giờ GMT, không phải giờ địa phương. Nếu bạn không cung cấp giá trị <StartTime> cho chính sách thuộc loại calendar, Edge sẽ báo lỗi.

Bộ đếm Hạn mức cho mỗi ứng dụng được làm mới dựa trên các giá trị <StartTime>, <Interval><TimeUnit>. Trong ví dụ này, Hạn mức bắt đầu được tính từ 10:30 sáng theo giờ GMT vào ngày 18 tháng 2 năm 2017 và làm mới mỗi 5 giờ. Do đó, lần làm mới tiếp theo sẽ diễn ra vào lúc 3:30 chiều theo giờ GMT vào ngày 18 tháng 2 năm 2017.

Bộ đếm quyền truy cập

<Quota name="QuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

Proxy API có quyền truy cập vào các biến luồng do Chính sách hạn mức đặt ra. Bạn có thể truy cập vào các biến luồng này trong proxy API để thực hiện quá trình xử lý có điều kiện, theo dõi chính sách khi chính sách đó sắp đạt đến hạn mức hạn mức, trả về bộ đếm hạn mức hiện tại cho một ứng dụng hoặc vì các lý do khác.

Vì quyền truy cập vào các biến flow cho chính sách dựa trên thuộc tính name của chính sách, nên đối với chính sách có tên QuotaPolicy ở trên, bạn truy cập vào các biến flow của chính sách đó ở dạng:

  • ratelimit.QuotaPolicy.allowed.count: Số lượng được phép.
  • ratelimit.QuotaPolicy.used.count: Giá trị bộ đếm hiện tại.
  • ratelimit.QuotaPolicy.expiry.time: Thời gian theo giờ UTC khi bộ đếm đặt lại.

Bạn có thể truy cập vào nhiều biến flow khác, như mô tả dưới đây.

Ví dụ: bạn có thể sử dụng chính sách AssignMessage sau đây để trả về các giá trị của biến luồng Hạn mức dưới dạng tiêu đề phản hồi:

<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars">
    <AssignTo createNew="false" type="response"/>
    <Set>
        <Headers>
            <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header>
            <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header>
            <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

Yêu cầu đầu tiên

<Quota name="MyQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="10000"/>
</Quota>

Sử dụng mã mẫu này để thực thi hạn mức 10.000 lệnh gọi mỗi giờ. Chính sách này đặt lại bộ đếm hạn mức vào đầu mỗi giờ. Nếu bộ đếm đạt đến hạn mức 10.000 cuộc gọi trước khi hết giờ, thì các cuộc gọi vượt quá 10.000 sẽ bị từ chối.

Ví dụ: nếu bộ đếm bắt đầu tại 2017-07-08 07:00:00, thì bộ đếm sẽ đặt lại về 0 tại 2017-07-08 08:00:00 (1 giờ kể từ thời gian bắt đầu). Nếu nhận được tin nhắn đầu tiên tại 2017-07-08 07:35:28 và số lượng tin nhắn đạt đến 10.000 trước 2017-07-08 08:00:00, thì các lệnh gọi vượt quá số lượng đó sẽ bị từ chối cho đến khi số lượng được đặt lại vào đầu giờ.

Thời gian đặt lại bộ đếm dựa trên tổ hợp <Interval><TimeUnit>. Ví dụ: nếu bạn đặt <Interval> thành 12 cho <TimeUnit> giờ, thì bộ đếm sẽ đặt lại sau mỗi 12 giờ. Bạn có thể đặt <TimeUnit> thành phút, giờ, ngày, tuần hoặc tháng.

Bạn có thể tham chiếu chính sách này ở nhiều vị trí trong proxy API. Ví dụ: bạn có thể đặt quy trình này trên Proxy PreFlow để quy trình này được thực thi trên mọi yêu cầu. Hoặc bạn có thể đặt lớp này trên nhiều luồng trong proxy API. Nếu bạn sử dụng chính sách này ở nhiều vị trí trong proxy, thì chính sách này sẽ duy trì một bộ đếm duy nhất được cập nhật bởi tất cả các thực thể của chính sách.

Ngoài ra, bạn có thể xác định nhiều Chính sách hạn mức trong proxy API. Mỗi chính sách Hạn mức duy trì bộ đếm riêng, dựa trên thuộc tính name của chính sách.

Đặt giá trị nhận dạng

<Quota name="QuotaPolicy" type="calendar">
  <Identifier ref="request.header.clientId"/> 
  <StartTime>2017-02-18 10:00:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

Theo mặc định, chính sách Hạn mức xác định một bộ đếm duy nhất cho proxy API, bất kể nguồn gốc của yêu cầu. Ngoài ra, bạn có thể sử dụng thuộc tính <Identifier> với Chính sách hạn mức để duy trì các bộ đếm riêng biệt dựa trên giá trị của thuộc tính <Identifier>.

Ví dụ: sử dụng thẻ <Identifier> để xác định các bộ đếm riêng biệt cho mọi mã ứng dụng. Trên một yêu cầu đến proxy, ứng dụng khách sẽ chuyển một tiêu đề chứa clientID, như trong ví dụ trên.

Bạn có thể chỉ định bất kỳ biến flow nào cho thuộc tính <Identifier>. Ví dụ: bạn có thể chỉ định rằng một tham số truy vấn có tên id chứa giá trị nhận dạng duy nhất:

<Identifier ref="request.queryparam.id"/>

Nếu sử dụng chính sách VerifyAPIKey để xác thực khoá API hoặc chính sách OAuthV2 bằng mã thông báo OAuth, bạn có thể sử dụng thông tin trong khoá hoặc mã thông báo API để xác định từng bộ đếm cho cùng một chính sách Hạn mức. Ví dụ: thẻ <Identifier> sau đây sử dụng biến flow client_id của chính sách VerifyAPIKey có tên là verify-api-key:

<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>

Giờ đây, mỗi giá trị client_id duy nhất sẽ xác định bộ đếm riêng trong chính sách Hạn mức.

Lớp

<Quota name="QuotaPolicy">
  <Interval>1</Interval>
  <TimeUnit>day</TimeUnit>
  <Allow>
    <Class ref="request.header.developer_segment">
      <Allow class="platinum" count="10000"/>
      <Allow class="silver" count="1000" />
    </Class>
  </Allow>
</Quota>

Bạn có thể tự động đặt giới hạn Hạn mức bằng cách sử dụng số lượng Hạn mức dựa trên lớp. Trong ví dụ này, giới hạn hạn mức được xác định bằng giá trị của tiêu đề developer_segment được truyền cùng với mỗi yêu cầu. Biến đó có thể có giá trị platinum hoặc silver. Nếu tiêu đề có giá trị không hợp lệ, chính sách sẽ trả về lỗi vi phạm hạn mức.


Giới thiệu về Chính sách hạn mức

Hạn mức là một mức phân bổ các thông báo yêu cầu mà proxy API có thể xử lý trong một khoảng thời gian, chẳng hạn như phút, giờ, ngày, tuần hoặc tháng. Chính sách này duy trì các bộ đếm để tính số lượng yêu cầu mà proxy API nhận được. Khả năng này cho phép nhà cung cấp API thực thi các giới hạn về số lượng lệnh gọi API mà ứng dụng thực hiện trong một khoảng thời gian. Ví dụ: khi sử dụng Chính sách hạn mức, bạn có thể giới hạn ứng dụng ở mức 1 yêu cầu mỗi phút hoặc 10.000 yêu cầu mỗi tháng.

Ví dụ: nếu Hạn mức được xác định là 10.000 tin nhắn mỗi tháng, thì việc giới hạn tốc độ sẽ bắt đầu sau tin nhắn thứ 10.000. Không quan trọng là 10.000 thư được tính vào ngày đầu tiên hay ngày cuối cùng của khoảng thời gian đó; không được phép có thêm yêu cầu nào cho đến khi bộ đếm Hạn mức tự động đặt lại vào cuối khoảng thời gian đã chỉ định hoặc cho đến khi Hạn mức được đặt lại rõ ràng bằng cách sử dụng Chính sách đặt lại Hạn mức.

Một biến thể của Hạn mức có tên là SpikeArrest ngăn chặn sự gia tăng đột biến (hoặc bùng nổ) lưu lượng truy cập có thể xảy ra do mức sử dụng tăng đột biến, ứng dụng bị lỗi hoặc các cuộc tấn công độc hại. Để biết thêm thông tin về SpikeArrest, hãy xem Chính sách về SpikeArrest.

Hạn mức áp dụng cho từng proxy API và không được phân phối giữa các proxy API. Ví dụ: nếu bạn có 3 proxy API trong một sản phẩm API, thì một hạn mức sẽ không được chia sẻ trên cả 3 proxy API, ngay cả khi cả 3 proxy API đều sử dụng cùng một cấu hình chính sách hạn mức.

Các loại chính sách về hạn mức

Chính sách Hạn mức hỗ trợ một số loại chính sách: mặc định, calendar, flexirollingwindow. Mỗi loại xác định thời điểm bộ đếm hạn mức bắt đầu và thời điểm đặt lại, như trong bảng sau:

Đơn vị Thời gian Đặt lại mặc định (hoặc rỗng) đặt lại lịch đặt lại flexi
phút Đầu phút tiếp theo Một phút sau <StartTime> Một phút sau yêu cầu đầu tiên
giờ Đầu giờ tiếp theo Một giờ sau <StartTime> Một giờ sau yêu cầu đầu tiên
ngày Nửa đêm theo giờ GMT của ngày hiện tại 24 giờ sau <StartTime> 24 giờ sau yêu cầu đầu tiên
tuần 00:00 Chủ Nhật theo Giờ chuẩn Greenwich vào cuối tuần Một tuần sau <StartTime> Một tuần sau khi yêu cầu lần đầu
tháng 00:00 (giờ GMT) vào ngày cuối cùng của tháng Một tháng (28 ngày) sau <StartTime> Một tháng (28 ngày) sau yêu cầu đầu tiên

Đối với type="calendar", bạn phải chỉ định giá trị của <StartTime>.

Bảng này không liệt kê giá trị cho loại rollingwindow. Hạn mức theo "cửa sổ" lăn hoạt động bằng cách đặt kích thước của "cửa sổ" hạn mức, chẳng hạn như cửa sổ một giờ hoặc một ngày. Khi một yêu cầu mới đến, chính sách sẽ xác định xem hạn mức đã bị vượt quá trong "khoảng thời gian" trước đó hay chưa.

Ví dụ: bạn xác định một khoảng thời gian 2 giờ cho phép 1.000 yêu cầu. Một yêu cầu mới được gửi vào lúc 4:45 chiều.Chính sách này tính số lượng hạn mức trong khoảng thời gian 2 giờ qua, tức là số lượng yêu cầu kể từ 2:45 chiều. Nếu bạn chưa vượt quá hạn mức trong khoảng thời gian 2 giờ đó, thì yêu cầu sẽ được chấp nhận.

Một phút sau, vào lúc 4:46 chiều, một yêu cầu khác lại được gửi đến. Bây giờ, chính sách sẽ tính số lượng hạn mức kể từ 2:46 chiều để xác định xem bạn đã vượt quá hạn mức hay chưa.

Đối với loại rollingwindow, bộ đếm không bao giờ đặt lại mà được tính toán lại trên mỗi yêu cầu.

Tìm hiểu về bộ đếm hạn mức

Theo mặc định, Chính sách hạn mức duy trì một bộ đếm, bất kể bạn tham chiếu bao nhiêu lần trong một proxy API. Tên của bộ đếm hạn mức dựa trên thuộc tính name của chính sách.

Ví dụ: bạn tạo một chính sách Hạn mức có tên là MyQuotaPolicy với giới hạn là 5 yêu cầu và đặt chính sách đó trên nhiều luồng (Luồng A, B và C) trong proxy API. Mặc dù được sử dụng trong nhiều luồng, nhưng lớp này vẫn duy trì một bộ đếm duy nhất được cập nhật bởi tất cả các thực thể của chính sách:

  • Flow A được thực thi -> MyQuotaPolicy được thực thi và bộ đếm = 1
  • Flow B được thực thi -> MyQuotaPolicy được thực thi và bộ đếm = 2
  • Flow A được thực thi -> MyQuotaPolicy được thực thi và bộ đếm = 3
  • Flow C được thực thi -> MyQuotaPolicy được thực thi và bộ đếm = 4
  • Flow A được thực thi -> MyQuotaPolicy được thực thi và bộ đếm = 5

Yêu cầu tiếp theo đối với bất kỳ luồng nào trong số ba luồng này sẽ bị từ chối vì bộ đếm hạn mức đã đạt đến giới hạn.

Việc sử dụng cùng một chính sách Hạn mức ở nhiều vị trí trong luồng proxy API có thể vô tình khiến Hạn mức hết nhanh hơn dự kiến là một mô hình phản tác dụng được mô tả trong The Book of Apigee Edge Antipatterns (Sách về các mô hình phản tác dụng của Apigee Edge).

Ngoài ra, bạn có thể xác định nhiều chính sách Hạn mức trong proxy API và sử dụng một chính sách khác nhau trong mỗi luồng. Mỗi chính sách Hạn mức duy trì bộ đếm riêng, dựa trên thuộc tính name của chính sách.

Hoặc sử dụng các phần tử <Class> hoặc <Identifier> trong chính sách Hạn mức để xác định nhiều bộ đếm riêng biệt trong một chính sách. Bằng cách sử dụng các phần tử này, một chính sách có thể duy trì nhiều bộ đếm dựa trên ứng dụng đưa ra yêu cầu, nhà phát triển ứng dụng đưa ra yêu cầu, mã ứng dụng hoặc giá trị nhận dạng ứng dụng khác, v.v. Hãy xem các ví dụ ở trên để biết thêm thông tin về cách sử dụng phần tử <Class> hoặc <Identifier>.

Ký hiệu thời gian

Tất cả thời gian của Hạn mức đều được đặt thành múi giờ Giờ phối hợp quốc tế (UTC).

Cách ghi thời gian hạn mức tuân theo cách ghi ngày theo tiêu chuẩn quốc tế được xác định trong Tiêu chuẩn quốc tế ISO 8601.

Ngày được xác định là năm, tháng và ngày, ở định dạng sau: YYYY-MM-DD. Ví dụ: 2015-02-04 đại diện cho ngày 4 tháng 2 năm 2015.

Thời gian trong ngày được xác định là giờ, phút và giây theo định dạng sau: hours:minutes:seconds. Ví dụ: 23:59:59 đại diện cho thời gian một giây trước nửa đêm.

Xin lưu ý rằng có hai ký hiệu, 00:00:0024:00:00, để phân biệt hai nửa đêm có thể liên kết với một ngày. Do đó, 2015-02-04 24:00:00 có cùng ngày và giờ với 2015-02-05 00:00:00. Cách sau thường là ký hiệu được ưu tiên.

Lấy chế độ cài đặt hạn mức từ cấu hình sản phẩm API

Bạn có thể đặt hạn mức hạn mức trong cấu hình sản phẩm API. Những giới hạn đó không tự động thực thi hạn mức. Thay vào đó, bạn có thể tham chiếu chế độ cài đặt hạn mức sản phẩm trong chính sách hạn mức. Sau đây là một số ưu điểm của việc đặt hạn mức cho sản phẩm để các chính sách hạn mức tham chiếu:

  • Chính sách hạn mức có thể sử dụng chế độ cài đặt thống nhất trên tất cả proxy API trong sản phẩm API.
  • Bạn có thể thực hiện các thay đổi về thời gian chạy đối với chế độ cài đặt hạn mức trên một sản phẩm API và các chính sách hạn mức tham chiếu đến giá trị đó sẽ tự động cập nhật giá trị hạn mức.

Để biết thêm thông tin về cách sử dụng chế độ cài đặt hạn mức từ một sản phẩm API, hãy xem ví dụ "Hạn mức động" ở trên..

Để biết thông tin về cách định cấu hình sản phẩm API có hạn mức hạn mức, hãy xem bài viết Tạo sản phẩm API.

Tham chiếu phần tử

Sau đây là các phần tử và thuộc tính mà bạn có thể định cấu hình trên chính sách này. Xin lưu ý rằng một số tổ hợp phần tử loại trừ lẫn nhau hoặc không bắt buộc. Hãy xem các mẫu để biết cách sử dụng cụ thể. Các biến verifyapikey.VerifyAPIKey.apiproduct.* bên dưới có sẵn theo mặc định khi chính sách Xác minh khoá API có tên "VerifyAPIKey" được dùng để kiểm tra khoá API của ứng dụng trong yêu cầu. Giá trị biến đến từ chế độ cài đặt hạn mức trên sản phẩm API mà khoá được liên kết, như mô tả trong phần Lấy chế độ cài đặt hạn mức từ cấu hình sản phẩm API.

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
   <DisplayName>Quota 3</DisplayName>
   <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
   <Allow>
      <Class ref="request.queryparam.time_variable">
        <Allow class="peak_time" count="5000"/>
        <Allow class="off_peak_time" count="1000"/>
      </Class>
   </Allow>
   <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> 
   <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
   <StartTime>2017-7-16 12:00:00</StartTime> 
   <Distributed>false</Distributed> 
   <Synchronous>false</Synchronous> 
   <AsynchronousConfiguration> 
      <SyncIntervalInSeconds>20</SyncIntervalInSeconds> 
      <SyncMessageCount>5</SyncMessageCount> 
   </AsynchronousConfiguration> 
   <Identifier/> 
   <MessageWeight/> 
</Quota>

Thuộc tính <Quota>

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">

Các thuộc tính sau đây dành riêng cho chính sách này.

Thuộc tính Mô tả Mặc định Sự hiện diện
loại

Sử dụng để xác định thời điểm và cách thức bộ đếm hạn mức kiểm tra mức sử dụng hạn mức. Hãy xem phần Các loại chính sách hạn mức để biết thêm thông tin.

Nếu bạn bỏ qua giá trị type, bộ đếm sẽ bắt đầu từ đầu phút/giờ/ngày/tuần/tháng.

Các giá trị hợp lệ bao gồm:

  • calendar: Định cấu hình hạn mức dựa trên thời gian bắt đầu rõ ràng. Bộ đếm Hạn mức cho mỗi ứng dụng được làm mới dựa trên các giá trị <StartTime>, <Interval><TimeUnit> mà bạn đặt.
  • rollingwindow: Định cấu hình hạn mức sử dụng "cửa sổ lăn" để xác định mức sử dụng hạn mức. Với rollingwindow, bạn xác định kích thước của cửa sổ bằng các phần tử <Interval><TimeUnit>; ví dụ: 1 ngày. Khi có yêu cầu, Edge sẽ xem xét thời gian chính xác của yêu cầu (ví dụ: 5:01 chiều), đếm số lượng yêu cầu đã đến trong khoảng thời gian từ đó đến 5:01 chiều vào ngày trước (1 ngày) và xác định xem hạn mức đã bị vượt quá hay chưa trong khoảng thời gian đó.
  • flexi: Định cấu hình hạn mức khiến bộ đếm bắt đầu khi nhận được thông báo yêu cầu đầu tiên từ một ứng dụng và đặt lại dựa trên các giá trị <Interval>, <TimeUnit>.
lịch Không bắt buộc

Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:

Thuộc tính Mô tả Mặc định Sự hiện diện
name

Tên nội bộ của chính sách. Giá trị của thuộc tính name có thể chứa chữ cái, số, dấu cách, dấu gạch nối, dấu gạch dưới và dấu chấm. Giá trị này không được vượt quá 255 ký tự.

(Không bắt buộc) Bạn có thể dùng phần tử <DisplayName> để gắn nhãn chính sách trong trình chỉnh sửa proxy giao diện người dùng quản lý bằng tên ngôn ngữ tự nhiên khác.

Không áp dụng Bắt buộc
continueOnError

Đặt thành false để trả về lỗi khi chính sách không thành công. Điều này là dự kiến đối với hầu hết các chính sách.

Đặt thành true để tiếp tục thực thi luồng ngay cả sau khi có chính sách không thành công.

false Không bắt buộc
enabled

Hãy đặt thành true để thực thi chính sách này.

Đặt thành false để tắt chính sách này. Chính sách này sẽ không được thực thi ngay cả khi luồng đó vẫn được liên kết với một luồng.

đúng Không bắt buộc
async

Thuộc tính này không được dùng nữa.

false Không được dùng nữa

&lt;DisplayName&gt; phần tử

Hãy sử dụng cùng với thuộc tính name để gắn nhãn chính sách trong phần trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.

<DisplayName>Policy Display Name</DisplayName>
Mặc định

Không áp dụng

Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính name của chính sách sẽ là đã sử dụng.

Sự hiện diện Không bắt buộc
Loại Chuỗi

Phần tử <Allow> (Cho phép)

Chỉ định giới hạn số lượng cho hạn mức. Nếu bộ đếm cho chính sách đạt đến giá trị giới hạn này, thì các lệnh gọi tiếp theo sẽ bị từ chối cho đến khi bộ đếm đặt lại.

Dưới đây là 3 cách thiết lập phần tử <Allow>:

<Allow count="2000"/> 
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 

Nếu bạn chỉ định cả countcountRef, thì countRef sẽ được ưu tiên. Nếu countRef không phân giải được trong thời gian chạy, thì giá trị của count sẽ được sử dụng.

Mặc định: Không áp dụng
Trạng thái hiện diện: Không bắt buộc
Loại: Số nguyên

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
số lượng

Sử dụng để chỉ định số lượng thư cho hạn mức.

Ví dụ: giá trị thuộc tính count là 100, Interval là 1 và TimeUnit là tháng chỉ định hạn mức là 100 thư mỗi tháng.

2000 Không bắt buộc
countRef

Sử dụng để chỉ định một biến flow chứa số lượng thông báo cho một hạn mức. countRef được ưu tiên hơn thuộc tính count.

không có Không bắt buộc

Phần tử <Allow>/<Class>

Phần tử <Class> cho phép bạn điều kiện hoá giá trị của phần tử <Allow> dựa trên giá trị của biến flow. Đối với mỗi thẻ con <Allow> khác nhau của <Class>, chính sách sẽ duy trì một bộ đếm khác nhau.

Để sử dụng phần tử <Class>, hãy chỉ định một biến flow bằng cách sử dụng thuộc tính ref cho thẻ <Class>. Sau đó, Edge sử dụng giá trị của biến flow để chọn một trong các thẻ con <Allow> nhằm xác định số lượng được phép của chính sách. Edge so khớp giá trị của biến flow với thuộc tính class của thẻ <Allow>, như minh hoạ dưới đây:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

Trong ví dụ này, bộ đếm hạn mức hiện tại được xác định bằng giá trị của tham số truy vấn time_variable được truyền cùng với mỗi yêu cầu. Biến đó có thể có giá trị là peak_time hoặc off_peak_time. Nếu tham số truy vấn chứa một giá trị không hợp lệ, thì chính sách sẽ trả về lỗi vi phạm hạn mức.

Mặc định: Không áp dụng
Trạng thái hiện diện: Không bắt buộc
Loại: Không áp dụng

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
ref

Sử dụng để chỉ định một biến flow chứa lớp hạn mức cho một hạn mức.

không có Bắt buộc

Phần tử <Allow>/<Class>/<Allow>

Phần tử <Allow> chỉ định giới hạn cho bộ đếm hạn mức do phần tử <Class> xác định. Đối với mỗi thẻ con <Allow> khác nhau của <Class>, chính sách sẽ duy trì một bộ đếm khác nhau.

Ví dụ:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

Trong ví dụ này, Chính sách hạn mức duy trì hai bộ đếm hạn mức có tên là peak_timeoff_peak_time.

Mặc định: Không áp dụng
Trạng thái hiện diện: Không bắt buộc
Loại: Không áp dụng

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
lớp

Xác định tên của bộ đếm hạn mức.

không có Bắt buộc
số lượng Chỉ định hạn mức hạn mức cho bộ đếm. không có Bắt buộc

Phần tử <Interval>

Sử dụng để chỉ định một số nguyên (ví dụ: 1, 2, 5, 60, v.v.) sẽ được ghép nối với TimeUnit mà bạn chỉ định (phút, giờ, ngày, tuần hoặc tháng) để xác định khoảng thời gian mà Edge tính toán mức sử dụng hạn mức.

Ví dụ: Interval24 với TimeUnithour có nghĩa là hạn mức sẽ được tính trong vòng 24 giờ.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
Mặc định: không có
Trạng thái hiện diện: Bắt buộc
Loại: Số nguyên

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
ref

Sử dụng để chỉ định một biến flow chứa khoảng thời gian cho một hạn mức. ref được ưu tiên hơn giá trị khoảng thời gian rõ ràng. Nếu bạn chỉ định cả tệp tham chiếu và giá trị, thì tệp tham chiếu sẽ được ưu tiên. Nếu ref không phân giải được trong thời gian chạy, thì giá trị này sẽ được sử dụng.

không có Không bắt buộc

Phần tử <TimeUnit>

Sử dụng để chỉ định đơn vị thời gian áp dụng cho hạn mức.

Ví dụ: Interval24 với TimeUnithour có nghĩa là hạn mức sẽ được tính trong vòng 24 giờ.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
Mặc định: không có
Trạng thái hiện diện: Bắt buộc
Loại:

Chuỗi. Chọn trong số minute, hour, day, week hoặc month.

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
ref Sử dụng để chỉ định một biến flow chứa đơn vị thời gian cho hạn mức. ref được ưu tiên hơn giá trị khoảng thời gian rõ ràng. Nếu ref không phân giải được trong thời gian chạy, thì giá trị này sẽ được sử dụng. không có Không bắt buộc

Phần tử <StartTime>

Khi type được đặt thành calendar,, hãy chỉ định ngày và giờ mà bộ đếm hạn mức sẽ bắt đầu đếm, bất kể ứng dụng nào có nhận được yêu cầu hay không.

Ví dụ:

<StartTime>2017-7-16 12:00:00</StartTime>
Mặc định: không có
Trạng thái hiện diện: Bắt buộc khi type được đặt thành calendar.
Loại:

Chuỗi ở định dạng ngày và giờ ISO 8601.

Phần tử <Distributed>

Một lượt cài đặt Edge có thể sử dụng một hoặc nhiều Trình xử lý thông báo để xử lý các yêu cầu. Đặt phần tử này thành true để chỉ định rằng chính sách phải duy trì một bộ đếm trung tâm và liên tục đồng bộ hoá bộ đếm đó trên tất cả Trình xử lý thông báo. Bộ xử lý thông báo có thể nằm trên các vùng và/hoặc khu vực có sẵn.

Nếu sử dụng giá trị mặc định là false, thì bạn có thể vượt quá hạn mức vì số lượng cho mỗi Trình xử lý thông báo không được chia sẻ:

<Distributed>true</Distributed>

Để đảm bảo rằng các bộ đếm được đồng bộ hoá và cập nhật trên mọi yêu cầu, hãy đặt <Distributed><Synchronous> thành true:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
Mặc định: false
Trạng thái hiện diện: Không bắt buộc
Loại: Boolean

Phần tử <Synchronous>

Đặt thành true để đồng bộ cập nhật bộ đếm hạn mức được phân phối. Điều này có nghĩa là việc cập nhật bộ đếm được thực hiện cùng lúc với việc kiểm tra hạn mức trên một yêu cầu gửi đến API. Đặt thành true nếu bạn không cho phép bất kỳ lệnh gọi API nào vượt quá hạn mức.

Đặt thành false để cập nhật bộ đếm hạn mức không đồng bộ. Điều này có nghĩa là một số lệnh gọi API vượt quá hạn mức có thể sẽ được thực hiện, tuỳ thuộc vào thời điểm bộ đếm hạn mức trong kho lưu trữ trung tâm được cập nhật không đồng bộ. Tuy nhiên, bạn sẽ không phải đối mặt với những tác động tiềm ẩn đến hiệu suất liên quan đến các bản cập nhật đồng bộ.

Khoảng thời gian cập nhật không đồng bộ mặc định là 10 giây. Sử dụng phần tử AsynchronousConfiguration để định cấu hình hành vi không đồng bộ này.

<Synchronous>false</Synchronous>
Mặc định: false
Trạng thái hiện diện: Không bắt buộc
Loại: Boolean

Phần tử <AsynchronousConfiguration>

Định cấu hình khoảng thời gian đồng bộ hoá giữa các bộ đếm hạn mức được phân phối khi phần tử cấu hình chính sách <Synchronous> không có hoặc có và được đặt thành false.

Bạn có thể đồng bộ hoá sau một khoảng thời gian hoặc số lượng thông báo bằng cách sử dụng phần tử con SyncIntervalInSeconds hoặc SyncMessageCount. Các giá trị này loại trừ lẫn nhau. Ví dụ:

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

hoặc

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
Mặc định: SyncIntervalInSeconds = 10 giây
Trạng thái hiện diện: Không bắt buộc; bị bỏ qua khi <Synchronous> được đặt thành true.
Loại:

Khu vực khép kín

Phần tử <AsynchronousConfiguration>/<SyncIntervalInSeconds>

Sử dụng thuộc tính này để ghi đè hành vi mặc định, trong đó các bản cập nhật không đồng bộ được thực hiện sau khoảng thời gian 10 giây.

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

Khoảng thời gian đồng bộ hoá phải >= 10 giây như mô tả trong chủ đề Giới hạn.

Mặc định: 10
Trạng thái hiện diện: Không bắt buộc
Loại:

Số nguyên

<AsynchronousConfiguration>/<SyncMessageCount> element

Chỉ định số lượng yêu cầu trên tất cả các trình xử lý thông báo Apigee giữa các lần cập nhật hạn mức.

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>

Ví dụ này chỉ định rằng số lượng hạn mức được cập nhật mỗi 5 yêu cầu trên mỗi trình xử lý thông báo Apigee Edge.

Mặc định: Không có
Trạng thái hiện diện: Không bắt buộc
Loại:

Số nguyên

Phần tử <Identifier>

Sử dụng phần tử <Identifier> để định cấu hình chính sách nhằm tạo các bộ đếm duy nhất dựa trên biến flow.

Bạn có thể tạo bộ đếm riêng biệt cho các đặc điểm do biến luồng xác định. Ví dụ: bạn có thể sử dụng địa chỉ email của nhà phát triển để liên kết hạn mức với một nhà phát triển cụ thể. Bạn có thể sử dụng nhiều biến để xác định hạn mức, cho dù bạn đang sử dụng biến tuỳ chỉnh hay biến được xác định trước, chẳng hạn như các biến có trong Chính sách xác minh khoá API. Xem thêm phần Tham chiếu biến.

Nếu bạn không sử dụng phần tử này, chính sách sẽ sử dụng một bộ đếm duy nhất được áp dụng cho hạn mức.

Phần tử này cũng được thảo luận trong bài đăng sau đây trên Cộng đồng Apigee: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
Mặc định: Không áp dụng
Trạng thái hiện diện: Không bắt buộc
Loại:

Chuỗi

Thuộc tính

Thuộc tính Mô tả Mặc định Sự hiện diện
ref

Chỉ định một biến flow xác định bộ đếm để sử dụng cho yêu cầu. Giá trị nhận dạng có thể là tiêu đề HTTP, tham số truy vấn, tham số biểu mẫu hoặc nội dung thông báo dành riêng cho từng ứng dụng, người dùng ứng dụng, nhà phát triển ứng dụng, sản phẩm API hoặc đặc điểm khác.

<Identifier> thường dùng nhất để xác định riêng biệt các ứng dụng là client_id. client_id là một tên khác của khoá API hoặc khoá người dùng được tạo cho một ứng dụng khi ứng dụng đó được đăng ký trong một tổ chức trên Apigee Edge. Bạn có thể sử dụng giá trị nhận dạng này nếu đã bật khoá API hoặc chính sách uỷ quyền OAuth cho API của mình.

Trong một số trường hợp, bạn phải truy xuất chế độ cài đặt Hạn mức khi không có client_id, chẳng hạn như khi không có chính sách bảo mật. Trong những trường hợp đó, bạn có thể sử dụng Chính sách về thực thể truy cập để truy xuất chế độ cài đặt sản phẩm API thích hợp, sau đó trích xuất các giá trị bằng cách sử dụng ExtractVariables, rồi sử dụng biến ngữ cảnh đã trích xuất trong Chính sách về hạn mức. Để biết thêm thông tin, hãy xem Chính sách về thực thể truy cập.

Không áp dụng Không bắt buộc

Phần tử <MessageWeight>

Sử dụng để chỉ định trọng số được chỉ định cho mỗi thông báo. Sử dụng trọng số thông báo để tăng tác động của các thông báo yêu cầu, chẳng hạn như tiêu thụ nhiều tài nguyên tính toán hơn so với các thông báo khác.

Ví dụ: bạn muốn tính các thông báo POST là "nặng" hoặc tốn kém gấp đôi so với thông báo GET. Do đó, bạn đặt MessageWeight thành 2 cho một POST và 1 cho một GET. Bạn thậm chí có thể đặt MessageWeight thành 0 để yêu cầu không ảnh hưởng đến bộ đếm. Trong ví dụ này, nếu hạn mức là 10 thông báo mỗi phút và MessageWeight cho các yêu cầu POST là 2, thì hạn mức sẽ cho phép 5 yêu cầu POST trong bất kỳ khoảng thời gian 10 phút nào. Mọi yêu cầu bổ sung, POST hoặc GET, trước khi bộ đếm đặt lại sẽ bị từ chối.

Giá trị đại diện cho MessageWeight phải được chỉ định bằng một biến luồng và có thể được trích xuất từ tiêu đề HTTP, tham số truy vấn, tải trọng yêu cầu XML hoặc JSON hoặc bất kỳ biến luồng nào khác. Ví dụ: bạn đặt giá trị này trong một tiêu đề có tên là weight:

<MessageWeight ref="message_weight"/>
Mặc định: Không áp dụng
Trạng thái hiện diện: Không bắt buộc
Loại:

Số nguyên

Biến flow

Các biến Flow được xác định trước sau đây sẽ tự động được điền khi một Chính sách hạn mức thực thi. Để biết thêm thông tin về biến Flow, hãy xem phần Tham khảo biến.

Biến Loại Quyền Mô tả
ratelimit.{policy_name}.allowed.count Dài Chỉ có thể đọc Trả về số lượng hạn mức được phép
ratelimit.{policy_name}.used.count Dài Chỉ có thể đọc Trả về hạn mức hiện tại được sử dụng trong một khoảng thời gian của hạn mức
ratelimit.{policy_name}.available.count Dài Chỉ có thể đọc Trả về số lượng hạn mức hiện có trong khoảng thời gian hạn mức
ratelimit.{policy_name}.exceed.count Dài Chỉ có thể đọc Trả về 1 sau khi vượt quá hạn mức.
ratelimit.{policy_name}.total.exceed.count Dài Chỉ có thể đọc Trả về 1 sau khi vượt quá hạn mức.
ratelimit.{policy_name}.expiry.time Dài Chỉ có thể đọc

Trả về thời gian UTC tính bằng mili giây, xác định thời điểm hạn mức hết hạn và khoảng thời gian hạn mức mới bắt đầu.

Khi loại Chính sách hạn mức là rollingwindow, giá trị này sẽ không hợp lệ vì khoảng thời gian hạn mức không bao giờ hết hạn.

ratelimit.{policy_name}.identifier Chuỗi Chỉ có thể đọc Trả về thông tin tham chiếu giá trị nhận dạng (ứng dụng khách) đính kèm với chính sách
ratelimit.{policy_name}.class Chuỗi Chỉ có thể đọc Trả về lớp được liên kết với giá trị nhận dạng ứng dụng khách
ratelimit.{policy_name}.class.allowed.count Dài Chỉ có thể đọc Trả về số lượng hạn mức được phép được xác định trong lớp
ratelimit.{policy_name}.class.used.count Dài Chỉ có thể đọc Trả về hạn mức đã sử dụng trong một lớp
ratelimit.{policy_name}.class.available.count Dài Chỉ có thể đọc Trả về số lượng hạn mức hiện có trong lớp
ratelimit.{policy_name}.class.exceed.count Dài Chỉ có thể đọc Trả về số lượng yêu cầu vượt quá giới hạn trong lớp trong khoảng thời gian hạn mức hiện tại
ratelimit.{policy_name}.class.total.exceed.count Dài Chỉ có thể đọc Trả về tổng số yêu cầu vượt quá giới hạn trong lớp trên tất cả các khoảng thời gian hạn mức, vì vậy, đây là tổng của class.exceed.count cho tất cả các khoảng thời gian hạn mức.
ratelimit.{policy_name}.failed Boolean Chỉ có thể đọc

Cho biết chính sách có được áp dụng hay không (true hoặc false).

Tham chiếu lỗi

Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi chính sáchXử lý lỗi.

Lỗi thời gian chạy

Những lỗi này có thể xảy ra khi chính sách này thực thi.

Mã lỗi Trạng thái HTTP Nguyên nhân Khắc phục
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 Xảy ra nếu phần tử <Interval> không được xác định trong chính sách Hạn mức. Phần tử này là bắt buộc và dùng để chỉ định khoảng thời gian áp dụng cho hạn mức. Khoảng thời gian có thể là phút, giờ, ngày, tuần hoặc tháng như được xác định bằng phần tử <TimeUnit>.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 Xảy ra nếu phần tử <TimeUnit> không được xác định trong chính sách Hạn mức. Phần tử này là bắt buộc và dùng để xác định đơn vị thời gian áp dụng cho hạn mức. Khoảng thời gian có thể theo phút, giờ, ngày, tuần hoặc tháng.
policies.ratelimit.InvalidMessageWeight 500 Xảy ra nếu giá trị của phần tử <MessageWeight> được chỉ định thông qua một biến luồng không hợp lệ (giá trị không phải là số nguyên).
policies.ratelimit.QuotaViolation 500 Đã vượt quá hạn mức. Không áp dụng

Lỗi triển khai

Tên lỗi Nguyên nhân Khắc phục
InvalidQuotaInterval Nếu khoảng hạn mức được chỉ định trong phần tử <Interval> không phải một số nguyên thì việc triển khai proxy API sẽ không thành công. Ví dụ: nếu khoảng thời gian hạn mức được chỉ định là 0,1 trong phần tử <Interval>, thì việc triển khai phần tử Proxy API không thành công.
InvalidQuotaTimeUnit Nếu đơn vị thời gian đã chỉ định trong phần tử <TimeUnit> không được hỗ trợ, thì việc triển khai proxy API không thành công. Các đơn vị thời gian được hỗ trợ là minute, hour, day, weekmonth.
InvalidQuotaType Nếu loại hạn mức do thuộc tính type trong <Quota> chỉ định không hợp lệ, thì việc triển khai proxy API không thành công. Chiến lược phát hành đĩa đơn các loại hạn mức được hỗ trợ là default, calendar, flexirollingwindow.
InvalidStartTime Nếu định dạng của thời gian được chỉ định trong phần tử <StartTime> là không hợp lệ, thì việc triển khai proxy API không thành công. Định dạng hợp lệ là yyyy-MM-dd HH:mm:ss, đó là định dạng ngày và giờ ISO 8601. Cho Ví dụ: nếu thời gian được chỉ định trong phần tử <StartTime>7-16-2017 12:00:00 thì việc triển khai proxy API không thành công.
StartTimeNotSupported Nếu phần tử <StartTime> được chỉ định có loại hạn mức không phải là calendar, thì việc triển khai proxy API sẽ không thành công. Phần tử <StartTime> là chỉ được hỗ trợ cho loại hạn mức calendar. Ví dụ: nếu thuộc tính type được đặt vào flexi hoặc rolling window trong phần tử <Quota>, thì phương thức không triển khai được proxy API.
InvalidTimeUnitForDistributedQuota Nếu phần tử <Distributed> được đặt thành true và phần tử <TimeUnit> được đặt thành second thì không triển khai proxy API được. Đơn vị thời gian second không hợp lệ cho hạn mức được phân phối.
InvalidSynchronizeIntervalForAsyncConfiguration Nếu giá trị được chỉ định cho phần tử <SyncIntervalInSeconds> trong phần tử Phần tử <AsynchronousConfiguration> trong chính sách Hạn mức nhỏ hơn 0, thì không triển khai được proxy API.
InvalidAsynchronizeConfigurationForSynchronousQuota Nếu bạn đặt giá trị của phần tử <AsynchronousConfiguration> thành true trong chính sách Hạn mức, thì việc này cũng có cấu hình không đồng bộ được xác định bằng phần tử <AsynchronousConfiguration>, sau đó không triển khai proxy API được.

Biến lỗi

Các biến này được đặt khi chính sách này kích hoạt lỗi. Để biết thêm thông tin, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách.

Biến Trong đó Ví dụ:
fault.name="fault_name" fault_name là tên của lỗi, như được liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. fault.name Matches "QuotaViolation"
ratelimit.policy_name.failed policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. ratelimit.QT-QuotaPolicy.failed = true

Ví dụ về phản hồi khi gặp lỗi

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.QuotaViolation"
      },
      "faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default"
   }
}

Ví dụ về quy tắc lỗi

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

Giản đồ

Chủ đề có liên quan

Chính sách về ResetQuota

Chính sách về SpikeArrest

So sánh chính sách về hạn mức, chặn sự kiện tăng đột biến và giới hạn tốc độ đồng thời