Dendrite เป็นเซิร์ฟเวอร์การสื่อสาร ที่เป็นอยู่ พัฒนาโดยทีม Matrix และอยู่ในตำแหน่งที่เป็นการใช้ส่วนประกอบเซิร์ฟเวอร์ Matrix รุ่นที่สอง
ไม่เหมือนกับเซิร์ฟเวอร์อ้างอิง Synapse ที่เขียนด้วย Python โค้ด Dendrite ได้รับการพัฒนาใน Go การใช้งานอย่างเป็นทางการทั้งสองได้รับการแจกจ่ายภายใต้ใบอนุญาต Apache 2.0
ในฐานะส่วนหนึ่งของโครงการ Ruma เซิร์ฟเวอร์ Matrix เวอร์ชันแยกต่างหากในภาษา Rust กำลังได้รับการพัฒนาซึ่งแจกจ่ายภายใต้ใบอนุญาต MIT
เซิร์ฟเวอร์ใหม่ มีจุดมุ่งหมายเพื่อให้ได้ประสิทธิภาพสูงเชื่อถือได้และสามารถปรับขนาดได้
เกี่ยวกับ Dendrite
Dendrite นำหน้าไซแนปส์ในแง่ของประสิทธิภาพ ต้องใช้หน่วยความจำน้อยกว่ามากในการทำงานและสามารถปรับขนาดได้โดยการโหลดบาลานซ์ในหลายโหนด
สถาปัตยกรรม Dendrite รองรับการปรับขนาดแนวนอนและขึ้นอยู่กับการแยกตัวควบคุมในรูปแบบของไมโครเซอร์วิส โดยที่แต่ละอินสแตนซ์ของไมโครเซอร์วิสมีตารางของตัวเองในฐานข้อมูล
ตัวจัดสรรภาระงานมีหน้าที่ในการส่งการโทรไปยังไมโครเซอร์วิส เธรด (go รูทีน) ใช้เพื่อขนานการดำเนินการในโค้ดซึ่งอนุญาตให้ใช้ทรัพยากรของแกน CPU ทั้งหมดโดยไม่แบ่งออกเป็นกระบวนการแยกกัน
Dendrite รองรับการทำงานในสองโหมด: เสาหินและหลายองค์ประกอบ (โพลิลิ ธ ).
- ในโหมดเสาหิน ไมโครเซอร์วิสทั้งหมดเชื่อมโยงกันในไฟล์ปฏิบัติการรันในกระบวนการและโต้ตอบกันโดยตรง
- ในโหมดหลายองค์ประกอบ (คลัสเตอร์) ไมโครเซอร์วิสสามารถเปิดใช้งานแยกกันได้แม้จะมีความหลากหลายในโหนดที่แตกต่างกัน การโต้ตอบคอมโพเนนต์ในโหมดหลายองค์ประกอบดำเนินการโดยใช้ HTTP API ภายในและแพลตฟอร์ม Apache Kafka
การพัฒนาดำเนินการตามข้อกำหนดของโปรโตคอล Matrix และใช้การทดสอบสองชุด ได้แก่ การทดสอบ sytest ทั่วไปกับ Synapse และชุดเสริมใหม่
ในขั้นตอนของการพัฒนาปัจจุบัน Dendrite ผ่านการทดสอบ 56% ของไคลเอนต์เซิร์ฟเวอร์ API และ 77% ของการทดสอบ API แบบรวมในขณะที่ความครอบคลุมของฟังก์ชันการทำงานจริงประมาณ 70% สำหรับไคลเอนต์เซิร์ฟเวอร์ API และ 95% สำหรับ federation API
ขั้นตอนเบต้าบ่งชี้ว่า Dendrite พร้อมสำหรับการปรับใช้ครั้งแรก และการเปลี่ยนไปสู่การพัฒนาด้วยการออกใหม่เป็นประจำ ระหว่างรีลีสสคีมาหน่วยเก็บฐานข้อมูลจะได้รับการอัปเดต (ไม่เหมือนกับการติดตั้งชิ้นส่วนจากที่เก็บหลังจากการอัปเดตเนื้อหาของฐานข้อมูลจะไม่สูญหาย)
การเปลี่ยนแปลงที่ทำลายความเข้ากันได้ย้อนหลังเปลี่ยนโครงสร้างฐานข้อมูลหรือต้องการการเปลี่ยนแปลงการกำหนดค่าจะมีให้เฉพาะในรุ่นหลักเท่านั้น
ในขณะนี้ ขอแนะนำให้ใช้ Dendrite ในโหมดเสาหินร่วมกับ PostgreSQL DBMS เพื่อสร้างโฮมเซิร์ฟเวอร์ขนาดเล็กและโหนด P2P ยังไม่แนะนำให้ใช้ SQLite เนื่องจากปัญหาที่ยังไม่ได้รับการแก้ไขเกี่ยวกับการจัดการการดำเนินการพร้อมกัน
ฟีเจอร์ยังไม่ได้ใช้งาน ในเดนไดรต์ พวกเขารวมถึง: การรับทราบข้อความ, บุ๊กมาร์ก, การแจ้งเตือนแบบพุช, OpenID, ลิงก์อีเมล, การค้นหาฝั่งเซิร์ฟเวอร์, ไดเร็กทอรีผู้ใช้, รายการละเว้นของผู้ใช้, การสร้างกลุ่มและชุมชน, การประเมินสถานะออนไลน์ของผู้ใช้, อินพุตจากแขก, การโต้ตอบกับเครือข่ายบุคคลที่สาม
ฟังก์ชั่นพื้นฐานสำหรับการทำงานของห้องสนทนา (การสร้างคำเชิญกฎการตรวจสอบสิทธิ์) วิธีการรวมกลุ่มของผู้เข้าร่วมในห้องการซิงโครไนซ์เหตุการณ์หลังจากกลับจากออฟไลน์บัญชีโปรไฟล์การระบุการหมุนดาวน์โหลดและอัปโหลดไฟล์การแก้ไข (Media API) มีให้สำหรับข้อความที่ใช้งาน ACL การแท็กและอุปกรณ์เข้ารหัสจากต้นทางถึงปลายทางและรายการคีย์
จำไว้ว่า แพลตฟอร์มสำหรับจัดระเบียบการสื่อสารแบบกระจายอำนาจ Matrix ใช้ HTTPS + JSON เป็นการขนส่งที่มีความสามารถในการใช้ WebSockets หรือโปรโตคอลที่ใช้ CoAP + Noise ระบบถูกสร้างขึ้นเป็นชุมชนของเซิร์ฟเวอร์ที่สามารถโต้ตอบซึ่งกันและกันและรวมอยู่ในเครือข่ายการกระจายอำนาจทั่วไป
ข้อความถูกจำลองแบบในเซิร์ฟเวอร์ทั้งหมด ที่เชื่อมต่อกับผู้เข้าร่วมการส่งข้อความ ข้อความจะแพร่กระจายระหว่างเซิร์ฟเวอร์ในลักษณะเดียวกันกับวิธีการกระจายคอมมิตระหว่างที่เก็บ Git
Fuente: https://matrix.org