Node Communication এবং net_adm, net_kernel মডিউল

Distribution এবং Clustering (ডিস্ট্রিবিউশন এবং ক্লাস্টারিং) - এরল্যাং (Erlang) - Computer Programming

275

Distributed Systems এর জন্য Erlang এর Concurrency মডেল

Erlang এর concurrency model এবং এর distributed systems এর জন্য ব্যবহৃত ফিচারগুলি একে অত্যন্ত শক্তিশালী করে তোলে যখন আপনি distributed applications তৈরি করেন। Erlang এর message passing মডেল এবং lightweight processes এর মাধ্যমে, একাধিক নোড (কম্পিউটার বা সার্ভার) বা প্রসেসগুলির মধ্যে সহজে যোগাযোগ করা এবং ত্রুটির প্রতিকার করা সম্ভব।

Erlang এর concurrency model-এ, প্রতিটি প্রসেস আলাদা মেমরি স্পেসে চলে এবং message passing এর মাধ্যমে একে অপরের সাথে যোগাযোগ করে। Erlang এর distributed systems বিশেষভাবে ডিজাইন করা হয়েছে যাতে একাধিক নোডে কার্যক্রম নির্বাহ করা যায়, এবং এই প্রসেসগুলির মধ্যে যোগাযোগ সম্ভব হয়। Erlang এর BEAM VM (Erlang Virtual Machine) ডিস্ট্রিবিউটেড কম্পিউটিং সুবিধা প্রদান করে, যেখানে একাধিক নোডের মধ্যে তথ্য শেয়ার এবং প্রসেস সমন্বয় করা যায়।


Node Communication (নোড কমিউনিকেশন)

Erlang ডিস্ট্রিবিউটেড সিস্টেমে, একাধিক Erlang node একে অপরের সাথে যোগাযোগ করতে পারে। একে node communication বলা হয়। Erlang এ একটি node হলো একটি Erlang runtime environment যা একক Erlang ইন্সট্যান্স বা সিস্টেম প্রতিনিধিত্ব করে। যখন একাধিক নোড একই নেটওয়ার্কে সংযুক্ত হয়, তখন তারা একে অপরের সাথে message passing এর মাধ্যমে যোগাযোগ করতে সক্ষম হয়।

নোডের মধ্যে যোগাযোগের জন্য Erlang distributed Erlang প্রোটোকল ব্যবহার করে, যেখানে প্রতিটি নোডের একটি অনন্য নাম (node name) থাকে এবং একে অপরকে ঐ নামের মাধ্যমে অ্যাক্সেস করা হয়।

নোড সংযোগ স্থাপন:

  1. Connecting Nodes: একে অপরের সাথে দুটি নোড সংযোগ করতে হলে, সেগুলির মধ্যে একটি Erlang cookie ব্যবহার করা হয়, যা একটি সিকিউরিটি মেকানিজম হিসেবে কাজ করে।
  2. Node Names: প্রতিটি নোডের একটি নির্দিষ্ট নাম থাকে (যেমন, node@hostname), যা একে অপরের সাথে যোগাযোগ করার জন্য ব্যবহৃত হয়।

উদাহরণ: দুইটি নোড সংযোগ

% প্রথম নোডে:
erl -sname node1

% দ্বিতীয় নোডে:
erl -sname node2

এখানে, node1 এবং node2 দুইটি আলাদা Erlang নোড। এই নোডগুলো একে অপরের সাথে যোগাযোগ করতে সক্ষম হবে।

নোডে যোগাযোগ:

একটি নোড থেকে অন্য নোডে বার্তা পাঠানোর জন্য node@hostname ব্যবহার করা হয়। যেমন:

% একটি নোডে চলমান প্রসেসে বার্তা পাঠানো:
node1@hostname ! {hello, "Hello from node1!"}.

net_adm মডিউল

net_adm মডিউলটি Erlang এর নেটওয়ার্কের মধ্যে নোড পরিচালনা এবং তাদের মধ্যে সংযোগ স্থাপন করতে ব্যবহৃত হয়। এটি নোডগুলি সংযুক্ত করা এবং একে অপরের সাথে যোগাযোগ সক্ষম করার জন্য প্রয়োজনীয় ফাংশন সরবরাহ করে।

net_adm মডিউলের কিছু ফাংশন:

  1. net_adm:ping(NodeName): একটি নোডকে পিং করে, এটি পরীক্ষা করে যে ওই নোডটি সচল এবং সংযুক্ত আছে কিনা।

    উদাহরণ:

    net_adm:ping('node2@hostname').

    যদি node2@hostname সঠিকভাবে সংযুক্ত থাকে, তবে এটি সফলভাবে সংযোগ স্থাপন করবে, এবং অন্যথায় ত্রুটি দেখাবে।

  2. net_adm:ping/1: এটি নোডের সাথে সংযোগ স্থাপন করতে ব্যবহৃত হয় এবং এটি সেই নোডে বার্তা পাঠাতে সাহায্য করে।

net_kernel মডিউল

net_kernel মডিউলটি Erlang নেটওয়ার্কের মধ্যে নোডের কার্যক্রম নিয়ন্ত্রণ করে এবং এটি নোডগুলির মধ্যে কমিউনিকেশন পরিচালনা করতে ব্যবহৃত হয়। net_kernel হল একটি মূল মডিউল যা Erlang এর ডিস্ট্রিবিউটেড সিস্টেমের সেন্ট্রাল কম্পোনেন্ট।

net_kernel মডিউল এর কার্যাবলি:

  1. Starting a Node:

    • net_kernel:start/2 ফাংশন ব্যবহার করে Erlang নোড শুরু করা হয়।
    net_kernel:start([node_name, long_name]).
    • এখানে node_name হচ্ছে নোডের নাম এবং long_name হচ্ছে নোডের পরিচিতি (যেমন node@hostname)।
  2. Setting Up Cookies:
    • Erlang নোডগুলির মধ্যে যোগাযোগের জন্য cookie প্রয়োজন। এটি একটি সিকিউরিটি বৈশিষ্ট্য যা নিশ্চিত করে যে, নোডগুলি একে অপরের সাথে সম্পর্কিত এবং authenticated
  3. Checking Node Status:

    • net_kernel মডিউলটি ব্যবহার করে আপনি সিস্টেমে চলমান নোডগুলির অবস্থা যাচাই করতে পারেন।
    net_kernel:connect_node(NodeName).

    এই ফাংশনটি নির্দিষ্ট একটি নোডে সংযোগ করতে সহায়তা করে।


উদাহরণ: Node Communication এর মাধ্যমে একাধিক নোডের মধ্যে যোগাযোগ

নোড ১-এ প্রসেস শুরু করা:

% Node 1: "hello_world" মডিউল চালানো
erl -sname node1
% node1 এ এই কোডটি চালানো হবে:
spawn(fun() -> io:format("Hello from Node1!~n") end).

নোড ২-এ প্রসেস শুরু করা:

% Node 2: "hello_world" মডিউল চালানো
erl -sname node2
% node2 এ এই কোডটি চালানো হবে:
spawn(fun() -> io:format("Hello from Node2!~n") end).

দুটি নোড একে অপরের সাথে যোগাযোগ:

এখন, node1 থেকে node2 তে বার্তা পাঠানো হবে। এর জন্য node2 নাম ব্যবহার করা হবে:

% Node1 থেকে Node2-এ বার্তা পাঠানো:
node2@hostname ! {hello, "Hello from Node1!"}.

এখানে, node1 থেকে node2 তে একটি বার্তা পাঠানো হয়েছে এবং node2 বার্তাটি গ্রহণ করবে এবং আউটপুট প্রদর্শন করবে।


উপসংহার

Node Communication এবং net_adm, net_kernel মডিউলগুলি Erlang এর ডিস্ট্রিবিউটেড সিস্টেমের মূল উপাদান। এগুলি একাধিক Erlang নোডের মধ্যে যোগাযোগ এবং সমন্বয়ের জন্য ব্যবহৃত হয়। net_adm নোডগুলির মধ্যে সংযোগ তৈরি এবং পিং করতে সহায়তা করে, এবং net_kernel নোডের কার্যক্রম এবং নিরাপত্তা পরিচালনা করতে ব্যবহৃত হয়। Erlang এর এই শক্তিশালী নেটওয়ার্ক কমিউনিকেশন ফিচারগুলি ডিস্ট্রিবিউটেড সিস্টেম নির্মাণের জন্য অপরিহার্য।

Content added By
Promotion

Are you sure to start over?

Loading...