LEVEL 9
ডিস্ট্রিবিউটেড সিস্টেম
Distributed Systems
এই মডিউল যে প্রশ্নের উত্তর দেয়কেউ কারো উপর ভরসা করতে না পারলে, একদল computer কীভাবে একমত হয়?
Distributed system কঠিন কারণ তিনটা জিনিস একসাথে সত্য: message হারায়, node মরে, আর ঘড়ি মেলে না। এই module-এ আমরা দেখব এই তিন সমস্যা থেকেই consensus, replication, consistency model-এর জন্ম।
লেসন
- 01কেন Distributed System কঠিন — ৮টা Fallacies আর partial failureNetwork নির্ভরযোগ্য ভাবার আটটা ভ্রান্তি ভেঙে দেখা যায় distributed-এর আসল শত্রু — partial failure, যেখানে কিছু node ভাঙে, বাকিরা চলে, আর কেউই পুরো সত্যটা জানে না।
- 02Failure Models — Crash থেকে Byzantine পর্যন্ত ভাঙার সোপানPartial failure কতভাবে ঘটতে পারে তার নামকরণ — crash-stop থেকে omission, timing, আর সবচেয়ে কঠিন Byzantine পর্যন্ত adversary-strength ladder — আর দেখানো কেন সঠিক model বাছাই replica-সংখ্যা থেকে algorithm-design পর্যন্ত সবকিছু বদলে দেয়।
- 03Physical Time — NTP, Clock Skew, আর কেন Wall Clock বিশ্বাস করা যায় নাPhysical clock কখনো নিখুঁতভাবে sync হয় না — NTP bound দেয়, শূন্য করে না; সেই bounded skew LWW-তে silent lost-write জন্মায়, আর elapsed-time মাপতে হলে wall clock নয়, monotonic clock লাগে।
- 04Logical Clock — Lamport আর Vector ClockWall-clock ভরসা করা যায় না বলে সময়-মাপা ছেড়ে causal ক্রম ট্র্যাক করি — Lamport clock একমুখী promise দেয়, vector clock উল্টোটাও জানিয়ে concurrency exact ধরে।
- 05Happens-before ও Causality — কার আগে কার পরেGlobal clock ছাড়াও cause-effect মাপা যায় — happens-before-এর তিন rule, concurrency-র আসল অর্থ, আর reply-before-parent-জাতীয় user-visible ভুল ঠেকানোর সস্তা কৌশল।
- 06Consistency Models — linearizability থেকে eventual ladderConsistency model মানে replica-client চুক্তি — linearizability real-time recency চায়, sequential শুধু per-process ক্রম, causal কারণ-প্রভাব, eventual শুধু শেষে মিল; ধাপ নামলে latency লাভ, reasoning-ভার application-এ।
- 07Quorum Replication — primary-backup, NWR, chainW+R>N pigeonhole fresh-read দেয়, linearizability নয়; sloppy quorum চুক্তি ভেঙে availability কিনে, hinted handoff ঋণ শোধে, আর chain replication strong consistency-সহ read-throughput বাড়ায়।
- 08Leader Election — একজনকে দায়িত্ব দেওয়ার protocolReplication-এর চুক্তি একজন leader-এর হাতে থাকে; election protocol (bully, ring) সেই leader বাছে — কিন্তু failure detector ভুল হলে দুই leader জন্মায়, তাই epoch/term fencing number আর majority gate লাগে।
- 09Paxos Intuition — consensus problem-এর প্রথম উত্তরNaive consensus attempt দুটো (first-wins, trust-the-leader) কংক্রিট scenario-তে ভেঙে দেখায় কেন majority-respect আর prior-discovery বাধ্যতামূলক — সেই দুই invariant থেকেই Basic Paxos-এর Prepare/Promise আর Accept/Accepted phase বেরিয়ে আসে, quorum-intersection যার safety-প্রমাণ।
- 10Raft — বোঝার জন্য ডিজাইন করা consensusRaft consensus-কে তিন sub-problem-এ ভাগ করে — leader election (আগেই কভার হয়েছে), log replication (AppendEntries-এর consistency check-ই Log Matching Property-র উৎস), আর safety (election restriction + current-term-only commit rule, যা Figure 8-এর ফাঁদ এড়ায়)।
- 11Two-Phase Commit — সবাই একসাথে, নয়তো কেউই না2PC সব participant-কে prepare-vote-এ একমত করিয়ে decide করে — কিন্তু vote yes-এর পরে participant lock ধরে in-doubt বসে থাকে, coordinator crash করলে আটকে যায়; 3PC-র PreCommit ফিক্স নিজেই partition-এ ভাঙে।
- 12Saga ও Distributed Transactions — 2PC-র বিকল্প পথ2PC-র blocking আর coordinator-SPOF scale-এ অসহনীয় — saga লম্বা transaction-কে local transaction-সিরিজ আর compensating action-এ ভাঙে; দাম হলো intermediate state বাইরের চোখে দেখা যাওয়া।
- 13Idempotency ও Exactly-once-এর মিথRetry-যুক্ত যেকোনো channel-এ duplicate অনিবার্য — exactly-once বলতে আসলে at-least-once delivery-র সাথে idempotent effect; Idempotency-Key pattern-ই payment double-charge ঠেকানোর শিল্প-উত্তর।
- 14Message Queues — Kafka আর RabbitMQ-র দুই দর্শনQueue শেষ-হওয়া message মুছে দেয়, log চিরকাল রেখে reader-কেই সময় ঘোরাতে দেয় — RabbitMQ আর Kafka-র দুই দর্শন, push-বনাম-pull backpressure, আর partition-parallelism-এর গণিত।
- 15Event-driven Architecture ও Event Sourcing — state যখন logState নিজে না রেখে event-stream থেকে derive — WAL যেমন crash-এর সত্য, event sourcing সেই সত্যকে business-level এ তোলে; লাভ audit আর temporal query, দাম projections আর GDPR-দ্বন্দ্ব।
- 16Distributed Lock ও তার বিপদ — Redlock বিতর্কসহShared memory না থাকায় আর pause-মৃত্যু আলাদা করা যায় না বলে distributed mutual exclusion mutex-এর চেয়ে মৌলিকভাবে কঠিন; lease TTL crash সামলায় কিন্তু pause-এ ভাঙে — fencing token-ই ঢাল।
- 17Gossip Protocol ও CRDT — ছড়িয়ে পড়া আর conflict-free গণিতLeader ছাড়া cluster-এ খবর rumor-এর মতো ছড়ায় — মাত্র O(log N) round-এ; আর CRDT-র merge-algebra ওই এলোমেলো arrival-order-কেও অগ্রাহ্য করে সব replica-কে এক state-এ মিলিয়ে দেয়।
- 18Sharding at Scale — routing, rebalancing, hotspotPartitioning-গণিত শেখা হলেও production-এর আসল খেলা operational: request পৌঁছাবে কোথায়, node যোগ-বিয়োগে কত data নড়বে, আর celebrity-key কোন shard গুলিয়ে দেবে — এই তিন যুদ্ধের map।
- 19Distributed Tracing — request-এর পুরো জীবন দেখাMicroservice-jungle-এ এক request কোথায় সময় খেল — logs বা metrics বলে না; trace-span-tree, traceparent-header, sampling-economics আর critical-path-analysis মিলে সেই মানচিত্র আঁকে।
যা যা থাকছে
- কেন distributed systems কঠিন — 8 fallacies
- Failure models — crash, omission, Byzantine
- Time — physical clocks, NTP, clock skew
- Logical clocks — Lamport, vector clocks
- Happens-before ও causality
- Consistency models — linearizability, sequential, causal, eventual
- CAP ও PACELC
- Replication — primary-backup, quorum, chain
- Leader election
- Consensus — Paxos-এর intuition
- Raft — leader election, log replication, safety
- Two-phase ও three-phase commit
- Distributed transactions ও saga
- Idempotency ও exactly-once-এর মিথ
- Message queues — Kafka, RabbitMQ model
- Event-driven architecture ও event sourcing
- Distributed locks ও তাদের বিপদ
- Gossip protocols ও CRDTs
- Sharding ও consistent hashing
- Distributed tracing
প্রজেক্ট
Vector Clock Library
●●●○○Concurrent event detect করা।
Raft Implementation
●●●●●Leader election + log replication, partition দিয়ে test।
Replicated KV Store
●●●●●Quorum read/write, tunable consistency।
Chaos Lab
●●●●○নিজের system-এ latency/partition inject করে behaviour দেখা।