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 một khoảng thời gian, chẳng hạn như phút, giờ, ngày, tuần hoặc tháng. Bạn có thể đặt hạn mức là như nhau cho tất cả cá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 có 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 để tránh tình trạng lưu lượng truy cập tăng đột biến. Để làm được điều đó, hãy sử dụng . Xem video Bị bắt giữSpike .

Video

Những video sau đây giới thiệu cách quản lý hạn mức thông qua chính sách về Hạn mức:

Giới thiệu (Lợi thế mới)

Giới thiệu (Cổ điển)

Hạn mức động

Đã phân phối và Đồng bộ

Trọng số thư

Lịch

Cửa sổ cuốn

Flexi

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

Biến luồng

Xử lý lỗi

Mẫu

Các mã mẫu chính sách sau 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 động khác

<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 linh động cho phép bạn thiết lập một chính sách Hạn mức duy nhất để thực thi nhiều 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 của 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 kiểm tra ứng dụng "Gói dịch vụ" 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ì tệp đối 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ị sẽ là đã sử dụng.

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

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

Một cách khác là đặt 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 về 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 thuộc tính tùy chỉnh đối với nhà phát triển có chứa giới hạn, đơn vị thời gian và khoảng thời gian. Sau đó, bạn hãy tham chiếu các giá trị này trong chính sách về Hạn mức như dưới đây 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 thiết lập cho nhà phát triển.

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

  • Biến luồng
  • Tài sản 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 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 khác về Hạn mức trong tất cả các proxy khác hoặc chính sách về Hạn mức có thể tham chiếu các biến riêng 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 bất cứ lúc nào. Nếu bạn không cung cấp giá trị <StartTime> cho một chính sách thuộc loại calendar, Edge gặp lỗi.

Bộ đếm hạn mức cho mỗi ứng dụng được làm mới dựa trên <StartTime>, Các giá trị <Interval><TimeUnit>. Để làm việc này Ví dụ: Hạn mức bắt đầu 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 là vào lúc 3:30 chiều theo giờ GMT 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 được đặt theo chính sách Hạn mức. Bạn có thể truy cập các biến luồng này trong proxy API để thực hiện xử lý có điều kiện, theo dõi chính sách khi tiến gần đến giới hạn hạn mức, trả lại bộ đếm hạn mức hiện tại cho một ứng dụng hoặc cho lý do.

Bởi vì việc truy cập vào các biến luồng cho chính sách là dựa trên các chính sách đối với chính sách ở trên đã đặt tên là QuotaPolicy, thuộc tính name truy cập vào các biến luồng trong biểu mẫu:

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

Bạn có thể sử dụng nhiều biến luồng khác như mô tả dưới đây.

Ví dụ: bạn có thể sử dụng chính sách AllowedMessage sau đây để trả về các giá trị của Hạn mức biến luồng làm 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>

Hãy dùng mã mẫu này để thực thi hạn mức 10.000 cuộc gọi mỗi giờ. Chính sách này sẽ được đặt lại bộ đếm hạn mức ở đầ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ờ, các cuộc gọi vượt quá 10.000 cuộc gọi sẽ bị từ chối.

Ví dụ: nếu bộ đếm bắt đầu từ 2017-07-08 07:00:00 thì bộ đếm sẽ được đặt lại thành 0 lúc 2017-07-08 08:00:00 (1 giờ kể từ thời gian bắt đầu). Nếu thông báo đầu tiên là đã nhận vào 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, các cuộc gọi vượt quá số lượng đó sẽ bị từ chối cho đến số lượng sẽ được đặt lại ở đầu giờ.

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

Bạn có thể tham khảo chính sách này ở nhiều vị trí trong proxy API. Ví dụ: bạn có thể hãy đặt lớp này trên Proxy PreFlow để được thực thi trên mọi yêu cầu. Hoặc, bạn có thể đặt nó trên nhiều luồng trong proxy API. Nếu bạn sử dụng chính sách này ở nhiều nơi trong proxy, công cụ này sẽ duy trì một bộ đếm duy nhất được cập nhật qua tất cả các phiên bản 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 về 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 cho proxy API, bất kể nguồn gốc của một yêu cầu. Ngoài ra, bạn có thể dùng thuộc tính <Identifier> bằng 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 khách. Theo yêu cầu đến proxy của bạn, ứng dụng khách chuyển tiêu đề chứa clientID, như trong ví dụ trên.

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

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

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

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

Mỗi giá trị client_id riêng biệt hiện xác định bộ đếm riêng trong 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 Hạn mức một cách linh động bằng cách sử dụng số lượng Hạn mức theo lớp. Trong ví dụ này, hạn mức được xác định theo giá trị của developer_segment được chuyển cùng với mỗi yêu cầu. Biến đó có thể có giá trị là platinum hoặc silver. Nếu tiêu đề có giá trị không hợp lệ, chính sách sẽ trả về một hạn mức lỗi vi phạm.


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

Hạn mức là việc phân bổ 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 kiểm đếm số lượng các yêu cầu mà proxy API nhận được. Chức năng này cho phép nhà cung cấp API thực thi các giới hạn về số lệnh gọi API do ứng dụng thực hiện trong một khoảng thời gian. Khi sử dụng chính sách Hạn mức, bạn có thể, đối với ví dụ: giới hạn ứng dụng ở 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ì giới hạn số lượng yêu cầu sẽ bắt đầu sau tin nhắn thứ 10.000. Không quan trọng việc 10.000 tin nhắn có được tính vào ngày đầu tiên hay không ngày hoặc ngày cuối cùng của khoảng thời gian đó; không cho phép khu vực yêu cầu bổ sung nào cho đến Bộ đếm hạn mức tự động đặt lại khi hết khoảng thời gian đã chỉ định hoặc cho đến khi Hạn mức được chỉ định rõ ràng đặt lại bằng cách sử dụng tính năng Đặt lại hạn mức .

Một biến thể về Hạn mức có tên là SpikeArrest ngăn chặn việc tăng đột biến (hoặc tăng đột biến) lưu lượng truy cập có thể do việc sử dụng tăng đột ngột, ứ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ề chính sách bắt giữ củaSpike.

Hạn mức áp dụng cho các proxy API riêng lẻ và không được phân phối giữa các proxy API. Ví dụ: nếu bạn có ba proxy API trong một sản phẩm API thì một hạn mức không được dùng chung cho cả ba ngay cả khi cả ba đề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 về Hạn mức hỗ trợ nhiều 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 thời điểm bắt đầu và thời điểm đặt lại, như minh hoạ 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 Bắ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 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 Nửa đêm Chủ Nhật theo giờ GMT cuối tuần Một tuần sau <StartTime> Một tuần sau yêu cầu đầu tiên
tháng Nửa đêm theo giờ GMT của 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 không liệt kê giá trị cho loại rollingwindow. Cửa sổ xoay hạn mức hoạt động bằng cách đặt kích thước của "cửa sổ", chẳng hạn như khoảng thời gian một giờ hoặc một ngày. Khi một yêu cầu mới đến, chính sách xác định xem bạn đã vượt quá hạn mức trước đó hay chưa "cửa sổ" thời gian.

Ví dụ: bạn xác định khoảng thời gian 2 giờ cho phép 1.000 yêu cầu. Yêu cầu mới đến lúc 4:45 chiều.Chính sách tính toán số lượng hạn mức cho khoảng thời gian hai giờ qua, 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 thời hạn 2 giờ, thì yêu cầu sẽ được cho phép.

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

Đối với loại rollingwindow, bộ đếm không bao giờ đặt lại, nhưng sẽ được tính toán lại theo 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 duy nhất, bất kể bạn nhập bao nhiêu lần tham chiếu tệp đó trong 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 nó trên nhiều luồng (Flow A, B và C) trong proxy API. Mặc dù được sử dụng trong nhiều luồng, 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 của Google:

  • Quy trình A được thực thi -> My OutlinePolicy được thực thi và bộ đếm của nó = 1
  • Quy trình B được thực thi -> My OutlinePolicy được thực thi và bộ đếm của nó = 2
  • Quy trình A được thực thi -> My OutlinePolicy được thực thi và bộ đếm của nó = 3
  • Quy trình C được thực thi -> My OutlinePolicy được thực thi và bộ đếm của nó = 4
  • Quy trình A được thực thi -> My OutlinePolicy được thực thi và bộ đếm của nó = 5

Yêu cầu tiếp theo của bất kỳ quy trình nào trong 3 quy trình đều bị từ chối vì đã đạt đến bộ đếm hạn mức giới hạn của nó.

Sử dụng cùng một chính sách Hạn mức ở nhiều nơi trong luồng proxy API. Điều này có thể vô tình khiến Hạn mức chạy nhanh hơn dự kiến. Đây là một lỗi phản mẫu được mô tả trong Cuốn sách về hành vi phản mẫu 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 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 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 một chính sách duy nhất có thể duy trì các bộ đếm khác nhau 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 khách hoặc mã ứng dụng khách khác, v.v. 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 Hạn mức được đặt theo Thời gian phối hợp Universal Múi giờ (UTC).

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

Ngày được định nghĩa 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 định nghĩa là giờ, phút và giây theo định dạng sau: hours:minutes:seconds. Ví dụ: 23:59:59 biểu thị thời gian một giây trước nửa đêm.

Lưu ý rằng có hai ký hiệu, 00:00:0024:00:00, có sẵn cho hãy phân biệt hai thời điểm nửa đêm có thể liên quan đến một ngày. Do đó, 2015-02-04 24:00:00 cùng ngày và giờ với 2015-02-05 00:00:00. Chính sách thứ hai là thường là ký hiệu ưu tiên.

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

Bạn có thể đặt giới hạn hạn mức trong cấu hình sản phẩm API. Các giới hạn đó không tự động thực thi hạn mức. Thay vào đó, bạn có thể tham khảo 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ố lợi thế của việc đặt hạn mức cho sản phẩm để tham khảo chính sách hạn mức:

  • Các chính sách về hạn mức có thể sử dụng chế độ cài đặt thống nhất trên tất cả các proxy API trong sản phẩm API.
  • Bạn có thể thay đổi chế độ cài đặt hạn mức trong thời gian chạy đối với sản phẩm API và các chính sách về hạn mức tham chiếu đến giá trị tự động được 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 của một sản phẩm API, hãy xem bài viết "Hạn mức động" ví dụ trên..

Để biết thông tin về cách định cấu hình các sản phẩm API có giới hạn, 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ể thiết lập theo chính sách này. Lưu ý rằng một số phần tử các tổ hợp loại trừ lẫn nhau hoặc không bắt buộc. Xem các mẫu để biết mức sử dụng cụ thể. Chiến lược phát hành đĩa đơn verifyapikey.VerifyAPIKey.apiproduct.* biến bên dưới có sẵn theo mặc định khi chính sách Xác minh khoá API có tên là "VerifyAPIKey" được dùng để kiểm tra khoá API của ứng dụng trong yêu cầu. Các giá trị biến được lấy từ chế độ cài đặt hạn mức trên sản phẩm API có liên kết với khoá như được mô tả trong Lấy chế độ cài đặt hạn mức từ sản phẩm API cấu hình.

<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>

&lt;Quota&gt; thuộc tính

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

Sau đây là các thuộc tính 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

Dùng để xác định thời điểm và cách bộ đếm hạn mức kiểm tra mức sử dụng hạn mức. Xem Các loại chính sách về 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 ở đầ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. Hạn mức cho mỗi ứng dụng được làm mới dựa trên <StartTime>, <Interval> và Các giá trị <TimeUnit> mà bạn đã đặt.
  • rollingwindow: Định cấu hình hạn mức sử dụng "cửa sổ cuộn" đến xác định hạn mức sử dụng. Với rollingwindow, bạn xác định kích thước của cửa sổ bằng phần tử 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 điểm chính xác của yêu cầu (ví dụ: 5:01 CH), tính số lượng yêu cầu gửi đến trong khoảng thời gian từ 5:01 chiều đến 5:01 chiều ngày trước đó (1 ngày) và xác định xem đã vượt quá hạn mức hay chưa trong khoảng thời gian cửa sổ đó.
  • 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

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

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

Dưới đây là 3 cách để đặt 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 trong thời gian chạy, thì giá trị của count sẽ được dùng.

Mặc định: Không áp dụng
Sự 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 tháng chỉ định hạn mức 100 tin nhắn mỗi tháng.

2000 Không bắt buộc
countRef

Dùng để chỉ định một biến luồng chứa số lượng thư cho 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

&lt;Allow&gt;/&lt;Class&gt; phần tử

Phần tử <Class> cho phép bạn điều chỉnh giá trị theo điều kiện của phần tử <Allow> dựa trên giá trị của biến luồng. Cho từng thẻ con <Allow> khác nhau của <Class>, chính sách sẽ duy trì một bộ đếm khác.

Để sử dụng phần tử <Class>, hãy chỉ định một biến luồng 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 luồng để chọn một trong <Allow> thẻ con nhằm xác định các biến được cho phép số lượng chính sách. Cạnh khớp với giá trị của biến luồng với 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ó một giá trị peak_time hoặc off_peak_time. Nếu thông số truy vấn chứa thông số 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
Sự 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
tham chiếu

Dùng để chỉ định một biến luồng chứa lớp hạn mức cho hạn mức.

không có Bắt buộc

&lt;Allow&gt;/&lt;Class&gt;/&lt;Allow&gt; phần tử

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 của <Class>, thẻ 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 về Hạn mức duy trì hai bộ đếm hạn mức được đặt tên là về peak_timeoff_peak_time.

Mặc định: Không áp dụng
Sự 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 giới hạn cho bộ đếm. không có Bắt buộc

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

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 hàm TimeUnit mà bạn chỉ định (phút, giờ, ngày, tuần hoặc tháng) để xác định thời gian trong đó Edge tính toán mức sử dụng hạn mức.

Ví dụ: Interval trong 24TimeUnithour có nghĩa là hạn mức sẽ được tính trong khoảng thời gian 24 giờ.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
Mặc định: không có
Sự 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
tham chiếu

Sử dụng để chỉ định một biến luồng có chứa khoảng thời gian cho một hạn mức. ref được ưu tiên hơn một khoảng thời gian rõ ràng giá trị. Nếu cả tệp đối chiếu và giá trị được chỉ định thì tệp đối chiếu sẽ được ưu tiên. Nếu ref không phân giải 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

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

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

Ví dụ: Interval trong 24TimeUnithour có nghĩa là hạn mức sẽ được tính trong khoảng thời gian 24 giờ.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
Mặc định: không có
Sự 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
tham chiếu Dùng để chỉ định một biến luồng 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 có không được phân giải 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

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

Khi bạn đặt type thành calendar, sẽ chỉ định ngày và thời gian khi bộ đếm hạn mức sẽ bắt đầu được tính, bất kể có yêu cầu nào nhận được từ bất kỳ ứng dụng nào.

Bạn phải cung cấp StartTime rõ ràng khi type được đặt rõ ràng đối với calendar,, bạn không thể sử dụng tham chiếu đến biến luồng, nếu bạn chỉ định giá trị StartTime khi không đặt giá trị type nào, thì bạn sẽ nhận được .

Ví dụ:

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

Chuỗi trong ISO 8601 ngày và giờ.

<Đã phân phối> phần tử

Khi cài đặt Edge, bạn có thể dùng một hoặc nhiều Trình xử lý tin nhắn để xử lý yêu cầu. Thiết lập vào true để chỉ định rằng chính sách cần duy trì và liên tục đồng bộ hoá dữ liệu này trên tất cả các Bộ xử lý thư. Trình xử lý tin nhắn có thể ở nhiều vùng tình trạng còn hàng và/hoặc khu vực.

Nếu sử dụng giá trị mặc định là false, thì bạn có thể vượt quá hạn mức do số lượng của mỗi Trình xử lý thư 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
Sự hiện diện: Không bắt buộc
Loại: Boolean

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

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

Đặt thành false để cập nhật bộ đếm hạn mức một cách không đồng bộ. Điều này có nghĩa là có thể một số lệnh gọi API vượt quá hạn mức 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 tác động tiềm ẩn liên quan đến hiệu suất của các bản cập nhật đồng bộ.

Khoảng thời gian mặc định của một lần cập nhật không đồng bộ 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
Sự hiện diện: Không bắt buộc
Loại: Boolean

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

Đị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 chính sách này phần tử cấu hình <Synchronous> không hiện diện hoặc hiện diện và đã được đặt đến false.

Bạn có thể đồng bộ hoá sau một khoảng thời gian hoặc sau khi đã đếm số thư, sử dụng Phần tử con SyncIntervalInSeconds hoặc SyncMessageCount. Chúng 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
Sự hiện diện: Không bắt buộc; bị bỏ qua khi đặt <Synchronous> thành true
Loại:

Khu vực khép kín

&lt;AsynchronousConfiguration&gt;/&lt;SyncIntervalInSeconds&gt; phần tử

Sử dụng phương thức này để ghi đè hành vi mặc định mà trong đó cập nhật không đồng bộ được thực hiện sau khi 10 giây.

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

Khoảng thời gian đồng bộ hoá phải từ 10 giây trở lên theo mô tả trong Chủ đề Giới hạn.

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

Số nguyên

&lt;AsynchronousConfiguration&gt;/&lt;SyncMessageCount&gt; phần tử

Chỉ định số lượng yêu cầu trên tất cả các trình xử lý tin nhắn Apigee trong hạn mức bản cập nhật.

<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 sau mỗi 5 yêu cầu trong mỗi Apigee Trình xử lý tin nhắn cạnh.

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

Số nguyên

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

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

Bạn có thể tạo bộ đếm riêng 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 để ràng buộc 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 khác nhau để xác định hạn mức, cho dù bạn có đang sử dụng biến tuỳ chỉnh hoặc các biến được xác định trước, chẳng hạn như những biến có trong chính sách Xác minh khoá API. Xem thêm 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.

Yếu tố này cũng được thảo luận trong bài đăng sau đây trên thẻ 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
Sự 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
tham chiếu

Chỉ định một biến luồng xác định bộ đếm để sử dụng cho yêu cầu. Chiến lược phát hành đĩa đơn 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ư riêng biệt với mỗi ứ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 nổi bật.

<Identifier> thường được dùng nhất để nhận dạng riêng từng ứ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 Lợi ích của Apigee. Bạn có thể sử dụng giá trị nhận dạng này nếu đã bật khoá API hoặc OAuth chính sách uỷ quyền cho API của bạn.

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

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

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

Dùng để chỉ định trọng số được gán cho mỗi thông báo. Sử dụng độ đậm của thư để tăng mức độ ảnh hưởng của yêu cầu các thông báo tiêu tốn nhiều tài nguyên điện toán hơn các thông báo khác.

Ví dụ: bạn muốn tính thư POST là gấp đôi "nặng" hoặc đắt tiền, như GET tin nhắn. Do đó, bạn đặt MessageWeight thành 2 cho một POST và 1 cho một NHẬN. 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 tin nhắn 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 khoảng thời gian 10 phút bất kỳ. Bất kỳ yêu cầu bổ sung nào, POST hay GET, trước khi bộ đếm đặt lại bị từ chối.

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

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

Số nguyên

Biến luồng

Các biến Quy trình được xác định trước sau đây sẽ được tự động điền khi áp dụng chính sách về Hạn mức thực thi. Để biết thêm thông tin về Biến luồng, hãy xem Tài liệu tham khảo về 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 hạn mức
ratelimit.{policy_name}.available.count Dài Chỉ có thể đọc Trả về số lượng hạn mức có sẵn 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. Thời gian này sẽ xác định thời điểm hạn mức hết hạn và thời gian mới khoảng thời gian hạn mức.

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

giới hạn tỷ lệ.{policy_name}.identifier Chuỗi Chỉ có thể đọc Trả về tệp tham chiếu giá trị nhận dạng (khách hàng) đính kèm với chính sách
giới hạn tỷ lệ.{policy_name}.class Chuỗi Chỉ có thể đọc Trả về lớp được liên kết với mã 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 cho phép đã 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ả khoảng thời gian hạn mức, nên đây là tổng của class.exceed.count với tất cả khoảng thời gian hạn mức.
giới hạn tỷ lệ.{policy_name}.failed Boolean Chỉ có thể đọc

Cho biết chính sách có lỗi (true hay 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ề hạn mức đặt lại

SpikeArrest chính sách của Google

So sánh Các chính sách về hạn mức, việc tăng đột biến và giới hạn số lần yêu cầu đồng thời