আমার একটি নোটিফিকেশন সিস্টেম ম্যানেজার লিখতে হবে।
আমার প্রয়োজনীয়তা এখানে:
আমার বিভিন্ন প্ল্যাটফর্মগুলিতে একটি বিজ্ঞপ্তি পাঠাতে সক্ষম হতে হবে, যা সম্পূর্ণ আলাদা হতে পারে (উদাহরণস্বরূপ, আমাকে কোনও এসএমএস বা কোনও ইমেল প্রেরণে সক্ষম হতে হবে)।
কখনও কখনও প্রদত্ত প্ল্যাটফর্মের জন্য সমস্ত প্রাপকদের জন্য বিজ্ঞপ্তিটি একই হতে পারে তবে কখনও কখনও এটি প্রতি প্ল্যাটফর্মের জন্য প্রাপকদের (বা বেশ কয়েকটি) জন্য একটি বিজ্ঞপ্তি হতে পারে।
প্রতিটি বিজ্ঞপ্তিতে প্ল্যাটফর্ম নির্দিষ্ট পেড থাকতে পারে (উদাহরণস্বরূপ কোনও এমএমএসে একটি শব্দ বা একটি চিত্র থাকতে পারে)।
সিস্টেমটি স্কেলেবল হতে হবে , আমার অ্যাপ্লিকেশন বা সার্ভারকে ক্রাশ না করে প্রচুর পরিমাণে বিজ্ঞপ্তি পাঠাতে সক্ষম হতে হবে।
এটি একটি দুই ধাপের প্রক্রিয়া, প্রথমে কোনও গ্রাহক কোনও বার্তা টাইপ করতে পারে এবং প্রেরণের জন্য একটি প্ল্যাটফর্ম চয়ন করতে পারে এবং বিজ্ঞপ্তিটি গুলি বাস্তবসম্মত প্রক্রিয়া করার জন্য তৈরি করা উচিত হয় পরে হয়।
তারপরে সিস্টেমটিকে প্ল্যাটফর্ম সরবরাহকারীর কাছে বিজ্ঞপ্তি প্রেরণ করা দরকার।
আপাতত, যদিও আমি কিছুটা শেষ করেছি তবে আমি জানি না এটি কতটা স্কেলযোগ্য হবে বা এটি যদি একটি ভাল নকশা হয়।
আমি যদিও নিম্নলিখিত বিষয়গুলি (ছদ্ম ভাষায়) করেছি:
একটি জেনেরিক Notification
বস্তু:
class Notification {
String $message;
Payload $payload;
Collection<Recipient> $recipients;
}
নিম্নলিখিত বিষয়বস্তুগুলির সাথে সমস্যাটি কি আমি যদি 1.000.000 প্রাপকদের পেয়ে থাকি? এমনকি যদি Recipient
বস্তুটি খুব ছোট হয় তবে এটি খুব বেশি স্মৃতি গ্রহণ করবে।
আমি প্রাপক প্রতি একটি বিজ্ঞপ্তিও তৈরি করতে পারতাম, তবে কিছু প্ল্যাটফর্ম সরবরাহকারীদের এটি ব্যাচে প্রেরণ করা প্রয়োজন, যার অর্থ বেশ কয়েকটি প্রাপকদের সাথে আমার একটি বিজ্ঞপ্তি সংজ্ঞায়িত করা দরকার।
প্রতিটি তৈরি বিজ্ঞপ্তি ডিবি বা রেডিসের মতো অবিরাম স্টোরেজে সংরক্ষণ করা যেতে পারে।
এটি পরিমাপযোগ্য কিনা তা নিশ্চিত করার জন্য এটি পরে একত্রিত করা ভাল কি হবে?
দ্বিতীয় ধাপে, আমার এই বিজ্ঞপ্তিটি প্রক্রিয়া করা দরকার।
তবে আমি কীভাবে সঠিক প্ল্যাটফর্ম সরবরাহকারীটির বিজ্ঞপ্তিটি আলাদা করতে পারি?
আমি একটি MMSNotification
প্রসারিত করার মত একটি জিনিস ব্যবহার করা উচিত abstract Notification
? নাকি এরকম কিছু Notification.setType('MMS')
?
একই সাথে প্রচুর বিজ্ঞপ্তি প্রক্রিয়াকরণের অনুমতি দেওয়ার জন্য, আমি মনে করি রাব্বিটএমকিউয়ের মতো একটি মেসেজিং কাতার সিস্টেম সঠিক সরঞ্জাম হতে পারে। তাই কি?
এটি আমাকে প্রচুর নোটিফিকেশন সারি করার অনুমতি দেয় এবং বিজ্ঞপ্তিটি পপ করতে এবং তাদের প্রক্রিয়া করার জন্য বেশ কিছু কর্মী রাখে। তবে উপরের মত আমাকে প্রাপকদের ব্যাচ করার দরকার আছে কি?
তারপরে আমি এমন কোনও NotificationProcessor
বস্তুর কল্পনা করি যার জন্য আমি NotificationHandler
প্রতিটি যুক্ত করতে পারি NotificationHandler
প্ল্যাটফর্ম সরবরাহকারীর সাথে সংযোগ স্থাপন এবং বিজ্ঞপ্তি সম্পাদনের দায়িত্বে।
EventManager
প্লাগেবল আচরণের অনুমতি দেওয়ার জন্য আমি একটি ব্যবহার করতে পারি ।
কোন প্রতিক্রিয়া বা ধারণা?
আপনার সময় দেওয়ার জন্য ধন্যবাদ।
দ্রষ্টব্য: আমি পিএইচপি-তে কাজ করতে অভ্যস্ত এবং এটি সম্ভবত আমার পছন্দের ভাষা।
সম্পাদনা করুন (মরফুনিয়ালের উত্তর অনুসারে)
- আপনি প্রতি সেকেন্ডে কয়টি বার্তা প্রেরণ করছেন (বর্তমান / প্রাথমিক স্তরগুলি নির্ধারণ করুন, সিস্টেমটি পুনরায় নকশাকৃত হওয়ার আগে পরিচালনা করা উচিত এমন একটি সর্বাধিক স্তর নির্ধারণ করুন)
- সিস্টেমে কী হার্ডওয়্যার সীমাবদ্ধতা রয়েছে (সিস্টেমে মেমরি, সিপিইউ ইত্যাদি উপলব্ধ রয়েছে)
- কীভাবে হার্ডওয়্যার স্কেল হবে (যেমন, আরও সার্ভার যুক্ত করা, ক্লাউড কম্পিউটিং ইত্যাদি)
- কোন ভাষা / সিস্টেমগুলি বিজ্ঞপ্তি উত্পন্ন করবে?
এটি আমার নিজের, আমি প্রোগ্রামিকভাবে বিজ্ঞপ্তি তৈরি করার দায়িত্বে আছি তবে একটি ইউআই থেকে তৈরি করেছি।
- জেনারেটর কি বার্তাটির প্রাপকদের (?) জানে বা তারা অন্য কোনও উপায়ে সরবরাহ করেছে (যেমন, নির্দিষ্ট সতর্কতার ধরণের ব্যবসায়ের নিয়মগুলি নির্দিষ্ট প্রাপকদের কাছে যায়)
নির্দিষ্ট প্রাপকদের, প্রাপকদের একটি দল (উদাহরণস্বরূপ ট্যাগ সিস্টেম ব্যবহার করে) বা পুরো প্ল্যাটফর্মের জন্য একটি বিজ্ঞপ্তি তৈরি করা সম্ভব।
- সিসি / বিসিসি / পঠন রসিদ যুক্ত করার জন্য কি ব্যবসায়ের নিয়ম রয়েছে?
হ্যাঁ। মনে রাখবেন যে এটি সত্যই প্ল্যাটফর্ম নির্দিষ্ট এবং সমস্ত প্ল্যাটফর্মগুলিতে পঠন বা সিসি উপলভ্য নয়।
- জেনারেটর কী বার্তা প্রেরণ করছে (যেমন, এসএমএস / ইমেল) তা জানে বা এটি প্রাপকের ভিত্তিতে রয়েছে
এটি প্রাপকের উপর ভিত্তি করে তৈরি করা হয়েছে, যদিও গ্রহীতা প্ল্যাটফর্ম সম্পর্কিত, এবং প্ল্যাটফর্মগুলির ডেটা পরিচালনা করার বিভিন্ন উপায় রয়েছে, ইউআই সম্ভবত চিত্রগুলি, একটি শব্দ বা কিছু সেট আপ করার অনুমতি দেওয়ার জন্য প্ল্যাটফর্ম নির্দিষ্ট হতে পারে likely
- জেনারেটরের কি বার্তাগুলি প্রেরণ / প্রাপ্ত / পঠনের নিশ্চয়তা প্রয়োজন (অ্যাসিঙ্ক বনাম সিঙ্ক্রোনাস প্রেরণ)
ওয়েল সিস্টেমে ত্রুটি প্রবণ হওয়া উচিত তবে আমরা নিয়মের একটি সেট সংজ্ঞায়িত করতে ত্রুটিটি পরিচালনা করতে চাই, উদাহরণস্বরূপ, যদি সার্ভারটি অ্যাক্সেসযোগ্য না হয় তবে পরবর্তী প্রক্রিয়াটির জন্য বিজ্ঞপ্তিটি চাওয়া উচিত, তবে বিজ্ঞপ্তিটি যদি ভুল (বা হয়েছে) প্ল্যাটফর্ম সরবরাহকারীর হিসাবে সংজ্ঞায়িত) এটি প্রয়োজন হবে না তবে অবহিত করা উচিত।
- বার্তা উত্স / প্রাপকদের একটি ইতিহাস সংরক্ষণ করার প্রয়োজনীয়তা রয়েছে (কত দিন?)
হ্যাঁ, আমরা সম্ভবত কিছু পরিসংখ্যান তৈরি করতে এবং প্রতিবেদন করতে চাই। * বিজ্ঞপ্তি শেষ পয়েন্টগুলি সংজ্ঞায়িত করুন
বার্তা প্রেরণে কোন পরিষেবাগুলি ব্যবহার করা হচ্ছে? নির্ভর করে, কিছুগুলি ধ্রুপদী আরএসটি ওয়েব সার্ভিস, অন্যটি কিছু বিদেশী প্রোটোকল, এটি সরবরাহকারীর পক্ষে সত্য really
কি প্রতিক্রিয়া / নিশ্চিতকরণ সরবরাহ করা হয় (সিঙ্ক / async)
নির্ভর করে, কিছু সিঙ্ক্রোনাস এবং একটি ত্রুটির সাথে জবাব দেয় যখন কিছু অন্যকে ত্রুটিগুলি পরীক্ষা করার জন্য পরে টানতে হবে।
- এটি কি নতুন প্রান্ত-পয়েন্ট যুক্ত করার সম্ভাবনা রয়েছে [এমনকি তা হলেও, এটি কি বিমূর্ত করাও প্রয়োজন]
হ্যাঁ, আসলে, আমাদের অ্যাপ্লিকেশনটি বাড়ছে এবং আমরা সম্ভবত নতুন সরবরাহকারী যুক্ত করতে সক্ষম হতে চাই তবে এটি প্রতি বছর 1 বা 2 এর মতো অনুপাত something