2010-03-08 13 views
14

मुझे एलडब्ल्यूएन आलेख "Crash-only software" पसंद है और मैं क्रैश-सुरक्षित और गलती-सहनशील प्रोग्रामिंग के बारे में अधिक जानना चाहता हूं।क्रैश-सुरक्षित और गलती-सहनशीलता प्रोग्रामिंग के बारे में संसाधन

यह सुनिश्चित करना आश्चर्यजनक रूप से कठिन है कि लगातार स्थिति गलतियों की स्थिति में सुसंगत है। यहां मैं वितरित परिचालनों के बारे में भी बात नहीं करता हूं: यह एक नोड पर भी मुश्किल है: यहां तक ​​कि सामान्य बर्कले डीबी (बीडीबी डेटा स्टोर या बीडीबी समवर्ती डेटा स्टोर) में सिस्टम नष्ट होने पर भी नष्ट डेटाबेस हो सकता है। न केवल उच्च स्तर की अनुप्रयोग बाधाओं को तोड़ दिया जाता है, यदि सिस्टम क्रैश हो जाता है तो डेटाबेस सही तरीके से खोला नहीं जा सकता है।

क्रैश-सुरक्षित और गलती-सहनशील डिज़ाइन, दृष्टिकोण और प्रोग्रामिंग के बारे में अच्छे संसाधन क्या हैं।

यदि संसाधन सी ++ और पॉज़िक्स वातावरण पर ध्यान केंद्रित करते हैं, तो मैं इसकी सराहना करता हूं।

+1

साइड नोट: नवीनतम मैक OSX (Snow Leopard) ओएस में सिर्फ एक SIGKILL भेजता है उन सभी अनुप्रयोगों के लिए जो माना जाता है कि 'स्वच्छ' स्थिति में हैं। प्रभावशाली यह वास्तव में 1-सेकंड शटडाउन में कैसे परिणाम देता है (एक नई मशीन पर, मुझे स्वीकार करना होगा)। संदर्भ: http://developer.apple.com/mac/library/releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW22 – ChristopheD

उत्तर

2

भाषाओं में एक्टर मॉडल एरलांग और स्कैला इसे क्रैश मॉडल दें। यह article देखें।

5

अक्का जावा और स्कैला के लिए एक ढांचा है जो इसे दिमाग में छोड़ने के साथ लिखा गया है। अभिनेताओं के परिचय के लिए यह article और this प्रस्तुति देखें और इसे क्रैश करें। इसे Fail-Fast और worker/supervisor शैली भी कहा जाता है। erlang पर

दो अच्छा प्रस्तुतियों मैं भी लगता है कि बूस्ट भी में कुछ है, Systems that Never Stop (and Erlang) और Message Passing Concurrency in Erlang

Theron सी ++ के लिए एक अभिनेता पुस्तकालय है।

इसके अलावा एरलांग सी या सी ++ code पर चर्चा के लिए इसे देख सकता है। जावा/स्कैला/अक्का सी ++ कोड भी कॉल कर सकते हैं।

(आप सी पसंद है ++ मैं सुझाव है कि आप जावा के अलावा स्काला पर एक नज़र, बहुत अच्छी भाषा और बेहतर करने के लिए यदि आप सी से आते हैं ++।)

इसके अलावा जोनास Boners प्रस्तुति Scalability, Availability & Stability Patterns विषय पर एक अच्छी प्रस्तुति है।

+3

यदि आप जावा (या स्कैला) को कॉल करते हैं तो जेएनआई का उपयोग करके सी ++ डीएलएल, फिर जेवीएम की स्थिरता लुप्तप्राय है। चूंकि सी ++ कोड JVM के समान प्रक्रिया में चलता है, इसलिए यदि आप C++ कोड में क्रैश प्राप्त करते हैं तो JVM मर जाएगा। जेएनआई बहुत अच्छी तरह से काम नहीं करता है, इसका इस्तेमाल न करें। –

+0

जेएनआई/जेएनए महान काम करता है यदि आप शामिल जटिलताओं को समझते हैं।अपने जेवीएम को क्रैश करना क्योंकि सी कोड जिसे आपने सीजी गलती कहा है वह जेएनआई की गलती नहीं है। –

0

उत्तर के उपरोक्त सेट में जोड़ने के लिए, Groovy और GPars है, जो इसे याद किया गया है। बेशक यह सी ++ नहीं है।

सी ++ में एक और प्रयोगात्मक लाइब्रेरी है जिसे libcppa कहा जाता है। Theron इससे अधिक परिपक्व है।

किसी भी तरह से अपने सबसे अच्छे शर्त का उपयोग करना है या तो:

  1. Erlang
  2. स्काला/अक्का
+0

क्या आपको पता है कि थेरॉन स्कैला-जैसे रिमोट अभिनेताओं का समर्थन करता है? – Giorgio

+0

थेरॉन दूरस्थ अभिनेताओं का समर्थन नहीं करता है, लेकिन [libcppa करता है] (http://neverlord.github.com/libcppa/manual/index_0_3_3.html#htoc47)। – neverlord