Wydanie Dendrite 0.1.0, serwera komunikacyjnego z implementacją protokołu Matrix

opublikowany Wydanie serwera Matrix Dendryt 0.1.0, co oznaczało przejście rozwoju do etapu beta testów. 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 serwera referencyjnego Synapse, napisany w Pythonie, kod Dendrite rozwija się w języku Go. Obie oficjalne implementacje objęte są licencją Apache 2.0. W granicach projektu Ruma Odrębnie rozwijana jest wersja serwera Matrix w języku Rust, która dystrybuowane przez na licencji MIT.

Nowy serwer ma na celu osiągnięcie wysokiej wydajności, niezawodności i skalowalności. Dendrite przewyższa Synapse, wymaga znacznie mniej pamięci do działania i może skalować poprzez równoważenie obciążenia na wielu węzłach. Architektura Dendrite wspiera skalowanie poziome i opiera się na wydzieleniu procedur obsługi w postaci mikroserwisów, gdzie każda instancja mikroserwisu posiada własne tabele w bazie danych. Moduł równoważenia obciążenia wysyła wywołania do mikrousług. Do zrównoleglenia operacji w kodzie wykorzystywane są wątki (procedury go), które pozwalają na wykorzystanie zasobów wszystkich rdzeni procesora bez konieczności dzielenia ich na osobne procesy.

Wydanie Dendrite 0.1.0, serwera komunikacyjnego z implementacją protokołu Matrix

Dendrite obsługuje dwa tryby: monolityczny i polilit. W trybie monolitycznym wszystkie mikrousługi są spakowane w jednym pliku wykonywalnym, wykonywane w jednym procesie i bezpośrednio ze sobą współdziałają. W trybie wielokomponentowym (klastrowym) mikrousługi można uruchamiać osobno, w tym dystrybuować je w różnych węzłach. Interakcja komponentów w
tryb wielokomponentowy realizowany jest przy wykorzystaniu wewnętrznego API i platformy HTTP Apache Kafka.

Rozwój odbywa się w oparciu o specyfikacje protokołu Matrix i przy użyciu dwóch zestawów testów - testów wspólnych dla Synapse sytest i nowy zestaw Komplement. Na obecnym etapie rozwoju Dendrite przechodzi 56% testów Client-Server API i 77% testów Federation API, podczas gdy rzeczywisty zakres funkcjonalności szacuje się na 70% dla Client-Server API i 95% dla Federation API.

Etap testów beta wskazuje, że Dendrite jest gotowy do wstępnego wdrożenia i przejścia do rozwoju z okresowo tworzonymi nowymi wersjami. Pomiędzy wydaniami schemat przechowywania danych w bazie danych będzie teraz aktualizowany (w przeciwieństwie do instalowania plasterków z repozytorium, zawartość bazy danych nie zostanie utracona po aktualizacji). Zmiany naruszające kompatybilność wsteczną, zmieniające strukturę bazy danych lub wymagające zmian w konfiguracji będą oferowane tylko w głównych wersjach. Obecnie zaleca się używanie Dendrite w trybie monolitycznym w połączeniu z systemem DBMS PostgreSQL w celu tworzenia małych serwerów domowych i węzłów P2P. Korzystanie z SQLite nie jest jeszcze zalecane ze względu na nierozwiązane problemy z obsługą operacji współbieżnych.

Funkcje, które nie zostały jeszcze zaimplementowane w Dendrite, obejmują potwierdzenia odbioru wiadomości, znaczniki przeczytania, powiadomienia push, OpenID, wiązanie wiadomości e-mail, wyszukiwanie po stronie serwera, katalog użytkowników, listy ignorowanych użytkowników, tworzenie grup i społeczności, ocenianie obecności użytkowników online, wprowadzanie danych przez gości, interakcję z sieciami stron trzecich.

Do wykorzystania są podstawowe funkcjonalności chatroomów (tworzenie, zaproszenia, zasady uwierzytelniania), sposoby federacji uczestników w pokojach, synchronizacja zdarzeń po powrocie z trybu offline, konta, profile, sygnalizacja wybierania numeru, pobieranie i wysyłanie plików (Media API), edytowanie wiadomości, list ACL, wiązanie tagów i praca z listami urządzeń i kluczami w celu kompleksowego szyfrowania.

Przypomnijmy, że platforma do organizacji zdecentralizowanej komunikacji Matrix wykorzystuje jako transport HTTPS+JSON z możliwością wykorzystania WebSockets lub protokół oparty na CoAP+Hałas. System powstaje jako społeczność serwerów, które mogą ze sobą współdziałać i są zjednoczone we wspólną zdecentralizowaną sieć. Wiadomości są replikowane na wszystkich serwerach, z którymi połączeni są uczestnicy przesyłania wiadomości. Wiadomości są propagowane pomiędzy serwerami w ten sam sposób, w jaki zatwierdzenia są propagowane pomiędzy repozytoriami Git. W przypadku tymczasowej awarii serwera wiadomości nie są tracone, lecz przesyłane do użytkowników po wznowieniu pracy serwera. Obsługiwane są różne opcje identyfikatora użytkownika, w tym adres e-mail, numer telefonu, konto na Facebooku itp.

W sieci nie ma pojedynczego punktu awarii ani kontroli komunikatów. Wszystkie serwery objęte dyskusją są sobie równe.
Każdy użytkownik może uruchomić własny serwer i podłączyć go do wspólnej sieci. Istnieje możliwość stworzenia bramy do interakcji Matrixa z systemami opartymi na innych protokołach, np. przygotowany usługi dwukierunkowego wysyłania wiadomości do IRC, Facebooka, Telegramu, Skype, Hangouts, e-maila, WhatsApp i Slack. Oprócz komunikatorów i czatów, system może służyć do przesyłania plików, wysyłania powiadomień,
organizowanie telekonferencji, wykonywanie połączeń głosowych i wideo. Obsługuje także takie zaawansowane funkcje, jak powiadomienie o wpisaniu, ocena obecności użytkownika w Internecie, potwierdzenie przeczytania, powiadomienia push, wyszukiwanie po stronie serwera, synchronizacja historii i statusu klienta.

Źródło: opennet.ru

Dodaj komentarz