Dendrite là một máy chủ truyền thông đang được phát triển bởi nhóm Matrix và được định vị là phiên bản thế hệ thứ hai của các thành phần máy chủ Matrix.
Không giống như máy chủ tham chiếu Synapse được viết bằng Python, mã Dendrite được phát triển bằng Go. Cả hai bản triển khai chính thức đều được phân phối theo giấy phép Apache 2.0.
Là một phần của dự án Ruma, một phiên bản riêng của máy chủ Matrix đang được phát triển bằng ngôn ngữ Rust, được phân phối theo giấy phép MIT.
Máy chủ mới hướng đến mục tiêu đạt hiệu quả cao, độ tin cậy và khả năng mở rộng.
Về Dendrite
Dendrite vượt trội hơn Synapse về hiệu năng, yêu cầu ít bộ nhớ hơn để hoạt động và có thể mở rộng quy mô bằng cách cân bằng tải trên nhiều nút.
Kiến trúc Dendrite hỗ trợ mở rộng theo chiều ngang và dựa trên sự phân tách các bộ điều khiển dưới dạng các microservice, trong đó mỗi instance của microservice có các bảng riêng trong cơ sở dữ liệu.
Bộ cân bằng tải chịu trách nhiệm gửi các cuộc gọi đến microservices. Các luồng (quy trình thực hiện) được sử dụng để song song hóa các hoạt động trong mã, cho phép sử dụng tài nguyên của tất cả các lõi CPU mà không cần chia chúng thành các quy trình riêng biệt.
Dendrite hỗ trợ hoạt động ở hai chế độ: nguyên khối và đa thành phần (polylith).
- Ở chế độ nguyên khối, Tất cả các microservices đều được liên kết trong một tệp thực thi, chạy trong một quy trình và tương tác trực tiếp với nhau.
- Ở chế độ nhiều thành phần (cluster), các microservices có thể được khởi chạy riêng biệt, ngay cả với sự đa dạng trên các nút khác nhau. Tương tác thành phần trong chế độ đa thành phần được thực hiện bằng cách sử dụng API HTTP nội bộ và nền tảng Apache Kafka.
Việc phát triển được thực hiện dựa trên các thông số kỹ thuật của giao thức Matrix và sử dụng hai bộ kiểm tra: các bài kiểm tra đồng bộ chung với Synapse và bộ bổ sung mới.
Ở giai đoạn phát triển hiện tại, Dendrite đã vượt qua thành công 56% bài kiểm tra API máy chủ-máy khách và 77% bài kiểm tra API liên kết, trong khi độ bao phủ chức năng thực tế ước tính đạt 70% đối với API máy chủ-máy khách và 95% đối với API liên kết.
Giai đoạn beta cho thấy Dendrite đã sẵn sàng cho việc triển khai ban đầu và chuyển sang giai đoạn phát triển với các bản phát hành mới thường xuyên. Giữa các bản phát hành, lược đồ lưu trữ cơ sở dữ liệu sẽ được cập nhật (không giống như việc cài đặt các phân đoạn từ kho lưu trữ, sau khi cập nhật, nội dung cơ sở dữ liệu sẽ không bị mất).

Các thay đổi phá vỡ khả năng tương thích ngược, thay đổi cấu trúc cơ sở dữ liệu hoặc yêu cầu thay đổi cấu hình sẽ chỉ được cung cấp trong các bản phát hành chính.
Hiện tại, việc sử dụng Dendrite ở chế độ nguyên khối với hệ quản trị cơ sở dữ liệu PostgreSQL được khuyến nghị để tạo các máy chủ gia đình nhỏ và các nút P2P. SQLite hiện chưa được khuyến nghị do các vấn đề chưa được giải quyết liên quan đến việc xử lý các tác vụ đồng thời.
Các tính năng chưa được triển khai trong Dendrite bao gồm : xác nhận tin nhắn, biên nhận đã đọc, thông báo đẩy, OpenID, liên kết email, tìm kiếm phía máy chủ, thư mục người dùng, danh sách người dùng bị bỏ qua, tạo nhóm và cộng đồng, đánh giá sự hiện diện trực tuyến của người dùng, nhập liệu khách và tương tác với các mạng bên thứ ba.
Chức năng cơ bản cho hoạt động của phòng trò chuyện (tạo, lời mời, quy tắc xác thực), phương tiện liên kết những người tham gia trong phòng, đồng bộ hóa các sự kiện sau khi trở về từ ngoại tuyến, tài khoản, hồ sơ, chỉ báo quay số, tải xuống và tải lên Các tệp chỉnh sửa (Media API) có sẵn để sử dụng thông báo, ACL, gắn thẻ và thiết bị mã hóa end-to-end và danh sách khóa.
Cần nhớ rằng nền tảng Matrix để tổ chức các kênh liên lạc phi tập trung sử dụng HTTPS + JSON làm giao thức truyền tải, với khả năng sử dụng WebSockets hoặc một giao thức dựa trên CoAP + Noise. Hệ thống được cấu trúc như một cộng đồng các máy chủ có thể tương tác với nhau và kết hợp thành một mạng lưới phi tập trung chung.
Các tin nhắn được sao chép đến tất cả các máy chủ mà các bên tham gia nhắn tin kết nối. Tin nhắn lan truyền giữa các máy chủ theo cách tương tự như cách các commit lan truyền giữa các kho lưu trữ Git.
Nguồn: https://matrix.org