Я разрабатываю чат-сервис с использованием RabbitMQ и WebSockets. Это моя архитектура:
Некоторые наблюдения:
- Я думаю, что основным недостатком этой архитектуры является каждый клиент WebSocket получает копию сообщения, доставленного клиентом A. Если клиент B не подключен к этому WebSocket, сообщение просто игнорируется.
- В Load Balancer B включен липкий сеанс, поэтому клиенты всегда будут повторно подключаться к одной и той же службе WebSocket.
- Количество экземпляров API чата не всегда такое же, как у служб WebSocket.
- Load Balancer реализован с использованием Nginx
- Chat API и служба WebSocket реализованы с использованием Nodejs
- Клиенты: Android, iOS или веб-приложения.
Ребята, есть ли у вас какие-нибудь советы, как это улучшить?