덴드라이트는 매트릭스 팀에서 개발 중인 통신 서버로 , 매트릭스 서버 구성 요소의 2세대 구현체로 자리매김하고 있습니다.
Python으로 작성된 Synapse 참조 서버와 달리 Dendrite 코드는 Go로 개발되었습니다. 두 공식 구현 모두 Apache 2.0 라이선스에 따라 배포됩니다.
Ruma 프로젝트의 일환으로 Rust 언어로 된 Matrix 서버의 별도 버전이 개발 중이며 MIT 라이선스에 따라 배포됩니다.
새 서버는 높은 효율성, 신뢰성 및 확장성을 달성하는 것을 목표로 합니다.
Dendrite 정보
Dendrite는 성능 면에서 Synapse보다 앞서 있으며, 작동에 필요한 메모리 양이 훨씬 적고, 여러 노드에 걸쳐 로드 밸런싱을 통해 확장할 수 있습니다.
덴드라이트 아키텍처는 수평 확장을 지원하며, 컨트롤러를 마이크로서비스 형태로 분리하는 것을 기반으로 합니다. 각 마이크로서비스 인스턴스는 데이터베이스에 자체 테이블을 갖습니다.
로드 밸런서는 마이크로 서비스에 호출을 보내는 역할을합니다. 스레드 (go 루틴)는 코드에서 작업을 병렬화하는 데 사용되므로 모든 CPU 코어의 리소스를 별도의 프로세스로 나누지 않고도 사용할 수 있습니다.
Dendrite는 단일체 모드와 다중 구성 요소 (폴리리스) 모드, 두 가지 작업 모드를 지원합니다.
- 모 놀리 식 모드에서 모든 마이크로 서비스는 실행 파일에 연결되고 프로세스에서 실행되며 서로 직접 상호 작용합니다.
- 다중 구성 요소 모드 (클러스터), 마이크로 서비스는 서로 다른 노드에서 다양성을 사용하여 개별적으로 시작할 수 있습니다. 다중 구성 요소 모드의 구성 요소 상호 작용은 내부 HTTP API 및 Apache Kafka 플랫폼을 사용하여 수행됩니다.
개발은 Matrix 프로토콜의 사양을 기반으로하고 두 가지 테스트 세트를 사용하여 수행됩니다. Synapse와 새로운 Complement 제품군을 사용한 공통 시스템 테스트입니다.
현재 개발 단계에서 Dendrite는 클라이언트-서버 API 테스트의 56%와 페더레이션 API 테스트의 77%를 성공적으로 통과했으며, 실제 기능 커버리지는 클라이언트-서버 API의 경우 70%, 페더레이션 API의 경우 95%로 추정됩니다.
베타 단계는 Dendrite가 초기 배포 및 정기적인 새 릴리스를 통한 개발 단계로 전환할 준비가 되었음을 나타냅니다. 릴리스 간에는 데이터베이스 저장 방식이 업데이트됩니다(저장소에서 조각을 설치하는 것과는 달리, 업데이트 후에도 데이터베이스 내용은 손실되지 않습니다).

이전 버전과의 호환성을 깨뜨 리거나 데이터베이스 구조를 변경하거나 구성 변경이 필요한 변경 사항은 주요 릴리스에서만 제공됩니다.
현재로서는 소규모 홈 서버 및 P2P 노드를 구축할 때는 PostgreSQL DBMS와 함께 Dendrite를 모놀리식 모드로 사용하는 것이 좋습니다 . SQLite는 동시 작업 처리와 관련된 해결되지 않은 문제가 있어 아직 권장하지 않습니다.
Dendrite에 아직 구현되지 않은 기능 에는 메시지 확인, 읽음 확인, 푸시 알림, OpenID, 이메일 연결, 서버 측 검색, 사용자 디렉터리, 사용자 차단 목록, 그룹 및 커뮤니티 생성, 사용자 온라인 활동 평가, 게스트 입력, 타사 네트워크와의 상호 작용 등이 있습니다.
채팅방 운영을위한 기본 기능 (생성, 초대, 인증 규칙), 회의실 참여자 연합 수단, 오프라인 복귀 후 이벤트 동기화, 계정, 프로필, 다이얼 표시, 편집 파일 다운로드 및 업로드 (Media API) 메시지, ACL, 레이블 지정 및 종단 간 암호화 장치 및 키 목록에 사용할 수 있습니다.
Matrix 플랫폼은 분산형 통신을 구성하기 위해 HTTPS + JSON을 전송 프로토콜로 사용하며 , WebSockets 또는 CoAP + Noise 기반 프로토콜을 활용할 수도 있습니다. 이 시스템은 서로 상호 작용하고 공통의 분산형 네트워크로 결합될 수 있는 서버 커뮤니티로 구성됩니다.
메시지는 메시지 참여자가 연결된 모든 서버에 복제됩니다 . 메시지는 Git 저장소 간에 커밋이 전파되는 방식과 유사하게 서버 간에 전파됩니다.