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.
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
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
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
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
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