পোস্টগ্রিএসকিউএল এর মতো একটি ডাটাবেসের মাধ্যমে কেন আমাদের রবিটএমকিউর মতো বার্তা দালালদের দরকার?


215

আমি খরগোশ এমকিউয়ের মতো বার্তা দালালদের মধ্যে নতুন যা আমরা মত একটি সিডিউলিং সিস্টেমের জন্য কর্ম / বার্তা সারিগুলি তৈরি করতে ব্যবহার করতে পারেন সেলারি

এখন, এখানে প্রশ্ন:

  • আমি PostgreSQL এ একটি টেবিল তৈরি করতে পারি যা নতুন কাজের সাথে সংযোজন করা যেতে পারে এবং সেলেরির মতো গ্রাহক প্রোগ্রাম দ্বারা গ্রাস করা যেতে পারে।

  • কেন পৃথিবীতে আমি এই জন্য খরগোশ এমকিউর মতো একটি সম্পূর্ণ নতুন প্রযুক্তি সেটআপ করতে চাই?

এখন, আমি বিশ্বাস করি যে স্কেলিং উত্তর হতে পারে না যেহেতু পোস্টগ্রিএসকিউএল এর মতো আমাদের ডাটাবেস বিতরণ করা পরিবেশে কাজ করতে পারে।

বিশেষ সমস্যাটির জন্য ডাটাবেসটি কী কী সমস্যা উত্থাপন করে তা আমি গুগল করেছিলাম এবং আমি পেয়েছি:

  • পোলিং ডেটাবেসকে ব্যস্ত এবং কম সম্পাদন করে keeps
  • টেবিল লক করা -> আবার কম পারফরম্যান্স
  • কয়েক মিলিয়ন সারি কাজ -> আবারও, ভোটগ্রহণ কম সম্পাদন করছে

এখন, রাব্বিটএমকিউ বা এর মতো অন্য কোনও বার্তা দালাল কীভাবে এই সমস্যাগুলি সমাধান করে?

এছাড়াও, আমি জানতে পেরেছিলাম যে AMQPপ্রোটোকলটি এটি অনুসরণ করে। তাতে দুর্দান্ত কি?

পারি Redis একটি বার্তা দালাল হিসাবে ব্যবহার করা যেতে? আমি এটি রেবিট এমকিউয়ের চেয়ে মেমক্যাচডের সাথে আরও সাদৃশ্যপূর্ণ বলে মনে করি।

দয়া করে এ সম্পর্কে কিছু আলোকপাত করুন!


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

একটি বার্তা ব্রোকার নোডগুলির মধ্যে ডেটা সরিয়ে দেয়, যখন একটি ডাটাবেস ডেটা এক জায়গায় রাখে। আপনি একাধিক নোড থেকে একটি ডাটাবেসে ডেটা অ্যাক্সেস করতে পারবেন তা তার মুখের ভিত্তিতে নোডগুলির মধ্যে দ্রুত ডেটা স্থানান্তর করার জন্য একটি ভাল সরঞ্জাম হিসাবে তৈরি করে না।
মায়ার

2
"মত সময় নির্ধারণী সিস্টেম celery" - আমি প্রশ্ন থেকে এমন কিছু শিখেছি যা আমার নকশায় কার্যকর হবে । এখন উত্তরগুলি পড়তে ...
মার্ক কে কোয়ান

বার্তা ব্রোকার উত্পাদক এবং ভোক্তা ব্যবহার করা decoupled হয়।
জিওরগি দ্বাবলিশভিলি 20'18

আপনি নিচু লিঙ্ক দেখতে পারেন। এর বিস্তৃত বর্ণনা রয়েছে: stackoverflow.com/a/51377756/3073945
মোঃ সাজেদুল করিম

উত্তর:


110

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

আপনি উল্লিখিত সমস্যাগুলি হিসাবে:

  • পোলিং ডাটাবেসের Buzy এবং কম পারফর্ম পালন : Rabbitmq ব্যবহার করে, প্রযোজক করতে ধাক্কা ভোক্তাদের আপডেট যা অনেক বেশী পোলিং চেয়ে performant। অপ্রয়োজনীয় চেকগুলির প্রয়োজনীয়তা বাদ দিয়ে ডেটা সহজেই গ্রাহকের কাছে প্রেরণ করা হয়।

  • টেবিলটি লক করা -> আবার কম সঞ্চালন: লক করার কোনও টেবিল নেই: পি

  • কয়েক মিলিয়ন টাস্ক টাস্ক -> আবার ভোটগ্রহণ কম পারফর্মেন্স করছে: উপরে উল্লিখিত হিসাবে, রাবিটম্যাক যেমন র‌্যামের সাথে থাকে তেমন দ্রুত পরিচালনা করবে এবং প্রবাহ নিয়ন্ত্রণ সরবরাহ করবে। যদি প্রয়োজন হয় তবে এটি র‍্যামের বাইরে চলে গেলে অস্থায়ীভাবে বার্তাগুলি সঞ্চয় করতে ডিস্কটিও ব্যবহার করতে পারে। ২.০-এর পরে, র‌্যাবিট তার র‍্যাম ব্যবহারের ক্ষেত্রে উল্লেখযোগ্যভাবে উন্নতি করেছে। ক্লাস্টারিং বিকল্পগুলিও উপলব্ধ।

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


(উত্স: স্প্রিংসোর্স.কম )

এবং: http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

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

দীর্ঘ ভোটদানের চ্যাট বাস্তবায়নে পুনরায় ব্যবহারের উদাহরণ এখানে রয়েছে: http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/


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

1
আপনি কেবল সমস্ত উদ্বেগ / সন্দেহকে আচ্ছন্ন করেছেন। দুর্দান্ত উত্তর!
যুগাল জিন্দল

ইহা আকর্ষণীয়. উপায় দ্বারা ধারাবাহিকতা সম্পর্কে কি? যদি কোনও সারিতে শত শত কাজ থাকে এবং নোড তাদের রাম ক্র্যাশে আটকে দেয় তবে কী হবে?
Mahn

22
প্রকৃতপক্ষে, পোস্টগ্রিসকিউএল সহ কোনও ভোটগ্রহণ নেই (বিজ্ঞপ্তি দেখুন) বা টেবিল লকগুলি নেই (দেখুন এমভিসিসি)। পোস্টগ্র্রেএসকিউএল এখনও বার্তা সারি জন্য ডিজাইন করা হয়নি, এটি সম্পূর্ণ অনুপযুক্ত নয়।
jkj

3
@ জেজেজেজে যা বলেছে তা পছন্দ করুন, এখানে বিজ্ঞপ্তি নেই এবং কোনও টেবিলের লক নেই। একমাত্র সমস্যাটি বার্তাগুলির উচ্চ ব্যান্ডউইথের মতো বলে মনে হচ্ছে। খরগোশের মতো সম্পূর্ণ নতুন সিস্টেম বজায় রাখার পরিবর্তে আপনি কি ডেডিকেটেড পোস্টগ্রিএসকিউএল উদাহরণটি রাখতে পারবেন না? আপনি 1) কোনও অস্তিত্ব না পৌঁছানো অবধি একক পোস্টগ্রিএসকিউএল উদাহরণ ব্যবহার করতে পারেন, তারপরে ২) একটি ডেডিকেটেড পোস্টগ্রিস ব্যবহার করুন, শেষ পর্যন্ত 3) সহজেই আপনার ব্রোকার হিসাবে খরগোশের দিকে স্যুইচ করুন। দেখে মনে হচ্ছে খরগোশের সাথে শুরু করা প্রাক-অনুকূলিতকরণ।
জো

72

পোস্টগ্রিএসকিউএল 9.5

পোস্টগ্রি 9.5 অন্তর্ভুক্ত SELECT ... FOR UPDATE ... SKIP LOCKED। এটি ওয়ার্কিং কুইউটিং সিস্টেমগুলি বাস্তবায়নকে অনেক সহজ এবং সহজ করে তোলে। আপনার আর কোনও বাহ্যিক কুইউিং সিস্টেমের প্রয়োজন হতে পারে না কারণ এখন 'এন' সারিগুলি আনার পক্ষে সহজ যা অন্য কোনও অধিবেশনটি লক না করে এবং কাজটি সম্পন্ন হয়েছে তা আপনি নিশ্চিত না করা অবধি এগুলিকে লক করে রাখুন। এমনকি বাহ্যিক সমন্বয় যখন প্রয়োজন হয় তার জন্য এটি দ্বি-পর্যায়ে লেনদেনের সাথেও কাজ করে।

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

পুরানো সংস্করণ

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

এজন্য পিজিকিউ-র মতো সরঞ্জাম বিদ্যমান।

আপনি পোস্টগ্র্রেএসকিউএল এ পোলিং ব্যবহার করে LISTENএবং এর মাধ্যমে পোলিং থেকে মুক্তি পেতে পারেন NOTIFYতবে এটি অত্যন্ত সমবর্তী ক্রিয়াকলাপ সংরক্ষণ করার সময় এবং সন্নিবেশগুলি অবরুদ্ধকরণ না করে সঠিকভাবে এক গ্রাহকের কাছে সারিবদ্ধভাবে প্রবেশকারীদের প্রবেশের সমস্যাটি সমাধান করবে না। আপনার মনে হয় এমন সমস্ত সহজ এবং সুস্পষ্ট সমাধানগুলি সমস্যার সমাধান করবে যা বাস্তবে বাস্তব জগতের মধ্যে নয় এবং একক-কর্মী সারি আনার কম দক্ষ সংস্করণগুলিতে অবনতি ঘটায়।

আপনার যদি উচ্চতর একযোগে বহু-কর্মী সারি সংগ্রহের প্রয়োজন না হয় তবে পোস্টগ্রেএসকিউএল-তে একটি একক সারি টেবিল ব্যবহার সম্পূর্ণ যুক্তিসঙ্গত।


11
লাইনটি reliably handing out entries off the top of the queue to exactly one consumer while preserving highly concurrent operation and not blocking inserts. সংক্ষেপে জানায় - তাই না?
যুগাল জিন্দল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.