একটি স্কেলযোগ্য বার্তা সারি আর্কিটেকচার ডিজাইন করা


22

আমি সম্প্রতি স্কেলেবল এবং এন্টারপ্রাইজ কম্পিউটার আর্কিটেকচারের সূক্ষ্মতাগুলি শিখতে শুরু করেছি এবং কেন্দ্রীয় উপাদানগুলির মধ্যে একটি হ'ল একটি বার্তা সারি। যে কোনও প্রোগ্রামিং দৃষ্টান্তের মাধ্যমে আমি সবচেয়ে বেশি শিখতে, আমি নিজের বার্তাগুলি কিউ পরিষেবাটির নিজস্ব সংস্করণটি প্রয়োগ করার চেষ্টা করছি।

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

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

এই সমস্যাটি ঘুরে দেখার জন্য আমি সর্বশেষে যেভাবে ভাবতে পারি তা হ'ল প্রতিটি বার্তা সারি সার্ভারে (এবং প্রতিটি সার্ভারের প্রতিটি থ্রেড) একটি সুনির্দিষ্ট অফসেট থাকবে যেখানে এটি কাতারে দেখছে, তবে এটির উপর ভিত্তি করে সমস্যা থাকতে পারে অ্যাপ্লিকেশন ধরণের, বিশেষত যদি একটি নির্দিষ্ট ক্রমে প্রক্রিয়া করা প্রয়োজন হয়।

সুতরাং, সমস্ত যা বলা হচ্ছে, সেখানে কি কোনও বার্তা কিউ আর্কিটেকচারের ডিজাইন রয়েছে যা আমাকে দেখাতে পারে যে কীভাবে বিদ্যমান এন্টারপ্রাইজ গ্রেড বার্তা কাতারের পরিষেবাগুলি এই সমস্যাগুলি এড়াতে পারে?


2
এটি একটি বিশাল প্রশ্ন। আমি যদি আপনি থাকতাম আমি আইবিএম.কম এ গিয়েছি এবং কিছু লাল বইয়ের সন্ধান করতাম যা এমকিউ করবে এবং (যদি আপনি ভাগ্যবান হন) এটি কীভাবে কাজ করে তা বিশদ করে। অবশ্যই, এই বইগুলি আপনার জন্য সমস্ত উত্তর সরবরাহ করবে না তবে তারা প্রশ্নের পরিমাণ সম্পর্কে ধারণা এবং ধারণা দেবে। এমকিউ অত্যন্ত জটিল - আমি 15 বছর আগে এটির জন্য কাজ করেছি।
পিটএইচ

দেখার মতো অন্যান্য স্থাপত্যগুলির মধ্যে রয়েছে টিবকো রেন্ডেজভৌস ( টিবকো / প্রোডাক্টস / আউটমোশন / ম্যাসেজিং / ব্লো-লেটেনসি / রিন্ডিজেভস/… ), অ্যাপাচি অ্যাক্টিভ কিউ এবং স্প্রেড ( স্প্রেড.অর্গ )।
এক্সেল কেম্পার

1
চাকা পুনরুদ্ধার করবেন না। জিরো কিউ, রাবিট এমকিউ, রেডিস, ইত্যাদি
ডিজেচলিন

1
@ ডিজজেচলিন হ'ল সর্বকালের সর্বাধিক পুনঃসংশ্লিষ্ট আইটেম। এটি সর্বদা রাউন্ডার হতে পারে, তবে এই ক্ষেত্রে এটি পুনর্নবীকরণের চেষ্টা না করে কেবল
শিখিয়ে শিখুন

@cgoddard এই প্রযুক্তিগুলির মধ্যে একটিতে কোড বেসগুলিতে ডাইভ করার চেষ্টা করুন।
djechlin

উত্তর:


14

সংক্ষেপে:

এটি একটি কঠিন সমস্যা. চাকা পুনরুদ্ধার করবেন না।

এমন অনেক প্রযুক্তি রয়েছে যা বার্তা সারি স্তরটি সমাধান করে। তারা সহ

  • ZeroMQ
  • RabbitMQ
  • আপাচে কাফকা
  • রেডিস, বিএলপপ বা পাববুকের সাথে (আমি কীভাবে এটি এখানে জিজ্ঞাসা করব ) জিজ্ঞাসা করেছি ।
  • রাবিটএমকিউ ছাড়াও অন্যান্য এএমকিউ বাস্তবায়ন

আমি মনে করি যে আমার প্রতিটিটির অসুবিধাগুলি নিয়ে আলোচনা করা আমার পক্ষে সুযোগের বাইরে নয়, কমপক্ষে নয় কারণ আমি এই ভাল কাশি করার দক্ষতার সত্যতা দাবি করি না যে খরগোশের কাশি ব্যবহার করবেন না ।

এমনকি আপনি যদি এই প্রযুক্তিগুলির কোনও ব্যবহার করতে না চান তবে তাদের ডকুমেন্টেশনগুলি পড়ুন।

এটি আপনাকে এমন একটি ডিজাইনের ধরণ সম্পর্কে শিক্ষিত করবে যা এক সিস্টেমে সম্ভব। জিরোমিকিউয়ের ডকুমেন্টেশনগুলি পড়ার ফলে আপনি অনেকগুলি ক্লাসিক বার্তা কুইউং আর্কিটেকচারে শিষ্ট করবেন যা তারা করুণামত প্রয়োগ করেছেন। এমনকি আপনি যদি জিরো কিউ ব্যবহার না করেন, এই নিদর্শনগুলি জেনে রাখা আপনি সেখানে সেই প্যাটার্নটি বাস্তবায়ন করতে পারবেন কিনা তা জিজ্ঞাসা করে অন্যান্য সারিবদ্ধ প্রযুক্তির মূল্যায়ন করতে সহায়তা করবে।

রাবিটএমকিউ / এএমকিউপি-র এক্সচেঞ্জ-কিউ মডেল সম্পর্কে জানুন। রাউটিং আপনার জন্য উঠে আসতে পারে - এটি রেডিস পাবউবুক দ্বারা সমর্থিত তবে আমি জিরোমিকিউ দ্বারা সমর্থিত মনে করছি না - এবং ফ্যানআউটগুলি আমার দোকানটি এমন কিছু ব্যবহার করছে যা মেমক্যাচড পোলের (ইয়াক!) উপর খারাপভাবে প্রয়োগ করা হয়েছে, যদিও বেশ কিছুক্ষণ ধরে ।

কিভাবে একটি চয়ন করতে?

আমি একটি স্টার্টআপে কাজ করি যার এসএলএ একটি ওয়েব-অ্যাপ্লিকেশনটির জন্য আদর্শ - কিছু আউটজেস ঠিক আছে, যতক্ষণ না আমরা অল্প ডেটা ক্ষতি সহ দ্রুত পরিষেবা পুনরুদ্ধার করতে পারি। টুইটার বা টাম্বলারের মতো স্কেলিং সমস্যা সম্পর্কে আমাদের ভাবার দরকার নেই, তাই থ্রুপুট ভলিউম সম্পর্কে আমাদের সত্যিই চিন্তা করতে হয়নি। বলা হচ্ছে, আপনি যদি আমার মতো একটি এসএলএ প্রয়োগ করেন তবে এই বিবেচনাগুলি মাথায় আসবে:

  • ক্লায়েন্ট লাইব্রেরি কি আসলে কাজ করে ? এগুলির মধ্যে কোনও সংযোগ বজায় রাখা কি সহজ? (জিরো কিউ, রেডিস: হ্যাঁ। খরগোশ এমকিউ: না)।
  • সার্ভার কনসোল থেকে নিরীক্ষণ এবং পরিচালনা কি সহজ? (রেডিস: হ্যাঁ, রাবিট এমকিউ: হ্যাঁ, জিরো কিউ: আমি মনে করি না তবে আমরা এটি এতদিন ব্যবহার করি নি)
  • ক্লায়েন্টরা কি অভ্যন্তরীণ সারিগুলিকে সমর্থন করে তাই সংক্ষিপ্ত আকারের মধ্যে খুব কম ডেটা ক্ষতি হয়? (জিরো কিউ, রেডিস: হ্যাঁ। রাবিট এমকিউ: না।)

অবশ্যই যদি আপনি উচ্চ ফ্রিকোয়েন্সি ট্রেডিং শপের জন্য কাজ করে থাকেন তবে এগুলি আপনার কম উদ্বেগ হবে। শেষ পর্যন্ত উচ্চতর থ্রুপুটটির বিনিময়ে আপনি ক্লায়েন্ট-সাইড লাইব্রেরিতে বিকাশের সময় দিতে আরও আগ্রহী হবেন। তবে আমি আপনাকে আরও সতর্ক করতে এই আরও লিখছি যে এই প্রযুক্তিগুলি তাদের কার্যকারিতার ভিত্তিতে বাজারজাত করে, তাদের কার্যকারিতার বাইরে না কার্যকারিতা। আপনি যদি ওয়েব-স্টার্টআপ হন তবে আপনি আগেরটির তুলনায় অনেক বেশি আগ্রহী এবং তদনুসারে, রেডিসের মতো কিছু যা দুর্দান্ত পারফরম্যান্সে ব্যবহারের অসুবিধার চেয়ে ভাল পারফরম্যান্সে সহজেই ব্যবহারের জন্য অপ্টিমাইজড, সম্ভবত একটি রাব্বিটএমকিউর চেয়ে ভাল পছন্দ। (আমি সত্যই রাবিট এমকিউ পছন্দ করি না)।


8
চাকা পুনরায় উদ্ভাবন করবেন না ??? ??? যদি লিনাস এমনটি ভাবত আপনি এখন উইন্ডোজ ব্যবহার করবেন। তিনি মিনিক্সটিকে মজাদার জন্য পুনর্নবীকরণ করেছিলেন "কারণ তিনি এটি পছন্দ করেন না" এবং দেখুন এখন আমাদের কাছে কী আছে।
ক্রিসাপোটেক

9
@ ক্রিসাপোটেক লিনাস সমস্যার শট নেওয়ার আগে অপারেটিং সিস্টেমের অভ্যন্তরীণগুলি বুঝতে পেরেছিলেন । এখানকার ওপি এই পর্যায়ে তাঁর শব্দভাণ্ডার তৈরি করছে। পার্থক্য।
erbdex

2
@ ক্রিসাপোটেক তিনিও চেয়েছিলেন। আপনি যদি আরও ভাল বার্তা বাস তৈরি করতে চান তবে এগিয়ে যান তবে আপনি ওয়েব অ্যাপ্লিকেশন বা যা কিছু নির্মাণ করার চেষ্টা করার সময় সম্ভবত এটি করতে চান না। আমি যোগ্য হওয়ারও পরামর্শ দিই। যখনই আমি কোড লিখতে চাই আমি ব্যক্তিগতভাবে কোনও অপারেটিং সিস্টেম পুনর্নবীকরণের যোগ্য নই।
djechlin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.