Пускане на Dendrite 0.1.0, комуникационен сървър с реализация на протокола Matrix

Публикувано издаване на Matrix-сервер Dendrite 0.1.0, който отбеляза прехода на разработката към етапа на бета-тестиране. Dendrite се развива от основния екип разработчици на децентрализирана комуникационна платформа Matrix и се позиционира като реализация на второ поколение сървърни компоненти на Matrix. В различие от еталонния сървър Synapse, написан на Python, кодът на Dendrite развива е написан на Go. И двете официални реализации се разпространяват под лицензия Apache 2.0. В рамките на проекта Ruma отделно се развива вариант на Matrix-сървера на Rust, който разпространява под лиценз MIT.

Новият сървър е насочен към постигане на висока ефективност, надеждност и мащабируемост. Dendrite надминава Synapse по производителност, изисква значително по-малко памет за работа и може да се мащабира чрез натоварващо балансиране на няколко възела. Архитектурата на Dendrite поддържа хоризонтално мащабиране и е базирана на разделяне на обработчиците в микросервизи, при които всеки екземпляр на микросервиз има свои таблици в базата данни. Управлението на достъпа до микросервизите се осъществява от балансировчик на натоварването. За паралелизиране на операциите в кода се използват потоци (go routines), позволяващи да се използват ресурсите на всички ядра на CPU без да се разделят на отделни процеси.

Пускане на Dendrite 0.1.0, комуникационен сървър с реализация на протокола Matrix

Dendrite поддържа работа в два режима — монолитен и многокомпонентен (polylith). В монолитен режим всички микросервизи са комбинирани в един изпълняем файл, изпълняват се в един процес и взаимодействат помежду си директно. В многокомпонентния (клъстерен) режим микросервизите могат да се стартират поотделно, включително с разпределение на различни възли. Взаимодействието на компонентите в
многокомпонентния режим се осъществява чрез вътрешно HTTP API и платформата 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, привързване към имейл, търсене на страната на сървъра, потребителски каталог, списъци за игнориране на потребители, създаване на групи и общности, оценка на присъствието на потребителя онлайн, гостуващи входове, взаимодействие с външни мрежи.

Налична е основна функционалност за работа с чат стаи (създаване, инвайти, правила за автентификация), средства за федерация на участниците в стаите, синхронизиране на събития след връщане от офлайн, потребителски акаунти, профили, индикация за набор, качване и споделяне на файлове (Media API), редактиране на съобщения, ACL, свързване на етикети и работа със списъци на устройства и ключове за крайно криптиране.

Напомняме, че платформата за организиране на децентрализирани комуникации Matrix използва като транспорт HTTPS+JSON с възможност за използване на WebSockets или протокол на базата на CoAP+Noise. Системата се формира като съюз от сървъри, които могат да взаимодействат помежду си и се обединяват в обща децентрализирана мрежа. Съобщенията се репликират на всички сървъри, към които са свързани участниците в обмена на съобщения. Съобщенията се разпространяват между сървърите аналогично на начина, по който се разпространяват комитите между Git хранилищата. В случай на временно спиране на сървър, съобщенията не се губят, а се предават на потребителите след възобновяване на работата на сървъра. Поддържат се различни варианти на потребителски идентификатори, включително имейл, телефонен номер, Facebook акаунт и др.

В мрежата няма единна точка на отказ или контрол над съобщенията. Всички сървъри, обхванати от обсъждането, са равноправни помежду си.
Всеки потребител може да стартира собствен сървър и да го свърже с общата мрежа. Възможно е създаването на гейтове за взаимодействие на Matrix с системи, базирани на други протоколи, например, са подготвени услуги за двустранно изпращане на съобщения в IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp и Slack. Освен мигновен обмен на текстови съобщения и организиране на чатове, системата може да се използва за предаване на файлове, изпращане на известия,
организиране на телеконференции, извършване на гласови и видео повиквания. Поддържат се също така разширени възможности като известия за въвеждане на текст, оценка на присъствието на потребителя онлайн, потвърждение на прочит, push известия, търсене на сървъра, синхронизация на историята и състоянието на клиентите.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster