বিতরণ ব্যবস্থা

বিতরণ ব্যবস্থা বা বিতরণ পদ্ধতি এমন একটি সিস্টেম যাতে উপাদানগুলি বিভিন্ন নেটওয়ার্কযুক্ত কম্পিউটার গুলিতে অবস্থিত, যা একে অপরের কাছে বার্তা প্রেরণ করে তাদের ক্রিয়াকলাপ যোগাযোগ এবং সমন্বয় করতে পারে , একে অপরের সাথে যোগাযোগ করে। এর তিনটি উল্লেখযোগ্য বৈশিষ্ট্য হ'ল:
উপাদান গুলির সম্মতি, একটি বিশ্বব্যাপী ঘড়ির অভাব, এবং উপাদান গুলির কার্যকলাপ একে অপরের উপর নির্ভরশীল নয় । ডিস্ট্রিবিউটেড সিস্টেমের উদাহরণ : এসওএ-ভিত্তিক সিস্টেমগুলি , মাল্টিপ্লেয়ার অনলাইন গেম , পিয়ার-টু-পিয়ার অ্যাপ্লিকেশন ইত্যাদি।
"ডিস্ট্রিবিউটেড সিস্টেম ", "ডিস্ট্রিবিউটেড প্রোগ্রামিং" এবং "ডিস্ট্রিবিউটেড অ্যালগরিদম" এর মতো পদগুলিতে ডিস্ট্রিবিউটেড করা শব্দটি মূলত কম্পিউটার নেটওয়ার্ক গুলিতে উল্লেখ করা হয় যেখানে পৃথক কম্পিউটারগুলি কিছু ভৌগোলিক অঞ্চলে শারীরিকভাবে বিতরণ করা হয়েছিল। আজকাল পদগুলি অনেক বিস্তৃত অর্থে ব্যবহৃত হয়, এমনকি স্বায়ত্তশাসিত প্রক্রিয়াগুলিও একই শারীরিক কম্পিউটারে চলে এবং বার্তাগুলি পাঠানোর মাধ্যমে একে অপরের সাথে যোগাযোগ করে
ডিস্ট্রিবিউটেড সিস্টেম সংজ্ঞায়িত করা হয় :
এখানে বেশ কয়েকটি স্বায়ত্তশাসিত কম্পিউটার রয়েছে যার প্রত্যেকটির নিজস্ব স্থানীয় স্মৃতি রয়েছে 
সত্তা গুলি বার্তা প্রেরণের মাধ্যমে একে অপরের সাথে যোগাযোগ করে
একটি ডিস্ট্রিবিউটেড সিস্টেম ব্যবস্থার একই লক্ষ্য থাকতে পারে, যেমন একটি বৃহত গণনামূলক সমস্যা সমাধান করা; এরপরে ব্যবহারকারী এটিকে একক স্বায়ত্তশাসিত প্রসেসরের সংগ্রহ হিসাবে উপলব্ধি করে। বিকল্পভাবে, প্রতিটি কম্পিউটারের নিজস্ব প্রয়োজনে নিজস্ব ব্যবহারকারী থাকতে পারে এবং ডিস্ট্রিবিউটেড সিস্টেম ব্যবস্থার উদ্দেশ্য হ'ল শেয়ার্ড রিসোর্সের ব্যবহারকে সমন্বিত করা বা ব্যবহারকারীদের জন্য যোগাযোগ পরিষেবা সরবরাহ করা 
ডিস্ট্রিবিউটেড সিস্টেম ন্যান্য বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
সিস্টেমটিকে পৃথক কম্পিউটারে ব্যর্থতা সহ্য করতে হয়
সিস্টেমের কাঠামো (নেটওয়ার্ক টপোলজি, নেটওয়ার্ক ল্যাটেন্সি, কম্পিউটারের সংখ্যা) আগে থেকেই জানা যায় না, সিস্টেমটিতে বিভিন্ন ধরনের কম্পিউটার এবং নেটওয়ার্ক লিঙ্ক থাকতে পারে এবং ডিস্ট্রিবিউটেড প্রোগ্রামটি কার্যকর করার সময় সিস্টেমটি পরিবর্তন হতে পারে 
প্রতিটি কম্পিউটারে, সিস্টেমের সম্পর্কে সীমিত জ্ঞান রয়েছে। প্রতিটি কম্পিউটার ইনপুটটির কেবলমাত্র একটি অংশ জানতে পারে 
প্রথমে , মেশিন গুলি নির্দিষ্ট উদ্দেশ্যের জন্য তৈরি হয়েছিল, যেমন আর্টিলারি টেবিলগুলি বা জোয়ার ভাড়ার গণনা, ব্রেকিং কোডগুলি বা অন্যান্য সুনির্দিষ্ট, জটিল তবে রটে গাণিতিক অ্যাপ্লিকেশনগুলি। অবশেষে এই উদ্দেশ্য-নির্মিত মেশিনগুলি সাধারণ-উদ্দেশ্য প্রোগ্রামেবল মেশিনে বিবর্তিত হয়েছিল। এবং শেষ পর্যন্ত তারা সময় ভাগ করে নেওয়ার অপারেটিং সিস্টেমের মাধ্যমে একক মেশিনে একাধিক প্রোগ্রাম চালিয়ে এক সময় একটি প্রোগ্রাম চালানো থেকে বিবর্তিত হয়েছিল সময় ভাগ করে নেওয়ার অপারেটিং সিস্টেম মাধ্যমে, কিন্তু এই মেশিনগুলি তখনও একে অপরের থেকে বিরত ছিল।
সময়ের সাথে সাথে, মেশিনগুলি একসাথে নেটওয়ার্ক হয়ে উঠতে শুরু করে এবং ক্লায়েন্ট-সার্ভারের আর্কিটেকচারগুলির জন্ম হয় যাতে কারও ডেস্কের তুলনামূলকভাবে কম চালিত মেশিনটি অন্য ঘর বা বিল্ডিংয়ের একটি মেইনফ্রেমের বৃহত্তর শক্তি ব্যবহৃত হতে পারে। যদিও এই ধরনের ক্লায়েন্ট-সার্ভার প্রোগ্রামিংটি একটি একক মেশিনের জন্য প্রোগ্রাম লেখার চেয়ে কিছুটা জটিল ছিল, তবুও এটি বুঝতে মোটামুটি সোজা ছিল। ক্লায়েন্ট (গুলি) অনুরোধ করেছেন; সার্ভার (গুলি) সেই অনুরোধগুলি পরিবেশন করেছে।
দুই হাজার এর গোড়ার দিকে, ইন্টারনেট ও ডেটাসেন্টারগুলির উত্থান এর বৈশিষ্ট্য হল কমদামের নেটওয়ার্ক কম্পিউটার একসাথে মিলিত হয়ে ডিস্ট্রিবিউটেড সিস্টেম জন্ম দেয়। ক্লায়েন্ট-সার্ভার আর্কিটেকচারের বিপরীতে, ডিস্ট্রিবিউটেড সিস্টেম অ্যাপ্লিকেশনগুলি বিভিন্ন মেশিনে চলমান একাধিক বিভিন্ন অ্যাপ্লিকেশন বা বিভিন্ন মেশিন জুড়ে প্রচুর প্রতিলিপিগুলি তৈরি করে, ওয়েব-অনুসন্ধান বা খুচরা বিক্রয় প্ল্যাটফর্মের মতো একটি সিস্টেম বাস্তবায়নের জন্য সমস্ত একত্রে যোগাযোগ করে।
তাদের ডিস্ট্রিবিউটেড প্রকৃতির কারণে, যখন সঠিকভাবে কাঠামোগত হলে, ডিস্ট্রিবিউটেড ব্যবস্থা নির্ভরযোগ্য। এবং যখন সঠিকভাবে আর্কিটেক্ট করা হয়, সফটওয়্যার ইঞ্জিনিয়ার যারা ডিস্ট্রিবিউটেড সিস্টেম তৈরি করে তাদের জন্য স্কেলেবল সাংগঠনিক মডেল রূপান্তরিত হয়। দুর্ভাগ্যক্রমে, এই সুবিধাগুলি ব্যয়বহুল করে আসে। এই ডিস্ট্রিবিউটেড সিস্টেম গুলি সঠিকভাবে ডিজাইন, বিল্ডিং এবং ডিবাগ করার ক্ষেত্রে উল্লেখযোগ্যভাবে জটিল হতে পারে। একটি নির্ভরযোগ্য ডিস্ট্রিবিউটেড সিস্টেম তৈরির জন্য প্রয়োজনীয় দক্ষতা মোবাইল বা ওয়েব ফ্রন্টএন্টের মতো একক-মেশিন অ্যাপ্লিকেশন তৈরি করার জন্য প্রয়োজনীয় তুলনায় উল্লেখযোগ্য পরিমাণে বেশি। নির্বিশেষে, নির্ভরযোগ্য ডিস্ট্রিবিউটেড সিস্টেমের প্রয়োজনীয়তা কেবল বাড়তে থাকে। সুতরাং এগুলি তৈরির জন্য সরঞ্জাম, নিদর্শন এবং অনুশীলনের জন্য একটি অনুরূপ প্রয়োজন রয়েছে।
ডিস্ট্রিবিউটর সিস্টেমের জন্য অনেক হার্ডওয়ার ও সফটওয়ার আর্কিটেকচার ব্যবহার হয় ।প্রাথমিকভাবে কোন ও নেটওয়ার্ককে কোনও ধরনের নেটওয়ার্কের সাথে একাধিক সিপিইউ গুলি সংযুক্ত করা প্রয়োজন নির্বিশেষে নেটওয়ার্কটি কোনও সার্কিট বোর্ডে মুদ্রিত রয়েছে বা আলগাভাবে জোড়াযুক্ত ডিভাইস এবং তারগুলি দিয়ে তৈরি। উচ্চতর স্তরে, সেই সিপিইউ গুলিতে কিছুটা যোগাযোগ ব্যবস্থা সহ চলমান প্রক্রিয়াগুলি আন্তঃসংযোগ করা প্রয়োজন [2]
ডিস্ট্রিবিউটেড প্রোগ্রামিং সাধারণত বেশ কয়েকটি প্রাথমিক আর্কিটেকচারের মধ্যে পড়ে: ক্লায়েন্ট – সার্ভার, থ্রি-টায়ার, এন-টায়ার, বা পিয়ার-টু-পিয়ার; বা বিভাগগুলি: আলগা সংযুক্তকরণ, বা আঁট সংযোজন ২[3]
ডিস্ট্রিবিউটেড কম্পিউটিং আর্কিটেকচারের আরেকটি মৌলিক দিক হ'ল সমবর্তী প্রক্রিয়াগুলির মধ্যে কাজের যোগাযোগ এবং সমন্বয় করার পদ্ধতি। বিভিন্ন বার্তা প্রোটোকল পাস করার মাধ্যমে, প্রক্রিয়াগুলি একে অপরের সাথে সরাসরি যোগাযোগ করতে পারে, সাধারণত মাস্টার -স্লেভ সম্পর্কের ক্ষেত্রে। বিকল্পভাবে, একটি "ডাটাবেস কেন্দ্রিক" আর্কিটেকচার কোনও শেয়ারড ডাটাবেস ব্যবহার করে সরাসরি আন্তঃ প্রক্রিয়া যোগাযোগের কোনও প্রকার ছাড়াই ডিস্ট্রিবিউটেড কম্পিউটিং সক্ষম করতে পারে। [৩০] বিশেষ করে ডেটাবেস কেন্দ্রিক আর্কিটেকচারটি লাইভ এনভায়রনমেন্ট রিলে অনুমতি দেয় এমন একটি স্কিম্যাটিক আর্কিটেকচারে রিলেশনাল প্রসেসিং অ্যানালিটিক্স সরবরাহ করে। এটি নেটওয়ার্কওয়াক ডাটাবেসের পরামিতিগুলির মধ্যে এবং বাইরে উভয়ই ডিস্ট্রিবিউটেড কম্পিউটিং ফাংশন সক্ষম করে ৩১
ডিস্ট্রিবিউটেড সিস্টেম ব্যবহারের কারণ:
ডিস্ট্রিবিউটেড কম্পিউটারের অথবা ডিস্ট্রিবিউটেড সিস্টেম প্রয়োগগুলির এবং উদাহরণগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে: