

- Chat servers facilitate message sending/receiving.
- Presence servers manage online/offline status.
- API servers handle everything including user login, signup, change profile, etc.
- Notification servers send push notifications.
- Finally, the key-value store is used to store chat history. When an offline user comes online, she will see all her previous chat history.
Chat history data storage:
KV store
Key-value stores are adopted by other proven reliable chat applications. For example,
both Facebook messenger and Discord use key-value stores. Facebook messenger uses
HBase [4], and Discord uses Cassandra
Service Discovery
recommend the best chat server for a client based on the criteria like geographical location, server capacity, etc
ZooKeeper (Yahoo/Apache)
