Erlang 21 - 2. Overview

2 अवलोकन




erlang

2 अवलोकन

2.1 निर्मित मेकनिज्म

Erlang रनटाइम सिस्टम में दो इंटरऑपरेबिलिटी मैकेनिज्म बनाए जाते हैं, जो Erlang और बंदरगाहों को वितरित किए जाते हैं । बंदरगाहों की एक विविधता लिंक्ड-इन ड्राइवरों की है

वितरित एर्लांग

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

कब उपयोग करें: वितरित एर्लैंग का उपयोग मुख्य रूप से एरलंग-एरलंग संचार के लिए किया जाता है। इसका उपयोग एर्लांग और सी के बीच संचार के लिए भी किया जा सकता है, यदि सी कार्यक्रम को सी नोड के रूप में लागू किया जाता है, तो C and Java Libraries

कहां और अधिक पढ़ें: वितरित एर्लांग और कुछ वितरित प्रोग्रामिंग तकनीकों का वर्णन एरलैंग पुस्तक में किया गया है।

अधिक जानकारी के लिए, Distributed Programming. देखें Distributed Programming.

प्रासंगिक मैनुअल पृष्ठ निम्नलिखित हैं:

  • ERTS में इरानग मैनुअल पेज (बीआईएफ का वर्णन करता है)
  • कर्नेल में global मैनुअल पेज
  • net_adm कर्नेल में मैनुअल पेज
  • pg2 कर्नेल में मैनुअल पेज
  • rpc मैनुअल पेज कर्नेल में
  • STDLIB में pool मैनुअल पेज
  • STDLIB में slave मैनुअल पेज

पोर्ट्स और लिंक्ड-इन ड्राइवर

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

पोर्ट तंत्र का कार्यान्वयन प्लेटफ़ॉर्म पर निर्भर करता है। UNIX के लिए, पाइप का उपयोग किया जाता है और बाहरी प्रोग्राम को मानक इनपुट से पढ़ने और मानक आउटपुट पर लिखने के लिए माना जाता है। बाहरी कार्यक्रम को किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है जब तक कि यह इंटरप्रोसेस संचार तंत्र को संभाल सकता है जिसके साथ पोर्ट कार्यान्वित किया जाता है।

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

कब इस्तेमाल करें: पोर्ट्स का इस्तेमाल सभी तरह की इंटरऑपरेबिलिटी स्थितियों के लिए किया जा सकता है जहाँ एर्लांग प्रोग्राम और दूसरा प्रोग्राम एक ही मशीन पर चलता है। प्रोग्रामिंग काफी सीधा-आगे है।

लिंक्ड-इन ड्राइवरों में सी में कुछ कॉल-बैक फ़ंक्शन लिखना शामिल है। इसके लिए बहुत अच्छे कौशल की आवश्यकता होती है क्योंकि कोड Erlang रनटाइम सिस्टम से जुड़ा होता है।

चेतावनी

एक दोषपूर्ण लिंक्ड-इन ड्राइवर पूरे मेमोरी, हैंग या क्रैश को लीक करने के लिए पूरे एरलंग रनटाइम सिस्टम का कारण बनता है।

अधिक पढ़ने के लिए कहाँ: पोर्ट्स का वर्णन एर्लांग पुस्तक के "विविध आइटम" में किया गया है। लिंक्ड-इन ड्राइवरों को परिशिष्ट ई में वर्णित किया गया है।

open_port/2 मैनुअल पेज में BIF open_port/2 प्रलेखित है।

लिंक्ड-इन ड्राइवरों के लिए, प्रोग्रामर को कर्नेल में erl_ddll मैनुअल पेज पढ़ना होगा।

उदाहरण: Ports में पोर्ट उदाहरण।

2.2 सी और जावा लाइब्रेरी

Erl_Interface

पोर्ट के दूसरी तरफ का प्रोग्राम अक्सर C प्रोग्राम होता है। सी प्रोग्रामर की मदद करने के लिए, Erl_Interface लाइब्रेरी को विकसित किया गया है, जिसमें निम्नलिखित पांच भाग शामिल हैं:

  • erl_marshal , erl_eterm , erl_format , और erl_malloc : Erlang बाहरी शब्द प्रारूप से निपटने
  • erl_connect : वितरित erl_connect साथ संचार, नीचे C nodes देखें
  • erl_error : त्रुटि प्रिंट रूटीन
  • erl_global : वैश्विक रूप से पंजीकृत नामों तक पहुंच
  • Registry : कुंजी-मूल्य जोड़े के स्टोर और बैकअप

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

Binary = term_to_binary(Term)
Term = binary_to_term(Binary)

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

कब इस्तेमाल करें: सी कोड में, एरलैंग बायनेरिज़ के साथ संयोजन में।

अधिक पढ़ने के लिए कहां: इरलांग इंटरफेस यूजर गाइड, कमांड संदर्भ और लाइब्रेरी संदर्भ देखें। Erlang / OTP R5B, और पुराने संस्करणों में, जानकारी कर्नेल अनुप्रयोग का हिस्सा है।

उदाहरण: Erl_Interface में Erl_Interface उदाहरण।

C नोड्स

AC प्रोग्राम जो कि संबंध स्थापित करने के लिए Erl_Interface फ़ंक्शन का उपयोग करता है, और इसके साथ संचार करने के लिए, एक वितरित Erlang नोड को C नोड , या एक छिपे हुए नोड कहा जाता है। सी नोड के साथ मुख्य लाभ यह है कि एर्लांग प्रोग्रामर के दृष्टिकोण से संचार बेहद आसान है, क्योंकि सी प्रोग्राम वितरित एर्लैंग नोड के रूप में व्यवहार करता है।

कब उपयोग करें: सी नोड्स का उपयोग आमतौर पर डिवाइस प्रोसेसर (जैसा कि प्रोसेसर को नियंत्रित करने के लिए विरोध किया जाता है) पर किया जा सकता है, जहां सी मेमोरी मेमोरी या एप्लिकेशन विशेषताओं या दोनों के कारण एरलंग से बेहतर विकल्प है।

अधिक पढ़ने के लिए: Erl_Interface प्रलेखन का erl_connect हिस्सा देखें। प्रोग्रामर को भी टीसीपी / आईपी सॉकेट्स से परिचित होना आवश्यक है, Standard Protocols में सॉकेट्स देखें और Built-In Mechanisms में वितरित एरलैंग।

उदाहरण: C Nodes

Jinterface

Erlang / OTP R6B में, Java के लिए Erl_Interface के समान एक पुस्तकालय जोड़ा गया जिसे Jinterface कहा जाता है। यह Erlang नोड्स के साथ संवाद करने के लिए जावा प्रोग्राम के लिए एक उपकरण प्रदान करता है।

2.3 मानक प्रोटोकॉल

कभी-कभी एर्लांग कार्यक्रम और मानक प्रोटोकॉल का उपयोग करने वाले एक अन्य कार्यक्रम के बीच संचार वांछनीय है। Erlang / OTP वर्तमान में TCP / IP और UDP सॉकेट का समर्थन करता है: इस प्रकार है:

  • SNMP
  • एचटीटीपी
  • IIOP (CORBA)

बाद के तीन में से एक का उपयोग करने के लिए प्रोटोकॉल के बारे में अच्छे ज्ञान की आवश्यकता होती है और इस ट्यूटोरियल द्वारा कवर नहीं किया जाता है। क्रमशः एसएनएमपी, इनसेट और ऑर्बर एप्लिकेशन देखें।

सॉकेट

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

कनेक्शन-कम सॉकेट संचार (यूडीपी) में एक निश्चित पोर्ट नंबर के साथ एक निश्चित मेजबान में एक सर्जक सॉकेट और इसमें डेटा भेजने वाला कनेक्टर सॉकेट होता है।

सॉकेट अवधारणा के विस्तृत विवरण के लिए, नेटवर्क प्रोग्रामिंग के बारे में एक उपयुक्त पुस्तक देखें। एक सुझाव यूनिक्स नेटवर्क प्रोग्रामिंग, वॉल्यूम 1: नेटवर्किंग एपीआई - सॉकेट्स और एक्सटीआई द्वारा डब्ल्यू रिचर्ड स्टीवंस, आईएसबीएन: 013490012X है।

Erlang / OTP में, TCP / IP और UDP सॉकेट्स तक पहुँच कर्नेल में gen_tcp और gen_udp मॉड्यूल द्वारा प्रदान की जाती है। दोनों का उपयोग करना आसान है और सॉकेट अवधारणा के बारे में विस्तृत ज्ञान की आवश्यकता नहीं है।

कब उपयोग करें: एर्लांग कार्यक्रम की तुलना में उसी या किसी अन्य मशीन पर चलने वाले कार्यक्रमों के लिए।

कहां और अधिक पढ़ें: कर्नेल में gen_tcp और gen_udp मैनुअल पेज देखें।

2.4 आई.सी.

IC (Erlang IDL Compiler) एक इंटरफ़ेस जनरेटर है, जिसे IDL इंटरफ़ेस विनिर्देश दिया जाता है, स्वचालित रूप से Erlang, C या Java में स्टब कोड उत्पन्न करता है। आईसी उपयोगकर्ता गाइड और आईसी संदर्भ मैनुअल देखें।

जानकारी के लिए, ic में ic मैनुअल पेज देखें।

2.5 पुराने अनुप्रयोग

दो पुराने अनुप्रयोग इंटरऑपरेबिलिटी के बारे में रुचि के हैं। दोनों को आईसी द्वारा प्रतिस्थापित किया गया है और केवल संदर्भ के लिए यहां उल्लेख किया गया है:

  • IG - Erlang / OTP R6B से निकाला गया।

    IG (इंटरफेस जेनरेटर) ने कुछ कीवर्ड्स के साथ C हेडर फाइल को देखते हुए, Erlang प्रोग्राम और C प्रोग्राम के बीच पोर्ट या सॉकेट कम्युनिकेशन के लिए स्वचालित रूप से कोड जेनरेट किया।

  • Jive - एरलांग / OTP R7B से निकाला गया।

    Jive ने एक Erlang प्रोग्राम और Java प्रोग्राम के बीच एक सरल इंटरफ़ेस प्रदान किया।