Channels Have One Home
Slack's real-time path has stateful channel servers, each owning a set of channels by consistent hash and holding recent history in memory (millions of channels per host at peak), and stateful gateway servers that hold the client websockets. Gateway servers are deployed in several geographic regions so clients connect nearby; channel servers are not replicated per region. Messages flow client, webapp, admin server, the owning channel server, then out to every subscribed gateway.
Why keep the websocket tier regional but the channel tier single-homed per channel?
Sign in to answer questions and track your progress
Sign In