2008-08-30 3 views
10

यदि मेरे पास उपयोगकर्ताओं और उपस्थिति की अपनी अवधारणा के साथ एक अलग प्रणाली है, तो एक्सएमपीपी सर्वर नेटवर्क पर पुल बनाने के लिए सबसे उपयुक्त आर्किटेक्चर क्या है? जहां तक ​​मैं कह सकता हूं कि तीन प्राथमिक तरीके हैं:एक्सएमपीपी को पुल करने के लिए सबसे अच्छी वास्तुकला क्या है?

  1. सर्वर के रूप में कार्य करें। यह एक टचपॉइंट बनाता है, लेकिन मुझे डर है कि इसमें संगतता के प्रभाव हैं, और संभावित रूप से सर्वर को अनुकरण करने के लिए मेरे सिस्टम में जटिलता पैदा करता है।

  2. ग्राहकों के रूप में कार्य करें। ऐसा लगता है कि मुझे अपने सिस्टम में प्रति उपयोगकर्ता एक कनेक्शन की आवश्यकता है, जो कि अच्छी तरह से स्केल नहीं करेगा।

  3. मैंने एक एक्सएमपीपी गेटवे प्रोटोकॉल के बारे में सुना है, लेकिन यह स्पष्ट नहीं है कि यह क्लाइंट समाधान से बेहतर है। मैं यह भी नहीं बता सकता कि यह मानक है या नहीं।

कोई सुझाव या ट्रेडऑफ की सराहना की जाएगी। उदाहरण के लिए, इनमें से किसी भी समाधान को लक्षित एक्सएमपीपी सर्वर के अंदर चलने वाले कोड की आवश्यकता होगी (संभवतः मैं कुछ नहीं कर सकता)।

उत्तर

4

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

एक परिवहन आमतौर पर प्रत्येक जेआईडी के लिए रिमोट नेटवर्क से कनेक्ट होता है जो इसे ऑनलाइन के रूप में देखता है। यही है, यह आपके विकल्प 2 रिवर्स में है। ऐसा इसलिए है क्योंकि परिवहन और गैर-एक्सएमपीपी नेटवर्क के बीच कोई विशेष संबंध नहीं है; परिवहन बस नियमित ग्राहकों के समूह के रूप में कार्य कर रहा है। इसके लिए काम करने के लिए, एक्सएमपीपी ग्राहकों को पहले परिवहन के साथ पंजीकरण करना होगा, रिमोट नेटवर्क के लिए लॉगिन प्रमाण-पत्र देना होगा, और परिवहन को उनकी उपस्थिति को देखने की इजाजत देनी होगी।

एकमात्र कारण यह है कि बेहतर स्केलिंग का मौका यह है कि एक ही रिमोट नेटवर्क के लिए कई ट्रांसपोर्ट हो सकते हैं। उदाहरण के लिए, मेरा जैबर सर्वर एमएसएन के लिए एक परिवहन चला सकता है, एक और जैबर सर्वर एक और चला सकता है, और इसी तरह, प्रत्येक XMPP उपयोगकर्ताओं के एक अलग सबसेट के लिए कनेक्शन प्रदान करता है। हालांकि यह जैबर पक्ष पर लोड फैलता है, और आपके सिस्टम पर बैलेंसिंग लोड लोड भी फैल सकता है, फिर भी इसे दो प्रणालियों के बीच कई कनेक्शन की आवश्यकता होती है।

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

मामले में आप इन नहीं देखा है, तो आप उन्हें उपयोगी लग सकते:

आशा है कि मदद करता है।

2

मैं भी इसी तरह की प्रणाली पर काम कर रहा हूं।

मैं गेटवे/घटक मार्ग के साथ जा रहा हूं। मैंने कई विकल्पों को देखा है और इस के साथ बस गए हैं।

गेटवे मूल रूप से एक अन्य नेटवर्क के साथ जैबर/एक्सएमपीपी ब्रिजिंग के विशिष्ट उद्देश्य के साथ एक घटक है। क्लाइंट के रूप में XMPP का उपयोग करते समय आपको सबसे अधिक चीजों को बनाए रखना होगा। रोस्टर नियंत्रण की तरह सामान।

वास्तविक डिजाइन और किसी घटक के निर्माण पर बहुत कम सहायता ऑनलाइन है। उपर्युक्त उत्तर की तरह मैंने पाया कि xmpp प्रोटोकॉल/एक्सटेंशन मदद के लिए हैं। मुख्य लोगों को किया जा रहा है:

इन को पढ़ते हुए आपको दिखा देंगे क्या XEPs आप को संभालने के लिए सक्षम होने के लिए उम्मीद होगी। उस सामग्री को अनदेखा करें जो सर्वर द्वारा संभाला जाएगा कि आपका घटक संलग्न होगा।

यह एक शर्म की बात है कि डब्बर्बर के पास इस तरह के खराब दस्तावेज हैं क्योंकि "सबकुछ एक मॉड्यूल है" की प्रणाली ने सर्वर के बैकएंड की संभावना को सीधे अन्य नेटवर्क पर इंटरफेस कर दिया है। मैंने इस पर कोई रास्ता नहीं बनाया।

0

एक अन्य दृष्टिकोण आपके एक्सएमपीपी सर्वर विक्रेता के साथ काम करना है। अधिकांश में आंतरिक एपीआई होते हैं जो तृतीय पक्ष अनुप्रयोगों से उपस्थिति को इंजेक्शन देते हैं। उदाहरण के लिए, Jabber XCP इसके लिए एक एपीआई प्रदान करता है जो उपयोग करना वास्तव में आसान है।

(प्रकटीकरण: मैं अस्पष्ट, इंक, अस्पष्ट XCP के पीछे कंपनी के लिए काम करते हैं)

2

वहाँ मूलतः सर्वर से सर्वर के दो प्रकार (S2S) कनेक्शन हैं। पहले को गेटवे या एक परिवहन कहा जाता है, लेकिन वे वही बात हैं। यह शायद वह प्रकार है जिसे आप ढूंढ रहे हैं। मुझे गैर-एक्सएमपीपी पक्ष के लिए विशिष्ट दस्तावेज नहीं मिल सका, लेकिन कैसे एक्सएमपीपी विरासत सर्वर पर अनुवाद करने के बारे में सोचता है http://xmpp.org/extensions/xep-0100.html पर है। दूसरी तरह वास्तव में किसी भी अतिरिक्त XEP में समझाया नहीं गया है - यह नियमित रूप से एक्सएमपीपी एस 2 एस कनेक्शन है। नवीनतम ड्राफ्ट अपडेट के लिए आरएफसी 3920 या आरएफसी 3920bis में "सर्वर से सर्वर संचार" की तलाश करें।

चूंकि आपके पास अपने सर्वर पर मौजूद हैं और आपके सर्वर पर उपस्थिति है, और यह एक्सएमपीपी नहीं है, अवधारणाएं पूरी तरह से एक्सएमपीपी मॉडल पर मैप करने जा रही हैं। यह वह जगह है जहां परिवहन का काम आता है। आपको अपने मॉडल से एक्सएमपीपी मॉडल में अनुवाद करना होगा। हालांकि यह कुछ काम है, आप सभी निर्णय लेने के लिए मिलता है।

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

या शायद, आप किसी और के एक्सएमपीपी आधारित शतरंज गेम के लिए सिर्फ एक एस 2 एस पुल हैं, इसलिए आपको दूरस्थ सर्वर पर लॉगिन की आवश्यकता नहीं है, और केवल एक ईमेल सर्वर के समान कार्य कर सकते हैं और जानकारी वापस भेज सकते हैं और आगे। (सामान्य एस 2 एस कनेक्शन के साथ एकमात्र सत्र संग्रहीत किया जाएगा जो रिमोट सर्वर के साथ उपयोग किया जाने वाला एसएएसएल प्रमाणीकरण होगा, लेकिन उपयोगकर्ता स्तर पर एस 2 एस सिर्फ कनेक्शन बनाए रखता है, न कि लॉगिन सत्र।)

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

2

आपको किस आर्किटेक्चर का उपयोग करना चाहिए गैर-एक्सएमपीपी सिस्टम पर निर्भर करता है।

  1. क्या आप गैर-एक्सएमपीपी सिस्टम संचालित करते हैं? यदि हां, तो आपको उस सिस्टम में XMPP-S2S इंटरफ़ेस जोड़ने का कोई तरीका मिलना चाहिए, दूसरे शब्दों में, इसे एक एक्सएमपीपी सर्वर के रूप में कार्य करें। एओएल एआईएम के लिए इस दृष्टिकोण का उपयोग कर रहा है। दुर्भाग्यवश, उन्होंने GoogleTalk पर अपने प्रवेश द्वार को प्रतिबंधित कर दिया है।

  2. आप गैर-एक्सएमपीपी सिस्टम संचालित नहीं करते हैं लेकिन इसमें एक फेडरेशन इंटरफ़ेस है जिसका आप उपयोग कर सकते हैं - i। ई। आपका गेटवे सर्वर के रूप में अन्य सिस्टम से बात कर सकता है और इसका नामस्थान भी है। इस मामले में, आप एक गेटवे बना सकते हैं जो दोनों तरफ संघीय सर्वर के रूप में कार्य करता है। क्योंकि मुझे इस दृष्टिकोण का उपयोग करने वाले गेटवे के किसी भी उदाहरण के बारे में पता नहीं है, लेकिन यदि आप सार्वजनिक एक्सएमपीपी-टू-एसआईपी पुल बनाना चाहते हैं तो आप इसका इस्तेमाल कर सकते हैं।

  3. यदि गैर-एक्सएमपीपी सिस्टम आपको फेडरेशन इंटरफ़ेस नहीं देता है, तो आपके पास कोई अन्य विकल्प नहीं है बल्कि ग्राहकों का समूह बनता है। एक्सएमपीपी दुनिया में, इसे "परिवहन" कहा जाता है। एक परिवहन और एक सामान्य सर्वर के बीच मतभेदों को मूल रूप से कर रहे हैं:

    • परिवहन के JIDs अन्य प्रणाली से मैप की जाती हैं -
    • (जैसे john.doe \ [email protected] वास्तव में बदसूरत!)
    • एक्सएमपीपी उपयोगकर्ता जो परिवहन का उपयोग करना चाहते हैं, गैर-एक्सएमपीपी सिस्टम पर खाता बनाने और परिवहन खाते में उस खाते के लॉगिन प्रमाण-पत्र देने की आवश्यकता है। एक्सएमपीपी प्रोटोकॉल में एक प्रोटोकॉल एक्सटेंशन भी है जो एक्सएमपीपी उपयोगकर्ताओं को इन-बैंड में ट्रांसपोर्ट रजिस्ट्रेशन करने की अनुमति देता है।
संबंधित मुद्दे