Bird
Raised Fist0
HLDsystem_design~12 mins

One-to-one messaging in HLD - Architecture Diagram

Choose your learning style9 modes available
System Overview - One-to-one messaging

This system enables two users to send messages directly to each other in real time. It must ensure message delivery, ordering, and persistence while handling many users concurrently.

Architecture Diagram
User A  User B
  |       |
  v       v
+-----------------+
|   Load Balancer  |
+-----------------+
         |
         v
+-----------------+
|   API Gateway   |
+-----------------+
         |
         v
+-----------------+      +-------------+
| Messaging Service|<----| Message DB  |
+-----------------+      +-------------+
         |
         v
+-----------------+
|   Cache Layer   |
+-----------------+
Components
User A
user
Sends and receives messages
User B
user
Sends and receives messages
Load Balancer
load_balancer
Distributes incoming user connections evenly to API Gateway instances
API Gateway
api_gateway
Handles client requests, authentication, and routes to Messaging Service
Messaging Service
service
Processes messages, ensures delivery, ordering, and stores messages
Message DB
database
Stores message history persistently
Cache Layer
cache
Caches recent messages for fast retrieval
Request Flow - 10 Hops
User ALoad Balancer
Load BalancerAPI Gateway
API GatewayMessaging Service
Messaging ServiceCache Layer
Messaging ServiceMessage DB
Messaging ServiceCache Layer
Messaging ServiceAPI Gateway
API GatewayLoad Balancer
Load BalancerUser A
Messaging ServiceUser B
Failure Scenario
Component Fails:Message DB
Impact:New messages cannot be stored persistently; message history retrieval fails. Recent messages may still be served from cache.
Mitigation:Use database replication and failover to a standby DB; cache serves recent messages temporarily; alert system triggers for manual intervention.
Architecture Quiz - 3 Questions
Test your understanding
Which component is responsible for distributing incoming user connections?
ALoad Balancer
BAPI Gateway
CMessaging Service
DCache Layer
Design Principle
This design uses a layered approach with load balancing, API gateway for routing and authentication, a dedicated messaging service for business logic, caching for performance, and a persistent database for durability. It ensures scalability, fault tolerance, and low latency for one-to-one messaging.