روابط سريعة:
مقدمة:
مرحبًا، عشاق المصادر المفتوحة وعشاق Go! لقد عدت بنظرة عامة سريعة على مشروعي مفتوح المصدر، ThrottleX، وهو محدد المعدل الموزع لواجهات برمجة التطبيقات. ما زلت جديدًا جدًا في هذا العالم مفتوح المصدر، لذا نرحب دائمًا بنصيحتك! ?
تم تصميم ThrottleX لمساعدتك في إدارة حركة مرور واجهة برمجة التطبيقات (API) بشكل فعال، مما يحافظ على سلاسة ونزاهة نظامك. سواء كان الأمر يتعلق بمنع إساءة الاستخدام أو التعامل مع الأحمال العالية، فإن ThrottleX يلبي احتياجاتك. دعنا نستكشف بعض خوارزميات تحديد المعدل التي تجعل ThrottleX قويًا. ?
يأتي ThrottleX مزودًا بثلاث خوارزميات أساسية لمساعدتك في إدارة حركة مرور واجهة برمجة التطبيقات الخاصة بك:
كيف يعمل: تخيل تقسيم الوقت إلى فترات زمنية ثابتة. خلال كل فاصل زمني، يمكنك السماح بعدد ثابت من الطلبات - على سبيل المثال، 100 طلب في الدقيقة. بمجرد إغلاق النافذة، تتم إعادة ضبط العداد.
حالة الاستخدام: رائعة لأنماط حركة المرور التي يمكن التنبؤ بها ولكن كن حذرًا من "مشكلة الحدود"، حيث يمكن للعديد من الطلبات القريبة من نهاية النافذة تجاوز حد المعدل المقصود.
كيف يعمل: إنه مثل المتوسط المتحرك - بدلاً من إعادة التعيين بالكامل في نهاية كل نافذة، فإن حد المعدل "ينزلق" عبر الوقت، مما يوفر تحكمًا أكثر سلاسة.
حالة الاستخدام: مثالية لتجنب الارتفاعات وتوزيع الطلبات بشكل متساوٍ.
كيف يعمل: تصور دلوًا يمتلئ بالرموز المميزة بمعدل ثابت. تستهلك الطلبات الرموز المميزة، وإذا كانت الحاوية فارغة، فسيتم حظر الطلبات حتى تتم إعادة تعبئتها.
حالة الاستخدام: مثالية للسماح بتدفقات مفاجئة من حركة المرور إذا تم حفظ الرموز المميزة.
إليك مثال بسيط لاستخدام محدد معدل النافذة الثابتة:
package main import ( "github.com/neelp03/throttlex/ratelimiter" "github.com/neelp03/throttlex/store" "time" "fmt" ) func main() { // Initialize an in-memory store and a Fixed Window rate limiter memStore := store.NewMemoryStore() limiter, err := ratelimiter.NewFixedWindowLimiter(memStore, 10, time.Minute) if err != nil { fmt.Println("Failed to create limiter:", err) return } // Simulate API requests key := "user1" for i := 0; iالناتج المتوقع:
Request 1 allowed Request 2 allowed ... (up to 10 allowed) Request 11 blocked Request 12 blocked ... (up to 15 blocked)ما هو التالي بالنسبة لـ ThrottleX؟ ؟
ترقبوا هذه التحديثات المستقبلية التي ستجعل ThrottleX أكثر قوة!
ما زلت جديدًا في مجال المصادر المفتوحة، وأود أن تكون جزءًا من هذه الرحلة! نرحب دائمًا بالمساهمات — سواء كانت إصلاحات أخطاء، أو اقتراحات، أو تحسينات في التوثيق.
تحقق من الريبو: ThrottleX GitHub Repo وامنحه نجمة إذا وجدته مفيدًا. لا تتردد في فتح القضايا أو سحب الطلبات - كل شيء يساعد!
الأفكار النهائية
ThrottleX هي محاولتي لجعل تحديد معدل واجهة برمجة التطبيقات (API) أكثر سهولة وكفاءة. دعونا نجعلها ممتعة (وأقل من الألم)! ?
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3