โซลูชั่นการจัดการ API [ปิด]


9

ขณะนี้ฉันกำลังสร้าง API และกำลังมองหาเครื่องมือเพื่อให้ฉันสามารถตรวจสอบ (ใน GUI) และการใช้อัตรา จำกัด ฉันเจอโซลูชันระดับองค์กรสองสามอัน ได้แก่ :

แผนองค์กร Apigee เป็นสิ่งที่ฉันกำลังมองหา แต่แผนเริ่มต้นที่ $ 3,000 / เดือนซึ่งอยู่นอกช่วงราคาของฉัน โซลูชันอื่นทั้งหมดมีราคาแพงเกินไปหรือไม่มีวิธีแก้ไขปัญหาที่ฉันกำลังมองหา

สิ่งนี้ทำให้ฉันมองไปที่ตัวเลือกโอเพนซอร์ซรวมถึง:

วานิชดูเหมือนจะเป็นวิธีการแก้ปัญหาที่ค่อนข้างสมบูรณ์ อย่างไรก็ตามฉันจะต้องสร้าง GUI เพื่อให้เห็นภาพข้อมูล

ตัวเลือกสุดท้ายของฉันคือการสร้างโซลูชันตั้งแต่เริ่มต้นโดยใช้ EventMachine และ ruby

คำแนะนำใด ๆ?


1
ไมค์ ฉันเป็นผู้พัฒนา Api Axle ไม่มีการสร้างภาพข้อมูลสถิติ แต่ Axle มาพร้อมกับ API ซึ่งควรทำให้ง่ายต่อการสร้าง ทำ ping ฉันถ้าคุณคิดว่าฉันสามารถช่วยได้
Phil Jackson

2
ฉันไม่ได้ทดสอบมัน แต่สิ่งที่เกี่ยวกับการใช้ Nginx กับ Redis และการใช้ชนิดของขั้นตอนวิธีนี้chris6f.com/rate-limiting-with-redis
hellvinz

คำตอบ:


3

ฉันคิดว่าคุณประเมินค่าสูงไปว่ามันยากแค่ไหน

ในรหัสของคุณมีตัวนับที่มี redis / memcached / mongodb (ตัวนับ 1/24 ชั่วโมงหรือตัวนับรายชั่วโมง / รายวันขึ้นอยู่กับความต้องการของคุณ) และส่งคืนข้อผิดพลาดที่เหมาะสมเมื่อถึงขีด จำกัด คุณสามารถเพิ่มจำนวนได้ที่นั่นหรือทำแบบอะซิงโครนัสเมื่อประมวลผลบันทึกของคุณ

สำหรับการแสดงข้อมูลเพียงแค่สร้างเว็บเพจที่เรียบง่ายโดยสรุปจำนวนที่ต้องการ

สำหรับการใช้งานของเราเราไม่จำเป็นต้อง จำกัด สิ่งต่าง ๆ อย่างแน่นอนดังนั้นโดยทั่วไปเราแค่เข้าสู่ระบบโครงสร้างพื้นฐานการบันทึกของเราและหนึ่งในผู้ประมวลผลบันทึก (แบบเรียลไทม์ - อิชผ่าน scribe) จะสรุปสิ่งเหล่านี้ ผลลัพธ์เป็นหน้า HTML แบบธรรมดาที่มี IP / ไคลเอ็นต์ที่ไม่ว่างบางหน้าที่ nagios สามารถตรวจสอบได้และ URL บางอันที่ munin ดึงข้อมูลจากเพื่อสร้างกราฟ


1

คุณสามารถใช้naxsiกับ nginx แค่แทนที่ / ร้องขอตำแหน่งที่ถูกปฏิเสธด้วยกฎขีด จำกัด ที่คุณต้องการ:

แม็พการเปลี่ยนเส้นทางพารามิเตอร์ naxsi ไปยังขีด จำกัด ที่เกี่ยวข้อง:

map $arg_uri $limit_uri {
  123.php   limit_zone1;
  234.php   limit_zone2;
default limit_default;
}

ใช้ขีด จำกัด ในตำแหน่ง:

 location /RequestDenied {
     proxy_pass http://127.0.0.1:4242;
     limit_req $limit_uri;
   }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.