2009-01-06 15 views
10

आरपीसी अर्थशास्त्र में जहां एर्लांग ने कम से कम एक बार और जावा आरएमआई के साथ सबसे अच्छा, सन आरपीसी की उम्मीद की है, लेकिन एक बार वास्तव में एक बार अर्थशास्त्र नहीं है।बिल्कुल एक बार अर्थशास्त्र क्यों अक्षम है?

यह वास्तव में एक बार अर्थशास्त्र के लिए क्यों अक्षम लगता है?

उदाहरण के लिए

अगर ग्राहक एक विशिष्ट टैग किए गए अनुरोध को फिर से भेजने जब तक एक उत्तर प्राप्त होता है रखता है और एक सर्वर के लिए एक अनुरोध नकल करने नहीं में सभी संभाला अनुरोधों का ट्रैक रखता है। क्या यह बिल्कुल एक बार नहीं होगा?

उत्तर

21

क्या हुआ अगर अनुरोध से बाहर ले जाने और रिकॉर्डिंग है कि यह अनुरोध किया है के बीच सर्वर क्रैश होता है पर विचार करें?

में सर्वाधिक बार अनुरोध रिकॉर्डिंग, तो यह बाहर ले जाने से आप प्राप्त कर सकते हैं। यदि आप दोनों के बीच दुर्घटनाग्रस्त हो जाते हैं, तो आपने इसे (गलत तरीके से) रिकॉर्ड किया है, इसलिए आप इसे फिर से नहीं करेंगे। इसलिए में सर्वाधिक एक बार

Bizarrely, (समय समाप्ति के साथ) यह एक पेटेंट: http://www.freepatentsonline.com/7162512.html। जैसा कि मैंने उपरोक्त तर्क दिया है, यह बिल्कुल एक बार गारंटी नहीं देता है।

आपको इसे कम करके कम से कम एक बार मिलता है, फिर इसे रिकॉर्ड करना। यदि आप दोनों के बीच दुर्घटनाग्रस्त हो जाते हैं, तो अनुरोध दोहराए जाने पर आप इसे फिर से ले जाएंगे।

लेकिन यह कहने के लिए "ठीक एक बार" सभी परिस्थितियों में वास्तव में संभव नहीं है

+1

दिलचस्प कागज विद्युत केबल लात, कुल्हाड़ियों लेने के बुनियादी ढांचे नेटवर्क के, वास्तव में एक बार सहित अधिकांश मामलों में काम करता है, http: //ilpubs.stanford। edu: 8090/483/1/2000-7.pdf –

1

मुझे लगता है कि इस सवाल का जवाब है कि आप एक आवश्यकता होगी है (नेटवर्क त्रुटियों के बजाय सर्वर क्रैश हो जाता है के लिए इसी तरह की स्थितियों रहे हैं) उन अर्थशास्त्र प्राप्त करने के लिए अनिश्चित समय, क्योंकि ग्राहक को सर्वर से एक निश्चित परिणाम की प्रतीक्षा करनी होगी, जो कभी नहीं आ सकता है। वास्तविक नेटवर्क पर यह आवश्यकता अव्यवहारिक है।

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

यह अनुमान है हालांकि: मैंने कभी भी आरपीसी प्रोटोकॉल तैयार नहीं किया है।

3

उच्च अंत मैसेजिंग बसों, आईबीएम की WebSphere MQ तरह वितरण एक बार वास्तव में की पेशकश करने मुराद है। वास्तव में, यह डिफ़ॉल्ट व्यवहार है (पिछली बार जब मैंने WMQ का उपयोग किया था ...)। वे इसे Write-ahead logs और लॉकिंग तकनीकों की एक किस्म के साथ प्राप्त करते हैं।

बेशक, मुझे संदेह नहीं है कि कहीं उनके कानूनी दस्तावेजों में दफनाया गया है, "वास्तव में एक बार" वास्तव में इसका अर्थ यह है कि "संदेश एक बार, एक से अधिक बार वितरित किया जा सकता है या नहीं। या बहुत कुछ या उससे कम शून्य। " क्रम में उनकी पीठ को कवर करने के लिए, लेकिन इसे बाहर पर आदि

+1

वेबमाइड्स ब्रोकर की मार्केटिंग सामग्री में "बिल्कुल एक बार" भी है। – slim

+0

यह निश्चित रूप से "अभी तक नहीं किया गया है या बिल्कुल एक बार" होना चाहिए? अर्थात। इसमें अनिश्चित काल तक लंबे लेनदेन होना चाहिए - या बस सर्वर को बंद करने पर विचार करें :) –

+0

मुझे लगता है कि अंतिम वितरण चरण परमाणु होने पर आप एक संदेश की एक बार डिलीवरी प्राप्त कर सकते हैं।हालांकि, अगर "डिलीवरी" चरण (जैसा कि आरपीसी के लिए है) के हिस्से के रूप में एक आर्बिटिक गणना है, तो मुझे नहीं लगता कि यह बिल्कुल एक बार कैसे किया जाए। –

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