A bit of Distributed System

Sakib Sami
LiveKlass
Published in
3 min readDec 25, 2017

A collection of independent computers that appears to users as a single coherent system.

ধরুন আপনার একটা ওয়েব আপ্লিকেশন আছে যেইটা একসাথে ১০০ টা রিকোয়েস্ট হ্যান্ডেল করতে পারে ।

ভাবুন যদি একসাথে ১১০ টা রিকোয়েস্ট আসে তখন কি হবে ?

হুম বাকি যে ১০ টা রিকোয়েস্ট তা সার্ভার প্রোসেস করতে পারবে না । ফলে Service Unavailable, এমন সব এরর দেখাবে । এখন ভাবুন বড় বড় অ্যাপ্লিকেশন গুলো এত রিকোয়েস্ট কিভাবে হ্যান্ডেল করে ? এই জন্যই ব্যবহার করা হয় ডিস্ট্রিবিউটেড সিস্টেম।

সেটা কিভাবে ?

ধরুন আপনার অ্যাপ্লিকেশনটা ৫ টা আলাদা আলাদা সার্ভারে রান করালেন, এবার অ্যাপ্লিকেশনটা ৫ * ১০০ = ৫০০ রিকোয়েস্ট হ্যান্ডেল করতে পারবে । কিন্তু সমস্যা হল কোন রিকোয়েস্টটা কোন সার্ভারে পাঠাবেন ? হুম্মম, এই কাজ করে দিতে পারবে Load Balancer । এবার যেটা করতে হবে রিকোয়েস্ট সরাসরি অ্যাপ্লিকেশনে না পাঠিয়ে Load Balancer এ পাঠাতে হবে এবং Load Balancer সেই রিকোয়েস্টটা যেই অ্যাপ্লিকেশন সার্ভারে লোড কম সেই অ্যাপ্লিকেশন সার্ভারে ফরোয়ার্ড করে দিবে । Load Balancing এর জন্য অনেক রকম এলগোরিদম আছে, যেমনঃ Round Robin, Least Connection ইত্যাদি ।

এবার কিন্তু আপনার অ্যাপ্লিকেশন ৫০০ রিকোয়েস্ট একসাথে হ্যান্ডেল করতে পারবে । এই যে কাজটা আমরা করলাম একে বলে Horizontal Scaling । আর Vertical Scaling হল একই মেশিনের রিসোর্স যেমন র‍্যাম, সিপিউ পাওয়ার ইত্যাদি বাড়ানো ।

এবার ধরুন প্রত্যেকটা রিকোয়েস্টে কোন একটা ডাটাবেস অপারেশন করতেছি । এবার কি হতে পারে ভাবুন তো ? এখনো কি ৫০০ টা রিকোয়েস্ট সার্ভ করা যাবে ? যদি ধরি একটা ডাটাবেস সার্ভার একসাথে ১০০ টা রিকোয়েস্ট হ্যান্ডেল করতে পারে তাহলে আবারো Service Unavailable আসবে কারন অ্যাপ্লিকেশন ৫০০ রিকোয়েস্ট সার্ভ করতে পারলেও ডাটাবেস পারছে না ।

এই জন্যই মমিন, অনেক ইউজার হইলে হ্যান্ডেল করা মুশকিল । যাই হোক এবারও আপ্লিকেশন সার্ভারের মত করে ডাটাবেস সার্ভারের একাধিক ইন্সট্যান্স বানাতে পারি । এখানে আমরা Master-Slave replicated cluster করতে পারি । Master নোডে রান করব Write অপারেশন আর Slave নোডে রিড, সব গুলো নোডেই একই ডাটা থাকতেছে ।

তাহলে কিন্তু একটা ডাটাবেস সার্ভারে সব রিকোয়েস্ট আসতেছে না, ফলে আপ্লিকেশনের Availability বাড়বে । আবার তিনটা ডাটাবেস সার্ভারই একটা সার্ভারের মত কাজ করছে । আর যেহেতু একাধিক Slave সার্ভার আছে এখানেও দরকার হবে Load Balancer যদি না ডাটাবেস এ সাপোর্ট থাকে ।

--

--

Sakib Sami
LiveKlass

Senior Software Engineer @ Twilio | Entrepreneur | Tech Ninja