8

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

अब हम कई अलग अलग प्रसंस्करण सेवाओं जो संदेशों पर प्रोसेसिंग करने के लिए अलग अलग algos चलाने - इन संदेशों को एक या अधिक प्रोसेसिंग algos ले जाया जाता है। हमारे संदेश वॉल्यूम परिवर्तनीय हैं और इसलिए प्रोसेसिंग एल्गोस की ज़रूरतें हैं (यानी हम XYZ वाले कई संदेश प्राप्त कर सकते हैं, फिर अलगो 1 को भेजें अन्यथा अलगो 2 को भेजें)।

हम कुछ है कि क्षैतिज स्केलेबल है में इस विस्तार करना चाहते हैं। तो हमारे पास एकाधिक नोड्स हैं जो प्रोसेसिंग एल्गोस चला रहे हैं। अब मैसेजिंग लोड के आधार पर हमारे थ्रिफ्ट अनुरोध अलग-अलग सर्वरों पर भेजे जाने चाहिए (मान लीजिए कि सभी सेवाएं प्रत्येक प्रसंस्करण Algo1 से 3 के उदाहरण चल रही हैं)। उदाहरण के लिए कहें कि हमें बड़ी संख्या में संदेश मिल रहे हैं जिन्हें हम एल्गो 1 पर संसाधित करना चाहते हैं, तो हमारे पास दो सर्वर आल्गो 1 चल रहे हैं और तीसरा सर्वर अन्य दो एल्गोस (अल्गो 2 & 3) के अनुरोधों के बाद देखता है।

तो प्रणाली इस तरह दिखता है:

Client ----Request-------| 
       -----------|-------------------- 
       | Coord & Load Balancer Service | ... like zookeeper 
       -------------------------------- 
         <--|--> 
         | Route messages to servers... 
    Server1:    Server2:   Server 3: 
Algo1 instance  Algo1 instance  Algo2 instance 
              Algo3 instance  

सभी प्रक्रियाओं को जावा में लिखा जाता है।

तो कितना आसान कुछ इस तरह Zookeeper का उपयोग कर सेटअप करने के लिए किया जाएगा। मुझे पता है कि जैसे ही हम एल्गोस जोड़ते हैं या बदलते हैं, हम चीजों के कॉन्फ़िगर साइड को संभालने के लिए आसानी से जुकीपर का उपयोग कर सकते हैं (यानी सर्वर अल्गो अपडेट या जोड़ों के लिए सुनते हैं और उन्हें कॉन्फ़िगर के रूप में सेवा देते हैं) लेकिन हम लोड-बैलेंसिंग पहलू को कैसे प्रबंधित करते हैं?

चीयर्स!

+0

हाय, आप इस सवाल का हल है? क्या मैं आपसे पूछ सकता हूं कि आपने ऐसा कैसे किया? मैं एक ही सवाल पर शोध कर रहा हूँ अभी (स्केलेबल आत्म पोषणीय बचत सेवा तैनाती), और किसी भी अनुभव या सलाह ;-) –

+0

@Sergey वासिलयेव प्राप्त करने के लिए अच्छा होगा, हम अपने समाधान एक समान तरीके से एक शीर्ष चिड़ियाघर संचालक कार्यान्वित जिस तरह से नॉरबर्ट चीजें करता है (कई कम सुविधाओं के साथ)। नॉरबर्ट को लागू करने पर विचार करें यदि कुछ खाली समय चारों ओर घूमता है, बहुत अच्छी लग रही परियोजना। आईएमओ हमने जो नहीं किया है, वह नीचे जोनास के जवाब पर नज़र डालें। अगर आप अभी भी हमारे प्रभाव पर अधिक जानकारी चाहते हैं तो मुझे बताएं। – NightWolf

+0

हां, नॉरबर्ट के समान, सिवाय इसके कि मैं पाइथन और PHP (पहले से) का उपयोग करता हूं और भविष्य में जावा और सी/सी ++ का उपयोग करने जा रहा हूं (निकटतम या काफी - अभी तक तय नहीं हुआ है)। यही कारण है कि मैंने एक आरपीसी समाधान के रूप में Thrift चुना है। और केवल एक चीज शेष संतुलन और क्लस्टर प्रबंधन है। चिड़ियाघर इसके लिए अच्छा लग रहा है, लेकिन मैं विशेष वास्तुशिल्प समाधान की तलाश में हूं। नॉरबर्ट, जैसा कि उस तस्वीर पर देखा गया है, मैं जो खोज रहा हूं उसकी मूल अवधारणा है। तो, क्या यह अच्छा है? क्या यह स्थिर है? क्या इसे प्रबंधित करना आसान है? या आप वर्णन कर सकते हैं कि आपने इसे कैसे हल किया? मेरा जैबर "[email protected]" है, स्काइप "nolar.info" है। धन्यवाद :) –

उत्तर

6

तुम लोग शायद लिंक्डइन से नॉर्बर्ट की तरह कुछ हैं: http://sna-projects.com/norbert/ वे क्लाइंट और सर्वर के बीच लगातार सहकर्मी से सहकर्मी संचार का उपयोग करें और सेवा रजिस्ट्री के लिए और बाहर के बैंड संकेत चिड़ियाघर संचालक का उपयोग करें। बहुत अच्छी चीजें। यह आपको एक और प्रसंस्करण नोड को आग लगाने में सक्षम बनाता है जो उच्च लोड के दौरान अनुरोधों को संभालने में मदद कर सकता है।

/जोनास

+0

बहुत अच्छा। हमने इस तरह कुछ कार्यान्वित करने का अंत किया, जहां कहीं भी पूर्ण विशेषताओं के करीब नहीं, बल्कि एक समान अवधारणा है। शर्म हम कुछ महीने पहले इस बारे में नहीं जानते थे। धन्यवाद! – NightWolf

2

DynamicPool और ZooKeeperNode पर एक नजर डालें। संदर्भ के लिए ThriftFactory में एक डिफ़ॉल्ट वायरिंग उपलब्ध है। http://twitter.github.com/commons/

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