কম্পিউটার

রেডিস পাব/সাব:ইন্ট্রো গাইড

প্রকাশ/সাবস্ক্রাইব করুন (বা পাব/সাব ) হল একটি সফ্টওয়্যার ইঞ্জিনিয়ারিং প্যাটার্ন যা কয়েক দশক ধরে ব্যবহার করা হয়েছে কিন্তু প্রায়ই ডেডিকেটেড মেসেজিং সার্ভার এবং বিশেষ জ্ঞানের প্রয়োজন হয়।

Redis pub/sub হল প্রকাশ/সাবস্ক্রাইব প্যাটার্নের একটি চর্বিহীন এবং সহজ বাস্তবায়ন যা 2.0 প্রকাশের পর থেকে সমস্ত Redis সার্ভারের বৈশিষ্ট্য। এর মানে হল যেখানেই Redis মোতায়েন করা হয় সেখানে এটি ব্যবহার করা সহজ, এবং Redis মোতায়েন করে দ্রুত এবং সহজ পাব/সাব সিস্টেম তৈরি করা যেতে পারে।

রেডিস পাব/সাব কোনও অ্যাপের জন্য উপযুক্ত কিনা তা বোঝার জন্য প্রথমে পাব/সাবের ডিজাইন এবং লক্ষ্য বোঝা গুরুত্বপূর্ণ, তারপরে রেডিস পাব/সাব বাস্তবায়নের বিবরণ বিবেচনা করা।

পাব/সাব ওভারভিউ

পাব/সাব ডিজাইন:"সাবস্ক্রাইবার" থেকে "প্রকাশকদের" আলাদা করা

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

"প্রকাশকদের" উদাহরণ

  • একটি অ্যাপ যা আপনাকে একটি চ্যাট রুমে একটি বার্তা পাঠাতে দেয়
  • একটি ডকার কন্টেইনার তার স্বাস্থ্য বা পরিষেবার ঘোষণা করে
  • স্টক ট্রেডের দাম ঘোষণাকারী একটি অ্যাপ
  • আপনার বাড়িতে একটি তাপমাত্রা সেন্সর তার পড়ার ঘোষণা দেয়
  • একটি মাল্টি-ইউজার গেমের একটি বার্তা সম্প্রচারক ("এলন একটি গ্রু দ্বারা খাওয়া হয়েছে")

"সাবস্ক্রাইবারদের" উদাহরণ

  • চ্যাট রুমে বার্তা শোনার অ্যাপ।
  • একটি অ্যাপ যা বিজ্ঞপ্তিগুলিকে স্ল্যাকে ফরোয়ার্ড করে
  • একটি মোবাইল ক্লায়েন্ট রিয়েল-টাইমে কী ঘটছে তা দেখতে ব্যবহৃত হয়
  • একটি লগিং পরিষেবা যা পরবর্তী বিশ্লেষণের জন্য ইভেন্ট রেকর্ড করে

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

পাব/সাব-এ একজন প্রকাশকের তার গ্রাহকদের সম্পর্কে জানার প্রয়োজন নেই – এটি একটি চ্যানেল-এ একটি বার্তা পাঠায় (প্রায়শই একটি বিষয় বলা হয় অন্যান্য সিস্টেমে) এবং মুভসন। বার্তা প্রকাশিত হলে যে কোনো গ্রাহকরা সেই চ্যানেলে শুনছেন।

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

পাব/সাবের লক্ষ্য:স্কেলিং ডেলিভারি, কাজের চাপ নয়

পাব/সাব হল একটি প্যাটার্ন যা স্কেলিং সফ্টওয়্যারে ব্যবহৃত হয় - এটি কী ধরণের স্কেলিং সাহায্য করে তা বোঝা গুরুত্বপূর্ণ। একটি গুরুত্বপূর্ণ পার্থক্য হল পাব/সাব্যান্ড বার্তা সারিবদ্ধ .

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

অন্যদিকে পাব/সাব-এ, সিস্টেমটি চ্যানেলের সমস্ত বার্তা তার সমস্ত গ্রাহকদের কাছে পৌঁছে দেওয়ার চেষ্টা করে। এটি একটি বহু-থেকে-অনেক প্যাটার্ন, যেখানে প্রতিটি গ্রাহক বার্তার সাথে অনন্য কিছু করে – কেউ এটি একটি টেকসই লগে লেখে, কেউ এটি একটি স্ল্যাক চ্যানেলে পাঠায়, কেউ একটি স্থানীয় বিক্রয় অফিসে ঘণ্টা বাজায় ইত্যাদি।

সংক্ষেপে, পাব/সাব স্কেলের বার্তা ডেলিভারি , এবং সারিবদ্ধ স্কেল বার্তাওয়ার্কলোড প্রক্রিয়াকরণ . রেডিস প্রায়শই এই উভয় লক্ষ্যের জন্য ব্যবহৃত হয়। রেডিসের সাথে সারিবদ্ধ হওয়ার একটি জনপ্রিয় উদাহরণের জন্য সিডেকিক দেখুন৷

Redis pub/sub বিবরণ

পাব/সাব হল একটি প্যাটার্ন যা অনেকদিন ধরে চলে আসছে, এবং মূল প্যাটার্ন একই হলেও নির্দিষ্ট বৈশিষ্ট্যগুলি বাস্তবায়ন থেকে বাস্তবায়ন পর্যন্ত যথেষ্ট পরিবর্তিত হয়।

রেডিস পাব/সাব একটি হালকা, দ্রুত বাস্তবায়ন। এটির ডিজাইনটি ভালভাবে বোঝার জন্য, কিছু বৈশিষ্ট্যগুলি দেখার জন্য এটি কার্যকর হবে যা না৷ রেডিস পাব/সাব:

এর একটি অংশ
  • কোন স্থিরতা বা মান ক্যাশিং নেই
  • কোন ডেলিভারি গ্যারান্টি নেই
  • কোন ক্লাস্টার অপ্টিমাইজেশান নেই... এখনো

কোন জেদ নেই:"কিন্তু আমি ভেবেছিলাম এটি একটি চ্যাট রুমের মতো ছিল..."

বেশিরভাগ রেডিস অপারেশনের বিপরীতে, যা ডিস্কে লেখা হতে পারে, রেডিসপাব/সাব অ-স্থির। প্রকাশিত বার্তাগুলি সরাসরি গ্রাহকদের কাছে পাঠানো হয় এবং তারপরে ফেলে দেওয়া হয়, রেডিসের মেমরি বা অনডিস্কে কোনও রেকর্ড রাখা হয় না৷

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

আসলে আপনি এখনও Redis এবং পাব/সাবের সাথে একটি চ্যাট রুম বাস্তবায়ন করতে পারেন। এটি করার জন্য আপনি নিশ্চিত করবেন যে বার্তাগুলি শুধুমাত্র প্রকাশ করা হবে না বরং একটি তালিকা-এ পুশ করা হবে যাতে ব্যবহারকারীরা বার্তার ইতিহাস দেখতে পারেন৷

কোন ডেলিভারি গ্যারান্টি নেই

গ্রাহকদের পাব/সাব মডেলে বার্তা পাওয়ার নিশ্চয়তা নেই। যদি গ্রাহকের নেটওয়ার্কিং সমস্যা থাকে, বার্তাগুলি দ্রুত পড়তে ব্যর্থ হয়, অন্যথায় একটি বার্তা প্রকাশিত হওয়ার সময় সংযুক্ত করা হয় না বলে মনে হয়, এটি কেবল বার্তাটি পাবে না। কোনো সাবস্ক্রাইবার না শুনলেও প্রকাশকরা চ্যানেলগুলিতে বার্তা পাঠাতে পারেন - সেই বার্তাগুলি বাদ দেওয়া হয়৷

কিছু অন্যান্য মেসেজিং সিস্টেম পঠিত রসিদ বা "অ্যাক্স" ব্যবহার করে অথবা কোনো গ্রাহকের জন্য আবফার সঞ্চয় করতে পারে যা স্বল্প সময়ের সংযোগ বিচ্ছিন্ন থেকে রক্ষা করে। রেডিস এখানে সহজ বিকল্প বেছে নেয়:যদি আপনি কোনো বার্তা মিস করেন, আপনি বার্তাটি মিস করেছেন। বার্তা যা অবশ্যই অন্য উপায়ে তাদের প্রাপকের কাছে পৌঁছানো প্রয়োজন।

এই ট্রেডঅফ এর চেয়ে খারাপ শোনাচ্ছে। ড্রপিং বার্তা স্বীকৃতি এবং গ্রাহক-নির্দিষ্ট বাফারিং Redis pub/sub প্রক্রিয়া বার্তা খুব করতে দেয় দ্রুত, এবং এমন অনেক সিস্টেম রয়েছে যা ন্যায্য আবহাওয়ার বার্তা বিতরণ থেকে উপকৃত হয়।

অদক্ষ ক্লাস্টার স্কেলিং, আপাতত...

পাব/সাব হল স্কেলিং এর জন্য একটি সমাধান, তাই শুধুমাত্র আপনার বার্তাগুলি নয় বরং আপনি যে পরিষেবাটি বার্তাগুলি সরবরাহ করার জন্য ব্যবহার করছেন তাও স্কেলিং বিবেচনা করা গুরুত্বপূর্ণ৷ RabbitMQ এবং Kafka সহ অনেক মেসেজিং সিস্টেম, উচ্চ প্রাপ্যতা এবং যুক্তিসঙ্গত স্কেলিং বৈশিষ্ট্যগুলির জন্য ডিজাইন করা হয়েছিল একটি বার্তা পরিষেবা সেটআপ বৃদ্ধি পায়৷

Redis ক্লাস্টার (3.0 থেকে Redis এর অংশ) একটি গুরুত্বপূর্ণ সতর্কতা সহ Redis পাব/সাবের জন্য অন্তর্নির্মিত সমর্থন রয়েছে। প্রতিটি প্রকাশিত বার্তা একটি রেডিস ক্লাস্টারের প্রতিটি সদস্যের কাছে সম্প্রচার করা হয়, যা দ্রুত বড় ক্লাস্টারগুলিকে ট্র্যাফিকের দ্বারা অভিভূত হতে পারে৷

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

র্যাপিং আপ

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

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

সেই উচ্চ-স্তরের ওভারভিউ সম্পূর্ণ হলে, আপনি সম্ভবত কিছু পাব/সাব কোডের উদাহরণ দেখতে প্রস্তুত। রেডিস পাব/সাব-এ একবার দেখুন:কীভাবে পরবর্তী।


  1. রিডিস আনসাবস্ক্রাইব করুন - রেডিস পাব/সাব-এ একাধিক চ্যানেল থেকে কীভাবে আনসাবস্ক্রাইব করবেন

  2. Redis পাবলিশ - কিভাবে redis pub/sub-এ একটি বার্তা প্রকাশ করবেন

  3. রেডিস সাবস্ক্রাইব করুন – কীভাবে রেডিস পাব/সাব-এ একাধিক চ্যানেল সাবস্ক্রাইব করবেন

  4. রেডিস জেডিস পাব সাব- জেডিস লাইব্রেরি ব্যবহার করে কীভাবে পাব/সাব সিস্টেম বাস্তবায়ন করবেন