Κυκλοφορία του Dendrite 0.1.0, ενός διακομιστή επικοινωνίας με υλοποίηση του πρωτοκόλλου Matrix

Που δημοσιεύθηκε Έκδοση διακομιστή Matrix Δενδρίτης 0.1.0, που σηματοδότησε τη μετάβαση της ανάπτυξης στο στάδιο beta testing. Το Dendrite αναπτύσσεται από τη βασική ομάδα προγραμματιστών της αποκεντρωμένης πλατφόρμας επικοινωνιών Matrix και τοποθετείται ως η υλοποίηση της δεύτερης γενιάς στοιχείων διακομιστή Matrix. Σε αντίθεση με τον διακομιστή αναφοράς Synapse, γραμμένο σε Python, κωδικός Dendrite αναπτύσσεται στη γλώσσα Go. Και οι δύο επίσημες υλοποιήσεις έχουν άδεια χρήσης βάσει της άδειας Apache 2.0. Στα όρια του έργου Ruma Μια έκδοση του διακομιστή Matrix στη γλώσσα Rust αναπτύσσεται ξεχωριστά, η οποία διανέμονται από υπό την άδεια του MIT.

Ο νέος διακομιστής στοχεύει στην επίτευξη υψηλής απόδοσης, αξιοπιστίας και επεκτασιμότητας. Ο δενδρίτης ξεπερνά το Synapse, απαιτεί σημαντικά λιγότερη μνήμη για να λειτουργήσει και μπορεί να κλιμακωθεί μέσω της εξισορρόπησης φορτίου σε πολλούς κόμβους. Η αρχιτεκτονική Dendrite υποστηρίζει οριζόντια κλιμάκωση και βασίζεται στον διαχωρισμό των χειριστών με τη μορφή microservices, όπου κάθε παράδειγμα microservice έχει τους δικούς της πίνακες στη βάση δεδομένων. Ο εξισορροπητής φορτίου αποστέλλει κλήσεις σε μικροϋπηρεσίες. Για την παραλληλοποίηση των λειτουργιών στον κώδικα, χρησιμοποιούνται νήματα (go routines), τα οποία σας επιτρέπουν να χρησιμοποιείτε τους πόρους όλων των πυρήνων της CPU χωρίς να τους χωρίζετε σε ξεχωριστές διεργασίες.

Κυκλοφορία του Dendrite 0.1.0, ενός διακομιστή επικοινωνίας με υλοποίηση του πρωτοκόλλου Matrix

Ο δενδρίτης υποστηρίζει δύο λειτουργίες: μονολιθικό και πολυλιθικό. Στη μονολιθική λειτουργία, όλες οι μικροϋπηρεσίες συσκευάζονται σε ένα μόνο εκτελέσιμο αρχείο, εκτελούνται σε μία διαδικασία και αλληλεπιδρούν απευθείας μεταξύ τους. Σε λειτουργία πολλαπλών συστατικών (cluster), οι μικροϋπηρεσίες μπορούν να εκκινηθούν ξεχωριστά, συμπεριλαμβανομένης της διανομής σε διαφορετικούς κόμβους. Αλληλεπίδραση συστατικών σε
Η λειτουργία πολλαπλών συστατικών πραγματοποιείται χρησιμοποιώντας το εσωτερικό API και την πλατφόρμα HTTP Apache Kafka.

Η ανάπτυξη πραγματοποιείται με βάση τις προδιαγραφές του πρωτοκόλλου Matrix και χρησιμοποιώντας δύο σειρές δοκιμών - δοκιμές κοινές για το Synapse σύστημα και ένα νέο σετ Συμπλήρωμα. Στο τρέχον στάδιο ανάπτυξης, το Dendrite περνάει με επιτυχία το 56% των δοκιμών Client-Server API και το 77% των δοκιμών Federation API, ενώ η πραγματική κάλυψη λειτουργικότητας εκτιμάται σε 70% για το Client-Server API και 95% για το Federation API.

Το στάδιο της δοκιμής beta υποδεικνύει ότι το Dendrite είναι έτοιμο για αρχική εφαρμογή και μετάβαση στην ανάπτυξη με νέες εκδόσεις που δημιουργούνται περιοδικά. Μεταξύ των εκδόσεων, το σχήμα αποθήκευσης δεδομένων στη βάση δεδομένων θα ενημερώνεται πλέον (σε αντίθεση με την εγκατάσταση τμημάτων από το χώρο αποθήκευσης, τα περιεχόμενα της βάσης δεδομένων δεν θα χαθούν μετά την ενημέρωση). Οι αλλαγές που διακόπτουν τη συμβατότητα προς τα πίσω, αλλάζουν τη δομή της βάσης δεδομένων ή απαιτούν αλλαγές διαμόρφωσης θα προσφέρονται μόνο σε μεγάλες εκδόσεις. Επί του παρόντος, ο δενδρίτης συνιστάται να χρησιμοποιείται σε μονολιθική λειτουργία σε συνδυασμό με το PostgreSQL DBMS για τη δημιουργία μικρών διακομιστών στο σπίτι και κόμβων P2P. Η χρήση του SQLite δεν συνιστάται ακόμη λόγω ανεπίλυτων προβλημάτων με τον χειρισμό ταυτόχρονων λειτουργιών.

Δυνατότητες που δεν έχουν ακόμη εφαρμοστεί στο Dendrite περιλαμβάνουν επιβεβαιώσεις λήψης μηνυμάτων, σημάδια ανάγνωσης, ειδοποιήσεις push, OpenID, δέσμευση email, αναζήτηση από την πλευρά του διακομιστή, κατάλογο χρήστη, λίστες παράβλεψης χρηστών, δημιουργία ομάδων και κοινοτήτων, αξιολόγηση της παρουσίας χρήστη στο διαδίκτυο, εισροές επισκεπτών, αλληλεπίδραση με δίκτυα τρίτων.

Διαθέσιμες προς χρήση είναι οι βασικές λειτουργίες για chat rooms (δημιουργία, προσκλήσεις, κανόνες ελέγχου ταυτότητας), μέσα συνένωσης συμμετεχόντων σε δωμάτια, συγχρονισμός συμβάντων μετά την επιστροφή από offline, λογαριασμοί, προφίλ, ένδειξη κλήσης, λήψη και μεταφόρτωση αρχείων (Media API), επεξεργασία μηνυμάτων, ACL, δέσμευση ετικετών και εργασία με λίστες συσκευών και κλειδιών για κρυπτογράφηση από άκρο σε άκρο.

Ας θυμηθούμε ότι η πλατφόρμα για την οργάνωση αποκεντρωμένων επικοινωνιών Matrix χρησιμοποιεί το HTTPS+JSON ως μέσο μεταφοράς με δυνατότητα χρήσης WebSockets ή ένα πρωτόκολλο που βασίζεται σε ΚΟΑΠ+Θόρυβος. Το σύστημα διαμορφώνεται ως μια κοινότητα διακομιστών που μπορούν να αλληλεπιδρούν μεταξύ τους και ενώνονται σε ένα κοινό αποκεντρωμένο δίκτυο. Τα μηνύματα αναπαράγονται σε όλους τους διακομιστές στους οποίους είναι συνδεδεμένοι οι συμμετέχοντες στα μηνύματα. Τα μηνύματα διαδίδονται στους διακομιστές με τον ίδιο τρόπο που διαδίδονται οι δεσμεύσεις μεταξύ των αποθετηρίων Git. Σε περίπτωση προσωρινής διακοπής λειτουργίας του διακομιστή, τα μηνύματα δεν χάνονται, αλλά μεταδίδονται στους χρήστες μετά την επανέναρξη της λειτουργίας του διακομιστή. Υποστηρίζονται διάφορες επιλογές αναγνωριστικού χρήστη, όπως email, αριθμός τηλεφώνου, λογαριασμός Facebook κ.λπ.

Δεν υπάρχει κανένα σημείο αποτυχίας ή έλεγχος μηνυμάτων σε όλο το δίκτυο. Όλοι οι διακομιστές που καλύπτονται από τη συζήτηση είναι ίσοι μεταξύ τους.
Οποιοσδήποτε χρήστης μπορεί να τρέξει τον δικό του διακομιστή και να τον συνδέσει σε ένα κοινό δίκτυο. Είναι δυνατή η δημιουργία πύλες για την αλληλεπίδραση του Matrix με συστήματα που βασίζονται σε άλλα πρωτόκολλα, για παράδειγμα, έτοιμος υπηρεσίες για αμφίδρομη αποστολή μηνυμάτων σε IRC, Facebook, Telegram, Skype, Hangouts, Email, WhatsApp και Slack. Εκτός από την ανταλλαγή άμεσων μηνυμάτων κειμένου και τις συνομιλίες, το σύστημα μπορεί να χρησιμοποιηθεί για τη μεταφορά αρχείων, την αποστολή ειδοποιήσεων,
διοργάνωση τηλεδιασκέψεων, πραγματοποίηση φωνητικών και βιντεοκλήσεων. Υποστηρίζει επίσης προηγμένες λειτουργίες όπως ειδοποίηση πληκτρολόγησης, αξιολόγηση της παρουσίας του χρήστη στο διαδίκτυο, επιβεβαίωση ανάγνωσης, ειδοποιήσεις push, αναζήτηση από την πλευρά του διακομιστή, συγχρονισμός ιστορικού και κατάσταση πελάτη.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο