स्काला या क्लोजर फंक्शनल प्रोग्रामिंग बेस्ट प्रैक्टिस


11

मैंने बहुत से सेल्फ-स्टडी कोडिंग की, समानांतर प्रोग्रामिंग मॉडल के साथ कुछ अनुभव प्राप्त किया: अभिनेता, सॉफ्टवेयर लेनदेन मेमोरी, डेटा फ्लो।

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

क्या किसी को वास्तुकला (src या पाठ या आरेख या ब्लूप्रिंट) का अच्छा उदाहरण पता है जो अक्का अभिनेताओं या सॉफ़्टवेयर लेनदेन मेमोरी का उपयोग करता है और अंत में दृढ़ता को लागू करता है?

Transactional Memory, Actors, Dataflow, Tuple रिक्त स्थान के लिए वास्तविक जीवन के अनुप्रयोगों में कोई भी अच्छा उदाहरण / विचार स्वागत योग्य है।


क्या आपको अक्का और एसटीएम दोनों की आवश्यकता है?
ओम-नॉम-नॉम

यह असामान्य लगता है कि आप दृढ़ता को "अंत में" मानते हैं। मेरा मानना ​​है कि "फँसते हुए डीबी सिंक, संभव स्केलेबिलिटी अड़चनें आदि।" एक समस्या ठीक है क्योंकि वे अंत के बजाय चीजों के बीच में हैं।
डैन बर्टन

सहमत हूँ कि दृढ़ता अंत में अधिक से अधिक बार होती है

@Stas (1) स्काला और क्लोजर, (2) सर्वोत्तम प्रथाओं से संबंधित प्रश्न कैसे है? मैंने जो पढ़ा है वह (1) भाषा-अज्ञेय और (2) केवल संगति (विशेष रूप से स्थायित्व / दृढ़ता) से संबंधित है।
साकिन

जवाबों:


5

अभिनेता / एसटीएम मॉडल और डेटाबेस दृढ़ता कुछ हद तक रूढ़िवादी हैं - आप आसानी से एक दूसरे के बिना हो सकते हैं, और मुझे लगता है कि दोनों को भ्रमित करने का खतरा है।

व्यवहार्यता प्राप्त करना (ACID में D) एक ट्रांजेक्शनल सेटिंग में बेहद जटिल है, और विशेष रूप से एक वितरित सेटिंग में जहां आपके पास एक्टर्स / प्रक्रियाएँ संदेश पासिंग द्वारा समन्वित हो रही हैं। आप बीजान्टिन जनरल्स समस्या जैसे कांटेदार मुद्दों में आते हैं ।

नतीजतन, मुझे लगता है कि आपकी विशिष्ट दृढ़ता आवश्यकताओं को पूरा करने के लिए समाधान को सिलाई करने के लिए हमेशा कुछ डिग्री होने वाली है। कोई "एक आकार सभी फिट बैठता है" समाधान नहीं हैं।

वर्थ की तलाश (क्लोजर परिप्रेक्ष्य):


5

अभिनेता मॉडल कमांड / क्वेरी रिस्पॉन्सिबिलिटी सेग्रीगेशन (CQRS) के साथ बहुत काम करता है , क्योंकि डेटा हेरफेर करने वाले अभिनेताओं को संदेश "कमांड" समकक्ष के रूप में इस्तेमाल किया जा सकता है।

तो, आपकी दृढ़ता समस्या के साथ क्या करना है? ठीक है, आप मेमोरी पर काम करते हैं, और सभी कमांड्स को लॉग में लिखते हैं, जो कि एक सस्ता ऑपरेशन है क्योंकि यह एपेंड-ओनली है, और समय-समय पर डंप स्नैपशॉट्स डेटाबेस को पुनः लोड करने के लिए आवश्यक समय को कम करने के लिए आवश्यक है (साथ ही इसे संभव बनाता है लॉग द्वारा उपयोग किए गए स्थान को पुनर्प्राप्त करें)।

यह एक बहुत ही सामान्य तकनीक है। आगे की प्रेरणा के लिए वोल्टीडीबी और रेडिस को देखें।


4

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

क्लोजर में हमारे पास एसटीएम है जो हमें एसीआई देता है, डी गायब है। डाटामिक ने डी को जोड़ा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.