🎯 Key Takeaways for quick navigation: 00:00 📢 Notification service sends crucial messages to users. 01:21 🌐 Notification service requires support for multiple channels and third-party integrations. 02:02 📄 Templated notifications need separate management to avoid code changes. 02:58 👤 Users should control notification preferences with granularity. 04:07 ⚡ High throughput and low latency are essential for scaling notifications. 05:03 🚀 Design for horizontal scalability and high availability in a cloud environment. 06:10 📨 A scalable notification system includes an API, message broker, and workers. 08:41 🔀 Notification batching and validation processes enhance efficiency. 09:53 ✅ Validate user existence before processing notifications. 10:51 ⏳ Batching notifications and managing preferences are important steps. 13:24 🚚 Delivery workers route notifications to appropriate providers. 14:48 📌 Rate limiters manage provider API requests for controlled delivery. 15:43 📊 Log aggregation and storage track notification status and events. 16:38 🌐 Design a scalable notification system with HTTP requests and providers.
good explanation 🔥❤... Query -> i understand it by a single user approach example. For a celebrity user who has millions of followers, will the flow be the same or be the different?
Depending on the scale of such follower based systems, the typical direct fanout approach may not scale. Several optimizations will have to be adopted. Architecting such systems is based on "partitioning, or segmenting or sharding". It's a broad topic for another video.
Consider a scenario where a user checks its notification section, so from which data source,we will show the notification list as per the above design?
If message brokers are used for decoupling services, we can make of the ACK/NACK mechanism. If a particular step failed, the broker wouldn't get the ACK and thus the job will be re-tried.
Thank you for answer. What is the consumer reads data from queue then publish it to client socket(JS) how to be ensure that messages was sending to client and not was lost somewhere in network. In last case I need resend message. I thought about ACK from client side, but it is long process.