ห้าหมื่นครั้งต่อเดือน? โทรศัพท์ของเอพีไอ ได้ถูกแก้ไขแล้ว
เมื่อเร็ว ๆ นี้เพื่อนมาที่ฉันและบอกว่าเขาพบ ปัญหาร้ายแรงในหลังเวทีของนักพัฒนาหนังสือการบิน : / open-aptis/bot/v3/info อินเตอร์เฟสนี้เรียกว่าหลายร้อยครั้งต่อนาที และ 50,000 ครั้งต่อเดือนมันจะหมด!

คุณรู้ได้ยังไง?
Friends in the "API Call Ausic" หลังเวทีของนักพัฒนาหนังสือการบิน เห็นการโทรคมนาคมจํานวนมหาศาลสําหรับอินเตอร์เฟสนี้:
| ตัวบ่งชี้สถานะ | ค่า |
| จํานวนของการเรียกทุกวัน | 43200+ครั้ง |
| เรียกทุกนาที | ~ 300 ครั้ง |
| การ บริโภค ราย เดือน โดย ประมาณ | เกือบ 50,000 ครั้ง |
เขาเป็นหุ่นยนต์ ฉันจะโทรมาบ่อยได้ยังไง
สาเหตุ หลัก ของ ปัญหา
ผมใช้ระบบขยายส่วนขยายของ OpenClaught และพบในสองที่
1. สถานะการตรวจสอบตัวเรียก API
ฟังก์ชัน Office Faishu () เรียกอินเทอร์เฟส Finfo สําหรับหนังสือบินได้ทุกครั้งที่คุณถามเกี่ยวกับสถานะหุ่นยนต์ ฟังก์ชันนี้เรียกว่ากรณีต่อไปนี้:
- รับ OpenID เมื่อเริ่มการทํางาน
- เมื่อระบบภายนอกทําการสอบถามสถานะ
- เมื่อมีการยุติการท่องเว็บ
2. ขาดกลไกแคช
รหัสเดิมคือ "ถามทุกสาย" และไม่มีแคช ถึงคุณขอ 10 ครั้ง คุณก็มี 10 สาย
แก้แฟ้มแคช 5 นาที
ฉันเพิ่มแคชธรรมดาในการตรวจสอบ :
// 缓存配置:5分钟内不重复调用 API
const CACHE_TTL_MS = 5 * 60 * 1000;
const botInfoCache = new Map();
ตรรกะหลักนั้นง่ายมาก
- การเรียกครั้งแรก #ร้องขอหนังสือการบิน เอมี# #ผลแคชเชียร์#
- อีก 5 นาทีโทรมาอีก ○ ส่งแคชกลับไป (ไม่มีการร้องขอใหม่)
- ความ ล้ม เหลว ยัง ทํา ให้ หด หาย ด้วย. ○ หลีก เลี่ยง การ ขอ ซ้ํา เมื่อ ล้ม เหลว
ลูกเล่นแก้ไขใหม่
| ความเปรียบต่าง | ก่อนแก้ไข | แก้ไข |
|---|---|---|
| ทุกการค้นหาสถานะ | เรียก API | แคชโดยตรง |
| ล้มเหลวในการลองอีกครั้ง | การหมุนแบบไม่จํากัด | แคช 5 นาที |
| การ บริโภค ราย เดือน โดย ประมาณ | 50000+ ครั้ง | ~ 300 ครั้ง |
มันง่ายมากสูงสุด 1 ครั้งต่อ 5 นาที 24 ชั่วโมงต่อวัน = 288 ครั้ง/เดือน ประมาณ 3,500 ครั้งต่อปี 50000/เดือนเดิม มันไม่หมดหรอก
ปรับใช้ภาพ
โปรแกรมนี้เหมาะกับ:
- ผู้ใช้ที่ขยายด้วย OpenCraw
- พัฒนาหุ่นยนต์ที่บินได้ของหนังสือของคุณเอง และเรียกอินเทอร์เฟซ Finfo บ่อยครั้ง
- มาตรา API เป็นกรณีเร่งด่วน และต้องการเพิ่มจํานวนของโทรศัพท์
สรุป
ปัญหาการย้ายถิ่นฐานของ Flybook API ส่งผลให้ขาดกลไกแคช วิธีแก้ปัญหาง่าย ๆ: เรียกอินเทอร์เฟสด้วยแคช
บางครั้งการหาค่าเหมาะที่สุด ก็มีประสิทธิภาพมากที่สุด