Я рассматриваю две альтернативы внутренней архитектуре чат-приложения:
- Server per room: where users connect to the same server, which forwards messages and other events directly. A database is used for persistence.
- Pros: messages delivered faster, more efficient, less servers involved
- Server per user: where each user connects to a server, which forwards messages and other events via a message broker (i.e. Redis) to other servers, which forward those events to users. Again, a database is used for persistence.
- Pros: simple architecture, users connect to a single server, more reliable
Примечание: термин «сервер» относится не к физической машине, а к конкретному адресу/порту.
Какие еще плюсы и минусы есть у каждой модели? Какую модель я бы использовал в каких ситуациях? Существуют ли какие-либо другие возможные серверные архитектуры?
В случае, если это уместно: приложение ориентировано на комнаты с двумя пользователями (т. е. прямой обмен сообщениями) с меньшим акцентом на группы или очень большие комнаты.
Если это не та сеть Stack Exchange, в которой можно задать вопрос, сообщите мне об этом, и я смогу перенести вопрос. Спасибо!