Выпуск Dendrite 0.1.0, коммуникационного сервера с реализацией протокола Matrix
11 октября 2020 года
Опубликован выпуск Matrix-сервера Dendrite 0.1.0, который ознаменовал переход разработки на стадию бета-тестирования. Dendrite развивается основной командой разработчиков децентрализованной коммуникационной платформы Matrix и позиционируется как реализация второго поколения серверных компонентов Matrix. В отличие от эталонного сервера Synapse, написанного на языке Python, код Dendrite развивается на языке Go. Обе официальные реализации распространяются под лицензией Apache 2.0. В рамках проекта Ruma (Архивная копия от 10 октября 2020 на Wayback Machine) отдельно развивается вариант сервера Matrix на языке Rust, который распространяется под лицензией MIT.
Новый сервер нацелен на достижение высокой эффективности, надёжности и масштабируемости. Dendrite опережает Synapse по производительности, требует для своей работы существенно меньше памяти и может масштабироваться через балансировку нагрузки на несколько узлов. Архитектура Dendrite поддерживает горизонтальное масштабирование и основывается на разделении обработчиков в форме микросервисов, где каждый экземпляр микросервиса имеет свои таблицы в БД. Диспетчеризацией обращения к микросервисам занимается балансировщик нагрузки. Для распаралелливания операций в коде применяются Go-сопрограммы, позволяющие задействовать ресурсы всех ядер CPU без разделения на отдельные процессы.
Dendrite поддерживает работу в двух режимах - монолитном и полилитном. В монолитном режиме все микросервисы скомпонованы в одном исполняемом файле, выполняются в одном процессе и взаимодействуют между собой напрямую. В полилитном (кластерном) режиме микросервисы могут запускаться по-отдельности, в том числе с разнесением по разным узлам. Взаимодействие компонентов в полилитном режиме осуществляется при помощи внутреннего HTTP APIApache Kafka и платформы Apache Kafka.
Разработка ведётся на основе спецификаций протокола Matrix и с использованием двух тестовых наборов - общих с Synapse тестов sytest и нового набора complement. На текущем этапе развития в Dendrite успешно проходит 56% тестов Client-Server API и 77% тестов Federation API, при этом фактический охват функциональности оценивается в 70% для Client-Server API и 95% для Federation API.
Переход на стадию бета-тестирования свидетельствует о готовности Dendrite для начального внедрения и переходе к разработке с периодическим формированием новых выпусков. Между выпусками будет обеспечиваться возможность обновления схемы хранения данных в БД (в отличие от установки срезов из репозитория, после обновления содержимое базы теряться не будет). Изменения, нарушающие обратную совместимость, меняющие структуру БД или требующие правки конфигурации, будут предлагаться только в значительных выпусках. Dendrite пока рекомендуется использовать в монолитном режиме совместно с СУБД PostgreSQL для создания небольших исходных серверов (homeserver) и P2P-узлов. Использование SQLite пока не рекомендуется из-за нерешённых пробоем с обработкой одновременных операций.
Из пока не реализованных в Dendrite возможностей отмечаются подтверждения получения сообщений, метки о прочтении, push-уведомления, OpenID, привязка к email, поиск на стороне сервера, каталог пользователей, списки игнорирования пользователей, создание групп и сообществ, оценка присутствия пользователя в online, гостевые входы, взаимодействие со сторонними сетями Доступны для использования базовая функциональность для работы чат-комнат (создание, инвайты, правила аутентификации), средства федерации участников в комнатах, синхронизация событий после возвращения из offline, учётные записи, профили, индикация набора, загрузка и отдача файлов (Media API), редактирование сообщений, ACL, привязка тегов и работа со списками устройств и ключей для сквозного шифрования.
Напомним, что платформа для организации децентрализованных коммуникаций Matrix применяет в качестве транспорта HTTPS+JSON с возможностью использования WebSockets или протокола на базе CoAP+Noise. Система формируется как содружество серверов, которые могут взаимодействовать между собой и объединяются в общую децентрализованную сеть. Сообщения реплицируются по всем серверам, к которым подключены участники обмена сообщениями. Сообщения распространяются по серверам по аналогии с тем, как коммиты распространяются между Git-репозиториями. В случае временного отключения сервера сообщения не теряются, а передаются пользователям после возобновления работы сервера. Поддерживаются различные варианты идентификаторов пользователя, включая email, номер телефона, учётную запись в Facebook и т.п.
В сети отсутствует единая точка отказа или контроля за сообщениями. Все серверы, которые охватывает обсуждение, равноправны между собой.Любой пользователь может запустить собственный сервер и подключить его к общей сети. Возможно создание шлюзов (Архивная копия от 6 октября 2020 на Wayback Machine) для взаимодействия Matrix с системами на базе других протоколов, например, подготовлены сервисы для двусторонней отправки сообщений в IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp и Slack. Помимо мгновенного обмена текстовыми сообщениями и организации чатов, система может использоваться для передачи файлов, отправки уведомлений, организации телеконференций, совершения голосовых и видео звонков. Поддерживаются также такие расширенные возможности как уведомление о наборе текста, оценка присутствия пользователя в online, подтверждение прочтения, push-уведомления, поиск на стороне сервера, синхронизация истории и состояния клиентов.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.