Випуск Dendrite 0.1.0, комунікаційного сервера з реалізацією протоколу Matrix

Опубліковано випуск Matrix-сервера Dendrite 0.1.0, який ознаменував перехід розробки на стадію бета-тестування Dendrite розвивається основною командою розробників децентралізованої комунікаційної платформи Matrix та позиціонується як реалізація другого покоління серверних компонентів Matrix. На відміну від еталонного сервера Синапс, написаного мовою Python, код Dendrite розвивається мовою Go. Обидві офіційні продажі поширюються під ліцензією Apache 2.0. В рамках проекту рума окремо розвивається варіант сервера Matrix на мові Rust, який поширюється під ліцензією MIT.

Новий сервер націлений на досягнення високої ефективності, надійності та масштабованості. Dendrite випереджає Synapse за продуктивністю, вимагає для своєї роботи значно менше пам'яті і може масштабуватися через балансування навантаження на кілька вузлів. Архітектура Dendrite підтримує горизонтальне масштабування і ґрунтується на поділі обробників у формі мікросервісів, де кожен екземпляр мікросервісу має свої таблиці у БД. Диспетчеризацією звернення до мікросервісів займається балансувальник навантаження. Для розпаралелювання операцій у коді застосовуються потоки (go routines), що дозволяють використовувати ресурси всіх ядер CPU без поділу на окремі процеси.

Випуск Dendrite 0.1.0, комунікаційного сервера з реалізацією протоколу Matrix

Dendrite підтримує роботу у двох режимах – монолітному та багатокомпонентному (polylith). У монолітному режимі всі мікросервіси скомпоновані в одному виконуваному файлі, виконуються в одному процесі та взаємодіють між собою безпосередньо. У багатокомпонентному (кластерному) режимі мікросервіси можуть запускатися окремо, у тому числі з рознесенням по різних вузлах. Взаємодія компонентів у
багатокомпонентному режимі здійснюється за допомогою внутрішнього HTTP API та платформи Апач Кафка.

Розробка ведеться на основі специфікацій протоколу Matrix і з використанням двох тестових наборів - загальних із Synapse тестів sytest та нового набору Доповнення. На поточному етапі розвитку 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 або протоколу на базі КОАП+шум. Система формується як співдружність серверів, які можуть взаємодіяти між собою та об'єднуються у загальну децентралізовану мережу. Повідомлення реплікуються по всіх серверах, до яких підключено учасників обміну повідомленнями. Повідомлення розповсюджуються серверами за аналогією з тим, як комміти поширюються між Git-репозиторіями. У разі тимчасового вимкнення сервера повідомлення не втрачаються, а передаються користувачам після відновлення роботи сервера. Підтримуються різні варіанти ідентифікаторів користувача, включаючи email, номер телефону, обліковий запис Facebook і т.п.

У мережі немає єдиної точки відмови або контролю над повідомленнями. Усі сервери, які охоплює обговорення, є рівноправними між собою.
Будь-який користувач може запустити власний сервер та підключити його до спільної мережі. Можливе створення шлюзів для взаємодії Matrix із системами на базі інших протоколів, наприклад, підготовлено сервіси для двостороннього надсилання повідомлень в IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp та Slack. Крім миттєвого обміну текстовими повідомленнями та організації чатів, система може використовуватися для передачі файлів, надсилання повідомлень,
організації телеконференцій, здійснення голосових та відео дзвінків. Підтримуються також такі розширені можливості як сповіщення про набір тексту, оцінка присутності користувача в online, підтвердження прочитання, push-повідомлення, пошук на стороні сервера, синхронізація історії та стану клієнтів.

Джерело: opennet.ru

Додати коментар або відгук