Для работы сообщений в Elph на сервере должен быть развёрнут ecss-chat-server.
Чат-сервер предоставляет удобное и безопасное решение для обмена сообщениями в режиме реального времени. Он обладает широким функционалом, позволяющим пользователям войти в систему, создавать и управлять комнатами, отправлять сообщения и многое другое.
Функционал чат-сервера:
На рисунке ниже представлена упрощённая схема интеграции Elph и ECSS-10.
Упрощённая схема интеграции Elph и ECSS-10
Протестированные ОС и платформы:
Аппаратные требования:
При таких характеристиках обеспечивается нагрузочная способность около 1000 пользователей (c учётом того, что каждый пользователь даёт двойную нагрузку на сервер, так как пользуется чатом одновременно с мобильного и настольного приложений).
Количество пользователей | ЦП | ОЗУ | Сеть |
---|---|---|---|
1000 | 3 ядра 2.5 ГГц | 4 ГБ | 10Мбит\с |
2000 | 6 ядер 3 ГГц | 8 ГБ | 20Мбит\с |
4000 | 12 ядер 3ГГц | 16 ГБ | 40Мбит\с |
В нагрузочном тесте чат-сервер достиг скорости до 50 сообщений/с (транзакций/с): 450 пользователей отправили 450 сообщений/с, все сообщения были доставлены (вставали в очередь), поэтому стоит вопрос расчета максимальной пропускной способности чата на подобном (описанном выше) стенде. Если считать по статистике ВК (48 млн активных авторов 15 млрд сообщений в сутки) — 15000000000 / 48000000 / 8 / 60 / 60 = 0.01085069444 сообщений/с (8, а не 24 в данном случае, так как это корпоративный чат, и за основу взят 8-часовой рабочий день, поэтому берётся дневная скорость ВК для расчета 8-часовой скорости чат-сервера ECSS). НО это без учета того, сколько пользователей может быть просто подключены к чату по WS, если все 2000 одновременно подключатся к одной комнате (например, общий чат) и небольшая их часть будет писать сообщения, то могут быть некоторые проблемы с производительностью. Учитывая что Elph Desktop держит постоянное подключение к чат серверу, плюс у пользователя может быть мобильное устройство с Elph iOS/Adnroid (то есть один пользователь может генерировать двойную нагрузку), то опять условно делим на 2 с учётом WS и больших комнат. |
Масштабирование:
Введение отказоустойчивости (2 или 3 ноды чата и кластер базы данных) увеличит системные требования в 3 раза без сопоставимого прироста производительности, однако дополнение этого кластера новыми узлами будет ее увеличивать.