একটি ডিস্ট্রিবিউটেড ক্লাস্টারে যখন হাজার হাজার বা লক্ষ লক্ষ সার্ভার থাকে, তখন একটি কেন্দ্রীয় হার্টবিট সার্ভারের পক্ষে সবার খোঁজ রাখা অসম্ভব। আবার সব নোড যদি সবার সাথে পয়েন্ট-টু-পয়েন্ট যোগাযোগ করতে যায়, তবে নেটওয়ার্কে $mathcal{O}(N^2)$ ট্র্যাফিকের সুনামি সৃষ্টি হয়। প্রকৃতিতে যেভাবে কোনো একক নেতা ছাড়াই মানব সমাজে মহামারী বা ভাইরাস ছড়িয়ে পড়ে, কম্পিউটার বিজ্ঞানীরা ঠিক সেই ধারণাকে কাজে লাগিয়ে তৈরি করেছেন গসিপ বা এপিডেমিক প্রটোকল (Gossip / Epidemic Protocols) (Demers et al., 1987)। এর সাথে SWIM ফেইলিওর ডিটেক্টর যুক্ত হয়ে অ্যাপাচি ক্যাসান্ড্রা, কনসাল এবং ইথেরিয়ামের মতো বৈশ্বিক নেটওয়ার্কগুলোতে অত্যন্ত শক্তিশালী স্বয়ংক্রিয় যোগাযোগ ব্যবস্থা গড়ে তুলেছে।

১. এপিডেমিক ছড়ানোর গাণিতিক মডেল ও লগারিদমিক রূপান্তর

গসিপ অ্যালগরিদম জীববিজ্ঞানের SIR (Susceptible-Infective-Removed) মহামারী মডেলের হুবহু অনুকরণ। ধরা যাক, $N$ সংখ্যক নোডের ক্লাস্টারে একটি মাত্র নোডে একটি নতুন তথ্য (“ইনফেকশন”) এসেছে:

  • প্রতিটি নির্দিষ্ট রাউন্ডে তথ্যপ্রাপ্ত নোডটি ক্লাস্টার থেকে দৈবচয়ন পদ্ধতিতে (Randomly) $k$ সংখ্যক অন্য নোডকে বেছে নেয়।
  • নির্বাচিত নোডগুলোকে নতুন তথ্যটি পাঠিয়ে দেওয়া হয়।
  • তথ্য পাওয়া নতুন নোডগুলোও পরবর্তী রাউন্ডে আরও $k$ সংখ্যক নোডকে তথ্যটি জানাতে শুরু করে।

গাণিতিকভাবে এই বিস্তার লজিস্টিক ডিফারেনশিয়াল সমীকরণ মেনে চলে:

$$frac{dx}{dt} = beta x (1 – x)$$

এই সমীকরণ প্রমাণ করে যে সমগ্র বিশ্বের $N$ সংখ্যক নোডে তথ্যটি শতভাগ ছড়িয়ে পড়তে সময় লাগে মাত্র:

$$mathcal{O}(log N) quad text{রাউন্ড}$$

এমনকি ১০ লক্ষ ($N = 10^6$) সার্ভারের ক্লাস্টারে মাত্র $k = 3$ ফ্যানআউট ব্যবহার করলেও মাত্র ১৫ থেকে ২০ রাউন্ডে বিশ্বের প্রতিটি সার্ভারে তথ্যটি পৌঁছে যায়। এমনকি নেটওয়ার্কের ৫০% সুইচ বা ক্যাবল হঠাৎ বিচ্ছিন্ন হয়ে গেলেও ৯৯.৯৯৯৯৯৯% সম্ভাবনায় ডেটা সবার কাছে পৌঁছাতে সক্ষম হয়।

২. SWIM প্রটোকল: $mathcal{O}(1)$ ফল্ট ডিটেকশন

কোনো সার্ভার ক্র্যাশ করেছে কিনা তা বুঝতে গিয়ে সার্ভারগুলোর ব্যান্ডউইথ যেন নিঃশেষ না হয়, সে জন্য ২০০২ সালে আবিষ্কৃত হয় SWIM (Structured Weakly-Consistent Infection-Style Process Group Membership) প্রটোকল। এটি প্রতি নোডে ব্যান্ডউইথ খরচকে একটি ধ্রুবক মানে ($mathcal{O}(1)$) সীমাবদ্ধ রাখে।

SWIM-এর দুই স্তরের অনুসন্ধান প্রক্রিয়া

  1. ডিরেক্ট পিং (Direct Ping): নোড $A$ দৈবচয়নে নোড $B$-কে একটি UDP পিং পাঠায়। নির্দিষ্ট সময়ের মধ্যে উত্তর না পেলে $A$ কিন্তু সাথে সাথে $B$-কে মৃত ঘোষণা করে না।
  2. ইনডিরেক্ট পিং-রিকোয়েস্ট (Indirect Ping-Req): স্থানীয় কোনো রাউটারের সাময়িক সমস্যার কারণে পিং ড্রপ হতে পারে। তাই নোড $A$ ক্লাস্টারের অন্য ৩টি ভিন্ন নোডকে ($C_1, C_2, C_3$) বলে: “তোমরা একটু নোড $B$-কে পিং করে দেখ তো সে বেঁচে আছে কিনা?”
  3. অন্য নোডগুলো যদি ভিন্ন নেটওয়ার্ক পথ দিয়ে $B$-এর সাড়া পায়, তবে তারা $A$-কে জানিয়ে দেয়। ফলে মিথ্যা অ্যালার্ম প্রতিরোধ হয়।
  4. সাসপিশন মেকানিজম (Suspicion Mechanism): যদি কেউই সাড়া না পায়, তবে নোড $B$-কে সাথে সাথে বের না করে ‘সন্দেহভাজন’ (Suspect) ঘোষণা করা হয়। নোড $B$-কে নিজেকে নির্দোষ প্রমাণ করার জন্য একটি নির্দিষ্ট সময় দেওয়া হয়। সময় পার হলে ক্লাস্টার নিশ্চিত হয়ে তাকে স্থায়ীভাবে বহিষ্কার করে।