Η Yandex άνοιξε τον κώδικα για το πλαίσιο χρήστη για τη δημιουργία εφαρμογών υψηλού φορτίου

Η Yandex δημοσίευσε τον πηγαίο κώδικα του πλαισίου Userver, το οποίο σας επιτρέπει να δημιουργείτε εφαρμογές υψηλού φορτίου σε C++ που λειτουργούν σε ασύγχρονη λειτουργία. Το πλαίσιο έχει δοκιμαστεί με φορτία επιπέδου Yandex και χρησιμοποιείται σε υπηρεσίες όπως έργα Yandex Go, Lavka, Delivery, Market και fintech. Ο κώδικας του χρήστη είναι γραμμένος σε C++ και είναι ανοιχτού κώδικα με την άδεια Apache 2.0.

Ο χρήστης είναι ο καταλληλότερος για την ανάπτυξη εφαρμογών με αρχιτεκτονική microservice. Αρχικά, το πλαίσιο αναπτύχθηκε για το Yandex Taxi, με τη βοήθειά του η ομάδα μεταπήδησε από μια μονολιθική εφαρμογή σε μια αρχιτεκτονική που σας επιτρέπει να αναπτύξετε ξεχωριστά ανεξάρτητα στοιχεία (microservices) και να τα χρησιμοποιήσετε σε διαφορετικές εφαρμογές. Οι μικροϋπηρεσίες είναι αυτόνομες, επομένως μια εφαρμογή που βασίζεται σε παρόμοια αρχιτεκτονική είναι εύκολο να ενημερωθεί και να προσθέσει νέες δυνατότητες σε αυτήν. Έτσι, η μικρουπηρεσία για την εύρεση οδηγού για παραγγελίες ταξί μπορεί να χρησιμοποιηθεί για μια παρόμοια εργασία - για παράδειγμα, την εύρεση ενός ταχυμεταφορέα για την εκτέλεση παραγγελιών Yandex Delivery. Το ίδιο μπορεί να γίνει με τον υπολογισμό της ώρας άφιξης ενός οδηγού ή κούριερ και πολλές άλλες εργασίες.

Το πλαίσιο δημιουργήθηκε αρχικά με έμφαση στην αξιοπιστία και την ευκολία και μέσα σε αυτό παρέχονται όλα τα απαραίτητα για ανάπτυξη, διάγνωση, παρακολούθηση, αποσφαλμάτωση και πειράματα. Για παράδειγμα, ο χρήστης προτείνει πώς να διορθώσετε σφάλματα στο στάδιο της μεταγλώττισης, μπορεί να εργαστεί με διαφορετικές βάσεις δεδομένων, να αλλάζει παραμέτρους εν κινήσει και ούτω καθεξής. Δηλωμένη υποστήριξη για συστήματα Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, αρχιτεκτονικές Arm, μεταγλωττιστές GCC 8+ και Clang 9+, πρότυπα C++17, C++20, C++23.

Η σύνθεση περιλαμβάνει προγράμματα οδήγησης για ασύγχρονη εργασία με DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), ασύγχρονα λειτουργούντα προγράμματα-πελάτες και διακομιστές για διάφορα πρωτόκολλα (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitives χαμηλού επιπέδου για διαχείριση συγχρονισμού και πρόσβαση στις δυνατότητες του λειτουργικού συστήματος, καθώς και σε στοιχεία υψηλού επιπέδου για εργασία με προσωρινή μνήμη, εργασίες, κατανεμημένα λουκέτα, ιχνηλάτηση, μετρήσεις, στατιστικά στοιχεία και δεδομένα σε μορφές JSON/YAML/BSON. Υποστηρίζει την αλλαγή της διαμόρφωσης της υπηρεσίας εν κινήσει, χωρίς να τη σταματήσει.

Προηγουμένως, η Yandex μετέφερε τις άλλες βασικές τεχνολογίες της στη μορφή ανοιχτών έργων - για παράδειγμα, το κατανεμημένο σύστημα διαχείρισης βάσεων δεδομένων YDB, ικανό να επεξεργαστεί εκατομμύρια αιτήματα ανά δευτερόλεπτο, καθώς και τη βιβλιοθήκη μηχανικής εκμάθησης CatBoost, την οποία χρησιμοποιεί η Yandex στην Αναζήτηση και άλλα Υπηρεσίες.

Πηγή: opennet.ru

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