Designing a Scalable Enterprise Notification Service: Architecture & Best Practices
This article outlines the goals, evolutionary stages, functional and non‑functional requirements, and detailed component design of a unified enterprise notification system that supports multiple channels, high performance, scalability, and seamless integration for modern distributed applications.
Architecture Goals
Build a unified enterprise push service that supports multi‑channel delivery, integrating email, SMS, chat (WeChat/QQ), DingTalk, Enterprise WeChat, and other public social apps, both for in‑app and out‑of‑app notifications.
Push Capability Evolution
1. Modular Stage
Early systems each had their own isolated push modules (chat, SMS, email, WebSocket), leading to fragmented implementations and inconsistent quality.
2. Framework Stage
A unified push framework was introduced as a set of Spring Boot starters (chat, SMS, email, WebSocket) to reduce duplication and centralize configuration.
3. Service Stage
The framework evolved into a full push service addressing high data volume and concurrency, requiring significant hardware and operational investment, thus justifying a dedicated team for maintenance and cost reduction.
Position of the Push Service in Business Systems
Business applications consist of an access layer (API gateway), an aggregation layer, and atomic services that provide reusable capabilities such as comments, file storage, data storage, push service, and authentication.
Push Service Functional Requirements
Send notifications
Prioritize notifications
Deliver based on user preferences
Support single and batch messages
Provide analytics use cases
Generate notification reports
Push Service Non‑Functional Requirements (NFR)
High performance: QPS > 10,000
High availability: 99.99%
Low latency: TP99 < 10 ms
Scalable plug‑in design for adapters and providers
Cross‑platform support (Android/iOS/Web)
Auto‑scaling on private or public clouds (VMware Tanzu, AWS, GCP, Azure)
Push System Design Architecture
Notification Client
Clients call APIs to send single or batch messages to the simple or batch notification services.
Notification Service
Exposes REST APIs, builds messages via the template service, validates them, persists to a database, and provides CRUD and replay capabilities, along with a web dashboard for filtering.
Template Service
Manages templates for OTP, SMS, email, chat, and other push notifications, offering REST APIs and a UI dashboard.
Message Dispatch Service
Scheduling service for immediate or timed delivery (seconds, minutes, hourly, daily, weekly, monthly, yearly, custom).
Priority Queue Service
Handles high, medium, and low priority queues, ensuring urgent messages are sent first.
Outbound Processor
Polls the priority queues, processes messages based on priority, and forwards them to appropriate adapters.
Notification Adapters
QQ, WeChat, in‑app, email, SMS, OTP adapters.
Channel Providers
External SaaS providers such as AWS SNS, MailChimp, etc.
User Selection Service
Selects target users or application modules, integrating with AD/IAM directories.
User Profile Service
Manages user profiles, identifiers, and preferences, supporting unsubscribe and frequency controls.
Analytics Service
Analyzes notification usage, trends, and generates reports from Cassandra and notification databases.
Notification Tracker
Monitors the event queue, capturing metadata like transmission time, status, channel, and type.
Notification Database (MySQL Cluster)
Stores all notification records with a leader‑follower architecture optimized for write‑heavy workloads, ensuring high availability and low latency.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Backend Technology
Focus on Java-related technologies: SSM, Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading. Occasionally cover DevOps tools like Jenkins, Nexus, Docker, and ELK. Also share technical insights from time to time, committed to Java full-stack development!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
