5

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

क्या वेब आधारित अनुप्रयोगों में प्रतिक्रियाशील प्रोग्रामिंग बनाम अनिवार्य प्रोग्रामिंग के बीच कोई ठोस तुलना है?

गैर-प्रतिक्रियाशील प्रोग्रामिंग पर प्रतिक्रियाशील प्रोग्रामिंग का उपयोग करके प्रदर्शन लाभ, थ्रूपुट I कितना प्राप्त होता है?

प्रतिक्रियाशील प्रोग्रामिंग के फायदे और नुकसान क्या हैं?

क्या कोई सांख्यिकीय बेंचमार्क है?

उत्तर

8

खैर, प्रतिक्रियाशील प्रोग्रामिंग का अर्थ है कि आप अपने सभी आईओ बाध्य कार्यों जैसे नेटवर्क कॉल असीमित रूप से कर रहे हैं। उदाहरण के लिए कहें कि आपका एप्लिकेशन बाहरी आरईएसटी एपीआई या डेटाबेस कहता है, आप उस आमंत्रण को असीमित रूप से कर सकते हैं। यदि आप ऐसा करते हैं तो आपका वर्तमान थ्रेड ब्लॉक नहीं होता है। आप केवल एक या कुछ धागे को बढ़ाकर कई अनुरोधों को पूरा कर सकते हैं। यदि आप अवरुद्ध दृष्टिकोण का पालन करते हैं तो आपको प्रत्येक अनुरोध को संभालने के लिए एक धागा होना चाहिए। अधिक जानकारी के लिए आप मेरे बहु भाग ब्लॉग पोस्ट part one, part two और part three देख सकते हैं।

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

आरएक्सजेवा ऑपरेटरों के सेट के साथ एक और पर्यवेक्षक कार्यान्वयन नहीं है बल्कि यह आपको अच्छी त्रुटि प्रबंधन और पुनः प्रयास तंत्र प्रदान करता है जो वास्तव में आसान हैं।

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

4

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

तो इस तंत्र के साथ आप दोनों के बीच यातायात के प्रवाह को नियंत्रित कर सकते हैं और स्मृति समस्याओं से गंदे से बच सकते हैं।

आप रिएक्टिव कार्यक्रमों की यहाँ https://github.com/politrons/reactive

के कुछ practicle उदाहरण और के बारे में यहाँ वापस https://github.com/politrons/Akka/blob/master/src/main/scala/stream/BackPressure.scala

वैसे दबाव देख सकते हैं, प्रतिक्रियाशील कार्यक्रमों की के बारे में केवल नुकसान, सीखने की अवस्था क्योंकि you're बदल रहा है प्रोग्रामिंग के प्रतिमान। लेकिन आजकल सभी महत्वपूर्ण कंपनियों सम्मान और प्रतिक्रियाशील घोषणापत्र http://www.reactivemanifesto.org/

3

नुकसान

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

  • अक्सर कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग के बराबर होने के लिए भ्रमित हो जाता है।

0

प्रतिक्रियाशील प्रोग्रामिंग बुद्धिमान रूटिंग और घटनाओं की खपत सहित माइक्रो-आर्किटेक्चर की एक शैली है।

प्रतिक्रियाशील यह है कि आप कम से कम अधिक कर सकते हैं, विशेष रूप से आप कम धागे के साथ उच्च भार संसाधित कर सकते हैं।

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

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

से
https://blog.redelastic.com/what-is-reactive-programming-bc9fa7f4a7fc https://spring.io/blog/2016/06/07/notes-on-reactive-programming-part-i-the-reactive-landscape https://spring.io/blog/2016/07/28/reactive-programming-with-spring-5-0-m1

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