คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
Apigee Edge มีความสามารถในการกำหนดค่าจำนวนคำขอที่อนุญาตไปยังพร็อกซี API สำหรับ ช่วงเวลาที่เฉพาะเจาะจงโดยใช้นโยบายโควต้า
รูปแบบที่ไม่แนะนำ
คำขอพร็อกซี API สามารถให้บริการโดยคอมโพเนนต์ Edge แบบกระจายตั้งแต่ 1 รายการขึ้นไปที่เรียกว่า Message Processor หากมีการกำหนดค่า Message Processor หลายรายการเพื่อให้บริการคำขอ API โควต้ามีแนวโน้มที่จะเกินเนื่องจาก Message Processor แต่ละรายการจะเก็บ "จำนวน" คำขอที่ประมวลผลไว้เอง
มาอธิบายเรื่องนี้ด้วยตัวอย่างกัน ลองพิจารณานโยบายโควต้าต่อไปนี้สำหรับพร็อกซี API
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
การกำหนดค่าข้างต้นควรอนุญาตคำขอทั้งหมด 100 รายการต่อชั่วโมง
อย่างไรก็ตาม ในทางปฏิบัติ เมื่อ Message Processor หลายรายการให้บริการคำขอ API สิ่งต่อไปนี้จะเกิดขึ้น

ในภาพประกอบด้านบน
- นโยบายโควต้าได้รับการกำหนดค่าให้คำขอ 100 รายการต่อชั่วโมง
- คำขอไปยังพร็อกซี API ได้รับการให้บริการโดย Message Processor 2 รายการ
- Message Processor แต่ละรายการจะเก็บตัวแปรจำนวนโควต้าของตัวเอง
quota_count_mp1และquota_count_mp2เพื่อติดตามจำนวนคำขอที่กำลังประมวลผล - ดังนั้น Message Processor แต่ละรายการจะอนุญาตคำขอ API 100 รายการแยกกัน ผลลัพธ์สุทธิ คือระบบจะประมวลผลคำขอทั้งหมด 200 รายการแทนที่จะเป็น 100 รายการ
ผลกระทบ
สถานการณ์นี้ทำให้การกำหนดค่าโควต้าไม่เป็นไปตามวัตถุประสงค์และอาจส่งผลเสียต่อเซิร์ฟเวอร์แบ็กเอนด์ที่ให้บริการคำขอ
เซิร์ฟเวอร์แบ็กเอนด์อาจมีลักษณะดังนี้
- ทำงานหนักเนื่องจากปริมาณการรับส่งข้อมูลขาเข้าสูงกว่าที่คาดไว้
- ไม่ตอบสนองต่อคำขอ API ใหม่ๆ ซึ่งนำไปสู่ข้อผิดพลาด 503
แนวทางปฏิบัติแนะนำ
ลองตั้งค่าองค์ประกอบ <Distributed> เป็น true ใน นโยบายโควต้า เพื่อ
ให้แน่ใจว่ามีการใช้ตัวนับร่วมกันเพื่อติดตามคำขอ API ใน Message Processor ทั้งหมด
คุณตั้งค่าองค์ประกอบ <Distributed> ได้ดังที่แสดงในข้อมูลโค้ดด้านล่าง
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>