Design (LLD) a real-time chat system with support for millions of concurrent users - Machine CodingSubhahu Jain·Jul 15, 2023·9 min readTable of contentsFeatures Required:Design Patterns Involved or Used:Code (Java)Issues in Above Design1️⃣ Real-Time Messaging Is Not Real-TimeCurrent FlowProblemsSolution2️⃣ ChatRoom Is Not Thread-Safe (Critical)Current StateConcurrency IssuesSolution3️⃣ Message Ordering Is Not GuaranteedProblemFailure CaseSolution4️⃣ PresenceManager Singleton Will Break at ScaleCurrentIssuesSolution5️⃣ Observer Pattern Is Blocking & UnsafeCurrentProblemsSolution6️⃣ ChatServer Is a Monolith BottleneckCurrentIssuesSolution7️⃣ LoadBalancer Logic Is IncorrectCurrentProblemsSolution8️⃣ Message History Is Unsafe & IncompleteCurrentIssuesSolution9️⃣ Private Messaging Is Not EnforcedCurrentSolution🔟 Publish-Subscribe Pattern Is Claimed, Not ImplementedRealitySolution1️⃣1️⃣ No Backpressure HandlingMissingSolution1️⃣2️⃣ No Offline Message HandlingMissingSolution1️⃣3️⃣ MVC Pattern Is Not Applicable Server-SideIssueSolution1️⃣4️⃣ No Idempotency or Retry SafetyProblemSolutionBeginner DevelopersGeneral ProgrammingPythonJavaScriptNode.js