นักพัฒนาซอฟต์แวร์จุดประกายการถกเถียงเรื่องการใช้แนวทางคณิตศาสตร์ในการจำกัดอัตรา API

ทีมชุมชน BigGo
นักพัฒนาซอฟต์แวร์จุดประกายการถกเถียงเรื่องการใช้แนวทางคณิตศาสตร์ในการจำกัดอัตรา API

โพสต์บล็อกของนักพัฒนาซอฟต์แวร์เกี่ยวกับการใช้แบบจำลองทางคณิตศาสตร์สำหรับการจำกัดอัตรา API ได้จุดประกายการอภิปรายที่น่าสนใจในชุมชนเทคโนโลยี โพสต์ดังกล่าวสำรวจการใช้รูปแบบการลองใหม่ของ API เป็นอสมการ Diophantine ซึ่งเป็นปัญหาทางคณิตศาสตร์ที่อนุญาตเฉพาะคำตอบที่เป็นจำนวนเต็มเท่านั้น

กรอบทางคณิตศาสตร์ที่ถูกตั้งคำถาม

แนวทางที่เสนอจำลองขีดจำกัดอัตรา API โดยใช้ข้อจำกัดทางคณิตศาสตร์ เมื่อ API อนุญาตให้มี 10 คำขอต่อชั่วโมงและแต่ละงานทำการพยายาม 3 ครั้ง (การเรียกครั้งแรก ลองใหม่หลัง 10 นาที ลองใหม่หลัง 30 นาที) ความท้าทายจึงกลายเป็นการกำหนดว่างานกี่งานสามารถทำงานได้อย่างปลอดภัยโดยไม่เกินขีดจำกัด

นักพัฒนาได้นำเสนอปัญหานี้เป็นปัญหาอสมการ Diophantine ซึ่งจำนวนงานและการพยายามลองใหม่ต้องเป็นจำนวนเต็ม อย่างไรก็ตาม สมาชิกในชุมชนตั้งคำถามว่าความซับซ้อนทางคณิตศาสตร์นี้เพิ่มคุณค่าที่แท้จริงให้กับปัญหาหรือไม่

ตัวอย่างสถานการณ์การจำกัดอัตรา:

  • ข้อจำกัด API: 10 คำขอต่อชั่วโมง
  • รูปแบบงาน: 3 ครั้งการพยายามต่องาน (ที่ 0, 10, และ 30 นาที)
  • ตัวอย่างตารางเวลา: งานทุก ๆ 20 นาที
  • การวิเคราะห์หน้าต่าง: หน้าต่างเลื่อน 60 นาทีสำหรับการตรวจสอบข้อจำกัด

ชุมชนแสดงความสงสัยต่อความซับซ้อน

นักพัฒนาหลายคนในการอภิปรายแสดงความสงสัยต่อแนวทางทางคณิตศาสตร์ ข้อกังวลหลักอย่างหนึ่งมุ่งเน้นไปที่ว่าข้อจำกัดจำนวนเต็มทำให้ปัญหาแก้ไขได้ง่ายขึ้นหรือซับซ้อนโดยไม่จำเป็น นักวิจารณ์ชี้ให้เห็นว่าเวลาการลองใหม่ไม่จำเป็นต้องเป็นจำนวนเต็มโดยธรรมชาติ แม้ว่าจำนวนครั้งของการลองใหม่จะเป็นจำนวนเต็มตามธรรมชาติ

แง่มุม diophantine ทั้งหมดของเรื่องนี้ดูเหมือนจะถูกสร้างขึ้นมา - ข้อจำกัดจำนวนเต็มมาจากไหน? มันทำให้ปัญหาแก้ไขได้ง่ายขึ้นหรือยากขึ้น?

แนวทางทางเลือกที่ถูกเสนอแนะ

การอภิปรายในชุมชนเผยให้เห็นความชอบสำหรับวิธีแก้ปัญหาที่ใช้งานได้จริงมากกว่า นักพัฒนาบางคนสนับสนุนแนวทางที่ใช้ supervisor ที่วัดคำขอและให้แรงกดดันย้อนกลับเมื่อจำเป็น วิธีนี้ให้ประโยชน์เพิ่มเติมเช่นการจัดลำดับความสำคัญของคำขอ การเลื่อนการเรียกใช้ และความสามารถในการจดจำ

คนอื่นๆ แนะนำให้ใช้ประโยชน์จากกรอบการเพิ่มประสิทธิภาพที่มีอยู่แล้ว Linear Programming และ Mixed Integer Linear Programming มีการวิจัยหลายทศวรรษอยู่เบื้องหลัง พร้อมด้วยตัวแก้ปัญหาที่มีประสิทธิภาพสำหรับปัญหาข้อจำกัดที่คล้ายกัน

แนวทางทางเลือกที่ได้รับการกล่าวถึง:

  • การควบคุมการวัดคำขอแบบ supervisor พร้อมกลไก back-pressure
  • การปรับให้เหมาะสมด้วย Linear Programming (LP)
  • Mixed Integer Linear Programming (MILP)
  • กลยุทธ์ exponential backoff
  • ระบบการจัดลำดับความสำคัญและการเลื่อนคำขอ

คำถามเรื่องการใช้งานจริง

แม้ว่าแนวทางการสร้างแบบจำลองทางคณิตศาสตร์จะแสดงให้เห็นความคิดสร้างสรรค์ในการแก้ปัญหาที่น่าสนใจ แต่การอภิปรายในชุมชนเน้นย้ำถึงความตึงเครียดทั่วไปในการพัฒนาซอฟต์แวร์ วิศวกรมักต้องเผชิญกับการเลือกระหว่างวิธีแก้ปัญหาทางทฤษฎีที่สง่างามและการนำไปใช้งานจริงที่ตรงไปตรงมา

การถกเถียงสะท้อนให้เห็นคำถามที่กว้างขึ้นเกี่ยวกับเมื่อไหร่ที่ความซับซ้อนทางคณิตศาสตร์เพิ่มคุณค่าที่แท้จริง เทียบกับเมื่อไหร่ที่แนวทางวิศวกรรมที่เรียบง่ายพิสูจน์ได้ว่ามีประสิทธิภาพมากกว่า สำหรับการจำกัดอัตรา API โดยเฉพาะ ชุมชนดูเหมือนจะชอบวิธีการที่ผ่านการทดสอบแล้วมากกว่ากรอบทางคณิตศาสตร์ใหม่

การอภิปรายในท้ายที่สุดแสดงให้เห็นว่านักพัฒนาที่แตกต่างกันเข้าหาความท้าทายทางเทคนิคเดียวกันอย่างไร โดยชั่งน้ำหนักระหว่างความสง่างามทางคณิตศาสตร์กับข้อกังวลในการนำไปใช้งานจริง

อ้างอิง: modelling API rate limits as diophantine inequalities