2009-07-21 15 views
6

क्या दो सर्वरों के बीच डेटा भेजने के लिए सॉकेट का उपयोग करना अच्छा विचार है, या क्या मुझे डेटा को स्थानांतरित करने के लिए एमक्यू जैसे कुछ उपयोग करना चाहिए।सॉकेट विश्वसनीय हैं?

मेरे सवालों का: सॉकेट विश्वसनीय, अगर मैं केवल एक बार/आंकड़ों का आश्वासन दिया वितरण की जरूरत है कर रहे हैं?

क्या कोई अन्य समाधान हैं?

धन्यवाद।

+1

... सॉकेट विश्वसनीय हैं? –

+2

@modosansreves: यदि स्कैम्बल किए गए शब्द तब तक सुगम होते हैं जब तक कि पहले और आखिरी अक्षरों की जगह न हो तो गलत व्याकरण अधिक चोट नहीं पहुंचाएगा। संदेश पर ध्यान दें, व्यक्तिगत शब्दों पर नहीं। –

उत्तर

12

सॉकेट नेटवर्क संचार करने के लिए एक एप्लिकेशन स्तर API है। सॉकेट की विश्वसनीयता उस नेटवर्क प्रोटोकॉल पर निर्भर करती है जिसे आप सॉकेट बनाते समय चुनते हैं। यदि आप टीसीपी/आईपी का चयन करते हैं, तो आपको एक सीमा तक "विश्वसनीय" स्थानांतरण मिलेगा। यदि आप यूडीपी/आईपी का चयन करते हैं तो आपको "अविश्वसनीय" स्थानांतरण मिलेगा।

के रूप में अन्य उत्तर में कहा गया है, टीसीपी सुनिश्चित करता है कि आप खोना नहीं है या एक सीमा तक भ्रष्ट डेटा:

  1. अगर वहाँ एक काफी लंबे समय से नेटवर्क आउटेज, या प्रेषक या रिसीवर है एक मर जाता है टीसीपी/आईपी कनेक्शन तोड़ देगा और जब तक आप कनेक्शन को पुनरारंभ करने के लिए कदम उठाएंगे तब तक आप डेटा खो देंगे।
  2. यदि कोई नेटवर्क स्तर डेटा भ्रष्टाचार है, तो छोटी संभावना है कि यह चेकसम द्वारा पता नहीं होगा।

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

तो आपके प्रश्न का उत्तर यह है कि यह इस बात पर निर्भर करता है कि आप सॉकेट का उपयोग कैसे करते हैं, और आपके सिस्टम की किस स्तर की विश्वसनीयता की आवश्यकता है।

2

सॉकेट के रूप में विश्वसनीय आप अपने कार्यान्वयन बनाने के रूप में, और अंतर्निहित हार्डवेयर पर आधारित हैं। यदि आप गारंटीकृत डिलीवरी सेवा बनाने की परेशानी नहीं चाहते हैं (किस परिस्थितियों में? 100% कभी नहीं होने वाला है), एक संदेश कतार प्रणाली एक अच्छी शर्त है। संदेश कतार में सभी दृढ़ता, कतार, रिट्री इत्यादि लागू हो जाएंगी, यदि आप मानक सॉकेट के साथ गए तो आपको स्वयं को लागू करने की आवश्यकता होगी।

2

आप शायद एक MQ का उपयोग करना चाहिए अगर आप कोई फर्क नहीं पड़ता कि क्या होता है गारंटी वितरण की जरूरत है (जैसे अन्य पार्टी के रखरखाव के लिए ऑफ़लाइन हो जाता है) और आप सभी तर्क अपने आप को लिखने के लिए नहीं करना चाहती। सॉकेट वह है जो आप किसी अन्य पार्टी से कनेक्ट करने के लिए उपयोग करते हैं, इससे कोई फर्क नहीं पड़ता कि वह पार्टी एमक्यू या संदेश का अंतिम रिसीवर है।

1

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

+0

+1: modosansreves को उत्तेजित करने के लिए "सॉकेट आईएस" के उपयोग के लिए। बेशक यह एक पूर्ण संयोग हो सकता है लेकिन यह एक मजाकिया है। –

+2

सॉकेट ओएसआई नेटवर्क मॉडल से संबंधित नहीं हैं। एक सॉकेट (संभावित रूप से) बिडरेक्शनल, buffered संचार के लिए एक इंटरफेस है जो इस तथ्य से मूल्य प्राप्त करता है कि इसे किसी भी अंतर्निहित चैनल से जोड़ा जा सकता है और अंतर्निहित संचार चैनल की एक बड़ी विविधता का समर्थन करता है। कच्चे/टीसीपी/udp और अन्य नेटवर्क संचार से परे आप एक पाइप के माध्यम से स्थानीय रूप से संवाद करने के लिए सॉकेट का उपयोग कर सकते हैं, या जो भी चैनल आप कल्पना कर सकते हैं। ओएसआई को इस अवधारणा को कम न करें। –

0

यदि आप stream socket का उपयोग करते हैं, तो टीसीपी प्रोटोकॉल यह सुनिश्चित करता है कि डेटा ट्रांसमिशन में खो नहीं जाता है और दूषित होने की संभावना नहीं है (हालांकि आपको यह तय करना है कि इसके 16 बिट चेकसम पर्याप्त हैं या आपको ऐप-लेयर चेकसम तंत्र की आवश्यकता है) ।

क्या MQ सिस्टम प्रदान करते हैं और क्या आप या जरूरत नहीं हो सकता है अनुप्रयोग स्तर transaction-type विश्वसनीयता, अर्थात भी रुक-रुक कर हार्डवेयर या सॉफ्टवेयर विफलताओं का सामना करने में वितरण की गारंटी करने की क्षमता है।

0

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

0

यह आपके द्वारा विकसित किए जा रहे एप्लिकेशन के प्रकार पर निर्भर करता है। यह एक प्रोग्राम लिख रहा है जहां आपको भेजे गए संदेश की प्रतिक्रिया या एके की आवश्यकता है तो टीसीपी सॉकेट अच्छे हैं। लेकिन, अगर आप कुछ वर्कफ़्लो प्रकार के परिदृश्य को कार्यान्वित कर रहे हैं, तो आपको संदेश कतार का उपयोग करना चाहिए।

2

सॉकेट विश्वसनीय हैं क्योंकि प्रत्येक संचार एमक्यू सहित इसके शीर्ष पर किया जाता है।

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

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

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

उम्मीद है कि मदद करता है।

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