Выпуск 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 і платформы Apache Kafka.

Распрацоўка вядзецца на аснове спецыфікацый пратаколу 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

Дадаць каментар