আমি সম্প্রতি স্কেলেবল এবং এন্টারপ্রাইজ কম্পিউটার আর্কিটেকচারের সূক্ষ্মতাগুলি শিখতে শুরু করেছি এবং কেন্দ্রীয় উপাদানগুলির মধ্যে একটি হ'ল একটি বার্তা সারি। যে কোনও প্রোগ্রামিং দৃষ্টান্তের মাধ্যমে আমি সবচেয়ে বেশি শিখতে, আমি নিজের বার্তাগুলি কিউ পরিষেবাটির নিজস্ব সংস্করণটি প্রয়োগ করার চেষ্টা করছি।
এখনও অবধি, আমার প্রাথমিক নকশাটি থ্রেডেড সকেট শ্রোতার উপর চলছে, তবে একই বার্তাটি দুটি পৃথক প্রসেসিং নোড দ্বারা দু'বার ডাউনলোড করা রোধ করার জন্য, একটি পঠন শুরু করা হলে বার্তা সারি সূচী রেজিষ্ট্রে লক করা থাকে এবং নিবন্ধক হওয়ার পরে আনলক করা হয় আপডেট করা হয়েছে। যেমন, এটি এর থ্রেড করার প্রয়োজনকে এড়িয়ে চলে এবং এর মানে হল যে সার্ভারের প্রসেসিং গতির উপর ভিত্তি করে একটি স্কেলেবল সিস্টেমের আকারের জন্য একটি সিলিং রয়েছে যা মেসেজিং ক্যু পরিষেবা চলছে running
এটি ঘুরে দেখার উপায়টি একাধিক সার্ভারে বার্তা কিউ পরিষেবা চালিত হবে, তবে এটি একই বার্তাটি দু'বার ডাউনলোড হওয়ার সম্ভাবনা বাড়িয়ে তুলবে। এই জাতীয় সমস্যাগুলির প্রতিরোধের একমাত্র উপায় হ'ল একটি প্রত্যাবর্তন কলব্যাক অন্তর্ভুক্ত করা হবে যা (সার্ভারের পরে, এমনকি কোনও একক সার্ভারের থ্রেডগুলিও তাদের তথ্য সিঙ্ক্রোনাইজ করে এবং এই জাতীয় পুনরায় জারী সনাক্ত করেছে) প্রসেসিং নোডকে এটি বন্ধ করার নির্দেশ দেয় বর্তমান কাজ, এবং পরবর্তী বার্তার জন্য বার্তা সারি পুনরায় জিজ্ঞাসা, কিন্তু আবার, একটি সিলিং হবে যেখানে পাঠানো হচ্ছে বেশিরভাগ ট্র্যাঙ্ক সিঙ্ক্রোনাইজেশন এবং প্রত্যাহার কলব্যাকস হবে, যার ফলে বাধা সৃষ্টি হবে এবং তথ্যের প্রক্রিয়াকরণকে ধীর করবে a প্রসেসিং নোডগুলির অনেকগুলি শূন্য অপারেশন করে এবং সময় নষ্ট করে।
এই সমস্যাটি ঘুরে দেখার জন্য আমি সর্বশেষে যেভাবে ভাবতে পারি তা হ'ল প্রতিটি বার্তা সারি সার্ভারে (এবং প্রতিটি সার্ভারের প্রতিটি থ্রেড) একটি সুনির্দিষ্ট অফসেট থাকবে যেখানে এটি কাতারে দেখছে, তবে এটির উপর ভিত্তি করে সমস্যা থাকতে পারে অ্যাপ্লিকেশন ধরণের, বিশেষত যদি একটি নির্দিষ্ট ক্রমে প্রক্রিয়া করা প্রয়োজন হয়।
সুতরাং, সমস্ত যা বলা হচ্ছে, সেখানে কি কোনও বার্তা কিউ আর্কিটেকচারের ডিজাইন রয়েছে যা আমাকে দেখাতে পারে যে কীভাবে বিদ্যমান এন্টারপ্রাইজ গ্রেড বার্তা কাতারের পরিষেবাগুলি এই সমস্যাগুলি এড়াতে পারে?