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