Dendrite е комуникационен сървър това е битие разработена от екипа на Matrix и се позиционира като изпълнение на второто поколение сървърни компоненти на Matrix.
За разлика от референтния сървър на Synapse, написан на Python, кодът Dendrite е разработен в Go. И двете официални внедрения се разпространяват под лиценза Apache 2.0.
Като част от проекта Ruma се разработва отделна версия на сървъра Matrix на езика Rust, който се разпространява под лиценза MIT.
Новият сървър има за цел да постигне висока ефективност, надеждност и мащабируемост.
Относно дендрит
Дендрит изпреварва Synapse по отношение на производителността, изисква много по-малко памет за работа и може да се мащабира чрез балансиране на натоварването в множество възли.
Дендрит архитектура поддържа хоризонтално мащабиране и се основава на разделянето на контролерите под формата на микроуслуги, където всеки екземпляр на микроуслуга има свои собствени таблици в базата данни.
Балансиращият товар е отговорен за изпращане на обаждания до микроуслуги. Нишките (go подпрограми) се използват за паралелизиране на операциите в кода, които позволяват да се използват ресурсите на всички CPU ядра, без да се разделят на отделни процеси.
Дендрит поддържа работа в два режима: монолитен и многокомпонентен (полилит).
- В монолитен режим, Всички микроуслуги са свързани в изпълним файл, изпълняват се в процес и взаимодействат директно помежду си.
- В многокомпонентен режим (клъстер), микроуслугите могат да се стартират отделно, дори с разнообразие на различни възли. Взаимодействието на компонентите в многокомпонентен режим се осъществява с помощта на вътрешния HTTP API и платформата Apache Kafka.
Разработването се извършва въз основа на спецификациите на протокола Matrix и с помощта на два комплекта тестове: общите тестове за sytest със Synapse и новия пакет Complement.
На настоящия етап от разработката Dendrite успешно преминава 56% от тестовете на API на клиент-сървър и 77% от тестовете за API на федерацията, докато действителното покритие на функционалността се оценява на 70% за API на клиент-сървър и 95% за API за федерация.
Бета етапът показва, че Dendrite е готов за първоначално внедряване и преминаването към разработка с редовни нови версии. Между изданията схемата за съхранение на базата данни ще бъде актуализирана (за разлика от инсталирането на парчета от хранилището, след актуализацията съдържанието на базата данни няма да бъде загубено).

Промени, които нарушават обратната съвместимост, променят структурата на базата данни или изискват промени в конфигурацията, ще се предлагат само в основни версии.
За момента, препоръчително е да използвате Dendrite в монолитен режим заедно със СУБД PostgreSQL за създаване на малки домашни сървъри и P2P възли. Все още не се препоръчва използването на SQLite поради неразрешени проблеми при работа с едновременни операции.
Функции, които все още не са внедрени в дендрит Те включват: потвърждения на съобщения, отметки, push известия, OpenID, имейл връзка, търсене от страна на сървъра, потребителска директория, списъци с игнорирани потребители, създаване на групи и общности, оценка на онлайн присъствието на потребител, въвеждане на гост, взаимодействие с мрежи на трети страни.
Основна функционалност за работа на чат стаи (създаване, покани, правила за удостоверяване), средства за обединяване на участници в стаи, синхронизиране на събития след връщане от офлайн, акаунти, профили, индикация за набиране, изтегляне и качване на файлове за редактиране (Media API) са на разположение за използване на съобщения, ACL, етикети и устройства за шифроване от край до край и списъци с ключове.
Спомнете си, че платформата за организиране на децентрализирани комуникации Matrix използва HTTPS + JSON като транспорт с възможност за използване на WebSockets или протокол, базиран на CoAP + Noise. Системата е оформена като общност от сървъри, които могат да взаимодействат помежду си и са комбинирани в обща децентрализирана мрежа.
Съобщенията се репликират на всички сървъри към която са свързани участниците в съобщенията. Съобщенията се разпространяват между сървърите по начин, подобен на начина, по който се разпространяват комитите между Git хранилищата.
Fuente: https://matrix.org