← กลับไปที่รายการ

ห้าหมื่นครั้งต่อเดือน? โทรศัพท์ของเอพีไอ ได้ถูกแก้ไขแล้ว

itadol5j

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

โปรแกรมติดตามการโทร API ของเที่ยวบิน

คุณรู้ได้ยังไง?

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 ส่งผลให้ขาดกลไกแคช วิธีแก้ปัญหาง่าย ๆ: เรียกอินเทอร์เฟสด้วยแคช

บางครั้งการหาค่าเหมาะที่สุด ก็มีประสิทธิภาพมากที่สุด