Aria হলো কোম্পানির অভ্যন্তরীণ মেসেজিং ফ্রেমওয়ার্ক এবং একটি হোস্টেড সিস্টেম, যা প্রতিদিন একাধিক টেরাবাইট ডেটা প্রক্রিয়া করে। ক্লায়েন্টরা লাইভ মেসেজ স্ট্রিম পাওয়ার জন্য Aria-তে সাবস্ক্রাইব করে। ব্যবহার দ্রুত বাড়ায় Aria দলকে ক্রমবর্ধমান ডেটার পরিমাণ ও থ্রুপুটের সঙ্গে তাল মিলিয়ে সিস্টেমটি পুনর্গঠন করতে হয়েছে। এই গ্রীষ্মে ইন্টার্ন Theodor Totev একটি নির্দিষ্ট ব্যবহারের ক্ষেত্রে কাজ করেছেন: ক্লায়েন্টদের জন্য মেসেজের একটি উপসেট পড়া আরও সাশ্রয়ী করা। ইন্ডেক্সিং ও ট্রি-স্প্লিটিং ব্যবহার করে তাঁর কাজ প্রোডাকশন ওয়ার্কলোডে CPU ব্যবহার 30% কমিয়েছে, এবং এমন একটি গুরুত্বপূর্ণ সিস্টেমের জন্য প্রয়োজনীয় উচ্চ নির্ভুলতার মানও বজায় রেখেছে।
Aria যখন TCP-এর মাধ্যমে মেসেজ পাঠায়, তখন সাম্প্রতিক মেসেজগুলো, যাকে স্ট্রিম টিপ বলা হয়, একটি ইন-মেমরি রিং বাফারে রাখে। যেসব ক্লায়েন্ট পিছিয়ে পড়ে, তারা এই বাফার থেকে সাম্প্রতিক মেসেজ চেয়ে নিয়ে ধরতে পারে, এই প্রক্রিয়াকে টিপ রিকভারি বলা হয়। চ্যালেঞ্জ হলো, Aria পুরো মেসেজ স্ট্রিম সংরক্ষণ করে, অথচ ক্লায়েন্টদের প্রায়ই এর ছোট একটি অংশই দরকার হয়। Aria টপিক অনুযায়ী স্ট্রিম ফিল্টার করে, এবং ক্লায়েন্টরা আলাদা টপিক বা পুরো টপিক সাবট্রিতে সাবস্ক্রাইব করতে পারে। মূল পদ্ধতিটি ছিল স্ট্রিমের একটি সরল রৈখিক পাস। অ্যালগরিদমিকভাবে এটি অদক্ষ ছিল, কিন্তু CPU ক্যাশ-বান্ধব হওয়ায় বেশ দ্রুত ছিল। টিপ রিকভারির ক্লায়েন্ট সংখ্যা বাড়লে কিছু সার্ভার 100% CPU ব্যবহারে পৌঁছায়, ফলে ক্লায়েন্টরা টিপ থেকে ছিটকে পড়ে এবং ধরতে পারেনি।
প্রতিটি টপিকের জন্য ইন্ডেক্স তৈরির পরিকল্পনা বাতিল করা হয়, কারণ Aria ইনস্ট্যান্সে প্রায় দশ লক্ষ টপিক থাকতে পারে। বরং Theodor প্রতিটি টপিক পার্টিশনের জন্য একটি ইন্ডেক্স তৈরি করেন, যা একই দুই-অংশের প্রিফিক্সযুক্ত সব টপিককে একত্র করে। প্রতিটি পার্টিশনের ইন্ডেক্স স্ট্রিমে তার মেসেজের অবস্থান নথিভুক্ত করে। ক্লায়েন্ট মেসেজ চাইলে, Aria একটি মিন-হিপ ব্যবহার করে সংশ্লিষ্ট ইন্ডেক্সগুলোর n-way মার্জ করে, এবং শুধু অনুরোধ করা পার্টিশনগুলোর জন্য ক্রমানুসারে স্ট্রিম পুনর্গঠন করে।
এই কাজে বেঞ্চমার্কিং কেন্দ্রীয় ছিল। Theodor টপিক পার্টিশনের সংখ্যা, ইন্টারলিভিংয়ের মাত্রা ও রিডারের সংখ্যার মতো ভেরিয়েবল পরীক্ষার জন্য একটি প্রোফাইলিং টুল তৈরি করেন। প্রাথমিক বাস্তবায়নের প্রোফাইলিংয়ে দেখা যায় মিন-হিপই সবচেয়ে বড় বাধা।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing