**বিতরণ ব্যবস্থা** বা **বিতরণ পদ্ধতি** এমন একটি সিস্টেম যাতে উপাদানগুলি বিভিন্ন নেটওয়ার্কযুক্ত কম্পিউটার গুলিতে অবস্থিত, যা একে অপরের কাছে বার্তা প্রেরণ করে তাদের ক্রিয়াকলাপ যোগাযোগ এবং সমন্বয় করতে পারে , একে অপরের সাথে যোগাযোগ করে। এর তিনটি উল্লেখযোগ্য বৈশিষ্ট্য হ'ল:

উপাদান গুলির সম্মতি, একটি বিশ্বব্যাপী ঘড়ির অভাব, এবং উপাদান গুলির কার্যকলাপ একে অপরের উপর নির্ভরশীল নয় । ডিস্ট্রিবিউটেড সিস্টেমের উদাহরণ : এসওএ-ভিত্তিক সিস্টেমগুলি , মাল্টিপ্লেয়ার অনলাইন গেম , পিয়ার-টু-পিয়ার অ্যাপ্লিকেশন ইত্যাদি।

ভূমিকা
------

"ডিস্ট্রিবিউটেড সিস্টেম ", "ডিস্ট্রিবিউটেড প্রোগ্রামিং" এবং "ডিস্ট্রিবিউটেড অ্যালগরিদম" এর মতো পদগুলিতে ডিস্ট্রিবিউটেড করা শব্দটি মূলত কম্পিউটার নেটওয়ার্ক গুলিতে উল্লেখ করা হয় যেখানে পৃথক কম্পিউটারগুলি কিছু ভৌগোলিক অঞ্চলে শারীরিকভাবে বিতরণ করা হয়েছিল।  আজকাল পদগুলি অনেক বিস্তৃত অর্থে ব্যবহৃত হয়, এমনকি স্বায়ত্তশাসিত প্রক্রিয়াগুলিও একই শারীরিক কম্পিউটারে চলে এবং বার্তাগুলি পাঠানোর মাধ্যমে একে অপরের সাথে যোগাযোগ করে

ডিস্ট্রিবিউটেড সিস্টেম সংজ্ঞায়িত করা হয় :

এখানে বেশ কয়েকটি স্বায়ত্তশাসিত কম্পিউটার রয়েছে যার প্রত্যেকটির নিজস্ব স্থানীয় স্মৃতি রয়েছে 

সত্তা গুলি বার্তা প্রেরণের মাধ্যমে একে অপরের সাথে যোগাযোগ করে

একটি ডিস্ট্রিবিউটেড সিস্টেম ব্যবস্থার একই লক্ষ্য থাকতে পারে, যেমন একটি বৃহত গণনামূলক সমস্যা সমাধান করা; এরপরে ব্যবহারকারী এটিকে একক স্বায়ত্তশাসিত প্রসেসরের সংগ্রহ হিসাবে উপলব্ধি করে। বিকল্পভাবে, প্রতিটি কম্পিউটারের নিজস্ব প্রয়োজনে নিজস্ব ব্যবহারকারী থাকতে পারে এবং ডিস্ট্রিবিউটেড সিস্টেম ব্যবস্থার উদ্দেশ্য হ'ল শেয়ার্ড রিসোর্সের ব্যবহারকে সমন্বিত করা বা ব্যবহারকারীদের জন্য যোগাযোগ পরিষেবা সরবরাহ করা 

ডিস্ট্রিবিউটেড সিস্টেম ন্যান্য বৈশিষ্ট্যগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

সিস্টেমটিকে পৃথক কম্পিউটারে ব্যর্থতা সহ্য করতে হয়

সিস্টেমের কাঠামো (নেটওয়ার্ক টপোলজি, নেটওয়ার্ক ল্যাটেন্সি, কম্পিউটারের সংখ্যা) আগে থেকেই জানা যায় না, সিস্টেমটিতে বিভিন্ন ধরনের কম্পিউটার এবং নেটওয়ার্ক লিঙ্ক থাকতে পারে এবং ডিস্ট্রিবিউটেড প্রোগ্রামটি কার্যকর করার সময় সিস্টেমটি পরিবর্তন হতে পারে 

প্রতিটি কম্পিউটারে, সিস্টেমের সম্পর্কে সীমিত জ্ঞান রয়েছে। প্রতিটি কম্পিউটার ইনপুটটির কেবলমাত্র একটি অংশ জানতে পারে

ইতিহাস
------

প্রথমে , মেশিন গুলি নির্দিষ্ট উদ্দেশ্যের জন্য তৈরি হয়েছিল, যেমন আর্টিলারি টেবিলগুলি বা জোয়ার ভাড়ার গণনা, ব্রেকিং কোডগুলি বা অন্যান্য সুনির্দিষ্ট, জটিল তবে রটে গাণিতিক অ্যাপ্লিকেশনগুলি। অবশেষে এই উদ্দেশ্য-নির্মিত মেশিনগুলি সাধারণ-উদ্দেশ্য প্রোগ্রামেবল মেশিনে বিবর্তিত হয়েছিল। এবং শেষ পর্যন্ত তারা সময় ভাগ করে নেওয়ার অপারেটিং সিস্টেমের মাধ্যমে একক মেশিনে একাধিক প্রোগ্রাম চালিয়ে এক সময় একটি প্রোগ্রাম চালানো থেকে বিবর্তিত হয়েছিল সময় ভাগ করে নেওয়ার অপারেটিং সিস্টেম মাধ্যমে, কিন্তু এই মেশিনগুলি তখনও একে অপরের থেকে বিরত ছিল।

সময়ের সাথে সাথে, মেশিনগুলি একসাথে নেটওয়ার্ক হয়ে উঠতে শুরু করে এবং ক্লায়েন্ট-সার্ভারের আর্কিটেকচারগুলির জন্ম হয় যাতে কারও ডেস্কের তুলনামূলকভাবে কম চালিত মেশিনটি অন্য ঘর বা বিল্ডিংয়ের একটি মেইনফ্রেমের বৃহত্তর শক্তি ব্যবহৃত হতে পারে। যদিও এই ধরনের ক্লায়েন্ট-সার্ভার প্রোগ্রামিংটি একটি একক মেশিনের জন্য প্রোগ্রাম লেখার চেয়ে কিছুটা জটিল ছিল, তবুও এটি বুঝতে মোটামুটি সোজা ছিল। ক্লায়েন্ট (গুলি) অনুরোধ করেছেন; সার্ভার (গুলি) সেই অনুরোধগুলি পরিবেশন করেছে।

দুই হাজার এর গোড়ার দিকে, ইন্টারনেট ও ডেটাসেন্টারগুলির উত্থান এর বৈশিষ্ট্য হল কমদামের নেটওয়ার্ক কম্পিউটার একসাথে মিলিত হয়ে ডিস্ট্রিবিউটেড সিস্টেম জন্ম দেয়। ক্লায়েন্ট-সার্ভার আর্কিটেকচারের বিপরীতে, ডিস্ট্রিবিউটেড সিস্টেম অ্যাপ্লিকেশনগুলি বিভিন্ন মেশিনে চলমান একাধিক বিভিন্ন অ্যাপ্লিকেশন বা বিভিন্ন মেশিন জুড়ে প্রচুর প্রতিলিপিগুলি তৈরি করে, ওয়েব-অনুসন্ধান বা খুচরা বিক্রয় প্ল্যাটফর্মের মতো একটি সিস্টেম বাস্তবায়নের জন্য সমস্ত একত্রে যোগাযোগ করে।

তাদের ডিস্ট্রিবিউটেড প্রকৃতির কারণে, যখন সঠিকভাবে কাঠামোগত হলে, ডিস্ট্রিবিউটেড ব্যবস্থা নির্ভরযোগ্য। এবং যখন সঠিকভাবে আর্কিটেক্ট করা হয়, সফটওয়্যার ইঞ্জিনিয়ার যারা ডিস্ট্রিবিউটেড সিস্টেম তৈরি করে তাদের জন্য স্কেলেবল সাংগঠনিক মডেল রূপান্তরিত হয়। দুর্ভাগ্যক্রমে, এই সুবিধাগুলি ব্যয়বহুল করে আসে। এই ডিস্ট্রিবিউটেড সিস্টেম গুলি সঠিকভাবে ডিজাইন, বিল্ডিং এবং ডিবাগ করার ক্ষেত্রে উল্লেখযোগ্যভাবে জটিল হতে পারে। একটি নির্ভরযোগ্য ডিস্ট্রিবিউটেড সিস্টেম তৈরির জন্য প্রয়োজনীয় ইঞ্জিনিয়ারিং দক্ষতা মোবাইল বা ওয়েব ফ্রন্টএন্টের মতো একক-মেশিন অ্যাপ্লিকেশন তৈরি করার জন্য প্রয়োজনীয় তুলনায় উল্লেখযোগ্য পরিমাণে বেশি। নির্বিশেষে, নির্ভরযোগ্য ডিস্ট্রিবিউটেড সিস্টেমের প্রয়োজনীয়তা কেবল বাড়তে থাকে। সুতরাং এগুলি তৈরির জন্য সরঞ্জাম, নিদর্শন এবং অনুশীলনের জন্য একটি অনুরূপ প্রয়োজন রয়েছে।

নির্মাণকৌশল
-----------

ডিস্ট্রিবিউটর সিস্টেমের জন্য অনেক হার্ডওয়ার ও সফটওয়ার আর্কিটেকচার ব্যবহার হয় ।প্রাথমিকভাবে কোন ও নেটওয়ার্ককে কোনও ধরনের নেটওয়ার্কের সাথে একাধিক সিপিইউ গুলি সংযুক্ত করা প্রয়োজন নির্বিশেষে নেটওয়ার্কটি কোনও সার্কিট বোর্ডে মুদ্রিত রয়েছে বা আলগাভাবে জোড়াযুক্ত ডিভাইস এবং তারগুলি দিয়ে তৈরি। উচ্চতর স্তরে, সেই সিপিইউ গুলিতে কিছুটা যোগাযোগ ব্যবস্থা সহ চলমান প্রক্রিয়াগুলি আন্তঃসংযোগ করা প্রয়োজন [2]

ডিস্ট্রিবিউটেড প্রোগ্রামিং সাধারণত বেশ কয়েকটি প্রাথমিক আর্কিটেকচারের মধ্যে পড়ে: ক্লায়েন্ট – সার্ভার, থ্রি-টায়ার, এন-টায়ার, বা পিয়ার-টু-পিয়ার; বা বিভাগগুলি: আলগা সংযুক্তকরণ, বা আঁট সংযোজন ২[3]

* ক্লায়েন্ট – সার্ভার: আর্কিটেকচার যেখানে স্মার্ট ক্লায়েন্টরা তথ্যের জন্য সার্ভারের সাথে যোগাযোগ করে এটি ফর্ম্যাট করে এবং এটি ব্যবহারকারীদের কাছে প্রদর্শন করে। ক্লায়েন্টের ইনপুটটি সার্ভারে ফিরে প্রতিশ্রুতিবদ্ধ হয় যখন এটি স্থায়ী পরিবর্তনের প্রতিনিধিত্ব করে।
* ত্রি-স্তর: আর্কিটেকচার যা ক্লায়েন্টের বুদ্ধিমত্তাকে মধ্যম স্তরে নিয়ে যায় যাতে অবস্থাবিহীন ক্লায়েন্ট ব্যবহার করা যায়। এটি অ্যাপ্লিকেশন স্থাপনাকে সহজতর করে। বেশিরভাগ ওয়েব অ্যাপ্লিকেশনগুলি তিন স্তরের ।
* এন-টায়ার: আর্কিটেকচার যা সাধারণত ওয়েব অ্যাপ্লিকেশনগুলিতে উল্লেখ হয় যা তাদের অনুরোধগুলি অন্যান্য এন্টারপ্রাইজ পরিষেবাগুলিতে ফরোয়ার্ড করে। এই ধরনের অ্যাপ্লিকেশনটি সার্ভারের সাফল্যের জন্য সবচেয়ে বেশি দায়ী।
* পিয়ার-টু-পিয়ার: আর্কিটেকচার যেখানে কোনও বিশেষ মেশিন নেই যা কোনও পরিষেবা সরবরাহ করে বা নেটওয়ার্ক সংস্থান পরিচালনা করে পরিবর্তে সমস্ত দায়িত্ব সমস্ত পিয়ার মেশিনের মধ্যে সমানভাবে বিভক্ত হয়ে পিয়ার হিসাবে পরিচিত। ( পিয়ার ) সহকর্মীরা ক্লায়েন্ট এবং সার্ভার হিসাবে উভয়ই পরিবেশন করতে পারেন । এই স্থাপত্যের উদাহরণগুলির মধ্যে রয়েছে বিটটোরেন্ট এবং বিটকয়েন নেটওয়ার্ক।

ডিস্ট্রিবিউটেড কম্পিউটিং আর্কিটেকচারের আরেকটি মৌলিক দিক হ'ল সমবর্তী প্রক্রিয়াগুলির মধ্যে কাজের যোগাযোগ এবং সমন্বয় করার পদ্ধতি। বিভিন্ন বার্তা প্রোটোকল পাস করার মাধ্যমে, প্রক্রিয়াগুলি একে অপরের সাথে সরাসরি যোগাযোগ করতে পারে, সাধারণত মাস্টার -স্লেভ সম্পর্কের ক্ষেত্রে। বিকল্পভাবে, একটি "ডাটাবেস কেন্দ্রিক" আর্কিটেকচার কোনও শেয়ারড ডাটাবেস ব্যবহার করে সরাসরি আন্তঃ প্রক্রিয়া যোগাযোগের কোনও প্রকার ছাড়াই ডিস্ট্রিবিউটেড কম্পিউটিং সক্ষম করতে পারে। [৩০] বিশেষ করে ডেটাবেস কেন্দ্রিক আর্কিটেকচারটি লাইভ এনভায়রনমেন্ট রিলে অনুমতি দেয় এমন একটি স্কিম্যাটিক আর্কিটেকচারে রিলেশনাল প্রসেসিং অ্যানালিটিক্স সরবরাহ করে। এটি নেটওয়ার্কওয়াক ডাটাবেসের পরামিতিগুলির মধ্যে এবং বাইরে উভয়ই ডিস্ট্রিবিউটেড কম্পিউটিং ফাংশন সক্ষম করে ৩১

প্রয়োগ
-------

ডিস্ট্রিবিউটেড সিস্টেম ব্যবহারের কারণ:

* কোনও অ্যাপ্লিকেশন প্রকৃতির জন্য একটি যোগাযোগ নেটওয়ার্কের ব্যবহারের প্রয়োজন হতে পারে যা বেশ কয়েকটি কম্পিউটারকে সংযুক্ত করে: উদাহরণস্বরূপ, ডেটা একটি শারীরিক স্থানে উৎপাদিত হয় এবং অন্য জায়গায় প্রয়োজনীয় হয়।
* এমন অনেকগুলি ক্ষেত্রে রয়েছে যেখানে একক কম্পিউটারের ব্যবহার নীতিগতভাবে সম্ভব হবে তবে ব্যবহারিক কারণে ডিস্ট্রিবিউটেড সিস্টেম ব্যবস্থার ব্যবহার উপকারী। উদাহরণস্বরূপ, একক উচ্চ-শেষ কম্পিউটারের তুলনায় বেশ কয়েকটি নিম্ন-প্রান্তের কম্পিউটারগুলির ক্লাস্টার ব্যবহার করে কাঙ্ক্ষিত স্তরের পারফরম্যান্স অর্জন করা আরও সাশ্রয়ী হতে পারে। কোনও সিস্টেম অ নন ডিস্ট্রিবিউটেড সিস্টেমের চেয়ে বেশি নির্ভরযোগ্যতা সরবরাহ করতে পার। তদুপরি, একটি ডিস্ট্রিবিউটেড সিস্টেম একতরফা একক প্রসেসরের চেয়ে প্রসারিত এবং পরিচালনা করা সহজ হতে পারে

উদাহরণ
------

ডিস্ট্রিবিউটেড কম্পিউটারের অথবা ডিস্ট্রিবিউটেড সিস্টেম প্রয়োগগুলির এবং উদাহরণগুলির মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

1. টেলিযোগাযোগ নেটওয়ার্ক:
	* টেলিফোন নেটওয়ার্ক এবং সেলুলার নেটওয়ার্ক,
	* ইন্টারনেট যেমন কম্পিউটার নেটওয়ার্ক,
	* ওয়্যারলেস সেন্সর নেটওয়ার্ক,
	* রাউটিং অ্যালগরিদম;
2. নেটওয়ার্ক অ্যাপ্লিকেশন
	* ওয়ার্ল্ড ওয়াইড ওয়েব এবং পিয়ার-টু-পিয়ার নেটওয়ার্কগুলি,
	* মাল্টিপ্লেয়ার অনলাইন গেমস এবং ভার্চুয়াল বাস্তবতা সম্প্রদায়গুলি,
	* ডিস্ট্রিবিউটেড ডাটাবেস এবং ডিস্ট্রিবিউটেড ডাটাবেস পরিচালনা সিস্টেম,
	* নেটওয়ার্ক ফাইল সিস্টেম,
	* ডিস্ট্রিবিউটেড ক্যাশে যেমন বাস্ট বাফার,
	* ডিস্ট্রিবিউটেড তথ্য প্রক্রিয়াকরণ সিস্টেম যেমন ব্যাংকিং সিস্টেম এবং বিমান সংস্থা সংরক্ষণ ব্যবস্থা;
3. রিয়েল-টাইম প্রক্রিয়া নিয়ন্ত্রণ:
	* বিমান নিয়ন্ত্রণ ব্যবস্থা,
	* শিল্প নিয়ন্ত্রণ ব্যবস্থা;
4. প্যারালাল কম্পিউটিং:
	* ক্লাস্টার কম্পিউটিং, গ্রিড কম্পিউটিং, ক্লাউড কম্পিউটিং, এবং বিভিন্ন স্বেচ্ছাসেবক কম্পিউটিং প্রকল্পগুলি সহ বৈজ্ঞানিক কম্পিউটিং,
	* কম্পিউটার গ্রাফিক্স ডিস্ট্রিবিউটেড রেন্ডারিং।

তথ্যসূত্র
---------

1. ↑  Tanenbaum, Andrew S.; Steen, Maarten van (২০০২)। *Distributed systems: principles and paradigms*। Upper Saddle River, NJ: Pearson Prentice Hall.। আইএসবিএন 978-0130888938।
2. 1 2  Lynch, Nancy A (১৯৯৬)। *Distributed Algorithms*। Morgan Kaufmann। পৃষ্ঠা 1। আইএসবিএন 978-1-55860-348-6।
3. 1 2 3  Gregory R. Andrews (.2000)। *Foundations of Multithreaded, Parallel, and Distributed Programming*। Addison–Wesley। আইএসবিএন 978-0-201-35752-3।  এখানে তারিখের মান পরীক্ষা করুন: `|তারিখ=` (সাহায্য)
4. 1 2 3 4 5  Ghosh,, Sukumar ((2007))। *Distributed Systems – An Algorithmic Approach*। Chapman & Hall/CRC। পৃষ্ঠা Chapman & Hall/CRC। আইএসবিএন 978-1-58488-564-1।  এখানে তারিখের মান পরীক্ষা করুন: `|তারিখ=` (সাহায্য)
5. ↑  Peleg, David (২০০০)। *Distributed Computing: A Locality-Sensitive Approach*। SIAM। আইএসবিএন 978-0-89871-464-7।
6. ↑  Burns, Brendan (২০১৮)। *Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services*। O′Reilly। আইএসবিএন 978-1491983645।
7. ↑  Navathe, Shamkant B. (২০০০)। *Fundamentals of Database Systems (3rd ed.)*। Addison–Wesley। আইএসবিএন 978-0-201-54263-9।
8. ↑  Haussmann, Jens; Blochinger, Wolfgang; Kuechlin, Wolfgang (2019-09)। "Cost-efficient parallel processing of irregularly structured problems in cloud computing environments"। *Cluster Computing* (ইংরেজি ভাষায়)। **22** (3): 887–909। আইএসএসএন 1386-7857। ডিওআই:10.1007/s10586-018-2879-3।  এখানে তারিখের মান পরীক্ষা করুন: `|তারিখ=` (সাহায্য)