Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Для работы сообщений в Elph на сервере должен быть развёрнут ecss-chat-server.

Чат-сервер предоставляет удобное и безопасное решение для обмена сообщениями в режиме реального времени. Он обладает широким функционалом, позволяющим пользователям войти в систему, создавать и управлять комнатами, отправлять сообщения и многое другое.

Функционал чат-сервера:

  • Пользователи могут создавать комнаты для группового общения или присоединяться к уже существующим комнатам. Чат-сервер обеспечивает возможность управления комнатами, включая изменение названия, добавление и удаление пользователей, назначение ролей, таких как: владелец, администратор и обычный пользователь.
  • Пользователи могут отправлять текстовые и голосовые сообщения в комнатах чата. Чат-сервер принимает эти сообщения и передает их всем пользователям, находящимся в той же комнате.
  • Чат-сервер сохраняет историю всех сообщений, отправленных в каждой комнате. Это позволяет пользователям просматривать предыдущие сообщения, которые они могут пропустить или не видеть из-за отсутствия в чате.
  • Предусмотрена возможность удаления сообщений для всех пользователей и чат-комнат для привилегированных пользователей.
  • Чат-сервер обеспечивает доставку push-уведомлений на устройства, что позволяет информировать пользователя о новых сообщениях и изменениях в чатах.
  • Реализованы ответы на сообщения и возможность переслать сообщения в другой чат.
  • Возможность отправки изображений, аудио, видео и других файлов.
  • Чат с поддержкой всегда поможет при возникновении проблем. Также в этом чате можно отправить логи для подробного изучения возникшей проблемы и последующего ее решения.

На рисунке ниже представлена упрощённая схема интеграции Elph и ECSS-10.

Упрощённая схема интеграции Elph и ECSS-10

Системные требования

Протестированные ОС и платформы:

  • Ubuntu linux 18 и выше
  • Astra Linux 1.7.0

Аппаратные требования:

  • ОЗУ: 4 ГБ
  • ПЗУ: 10 ГБ (2,5 ГБ будет занято приложением + ОС, остальное для базы данных)
  • CPU: 3 ядра 2.5 ГГц и выше (количество ядер имеет низкое значение)

При таких характеристиках обеспечивается нагрузочная способность около 1000 пользователей (c учётом того, что каждый пользователь даёт двойную нагрузку на сервер, так как пользуется чатом одновременно с мобильного и настольного приложений).

Системные требования для разного количества пользователей:

Количество пользователейЦПОЗУСеть
10003 ядра 2.5 ГГц4 ГБ10Мбит\с
20006 ядер 3 ГГц8 ГБ20Мбит\с
400012 ядер  3ГГц16 ГБ40Мбит\с


 Пример расчёта нагрузочной способности чат-сервера

В нагрузочном тесте чат-сервер достиг скорости до 50 сообщений/с (транзакций/с):

450 пользователей отправили 450 сообщений/с, все сообщения были доставлены (вставали в очередь), поэтому стоит вопрос расчета максимальной пропускной способности чата на подобном (описанном выше) стенде.

Если считать по статистике ВК (48 млн активных авторов 15 млрд сообщений в сутки) — 15000000000 / 48000000 / 8 / 60 / 60 = 0.01085069444 сообщений/с  (8, а не 24 в данном случае, так как это корпоративный чат, и за основу взят 8-часовой рабочий день, поэтому берётся дневная скорость ВК для расчета 8-часовой скорости чат-сервера ECSS).

0.01085069444 * 2 = 0.00723379628  (заложен двухкратный рост)

50 / 0.00723379628 = 4608 активно пишуших в чат (со скоростью 0.01085069444 сообщений/с) человек, но так как тест не учитывал Websocket подключения, по которым передаются объемные данные, то выходные данные мы делим примерно на 2 и получаем около 2000 пользователей.

НО это без учета того, сколько пользователей может быть просто подключены к чату по WS, если все 2000 одновременно подключатся к одной комнате (например, общий чат) и небольшая их часть будет писать сообщения, то могут быть некоторые проблемы с производительностью.

Учитывая что Elph Desktop держит постоянное подключение к чат серверу, плюс у пользователя может быть мобильное устройство с Elph iOS/Adnroid (то есть один пользователь может генерировать двойную нагрузку), то опять условно делим на 2 с учётом WS и больших комнат.

На «плавающих» Elph iOS/Adnroid условно отдаём 15% времени онлайна (то есть когда 1 пользователь считается за 2) 1152 * 0.15 = 172

Итого: предположительно 980 человек смогут без проблем с производительностью пользоваться чатом весь рабочий день.

Масштабирование:

Введение отказоустойчивости (2 или 3 ноды чата и кластер базы данных) увеличит системные требования в 3 раза без сопоставимого прироста производительности, однако дополнение этого кластера новыми узлами будет ее увеличивать.




  • Нет меток