Новий сервер націлений на досягнення високої ефективності, надійності та масштабованості. Dendrite випереджає Synapse за продуктивністю, вимагає для своєї роботи значно менше пам'яті і може масштабуватися через балансування навантаження на кілька вузлів. Архітектура Dendrite підтримує горизонтальне масштабування і ґрунтується на поділі обробників у формі мікросервісів, де кожен екземпляр мікросервісу має свої таблиці у БД. Диспетчеризацією звернення до мікросервісів займається балансувальник навантаження. Для розпаралелювання операцій у коді застосовуються потоки (go routines), що дозволяють використовувати ресурси всіх ядер CPU без поділу на окремі процеси.
Dendrite підтримує роботу у двох режимах – монолітному та багатокомпонентному (polylith). У монолітному режимі всі мікросервіси скомпоновані в одному виконуваному файлі, виконуються в одному процесі та взаємодіють між собою безпосередньо. У багатокомпонентному (кластерному) режимі мікросервіси можуть запускатися окремо, у тому числі з рознесенням по різних вузлах. Взаємодія компонентів у
багатокомпонентному режимі здійснюється за допомогою внутрішнього HTTP API та платформи
Розробка ведеться на основі специфікацій протоколу Matrix і з використанням двох тестових наборів - загальних із Synapse тестів
Стадія бета-тестування свідчить про готовність Dendrite для початкового впровадження та перехід до розробки з періодичним формуванням нових випусків. Між випусками тепер забезпечуватиметься оновлення схеми зберігання даних у БД (на відміну від установки зрізів з репозиторію, після оновлення вміст бази не втрачатиметься). Зміни, що порушують зворотну сумісність, що змінюють структуру БД або вимагають зміни конфігурації, будуть пропонуватися лише у значних випусках. Dendrite поки що рекомендується використовувати в монолітному режимі спільно з СУБД PostgreSQL для створення невеликих вихідних серверів (homeserver) та P2P-вузлів. Використання SQLite поки не рекомендується через невирішені проблеми з обробкою одночасних операцій.
З поки що не реалізованих в Dendrite можливостей відзначаються підтвердження отримання повідомлень, мітки прочитання, push-повідомлення, OpenID, прив'язка до email, пошук на стороні сервера, каталог користувачів, списки ігнорування користувачів, створення груп та спільнот, оцінка присутності користувача в online, гостьові входи, взаємодія із сторонніми мережами.
Доступні для використання базова функціональність для роботи чат-кімнат (створення, інвайти, правила аутентифікації), засоби федерації учасників у кімнатах, синхронізація подій після повернення з offline, облікові записи, профілі, індикація набору, завантаження та віддача файлів (Media API), редагування повідомлень, ACL, прив'язка тегів та робота зі списками пристроїв та ключів для наскрізного шифрування.
Нагадаємо, що платформа для організації децентралізованих комунікацій Matrix застосовує як транспорт HTTPS+JSON з можливістю використання WebSockets або протоколу на базі
У мережі немає єдиної точки відмови або контролю над повідомленнями. Усі сервери, які охоплює обговорення, є рівноправними між собою.
Будь-який користувач може запустити власний сервер та підключити його до спільної мережі. Можливе створення
організації телеконференцій, здійснення голосових та відео дзвінків. Підтримуються також такі розширені можливості як сповіщення про набір тексту, оцінка присутності користувача в online, підтвердження прочитання, push-повідомлення, пошук на стороні сервера, синхронізація історії та стану клієнтів.
Джерело: opennet.ru