Yandex otworzył kod frameworku userver do tworzenia aplikacji o dużym obciążeniu

Yandex opublikował kod źródłowy frameworka Userver, który umożliwia tworzenie w języku C++ aplikacji o dużym obciążeniu, działających w trybie asynchronicznym. Framework został przetestowany pod obciążeniami na poziomie Yandex i jest używany w usługach takich jak Yandex Go, Lavka, Delivery, Market i projektach fintech. Kod Uservera jest napisany w C++ i jest open source na licencji Apache 2.0.

Userver najlepiej nadaje się do tworzenia aplikacji z architekturą mikroserwisową. Początkowo framework był tworzony dla Yandex Taxi, przy jego pomocy zespół przeszedł z aplikacji monolitycznej na architekturę pozwalającą na tworzenie oddzielnych niezależnych komponentów (mikroserwisów) i wykorzystywanie ich w różnych aplikacjach. Mikrousługi są autonomiczne, więc aplikację opartą na podobnej architekturze można łatwo aktualizować i dodawać do niej nowe funkcje. Zatem mikroserwis umożliwiający znalezienie kierowcy do zamówień taksówkowych można wykorzystać do podobnego zadania - na przykład znalezienia kuriera do realizacji zamówień Yandex Delivery. To samo można zrobić z obliczeniem czasu przybycia kierowcy lub kuriera i wieloma innymi zadaniami.

Framework został początkowo stworzony z naciskiem na niezawodność i wygodę, a wewnątrz niego zapewnione jest wszystko, co niezbędne do programowania, diagnostyki, monitorowania, debugowania i eksperymentów. Na przykład userver podpowiada, jak naprawić błędy na etapie kompilacji, może pracować z różnymi bazami danych, zmieniać parametry w locie i tak dalej. Deklarowane wsparcie dla systemów Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, architektur Arm, kompilatorów GCC 8+ i Clang 9+, standardów C++17, C++20, C++23.

Kompozycja zawiera sterowniki do asynchronicznej pracy z DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), asynchronicznie pracujących klientów i serwerów dla różnych protokołów (HTTP, HTTPS, GRPC, TCP, UDP, TLS), prymitywy niskiego poziomu do zarządzania synchronizacją i dostęp do możliwości systemu operacyjnego, a także komponentów wysokiego poziomu do pracy z pamięcią podręczną, zadaniami, rozproszonymi blokadami, śledzeniem, metrykami, statystykami i danymi w formatach JSON/YAML/BSON. Obsługuje zmianę konfiguracji usługi w locie, bez jej zatrzymywania.

Wcześniej Yandex przeniósł swoje inne kluczowe technologie do formy otwartych projektów - na przykład system zarządzania rozproszonymi bazami danych YDB, zdolny przetwarzać miliony żądań na sekundę, a także bibliotekę uczenia maszynowego CatBoost, z której Yandex korzysta w wyszukiwarce i nie tylko usługi.

Źródło: opennet.ru

Dodaj komentarz