ইজাব্বার্ড হ'ল একটি সবচেয়ে ভাল জানা অ্যাপ্লিকেশন অ্যাপ্লিকেশন এবং যার সাথে আমি শিখলাম er
আমি মনে করি এটি শিখার জন্য সবচেয়ে আকর্ষণীয় প্রকল্পগুলির মধ্যে একটি কারণ এটি সত্যই ইরং এর শক্তির উপর ভিত্তি করে চলেছে। (তবে কেউ কেউ যুক্তি দেবে যে এটি ওটিপি নয়, তবে চিন্তা করবেন না যে ভিতরে এখনও দুর্দান্ত কোড রয়েছে) ...)
কেন?
একটি এক্সএমপিপি সার্ভারকে (ইজাববার্ডের মতো) একটি উচ্চ স্তরের রাউটার হিসাবে দেখা যায়, শেষ ব্যবহারকারীদের মধ্যে বার্তাগুলি রাউটিং করে। অবশ্যই অন্যান্য বৈশিষ্ট্য রয়েছে, তবে এটি তাত্ক্ষণিক বার্তাপ্রেরণ সার্ভারের সবচেয়ে গুরুত্বপূর্ণ দিক। এটি একই সাথে অনেক বার্তা রুট করতে হবে এবং অনেকগুলি টিসিপি / আইপি সংযোগগুলি পরিচালনা করতে হবে।
সুতরাং আমাদের 2 টি বৈশিষ্ট্য রয়েছে:
- অনেক সংযোগ পরিচালনা করুন
- রুট বার্তা বার্তার কিছু দিক দেওয়া
এটি উদাহরণস্বরূপ যেখানে ইরং জ্বলে।
অনেক সংযোগ পরিচালনা করুন
এরলংয়ের সাথে স্কেলযোগ্য অ-ব্লকিং টিসিপি / আইপি সার্ভারগুলি তৈরি করা খুব সহজ। আসলে, এই সমস্যাটি সমাধানের জন্য এটি তৈরি করা হয়েছিল। এবং প্রদত্ত এটি কয়েক হাজার প্রক্রিয়া ছড়িয়ে দিতে পারে (এবং থ্রেড নয় , এটি একটি ভাগ-কিছুই নয়, যা নকশা করা সহজ), ইজাববার্ডটি এলাং প্রক্রিয়াগুলির একটি সেট হিসাবে তৈরি করা হয়েছে (যা বেশ কয়েকটি সার্ভারে বিতরণ করা যেতে পারে):
- ক্লায়েন্ট সংযোগ প্রক্রিয়া
- রাউটার প্রক্রিয়া
- চ্যাটরুম প্রক্রিয়া
- সার্ভার থেকে সার্ভার প্রক্রিয়া
তাদের সবাই বার্তা আদান প্রদান করে।
রুট বার্তা বার্তার কিছু দিক দেওয়া
এরং এর আর একটি খুব লাভজনক বৈশিষ্ট্য হ'ল প্যাটার্ন ম্যাচিং । এটি ভাষা জুড়ে ব্যবহৃত হয়।
উদাহরণস্বরূপ, নিম্নলিখিতটিতে:
access(moderator, _Config)-> rw;
access(participant, _Config)-> rw;
access(visitor, #config{type="public"})-> r;
access(visitor, #config{type="public_rw"})-> rw;
access(_User,_Config)-> none.
এটি access
ফাংশনের 5 টি ভিন্ন সংস্করণ । আর্গুমেন্ট প্রাপ্ত আর্গুমেন্টগুলি দিয়ে সবচেয়ে উপযুক্ত সংস্করণ নির্বাচন করবে। ( Config
এটি এমন একটি কাঠামো #config
যা একটি type
বৈশিষ্ট্যযুক্ত)।
তার অর্থ এটি শৃঙ্খলাবদ্ধতা if/else
বা switch/case
ব্যবসায়ের বিধি তৈরির চেয়ে খুব সহজ এবং পরিষ্কার ।
গুটিয়ে রাখা
স্কেলেবল সার্ভারগুলি লিখছি, এটিই পুরো মূল বিষয়। সবকিছুই এটি সহজ করে তোলে ডিজাইন করা। পূর্ববর্তী দুটি বৈশিষ্ট্যগুলিতে, আমি যুক্ত করব:
- হট কোড আপগ্রেড
mnesia
বিতরণ সম্পর্কিত সম্পর্কিত ডাটাবেস (বেস বিতরণ অন্তর্ভুক্ত)
mochiweb
, যার উপর বেশিরভাগ HTTP এরং সার্ভারগুলি অন্তর্নির্মিত
- বাইনারি সমর্থন (বাইনারি প্রোটোকল ডিকোডিং এবং এনকোডিং বাইনারি প্রোটোকল আগের মতো সহজ)
- মহান ওপেন সোর্স প্রকল্প সঙ্গে একটি মহান সম্প্রদায় (
ejabberd
, couchdb
কিন্তু webmachine
, riak
ও লাইব্রেরি একটি হত্যা খুব এম্বেড করা সহজ)
কম এলওসি
রয়েছে এই নিবন্ধে রিচার্ড জোন্স থেকে। তিনি সি ++ থেকে এর্ল্যাংয়ে একটি অ্যাপ্লিকেশনটি পুনরায় লিখেছিলেন: এরলংয়ে 75% কম লাইন।