выпуск Matrix-сервера , который ознаменовал переход разработки на стадию бета-тестирования. Dendrite развивается основной командой разработчиков децентрализованной коммуникационной платформы Matrix и позиционируется как реализация второго поколения серверных компонентов Matrix. В отличие от эталонного сервера , написанного на языке Python, код Dendrite на языке Go. Обе официальные реализации распространяются под лицензией Apache 2.0. В рамках проекта отдельно развивается вариант сервера Matrix на языке Rust, который nën licencën MIT.
Новый сервер нацелен на достижение высокой эффективности, надёжности и масштабируемости. Dendrite опережает Synapse по производительности, требует для своей работы существенно меньше памяти и может масштабироваться через балансировку нагрузки на несколько узлов. Архитектура Dendrite поддерживает горизонтальное масштабирование и основывается на разделении обработчиков в форме микросервисов, где каждый экземпляр микросервиса имеет свои таблицы в БД. Диспетчеризацией обращения к микросервисам занимается балансировщик нагрузки. Для распаралелливания операций в коде применяются потоки (go routines), позволяющие задействовать ресурсы всех ядер CPU без разделения на отдельные процессы.
Dendrite поддерживает работу в двух режимах — монолитном и многокомпонентном (polylith). В монолитном режиме все микросервисы скомпонованы в одном исполняемом файле, выполняются в одном процессе и взаимодействуют между собой напрямую. В многокомпонентном (кластерном) режиме микросервисы могут запускаться по-отдельности, в том числе с разнесением по разным узлам. Взаимодействие компонентов в
многокомпонентном режиме осуществляется при помощи внутреннего HTTP API и платформы .
Разработка ведётся на основе спецификаций протокола Matrix и с использованием двух тестовых наборов — общих с Synapse тестов и нового набора . На текущем этапе развития 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 или протокола на базе +. Sistemi formohet si një federatë serverësh, të cilët mund të ndërveprojnë me njëri-tjetrin dhe bashkohen në një rrjet të përbashkët të decentralizuar. Mesazhet replikohen në të gjitha serverët, me të cilët janë të lidhur pjesëmarrësit e shkëmbimit të mesazheve. Mesazhet shpërndahen midis serverëve në mënyrë të ngjashme me si përhapen commit-et midis depozitave Git. Në rast të një ndërprerjeje përkohësore të serverit, mesazhet nuk humbasin, por u dërgohen përdoruesve pas rifillimit të funksionimit të serverit. Mbështeten variante të ndryshme të identifikuesve të përdoruesit, përfshirë email, numrin e telefonit, llogarinë në Facebook etj.
Në rrjet nuk ka një pikë të vetme dështimi ose kontrolli mbi mesazhet. Të gjithë serverët që përfshijnë diskutimin janë të barabartë me njëri-tjetrin.
Çdo përdorues mund të fillojë serverin e tij dhe ta lidhë atë me rrjetin e përgjithshëm. Është e mundur krijimi i për ndërveprimin e Matrix me sistemet të bazuara në protokole të tjera, për shembull, shërbime për dërgimin dyanshëm të mesazheve në IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp dhe Slack. Përveç shkëmbimit të menjëhershëm të mesazheve tekstuale dhe organizimit të bisedave, sistemi mund të përdoret për dërgimin e skedarëve, dërgimin e njoftimeve,
organizatat e telekonferencave, realizimi i thirrjeve dhe videothirrjeve. Po ashtu mbështeten mundësi të avancuara si njoftimet për shkrimin e tekstit, vlerësimi i pranishmërisë së përdoruesit online, konfirmimi i leximit, njoftimet push, kërkimi në anën e serverit, dhe sinkronizimi i historisë dhe statusit të klientëve.
Burimi: opennet.ru
