wydanie serwera Matrix , które oznacza przejście rozwoju w etap testów beta. Dendrite jest rozwijany przez główny zespół programistów zdecentralizowanej platformy komunikacyjnej Matrix i jest pozycjonowany jako implementacja drugiej generacji komponentów serwerowych Matrix. W przeciwieństwie do referencyjnego serwera , napisanego w języku Python, kod Dendrite jest napisany w języku Go. Obie oficjalne implementacje są udostępniane na licencji Apache 2.0. W ramach projektu oddzielnie rozwija swoją wersję serwera Matrix w języku Rust, która na licencji MIT.
Nowy serwer ma na celu osiągnięcie wysokiej wydajności, niezawodności i skalowalności. Dendrite przewyższa Synapse pod względem wydajności, wymaga znacznie mniej pamięci i może skalować się poprzez balansowanie obciążenia na kilka węzłów. Architektura Dendrite wspiera poziome skalowanie i opiera się na podziale przetworników w formie mikroserwisów, gdzie każdy egzemplarz mikroserwisu ma swoje tabele w bazie danych. Zarządzaniem dostępem do mikroserwisów zajmuje się balansujący obciążenie.
Dendrite wspiera pracę w dwóch trybach — monolitycznym i wielokomponentowym (polilitem). W trybie monolitycznym wszystkie mikroserwisy są skompilowane w jednym pliku wykonawczym, działają w jednym procesie i komunikują się bezpośrednio. W trybie wielokomponentowym (klastrowym) mikroserwisy mogą działać oddzielnie, w tym z rozdzieleniem na różne węzły. Interakcja komponentów w
trybie wielokomponentowym odbywa się za pomocą wewnętrznego API HTTP i platformy .
Rozwój opiera się na specyfikacjach protokołu Matrix i z wykorzystaniem dwóch zestawów testowych — wspólnych z testami Synapse i nowego zestawu . Na bieżącym etapie rozwoju Dendrite pomyślnie przechodzi 56% testów Client-Server API oraz 77% testów Federation API, przy czym rzeczywisty zasięg funkcjonalności szacuje się na 70% dla Client-Server API i 95% dla Federation API.
Faza beta testowania wskazuje na gotowość Dendrite do wstępnej implementacji i przejścia do rozwoju z okresowym wydawaniem nowych wersji. Pomiędzy wydaniami teraz będzie zapewniana aktualizacja schematu przechowywania danych w bazie danych (w przeciwieństwie do instalacji z zamrożonych wersji repozytorium, po aktualizacji zawartość bazy danych nie zostanie utracona). Zmiany, które naruszają zgodność wsteczną, zmieniają strukturę bazy danych lub wymagają edycji konfiguracji, będą proponowane tylko w istotnych wydaniach. Dendrite na razie rekomenduje się do użycia w trybie monolitycznym w połączeniu z bazą danych PostgreSQL do tworzenia małych serwerów źródłowych (homeserver) i węzłów P2P. Użycie SQLite na razie nie jest zalecane z powodu nierozwiązanych problemów z obsługą równoczesnych operacji.
Wśród funkcji, które jeszcze nie zostały zaimplementowane w Dendrite, wyróżniają się potwierdzenia odbioru wiadomości, wskaźniki przeczytania, powiadomienia push, OpenID, powiązanie z email, serwerowe wyszukiwanie, katalog użytkowników, listy ignorowanych użytkowników, tworzenie grup i społeczności, ocena obecności użytkownika online, gościnne logowanie oraz interakcja z zewnętrznymi sieciami.
Dostępne do użycia podstawowe funkcje obsługi pokoi czatowych (tworzenie, zaproszenia, zasady uwierzytelniania), środki federacji uczestników w pokojach, synchronizacja zdarzeń po powrocie z offline, konta, profile, wskaźnik pisania, przesyłanie i odbieranie plików (Media API), edytowanie wiadomości, ACL, przypisywanie tagów oraz zarządzanie listami urządzeń i kluczy dla end-to-end encryption.
Przypomnijmy, że platforma do organizacji zdecentralizowanej komunikacji Matrix stosuje jako transport HTTPS+JSON z możliwością korzystania z WebSockets lub protokołu opartego na +. System formuje się jako wspólnota serwerów, które mogą ze sobą współdziałać i łączą się w ogólną zdecentralizowaną sieć. Wiadomości są replikowane na wszystkich serwerach, do których podłączeni są uczestnicy wymiany wiadomości. Wiadomości są rozprzestrzeniane po serwerach analogicznie do tego, jak commity rozprzestrzeniają się między repozytoriami Git. W przypadku tymczasowego wyłączenia serwera wiadomości nie giną, a są przesyłane do użytkowników po wznowieniu pracy serwera. Obsługiwane są różne opcje identyfikatorów użytkownika, w tym e-mail, numer telefonu oraz konto na Facebooku itd.
W sieci nie ma jednego punktu awarii ani kontroli nad wiadomościami. Wszystkie serwery, które obejmuje dyskusja, są równouprawnione.
Każdy użytkownik może uruchomić własny serwer i podłączyć go do ogólnej sieci. Możliwe jest tworzenie do interakcji Matrix z systemami opartymi na innych protokołach, na przykład, usług do dwukierunkowego przesyłania wiadomości w IRC, Facebooku, Telegramie, Skype, Hangouts, Email, WhatsApp oraz Slack. Oprócz natychmiastowej wymiany wiadomości tekstowych i organizowania czatów, system może być używany do przesyłania plików, wysyłania powiadomień,
organizowania wideokonferencji, prowadzenia rozmów głosowych i wideo. Obsługiwane są również rozszerzone możliwości takie jak powiadomienie o pisaniu, ocena obecności użytkownika online, potwierdzenie przeczytania, powiadomienia push, wyszukiwanie po stronie serwera, synchronizacja historii oraz stanów klientów.
Źródło: opennet.ru
