আপনি যখন এমন একটি অ্যাপ্লিকেশনে কাজ করছেন যা সহজে রক্ষণাবেক্ষণযোগ্য, পরিমাপযোগ্য এবং পারফরম্যান্ট হতে হবে, তখন প্রকাশ/সাবস্ক্রাইব মেসেজিং প্যাটার্ন একটি ভাল পছন্দ৷
এর পিছনে ধারণাটি সহজ, তবে শক্তিশালী। আমাদের প্রকাশক নামে প্রেরক আছে তাদের একমাত্র ভূমিকা হল পাঠানো বা প্রকাশ করা বার্তা কে তাদের গ্রহণ করবে বা কেউ তাদের আদৌ গ্রহণ করবে কিনা তা নিয়ে তারা চিন্তা করে না। তারা শুধু গুলি করে মেসেজ ভুলে যায়। এবং তারা চ্যানেলের মাধ্যমে তা করে .
তাদের মনে করুন, উদাহরণস্বরূপ, টিভি চ্যানেল। আমাদের স্পোর্টস চ্যানেল, আবহাওয়ার পূর্বাভাস চ্যানেল, রান্নার চ্যানেল এবং আরও অনেক কিছু রয়েছে। প্রত্যেক প্রকাশক একটি নির্দিষ্ট চ্যানেলে তার বার্তা পাঠায় এবং যে কেউ সাবস্ক্রাইব করা হয়েছে এই চ্যানেলের জন্য এই বার্তাগুলি পেতে সক্ষম হবে৷
৷এখানে সাবস্ক্রাইবার খেলায় আসা তারা এক বা একাধিক চ্যানেলে সাবস্ক্রাইব করতে পারে এবং সেখানে সম্প্রচারিত বার্তাগুলি পেতে শুরু করে৷
আমরা ইতিমধ্যেই উল্লেখ করেছি, বার্তাগুলি পাঠাতে হবে এবং ভুলে যেতে হবে৷ এর মানে হল যে একজন গ্রাহক যদি একটি নির্দিষ্ট চ্যানেলের জন্য সাবস্ক্রাইব করেন, সেই চ্যানেলে আগে পাঠানো সমস্ত বার্তা এই গ্রাহকের কাছে উপলব্ধ হবে না৷
এই ধরনের স্থাপত্যের প্রকৃতির কারণে, আমরা সহজেই বিভিন্ন উপাদানের মধ্যে কম সংযোগ অর্জন করতে পারি এবং মজবুত এবং সহজে রক্ষণাবেক্ষণের অ্যাপ্লিকেশন তৈরির জন্য একটি শক্ত ভিত্তি প্রদান করতে পারি।
উদাহরণস্বরূপ, এমন একটি পরিস্থিতি কল্পনা করুন যেখানে আমাদের আমাদের সিস্টেমের প্রকাশনা অংশ প্রতিস্থাপন বা উন্নত করতে হবে – বলুন আরও প্রকাশক যোগ করুন, আরও চ্যানেল বা আরও অনেক কিছু। যেহেতু দুটি অংশ বিচ্ছিন্ন, যার অর্থ প্রকাশকরা গ্রাহকদের এবং তদ্বিপরীত সম্পর্কে চিন্তা করেন না, আমরা সিস্টেমের অন্য কোনও অংশ ভাঙছি কিনা তা চিন্তা না করেই আমরা সহজেই এটি করতে পারি। আমরা শুধু নতুন প্রকাশকদের যোগ করি। তারপরে, যখন একজন সাবস্ক্রাইবার প্রাসঙ্গিক চ্যানেলে আসে, তখনই সেগুলি ব্যবহার করা শুরু করে।
Redis কি?
রেডিসের পিছনে প্রাথমিক ধারণাটি ছিল একটি ইন-মেমরি ক্যাশে সমাধান হিসাবে কাজ করা, এটির পূর্বপুরুষ মেমক্যাচেডের বিকল্প হিসাবে।
কিন্তু আজকাল এটি একটি বহুমুখী সমাধান, যা একটি ইন-মেমরি ডেটা স্ট্রাকচার স্টোর, কী-মান ডাটাবেস, বার্তা ব্রোকিং এবং আরও অনেক কিছু প্রদান করে। এটি একটি অ্যাপ্লিকেশন তৈরি করার সময় এটিকে নিখুঁত প্রার্থী করে তোলে যার জন্য সত্যিই দ্রুত ক্যাশিং সমাধানের পাশাপাশি আগে উল্লেখ করা অন্যান্য বৈশিষ্ট্যগুলির প্রয়োজন হয়। বিশেষ করে যদি অ্যাপটির কার্যক্ষমতা নিয়মিত ব্যবহারের জন্য গুরুত্বপূর্ণ হয়।
সম্পাদনা তুলনা Redis (উৎস:google)
Redis ব্যবহার করার সময় সবচেয়ে বড় সুবিধাগুলির মধ্যে একটি হল বিশাল সম্প্রদায় এবং প্রযুক্তিগত সংস্থান যা আপনি অনলাইনে খুঁজে পেতে পারেন। এই সম্পদগুলির অনেকগুলি বিনামূল্যে, এবং এমন অনলাইন প্ল্যাটফর্ম রয়েছে যেখানে বিনামূল্যে স্তরের অফার রয়েছে৷
৷রেডিস তার অস্ত্রাগারে একটি ক্লাউড সমাধানও অন্তর্ভুক্ত করে। আপনি নিজে চেষ্টা করতে চাইলে, আপনি এখানে গিয়ে একটি বিনামূল্যে অ্যাকাউন্ট নিবন্ধন করতে পারেন বা তাদের প্রাথমিক কুপন অফার ব্যবহার করতে পারেন৷
Redis Enterprise Cloud সাইন আপ / সাইন ইন পৃষ্ঠা
পাব/সাব কি?
Redis-এ চ্যানেলগুলি প্রকাশ/সাবস্ক্রাইব করুন এমন একটি বৈশিষ্ট্য যা আমি উপরে উল্লেখ করিনি তবে এটি Redis-এর শেষ সংস্করণগুলিতে অন্তর্ভুক্ত। এটি তাদের পাব/সাব মেসেজিং প্যাটার্নের বাস্তবায়ন, যেখানে আমাদের প্রকাশক এবং গ্রাহকরা আছে যারা চ্যানেলের মাধ্যমে বার্তা বিনিময় করে।
আমরা নীচে সংক্ষিপ্তভাবে এটির মধ্য দিয়ে যাব এবং তারপরে আমি আপনার জন্য প্রস্তুত একটি ছোট ডেমো অ্যাপে এটি অনুশীলনে দেখব৷
কিভাবে রেডিস পাব/সাব কাজ করে?
আমাদের প্রকাশক (বার্তাগুলির প্রযোজক), চ্যানেলগুলি (যে বার্তাগুলি চলছে), এবং গ্রাহকরা (বার্তা গ্রহণকারী) রয়েছে৷ কে কি পাবে তা নির্ভর করে কে কোন চ্যানেলে সাবস্ক্রাইব করেছে তার উপর।
একটি উদাহরণে এটি কীভাবে কাজ করে তা দেখা যাক:
আমরা যদি তিনটি প্রকাশক তৈরি করে থাকি যা তিনটি ভিন্ন চ্যানেলে বার্তা প্রকাশ করবে। আসুন তাদের চ্যানেল 1, 2 এবং 3 বলি। আমাদের তিনটি সাবস্ক্রাইবার আছে, আসুন তাদের A, B এবং C সাবস্ক্রাইবার বলি।
এখন, কল্পনা করা যাক সাবস্ক্রাইবার A তিনটি চ্যানেলেই বার্তা শুনছে, অর্থাৎ এটি তাদের সাবস্ক্রাইব করেছে। এবং সাবস্ক্রাইবার B এবং C চ্যানেল 2 এবং 3-এ সাবস্ক্রাইব করা হয়েছে। এর মানে হল যে যখন তিনজন প্রকাশকের মধ্যে কেউ একটি বার্তা পাঠাবে, গ্রাহক A এটি গ্রহণ করবে। এবং গ্রাহকরা B এবং C শুধুমাত্র প্রকাশক 2 এবং 3 দ্বারা প্রেরিত বার্তাগুলি গ্রহণ করবে, কারণ তারা শুধুমাত্র এই চ্যানেলগুলির (2 এবং 3) বার্তাগুলি শুনছে৷
লক্ষ্য করুন যে একটি চ্যানেল ব্যবহার করে আমাদের দুটি সত্তা আছে - একটি পাঠাচ্ছে, অন্যটি গ্রহণ করছে - তবে তারা সম্পূর্ণ স্বাধীন। এবং বার্তা পাঠানো হচ্ছে স্থায়ী হয় না. প্রকাশক কর্তৃক পাঠানো হলে সেগুলো ভুলে যায়। পাঠানোর মুহুর্তে সাবস্ক্রাইব করা একমাত্র সত্তাই সেগুলি পাবে৷
৷কিভাবে Redis-এ pub/sub ব্যবহার করবেন
ক্লায়েন্ট লাইব্রেরির আধিক্য রয়েছে যা আপনি Redis এর সাথে ব্যবহার করতে পারেন। একটি উত্সর্গীকৃত পৃষ্ঠা রয়েছে যেখানে প্রত্যেকে যেতে পারে এবং নির্দিষ্ট প্রকল্পের প্রয়োজনের উপর নির্ভর করে বা আপনার পছন্দের প্রোগ্রামিং ভাষার উপর নির্ভর করে একটি বেছে নিতে পারে৷
Redis-এর লোকেরাও এই সংগ্রহস্থলগুলির মধ্যে কিছুকে প্রস্তাবিত হিসাবে চিহ্নিত করেছে৷ যা পছন্দকে সহজ করে তোলে, যদি আপনি এই সবের জন্য নতুন হন।
নীচে আমাদের ডেমোর জন্য, আমি ioredis ব্যবহার করেছি, Node.js-এর জন্য একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত Redis ক্লায়েন্ট। আমি এটি বেছে নিয়েছি কারণ ডেমো অ্যাপ UI রিঅ্যাক্ট এবং Node.js দিয়ে তৈরি করা হয়েছে এবং আমার সার্ভার কোড এটির সাথে বেশ ভালো যায়।
রেডিস পাব/সাব ডেমো
Redis Pub/Sub Visualizer অ্যাপ
সময় দেখান!
ডেমো অ্যাপ্লিকেশানের পিছনে ধারণা হল প্যাটার্নটি কীভাবে কাজ করে তা দৃশ্যত দেখানো।
আপনি যখন প্রথমবার এটি খুলবেন তখন আপনি যা দেখতে পাবেন তা হল তিনটি কাল্পনিক টিভি চ্যানেলে সহজ বার্তা (সংবাদ) প্রকাশ করার জন্য তিনটি বোতাম:আবহাওয়া, খেলাধুলা এবং সঙ্গীত৷
প্রকাশ বোতামের নীচের কার্ডগুলি হল গ্রাহক৷ একবার আপনি আপনার মাউস কার্সারকে তাদের যেকোনো একটির উপর নিয়ে গেলে, এটি তার পিছনের দিকে উল্টে যাবে এবং আপনি তিনটি বোতাম দেখতে পাবেন। আপনি প্রাসঙ্গিক চ্যানেলে সদস্যতা নিতে এই বোতামগুলির প্রতিটি ব্যবহার করতে পারেন৷
৷একবার একজন গ্রাহক একটি চ্যানেলে সাইন ইন করলে এবং আপনি এই চ্যানেলের আইকন বা প্রকাশ বাটনে ক্লিক করলে, আপনি কার্ডের সামনের দিকে একটি নমুনা সংবাদ দেখতে পাবেন।
বিভিন্ন প্রকাশক/সাবস্ক্রাইবার সমন্বয়ের সাথে খেলুন এবং ফলাফল দেখুন।
আমি আশা করি এটি আপনাকে উপরের উদাহরণে যা ব্যাখ্যা করেছি তা আরও ভালভাবে বুঝতে পারবে।
কীভাবে স্থানীয়ভাবে ডেমো অ্যাপ চালাবেন
স্থানীয়ভাবে ডেমো অ্যাপ্লিকেশন ইনস্টল এবং চালানোর জন্য, নীচের পদক্ষেপগুলি অনুসরণ করুন (সমস্ত কমান্ড রুট প্রকল্প ডিরেক্টরি থেকে চালানো বলে মনে করা হয়):
ফ্রন্টএন্ড চালান:
cd client yarn && yarn dev
ব্যাকএন্ড চালান:
cd server && yarn yarn start
এবং অবশেষে, এটি চালানোর জন্য আপনার স্থানীয় ডকার ইনস্টলেশন ব্যবহার করুন (যদি এটি না থাকে তবে আপনি এটি এখান থেকে পেতে পারেন):
docker run -p 6379:6379 redislabs/redismod:preview
এটি সম্ভবত স্থানীয়ভাবে রেডিসের একটি চলমান অনুলিপি রাখার সবচেয়ে সহজ উপায়। অন্য বিকল্পটি হ'ল সরাসরি রেডিস ক্লাউড ব্যবহার করা এবং অ্যাপ্লিকেশনটি অনলাইনে স্থাপন করা। এটি একটি বিকল্প যা আমি এখনও তদন্ত করছি এবং যদি আমি এটি পরিচালনা করতে পারি, আমি পুরো অ্যাপটি স্থাপন করব এবং আপনাকে জানাব৷
বন্ধ হচ্ছে
এই নিবন্ধটি আপনাকে পাব/সাব মেসেজিং প্যাটার্ন বিষয়ের সাথে পরিচয় করিয়ে দিয়েছে। এটা মনে রাখা গুরুত্বপূর্ণ যে যখনই আমরা একটি কম মিলিত আর্কিটেকচার এবং রিয়েল-টাইম যেমন মেসেজিং বৈশিষ্ট্যগুলির সাথে একটি উচ্চ কার্যকারিতাপূর্ণ অ্যাপ্লিকেশন তৈরি করতে চাই, বিশেষ করে প্রকাশ/সাবস্ক্রাইব প্যাটার্ন এবং রেডিস ব্যবহার করার কথা বিবেচনা করুন৷
প্রকৃতপক্ষে অনেকগুলি বাস্তব জীবনের অ্যাপ্লিকেশন যা রেডিস ব্যবহার করে তা ড্যাশবোর্ড-ভিত্তিক। এর মানে হল যে সাধারণত একটি সুন্দর ড্যাশবোর্ড স্ক্রীন থাকে, বিভিন্ন ডেটা দেখায়, প্রায়ই রিয়েল টাইমে আপডেট করা হয়৷
৷কল্পনা করুন, উদাহরণস্বরূপ, একটি নির্দিষ্ট এলাকায় ট্রাফিক দেখানো একটি সিস্টেম। এই ধরনের সফ্টওয়্যার পাব/সাবের সুবিধার জন্য একটি নিখুঁত প্রার্থী। এবং অনেক ক্ষেত্রে এটি Redis ব্যবহার করে অর্জন করা হয়।
যাই হোক না কেন, বিকাশকারী এবং প্রকৌশলী হিসাবে, আমরা যে প্রকল্পে কাজ করছি তার নির্দিষ্ট চাহিদাগুলির দ্বারা আমাদের সর্বদা নির্দেশিত হওয়া উচিত। যখনই আমরা একটি নতুন প্যাটার্ন বা প্রযুক্তি প্রবর্তন করার সিদ্ধান্ত নিয়েছি, তখন আমাদের এটিকে সতর্কতার সাথে করা উচিত এবং গুরুতর গবেষণার সাথে এটির ব্যাক আপ করা উচিত৷
বিনামূল্যে কোড শিখুন. freeCodeCamp-এর ওপেন সোর্স পাঠ্যক্রম 40,000-এরও বেশি লোককে ডেভেলপার হিসেবে চাকরি পেতে সাহায্য করেছে। শুরু করুন