একটি বেসিক কুইউং সিস্টেমটি লেখা মোটামুটি সহজ, তবে আপনি সমস্ত চ্যালেঞ্জগুলির সাথে উপরে যেমন উল্লেখ করেছেন, সঠিকভাবে করা অন্য বিষয়। আমি হোম গ্রোড সিস্টেমগুলি ব্যবহার করেছি যার জন্য আমি উত্স কোড, তৃতীয় পক্ষের সিস্টেম এবং বিভিন্ন জেএমএস সরবরাহকারী লিখেছি। জেএমএস (জাভা মেসেজিং পরিষেবা) এখন পর্যন্ত আমার মুখোমুখি হওয়া সবচেয়ে সম্পূর্ণ সমাধান। আপনি যা জিজ্ঞাসা করেন তার বেশিরভাগটি জেএমএসে উপলব্ধ। আমার প্রিয় জেএমএস সরবরাহকারী অ্যাক্টিভএমকিউ। ফ্রি, পারফরম্যান্ট, ইনস্টল করা সহজ এবং আরও গুরুত্বপূর্ণভাবে স্প্রিংয়ের সাথে আমার অ্যাপে এম্বেড করা সহজ। জেএমএস সরবরাহকারীরা বাক্সের বাইরে আপনি যা যা চেয়েছিলেন তা সরবরাহ করে না, তবে আপনার অ্যাপ্লিকেশনটির প্রয়োজন হওয়া উচিত, আপনি যা জিজ্ঞাসা করেছিলেন তার অনেকগুলি পরিচালনা করার জন্য তারা একটি সরঞ্জাম সরবরাহ করে। আপনার তালিকাভুক্ত সমস্ত কিছুর জন্য প্রচুর অ্যাপ্লিকেশন দরকার নেই। অর্ডারিং গুরুত্বপূর্ণ নাও হতে পারে (এটি না হলে সবচেয়ে ভাল),
http://activemq.apache.org/what-open-source-integration-solution-works-best-with-activemq-.html
এটির শক্তিশালী নাকি অর্ডার হারানো আছে? হ্যাঁ। এটি আপনার প্রোগ্রামের প্রয়োজনের উপর নির্ভর করে উভয়ই রয়েছে। এখানে বিশদগুলি: http://activemq.apache.org/total-ordering.html ।
এটি কি আদর্শবান রাখে? না, তবে আপনার অ্যাপ্লিকেশন স্তরটিতে এটি প্রয়োগ করা খুবই ক্ষুদ্র you
একটি মেশিনে কী ফিট করতে পারে তার চেয়ে আমাদের কি আরও বেশি সারি থাকতে পারে? হ্যাঁ। আপনার কাছে ক্লাস্টারযুক্ত সার্ভার থাকতে পারে এবং আপনি যদি বিভিন্ন সারিতে একাধিক মেশিন সেটআপ করতে চান এবং আপনি যে কোনও একটি থেকে টানতে পারেন।
একটি একক মেশিনে কী ফিট করতে পারে তার চেয়ে আমাদের কি আরও কাতারে আরও ডেটা থাকতে পারে? হ্যাঁ, বেশিরভাগ জেএমএস সরবরাহকারীদের জেএমএস সরবরাহকারীর নিচে নেমে গেলে বার্তাগুলি বাদ দেওয়া বা হারাবে না তা নিশ্চিত করতে কিছু ধরণের ডিবি / ধ্রুবক স্টোরেজ ব্যবহার করতে হয়।
আমরা সম্ভাব্যভাবে ডেটা হারানোর আগে কয়টি মেশিন ক্রাশ হতে পারে? এটির উত্তর দেওয়া সামান্য কঠিন কারণ এটির সময় সম্পর্কিত। তবে, আপনি একটি জেএমএস সরবরাহকারীকে ক্রাশ করতে পারেন এবং প্রদত্ত ডিস্কটি দুর্নীতিগ্রস্থ না হলে এটি ফিরে আসবে এবং এটি শেষ প্রতিশ্রুতিটি পেয়েছে সেখান থেকে শুরু হবে। এর অর্থ বার্তাগুলি দু'বার সরবরাহ করা যেতে পারে, তবে আপনি যদি হ্যান্ডল করার জন্য আপনার অ্যাপ্লিকেশনটি কোড করেন তবে এটি কোনও সমস্যা নয়। যতক্ষণ না আপনার প্রতিটি প্রকারের কমপক্ষে একটি (উত্পাদক, গ্রাহক বা জেএমএস সার্ভার) থাকে এটি সম্পূর্ণ হবে। রিডান্ডেন্সির জন্য আপনার লোড / ভারসাম্য / ব্যর্থতাও থাকতে পারে যদি আপনার কোনও ডিস্ক চলে।
এটি কি নেট-স্প্লিটগুলি টোললেট করতে পারে? আমি মনে করি আপনি "নেট-বিভক্ত" বলতে কী বোঝাতে চেয়েছি আমি তা বুঝতে পেরেছি তবে আমি পুরোপুরি নিশ্চিত নই। আমি মনে করি আপনার বোঝার অর্থ যদি জেএমএস সার্ভারগুলি ক্লাস্টারযুক্ত থাকে এবং আমরা সার্ভারগুলির মধ্যে একটির সাথে যোগাযোগটি ছেড়ে দিই তবে এটি অন্য সার্ভারে ওঠা যায় যেখানে এটি ছেড়ে যায় pick হ্যাঁ, তবে আবার এই ধরণের পরিস্থিতি ক্লায়েন্টের কোন সংযোগটি হারিয়েছে তার উপর নির্ভর করে ডুপ্লিকেট বার্তাগুলির দিকে নিয়ে যেতে পারে।
নেট-স্প্লিট ঠিক হয়ে গেলে এটি কীভাবে স্বয়ংক্রিয়ভাবে ডেটা মিলিয়ে নিতে পারে? আপনি যদি লেনদেন করা সেশনগুলি ব্যবহার করে থাকেন তবে এটি কেবলমাত্র বিদ্যমান ক্লায়েন্টদের কাছে যে প্রতিশ্রুতিবদ্ধ ছিল তার কোনও বার্তা পুনরায় সরবরাহ করবে।
যখন ক্লায়েন্টরা ক্রাশ করতে পারে তখন কি এটি সরবরাহের গ্যারান্টি দিতে পারে? হ্যাঁ এটি জেএমএসের অন্যতম প্রধান লক্ষ্য। গ্যারান্টেড ডেলিভারি মানে এই যে কোনও বার্তা সারিবদ্ধ থাকলে এটি কোনও ক্লায়েন্ট দ্বারা পরিচালিত হওয়ার নিশ্চয়তা রয়েছে।
এটি কি গ্যারান্টি দিতে পারে যে একই বার্তা একাধিকবার সরবরাহ করা হয়নি? হ্যাঁ যদি লেনদেন করা সেশনগুলি ব্যবহার করা হয়। এর অর্থ কোনও ক্লায়েন্ট বার্তাটি গ্রহণ করেছে এবং কমিট / রোলব্যাক বলেছে। কমিট বলা হয়ে গেলে এটি বার্তাটি পুনরায় বিতরণ করবে না।
কোনও নির্দিষ্ট পয়েন্টে নোড ক্র্যাশ করতে পারে, ফিরে আসতে পারে এবং আবর্জনা প্রেরণ করতে পারে না? যে ক্ষেত্রে আপনার টেকসই ক্লাস্টারযুক্ত সারি রয়েছে। হ্যাঁ ক্লাস্টারের অন্য নোডটি বার্তা দিলে এটি "জাঙ্ক" স্প্রে করবে না। এটি এখনও স্বীকৃত নয় এমন যে কোনও কিছু আবার সরবরাহ করতে পারে।
আপনি কি ডাউন টাইম ছাড়াই একটি চলমান ক্লাস্টারে নোডগুলি যোগ করতে, বা নোডগুলি সরাতে পারেন? হ্যাঁ।
আপনি কি ডাউন টাইম ছাড়াই চলমান ক্লাস্টারে নোডগুলি আপগ্রেড করতে পারেন? উত্তর দেওয়ার জন্য এটি আমার পক্ষে একটু কৌশলযুক্ত তবে আমি বিশ্বাস করি যে হ্যাঁ আপনি এটি করতে পারেন।
এটি কি ভিন্নজাতীয় সার্ভারগুলিতে সমস্যা ছাড়াই চলতে পারে? তুমি আসলে কি বোজাতে ছাচ্ছ? আমি খুঁজে পেয়েছি বেশিরভাগ জেএমএস সরবরাহকারীরা বিভিন্ন হার্ডওয়্যার, ওএস ইত্যাদি ব্যবহার করে পরিবেশে চালানো খুব সহজ, যদিও আপনি যদি পারফরম্যান্স বোঝাতে চান তবে এটি সম্পূর্ণ অন্য জিনিস। যে কোনও বিতরণ প্রক্রিয়াকরণ সিস্টেমকে ধীর নোড দ্বারা নেতিবাচকভাবে প্রভাবিত করা যেতে পারে। আমার কাছে কুই এবং গ্রাহকরা চলমান 2 8 টি কোর ইন্টেল সার্ভার রয়েছে। এটি একসাথে ১ores টি কোর এবং আমি গ্রাহক হিসাবে কোনও একটি কোর মেশিন যুক্ত করার চেয়ে কেবলমাত্র এই দুটি বাক্সই ব্যবহার করে আরও ভাল পারফরম্যান্স পেয়েছি। সেই একক কোর মেশিনটি এত ধীর ছিল যে এটি 2x এর ফ্যাক্টর দ্বারা পুরো গ্রিডটি ধীর করে দিয়েছিল। এটি প্রতি জেএমএসের সাথে কোনও সম্পর্ক ছিল না।
আপনি কি একটি গ্রুপের সার্ভারের "সারি" রাখতে পারেন? সংক্ষিপ্ত উত্তর হ্যাঁ। আমি এমন একটি উপায় সম্পর্কে ভাবতে পারি যেখানে আপনি কেবল ইওরোপীয় ডেটা সেন্টারে থাকা একটি ক্লাস্টার চালাতে পারেন এবং সেখানে সারিটি কনফিগার করতে পারেন। তারপরে আপনার বসন্তের কনফিগারেশনে আপনার ভোক্তাদের সেই সারিটি এবং অন্যান্য ক্লাস্টারে থাকা অন্যান্য সারিগুলি গ্রাস করতে হবে। আপনি ডক্সের সাথে পরামর্শ করতে চাইতে পারেন:
http://activemq.apache.org/clustering.html
যদি এটি পাওয়া যায় তবে কমপক্ষে দুটি ডাটাসেন্টারে ডেটা প্রতিলিপি স্থাপন করা নিশ্চিত করা যায়? আবার আমি এটি বিশ্বাস করি তবে ক্লাস্টারিং ডক্সের সাথে পরামর্শ করা ভাল।
আবার জেএমএসের কাছে প্রচুর অপশন রয়েছে যা আপনি আপনার প্রয়োজনীয়তা ডিক্ট করার সাথে সাথে টুইট করতে পারেন। লেনদেন সেশন এবং টেকসই সারি ব্যবহার করে পারফরম্যান্স ব্যয়। আমি সমস্ত ঘণ্টা এবং হুইসেলগুলি প্রভাবিত করে 10x হিসাবে কার্যকর পারফরম্যান্স চালু করতে দেখেছি। আমি যখন JBossMQ ব্যবহার করেছি আমরা যদি এই বৈশিষ্ট্যগুলির কয়েকটি বন্ধ করে থাকি তবে আমরা প্রায় 10,000 টি বার্তা / গুলি পেতে পারি, তবে সেগুলি চালু করে 1000 টি বার্তা / গুলি নামিয়ে আনে। বড় ড্রপ।