दो पुस्तकों, प्रोग्रामिंग Erlang (जो आर्मस्ट्रांग) और प्रोग्रामिंग अमृत (डेव थॉमस) पढ़ने के बाद, मैं असली दुनिया में Erlang/अमृत के बारे में कुछ सवाल है।कैसे करता है असली दुनिया में Erlang/अमृत काम
Q1: एकीकृत बैकएंड विकास
मैं एक तकनीक बात में एक टेबल देखा (मैं एक स्क्रीनशॉट बनाया है, लेकिन मैं स्रोत भूल गया यदि आप जानते हैं, एक टिप्पणी छोड़ कृपया।):
+ ---------------------- + ------------------------- + --------- +
| Technical requirement | Server A | Server B |
+ ---------------------- + ------------------------- + --------- +
| HTTP Server | Nginx & Phusion | Elixir |
| Request Processing | Ruby on Rails | Elixir |
| Long Running Requests | Go | Elixir |
| Server-Side State | Redis | Elixir |
| Persistable Data | Redis & Mongo | Elixir |
| Background Jobs | Cron, Bash Scripts & Ruby | Elixir |
| Service Crash Recovery | Upstart | Elixir |
+ ---------------------- + ------------------------- + --------- +
क्या यह सच है? क्या एरलांग/एलिक्सीर इतना परिपक्व है कि यह सभी बैकएंड कार्यों को संभाल सकता है?
यदि सही है, तो क्या यह एरलांग/एलिक्सीर कोड आधार मोनोलिथिक होगा?
Q2: नरम वास्तविक समय
डिजाइनिंग से Erlang/OTP (फ्रांसेस्को Cesarini & स्टीव Vinoski) के साथ अनुमापकता के लिए:
यदि आपका सिस्टम प्रवाह क्षमता प्रति सेकंड और एक एक लाख संदेशों है मिलियन एक साथ अनुरोध संसाधित होने लगते हैं, इसे प्रक्रिया के लिए 1 सेकंड लेना चाहिए और इसके प्राप्तकर्ता को अनुरोध देना चाहिए। लेकिन अगर एक स्पाइक के दौरान, दो लाख अनुरोध भेजे जाते हैं, तो थ्रूपुट में कोई गिरावट नहीं होनी चाहिए; कुछ नहीं, लेकिन सभी अनुरोधों को 2 सेकंड के भीतर संभाला जाना चाहिए।
क्या एरलांग/एलिक्सीर वास्तव में ऐसा कर सकता है?
यदि मेरा एरलांग सर्वर (केवल मशीन पर) केवल 1 एम संदेशों/सेकंड को संभाल सकता है और अनुरोध स्पाइक 5 एम अनुरोध/सेकंड है, तो लगभग सभी अनुरोधों को 5 सेकंड के भीतर संभाला जाएगा? एक वितरित वातावरण के बिना Erlang कैसे काम करता है? अन्य बैकएंड तकनीक ऐसा क्यों नहीं कर सकती (उदा। Node.js)?
Q3: वास्तविक समय scalability
वहाँ किसी भी उपलब्ध तकनीक/उपकरण/पुस्तकालय/सेवा या वास्तविक मामले जोड़ने Erlang स्वचालित रूप से नोड जब अनुरोध spikes पता लगाने के द्वारा पैमाने, और जैसे ही नीचे पैमाने पर उपयोग बूंदों के रूप में करने के लिए है?
Erlang/Elixir के लिए तैनाती/निगरानी/संचालन के प्रबंधन के लिए उपयुक्त उपकरण क्या हैं?
Q4: अनुकूलन
मैं उनकी सेवाओं का समर्थन करने के WhatsApp उपयोग Erlang पता है। उन्होंने एरलांग पर बहुत अनुकूलन किया। इसके बारे में कोई जानकारी? अगर हमें हमारी एर्लांग सेवाओं को अनुकूलित करने की ज़रूरत है, तो हम इसे कैसे शुरू कर सकते हैं?
क्या आप कृपया क्यू 1 में दी गई तालिका को प्रारूपित कर सकते हैं। मुझे दिए गए क्यू 1 को समझ में नहीं आता है। –
मुझे लगता है कि आपके प्रश्न बहुत व्यापक हैं और क्यू एंड ए प्रारूप के लिए बहुत उपयुक्त नहीं हैं। –
अपने सवालों के जवाब देने के लिए, किसी को एक और पुस्तक लिखने की आवश्यकता होगी। – webdeb