> For the complete documentation index, see [llms.txt](https://mominur.gitbook.io/mominur-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mominur.gitbook.io/mominur-notes/system-design/throughput.md).

# Throughput

ধরুন, আপনি একটি রেস্টুরেন্ট চালাচ্ছেন। আপনার রেস্টুরেন্টে কাস্টমাররা এসে খাবার অর্ডার করে এবং আপনি যত দ্রুত খাবার প্রস্তুত করে সার্ভ করতে পারেন, ততই আপনার ব্যবসা লাভজনক হয়। এখন প্রশ্ন হলো—একটি নির্দিষ্ট সময়ে আপনি কতজন কাস্টমারকে খাবার পরিবেশন করতে পারেন? এই সংখ্যাটাই হচ্ছে **Throughput**।

একইভাবে, **System Design**-এ **Throughput** হলো একটি সিস্টেম কত দ্রুত ডাটা প্রসেস করতে পারে বা কত বেশি রিকোয়েস্ট হ্যান্ডেল করতে পারে। এটা সাধারণত **requests per second (RPS)** বা **transactions per second (TPS)** দিয়ে পরিমাপ করা হয়।

***

### **Throughput-এর সহজ সংজ্ঞা**

একটি **সিস্টেমের পারফরম্যান্স** বোঝাতে আমরা তিনটি মূল বিষয় নিয়ে কথা বলি:

1. **Latency** – একটি রিকোয়েস্ট প্রসেস করতে যে সময় লাগে।
2. **Throughput** – একটি নির্দিষ্ট সময়ে কতগুলো রিকোয়েস্ট বা ট্রানজেকশন সম্পন্ন হয়েছে।
3. **Scalability** – সিস্টেমের লোড বাড়লে পারফরম্যান্স ধরে রাখার ক্ষমতা।

এর মধ্যে **Throughput** সবচেয়ে গুরুত্বপূর্ণ কারণ, এটি সরাসরি সিস্টেমের দক্ষতা নির্ধারণ করে।

***

### **একটি সাধারণ উদাহরণ: সড়কে গাড়ি চলাচল**

একটি ব্যস্ত হাইওয়ে কল্পনা করুন, যেখানে প্রতিদিন হাজার হাজার গাড়ি চলাচল করে।

* **Latency** মানে হলো, একটি নির্দিষ্ট গাড়ি এক প্রান্ত থেকে অন্য প্রান্তে যেতে কত সময় নিচ্ছে।
* **Throughput** হলো, প্রতি মিনিটে কতগুলো গাড়ি এই হাইওয়ের মাধ্যমে গন্তব্যে পৌঁছাতে পারছে।
* **Scalability** হলো, গাড়ির সংখ্যা বেড়ে গেলে রাস্তার কী অবস্থা হয়—যদি লেন বাড়ানো যায়, তবে আরও বেশি গাড়ি চলতে পারবে, নাহলে জ্যাম লেগে যাবে।

একটি কম্পিউটার সিস্টেমের ক্ষেত্রেও ঠিক একই বিষয় ঘটে।

***

### **Throughput কীভাবে পরিমাপ করা হয়?**

সাধারণত, Throughput কে **"operations per second"**, **"requests per second"**, বা **"bytes per second"** হিসেবে পরিমাপ করা হয়।

উদাহরণ:

* একটি **Database System** প্রতি সেকেন্ডে ১০,০০০ ট্রানজেকশন প্রসেস করতে পারছে → **Throughput = 10,000 TPS**
* একটি **Web Server** প্রতি সেকেন্ডে ৫,০০০ রিকোয়েস্ট হ্যান্ডেল করছে → **Throughput = 5,000 RPS**
* একটি **Network System** প্রতি সেকেন্ডে ১০০ মেগাবাইট ডাটা ট্রান্সফার করতে পারছে → **Throughput = 100 MBps**

***

### **Throughput বাড়ানোর কৌশল**

সিস্টেমের **Throughput** বাড়ানোর জন্য কিছু গুরুত্বপূর্ণ কৌশল রয়েছে:

#### **১. Parallel Processing ব্যবহার করা**

একটি কাজকে ছোট ছোট ভাগে ভাগ করে একাধিক **CPU/Core** বা **Thread** দিয়ে একসাথে প্রসেস করা হলে **Throughput** বেড়ে যায়।

**Example:**\
Google সার্চ ইঞ্জিন একবারে হাজার হাজার সার্ভারে একটি কোয়েরি প্রসেস করে, তাই এটি অনেক দ্রুত কাজ করতে পারে।

#### **২. Load Balancer ব্যবহার করা**

একটি **Load Balancer** ব্যবহার করলে রিকোয়েস্ট গুলো একাধিক সার্ভারে ভাগ হয়ে যায়, ফলে **Throughput** অনেক বেড়ে যায়।

**Example:**\
Amazon বা Netflix-এর মতো বড় প্ল্যাটফর্মে একাধিক সার্ভার একসাথে কাজ করে, যাতে হাজার হাজার ইউজারের রিকোয়েস্ট সহজেই হ্যান্ডেল করা যায়।

#### **৩. Caching ব্যবহার করা**

প্রায়ই প্রয়োজন হয় এমন ডাটাকে **Cache**-এ রেখে দিলে **Database**-এ কম লোড পড়ে এবং **Throughput** বাড়ে।

**Example:**\
Facebook বা YouTube-এ আপনি একই কনটেন্ট বারবার দেখতে পারেন, কারণ এগুলো **Cache**-এ সংরক্ষণ করা থাকে।

#### **৪. Asynchronous Processing**

সব কাজ একসাথে না করে, কিছু কাজ **Background Process**-এ পাঠালে **Throughput** ভালো হয়।

**Example:**\
আপনি যদি কোনো ভিডিও YouTube-এ আপলোড করেন, সেটি সঙ্গে সঙ্গেই প্লে নাও হতে পারে, কারণ এটি **Asynchronously Process** হয়।

#### **৫. Database Optimization**

সঠিক Indexing, Partitioning, এবং Query Optimization করলে **Database Throughput** অনেক বেড়ে যায়।

**Example:**\
একটি **SQL Database**-এ সঠিক **Indexing** না থাকলে, প্রতিটি কোয়েরি অনেক সময় নেয় এবং **Throughput** কমে যায়।

***

### **Latency বনাম Throughput: পার্থক্য কী?**

| **Feature**            | **Latency**                                 | **Throughput**                                             |
| ---------------------- | ------------------------------------------- | ---------------------------------------------------------- |
| অর্থ                   | একটি রিকোয়েস্ট সম্পন্ন করতে সময় নেয় কতটুকু। | একটি নির্দিষ্ট সময়ে কতগুলো রিকোয়েস্ট প্রসেস হয়েছে।         |
| ইউনিট                  | Milliseconds (ms)                           | Requests per second (RPS) বা Transactions per second (TPS) |
| ছোট হলে ভালো?          | হ্যাঁ                                       | হ্যাঁ                                                      |
| কীভাবে উন্নতি করা যায়? | Fast network, কম delay                      | Parallel Processing, Load Balancing                        |

উদাহরণ:

* যদি একটি Database Query ১০০ মিলিসেকেন্ড সময় নেয়, তবে এটি **Latency**।
* যদি একই Database প্রতি সেকেন্ডে ৫,০০০ কোয়েরি প্রসেস করতে পারে, তবে এটি **Throughput**।

***

### **সংক্ষেপে Throughput**

1. **Throughput** মানে হলো, একটি নির্দিষ্ট সময়ে সিস্টেম কতগুলো রিকোয়েস্ট বা ট্রানজেকশন প্রসেস করতে পারে।
2. **Latency কমানো** এবং **সঠিক আর্কিটেকচার ডিজাইন করা** হলে **Throughput** বাড়ানো সম্ভব।
3. **Load Balancing, Caching, Parallel Processing, এবং Asynchronous Processing** ব্যবহার করলে **Throughput** অনেক ভালো হয়।
4. **High Throughput মানেই ভালো পারফরম্যান্স**—বিশেষ করে **real-time systems** (যেমন: online banking, stock trading, social media)।

***

আপনি যদি **System Design** শিখতে চান, তাহলে **Throughput** সম্পর্কে Clear ধারণা থাকা খুবই গুরুত্বপূর্ণ। এটি সিস্টেমের **Efficiency** এবং **Scalability** নির্ধারণ করে। ভালো **Throughput** মানেই Fast and smoth User Experience
