Новы сервер накіраваны на дасягненне высокай эфектыўнасці, надзейнасці і маштабаванасці. 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