इस प्रोजेक्ट के बारे में
फ़ाइला वर्तमान में डिज़ाइन चरण में एक संदेश ब्रोकर है (अभी कार्यशील कोड नहीं)। यह पारंपरिक FIFO ब्रोकरों की एक सामान्य समस्या का समाधान करता है: जब कई टेनेंट या वर्कलोड प्रकार एक ही कतार साझा करते हैं, तो एक अकेला शोर करने वाला उत्पादक बाकी सभी को भूखा रख सकता है, और दर सीमित करना आमतौर पर उपभोक्ता पर डाल दिया जाता है, जिससे काम बर्बाद होता है और विलंबता बढ़ती है।
फ़ाइला शेड्यूलिंग निर्णयों को ब्रोकर के भीतर ले जाता है। मुख्य विशेषताओं में शामिल हैं:
- **डेफिसिट राउंड रॉबिन (DRR) उचित शेड्यूलिंग**: प्रत्येक फेयरनेस कुंजी को वजन के आधार पर डिलीवरी बैंडविड्थ का आनुपातिक हिस्सा मिलता है, जिससे टेनेंट की भूख रुकती है।
- **उपभोक्ता-घोषित थ्रॉटलिंग**: उपभोक्ता सदस्यता लेते समय नामित दर सीमाएँ (जैसे प्रति-सेवा या प्रति-ग्राहक) घोषित करते हैं। ब्रोकर संदेशों को तब तक रोकता है जब तक डिलीवरी सभी घोषित सीमाओं के भीतर रहती है, इसलिए उपभोक्ताओं को केवल वे संदेश मिलते हैं जिन्हें वे वास्तव में संसाधित कर सकते हैं।
- **Lua नियम इंजन**: वैकल्पिक `on_enqueue` और `on_failure` हुक उपयोगकर्ताओं को कस्टम शेड्यूलिंग नीति परिभाषित करने देते हैं, जैसे पेलोड से फेयरनेस कुंजी प्राप्त करना या पुनः प्रयास बनाम डेड-लेटर व्यवहार तय करना।
- **डुप्लिकेट हटाना और क्रमबद्धता**: दोनों डिफ़ॉल्ट रूप से बंद, क्रमशः इडेम्पोटेंसी कुंजी और ऑर्डरिंग कुंजी के माध्यम से कॉन्फ़िगर करने योग्य।
- **पुनः प्रयास और डेड-लेटर कतारें**: विफल प्रयास कॉन्फ़िगर करने योग्य पुनः प्रयास नीतियों को ट्रिगर करते हैं (डिफ़ॉल्ट 3 प्रयास एक्सपोनेंशियल बैकऑफ़ के साथ), समाप्त संदेश प्रति-कतार DLQ में जाते हैं जो रीड्राइव का समर्थन करता है।
- **लीज़**: वितरित संदेश विज़िबिलिटी टाइमआउट के साथ लीज़ पर दिए जाते हैं; समाप्त लीज़ विफल प्रयासों के रूप में गिनी जाती हैं।
- **रनटाइम कॉन्फ़िगरेशन**: एक लाइव की-वैल्यू स्टोर जो Lua हुक से पढ़ने योग्य है, जिससे पुनः आरंभ किए बिना नीति परिवर्तन संभव है।
क्लाइंट SDK Rust में है और क्षमता-आधारित अनुमति मॉडल का उपयोग करता है जिसमें तीन हैंडल (उत्पादक, उपभोक्ता, व्यवस्थापक) हैं जो ACL अनुमतियों को प्रतिबिंबित करते हैं। वायर प्रोटोकॉल एक हस्तनिर्मित बाइनरी प्रोटोकॉल है (gRPC नहीं), बैच-नेटिव और एक ही कनेक्शन पर मल्टीप्लेक्स्ड। क्लाइंट sans-io आर्किटेक्चर का पालन करता है, जो भविष्य की बहु-भाषा SDK को सक्षम करने के लिए एक शुद्ध स्टेट-मशीन कोर को भाषा-विशिष्ट I/O शेल से अलग करता है।
CLI (`fila`) उसी SDK पर एक पतला क्लाइंट है जिसमें कोई विशेषाधिकार प्राप्त पहुँच नहीं है, जो कतार प्रबंधन, क्लस्टर संचालन (ड्रेन, मूव, रीबैलेंस), रनटाइम कॉन्फ़िग, रीड्राइव, और प्रमाणीकरण/ACL प्रशासन को कवर करता है।
भंडारण एक अपेंड-ओनली लॉग और इन-मेमोरी इंडेक्स से शुरू होता है, जिसमें एक स्टोरेज ट्रेट अनुबंध है जो पावती से पहले टिकाऊपन, परमाणु उत्परिवर्तन समूहों, और क्रमबद्ध रेंज स्कैन पर जोर देता है। क्लस्टरिंग समन्वय के लिए एक मेटा समूह के साथ प्रति-कतार Raft समूहों का उपयोग करती है।
AGPLv3 के अंतर्गत लाइसेंस प्राप्त।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.