Dendrite adalah server komunikasi yang sedang dikembangkan oleh tim Matrix dan diposisikan sebagai implementasi generasi kedua dari komponen server Matrix.
Tidak seperti server referensi Synapse yang ditulis dengan Python, kode Dendrite dikembangkan di Go. Kedua implementasi resmi didistribusikan di bawah lisensi Apache 2.0.
Sebagai bagian dari proyek Ruma, versi terpisah dari server Matrix dalam bahasa Rust sedang dikembangkan, yang didistribusikan di bawah lisensi MIT.
Server baru ini bertujuan untuk mencapai efisiensi, keandalan, dan skalabilitas yang tinggi.
Tentang Dendrite
Dendrite lebih unggul daripada Synapse dalam hal kinerja, membutuhkan memori yang jauh lebih sedikit untuk beroperasi, dan dapat diskalakan dengan penyeimbangan beban di beberapa node.
Arsitektur Dendrite mendukung penskalaan horizontal dan didasarkan pada pemisahan pengontrol dalam bentuk layanan mikro, di mana setiap instance layanan mikro memiliki tabelnya sendiri di dalam basis data.
Penyeimbang beban bertanggung jawab untuk mengirimkan panggilan ke layanan mikro. Utas (rutinitas go) digunakan untuk memparalelkan operasi dalam kode, yang memungkinkan sumber daya semua inti CPU digunakan tanpa membaginya menjadi proses terpisah.
Dendrite mendukung pengoperasian dalam dua mode: monolitik dan multi-komponen (polilit).
- Dalam mode monolitik, Semua layanan mikro ditautkan dalam file yang dapat dieksekusi, berjalan dalam suatu proses, dan berinteraksi langsung satu sama lain.
- Dalam mode multi-komponen (cluster), layanan mikro dapat diluncurkan secara terpisah, bahkan dengan keragaman pada node yang berbeda. Interaksi komponen dalam mode multikomponen dilakukan menggunakan API HTTP internal dan platform Apache Kafka.
Pengembangan dilakukan berdasarkan spesifikasi protokol Matrix dan menggunakan dua set tes: tes sytest umum dengan Synapse dan suite Complement baru.
Pada tahap pengembangan saat ini, Dendrite berhasil melewati 56% pengujian API klien-server dan 77% pengujian API federasi, sementara cakupan fungsionalitas aktual diperkirakan mencapai 70% untuk API klien-server dan 95% untuk API federasi.
Tahap beta menunjukkan bahwa Dendrite siap untuk penerapan awal dan transisi ke pengembangan dengan rilis baru secara berkala. Di antara rilis, skema penyimpanan basis data akan diperbarui (tidak seperti menginstal fragmen dari repositori, setelah pembaruan, konten basis data tidak akan hilang).

Perubahan yang merusak kompatibilitas mundur, mengubah struktur database, atau memerlukan perubahan konfigurasi hanya akan ditawarkan dalam rilis mayor.
Saat ini, penggunaan Dendrite dalam mode monolitik dengan DBMS PostgreSQL direkomendasikan untuk membuat server rumahan kecil dan node P2P. SQLite belum direkomendasikan karena masalah yang belum terselesaikan terkait penanganan operasi konkuren.
Fitur yang belum diimplementasikan di Dendrite meliputi : konfirmasi pesan, tanda terima baca, notifikasi push, OpenID, penautan email, pencarian sisi server, direktori pengguna, daftar abaikan pengguna, pembuatan grup dan komunitas, evaluasi kehadiran online pengguna, masukan tamu, dan interaksi dengan jaringan pihak ketiga.
Fungsionalitas dasar untuk pengoperasian ruang obrolan (pembuatan, undangan, aturan otentikasi), sarana federasi peserta di ruang, sinkronisasi acara setelah kembali dari offline, akun, profil, indikasi panggilan, unduh dan unggah file Editing (Media API) tersedia untuk pesan penggunaan, ACL, pelabelan, dan perangkat enkripsi ujung ke ujung serta daftar kunci.
Perlu diingat bahwa platform Matrix untuk mengatur komunikasi terdesentralisasi menggunakan HTTPS + JSON sebagai protokol transportnya, dengan kemampuan untuk memanfaatkan WebSockets atau protokol berbasis CoAP + Noise. Sistem ini terstruktur sebagai komunitas server yang dapat berinteraksi satu sama lain dan bergabung menjadi jaringan terdesentralisasi bersama.
Pesan direplikasi di semua server tempat peserta pengiriman pesan terhubung. Pesan menyebar antar server dengan cara yang mirip dengan bagaimana commit menyebar antar repositori Git.
Sumber: https://matrix.org