2015-05-07 10 views
11

मैं प्रति दिन एक अरब से अधिक अनुरोधों के बहुत अधिक यातायात वातावरण में काफ्का का उपयोग करने जा रहा हूं। प्रत्येक अनुरोध संदेश भेजने के लिए काफ्का क्लस्टर से कनेक्शन करेगा। तो हर सेकेंड लगातार लगातार बनाए जा रहे हैं। यह सॉकेट टाइमआउट जैसे मुद्दों का कारण बन सकता है। निर्माता सभी गैर-निरंतर कनेक्शन बना रहा है। तो ऐसे मामले में सॉकेट टाइमआउट या पोर्ट थकावट के मुद्दे हो सकते हैं।उच्च ट्रैफिक वातावरण में काफ्का उत्पादक का उपयोग करते समय कनेक्शन प्रबंधन

अधिकांश पारिस्थितिक तंत्र php में है, इसलिए मुझे kafka के लिए php लाइब्रेरी का उपयोग करना होगा। अब इस कनेक्शन विवाद को कम करने के लिए प्रभावी रूप से काफ्का निर्माता का उपयोग कैसे करें?

मैंने एक डेमॉन प्रक्रिया के बारे में सोचा जिसे संदेश खिलाया जा सकता है और फिर यह इन संदेशों को बैच में कफका क्लस्टर में भेज देगा। इसके अलावा पक्ष यह है कि सीमित संख्या में कनेक्शन हो सकते हैं। नीचे की तरफ यह है कि ऐसी सेवा की प्रतिक्रिया विलंबता आवेदन को बाधित कर देगी। इसके अलावा मुझे संदेश रखने के लिए कुछ इंटरमीडिएट स्टोरेज का उपयोग करना होगा।

अब मुझे पता है कि संदेशों को सीधे स्ट्रीम करने के लिए काफ़का का उपयोग करके बहुत अधिक मात्रा में अनुप्रयोग/साइटें हैं। क्या आप में से कोई भी मुझे इन मुद्दों से निपटने के बारे में मार्गदर्शन कर सकता है? लगातार इस मामले में मदद कर सकते हैं? इस तरह के उच्च मात्रा पर्यावरण में काफ्का-निर्माता की PHP लाइब्रेरी का उपयोग करना एक बुरा विचार है?

उत्तर

2

हम कफका जावा लाइब्रेरी का भी उपयोग करते हैं और हम ऐसा करते हैं जैसे @apatel कहते हैं, मुझे लगता है कि आपकी स्थिति में आप अपने सर्वर पर कुछ साइडकार प्रदान करने का प्रयास कर सकते हैं, साइडकार शुरुआत में निर्माता और कफ्का जावा ड्राइवर एकाधिक कनेक्शन का प्रबंधन करेगा। Netflix के साइडकार एप्लिकेशन Netflix Prana

+0

आपके सुझाव और लिंक के लिए धन्यवाद। हालांकि, मैं कनेक्ट नहीं कर सका कि कैसे प्राण जैसे सिस्टम काफका-निर्माता के रूप में इस्तेमाल किया जा सकता है। क्या आपका कहना है कि काफ्का-निर्माता को लागू करने का एकमात्र तरीका यह है कि इसे मुख्य एप्लिकेशन के समानांतर चलाना है और क्या यह पृष्ठभूमि में संदेशों को कतारबद्ध करता है? यदि हां, तो डेमॉन प्रक्रिया तैयार होगी क्या अच्छा होगा? – Shades88

+1

प्राण आपको साइडकार पैटर्न के साथ पेश करने का एकमात्र उदाहरण है। इस मामले में आपको अपना साइडकार विकसित करना चाहिए, उदाहरण के लिए: एम्बेडेड http सर्वर (जैसे अंडरटेव) के साथ कुछ छोटे जावा एप्लिकेशन, ऐप स्टार्टअप पर कफका से कनेक्ट होगा और संदेश पोस्ट करने के लिए एपीआई प्रदान करेगा उदाहरण:/संदेश/$ विषय तो आपका PHP आवेदन पाठ्यक्रम/साइडकार के संदेश/स्थानीयहोस्ट/संदेश/$ विषय –

+0

को संदेश भेज देंगे, उसी मशीन पर आपके php एप्लिकेशन के रूप में तैनात किया जाना चाहिए। –

2

हम काफ्का जावा लाइब्रेरी का उपयोग कर रहे हैं, और हम सर्वर स्टार्टअप पर कफका से कनेक्ट होते हैं। वर्तमान में हम प्रतिदिन कफका को लगभग आधा अरब संदेश भेज रहे हैं और इसके साथ कभी भी कोई समस्या नहीं थी।

जब आप निर्माता बनाते हैं, तो यह मूल रूप से एकाधिक कनेक्शन बनाता है ... प्रत्येक विभाजन के लिए एक। इसलिए जब तक आप विभाजन का उपयोग कर रहे हों, तब तक आपको प्रत्येक संदेश को सीधे अपने पक्ष में कैश किए बिना और बैच में भेजने के बिना कफका को भेजना चाहिए।

+0

आपके उत्तर के लिए धन्यवाद के बारे में कुछ दिलचस्प लेख यहां दिया गया है। तो आप केवल एक कनेक्शन ऑब्जेक्ट का उपयोग कर रहे हैं? क्या आप सीधे अपने आवेदन के भीतर या अलग बैकएंड प्रक्रिया से संदेश भेजते हैं? यदि आप अपने वेब ऐप के भीतर काफ्का-निर्माता का उपयोग कर रहे हैं तो यह एप्लिकेशन लेवल ऑब्जेक्ट है? मेरा मतलब है कि स्थापित कनेक्शन की संख्या सीमित कैसे रहती है? जब मैंने php के kafka lib का उपयोग किया, क्योंकि php ने कुछ भी संग्रह नहीं किया है, अनुरोध के रूप में कई कनेक्शन खोले गए हैं, सर्वर सेटिंग्स द्वारा सीमित जेस्ट। यह चिंता की एक बहुत बड़ी बात है। – Shades88

संबंधित मुद्दे