Yandex ha abierto el código del marco de usuario para crear aplicaciones de alta carga

Yandex ha publicado el código fuente del marco Userver, que le permite crear aplicaciones de alta carga en C++ que funcionan en modo asíncrono. El marco ha sido probado bajo cargas a nivel de Yandex y se utiliza en servicios como Yandex Go, Lavka, Delivery, Market y proyectos fintech. El código de Userver está escrito en C++ y es de código abierto bajo la licencia Apache 2.0.

Userver es más adecuado para desarrollar aplicaciones con arquitectura de microservicio. Inicialmente, el marco fue desarrollado para Yandex Taxi, con su ayuda el equipo pasó de una aplicación monolítica a una arquitectura que permite desarrollar componentes independientes (microservicios) y usarlos en diferentes aplicaciones. Los microservicios son autónomos, por lo que una aplicación basada en una arquitectura similar es fácil de actualizar y agregarle nuevas funciones. Por lo tanto, el microservicio para encontrar un conductor para pedidos de taxi se puede utilizar para una tarea similar, por ejemplo, encontrar un mensajero para cumplir con los pedidos de Yandex Delivery. Lo mismo se puede hacer calculando la hora de llegada de un conductor o mensajero y muchas otras tareas.

El marco se creó inicialmente con énfasis en la confiabilidad y la conveniencia, y en su interior se proporciona todo lo necesario para el desarrollo, diagnóstico, monitoreo, depuración y experimentos. Por ejemplo, el usuario sugiere cómo corregir errores en la etapa de compilación, puede trabajar con diferentes bases de datos, cambiar parámetros sobre la marcha, etc. Soporte declarado para sistemas Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, arquitecturas Arm, compiladores GCC 8+ y Clang 9+, estándares C++17, C++20, C++23.

La composición incluye controladores para trabajo asincrónico con DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), clientes y servidores que funcionan asincrónicamente para varios protocolos (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitivas de bajo nivel para gestión de sincronización. y acceso a las capacidades del sistema operativo, así como componentes de alto nivel para trabajar con caché, tareas, bloqueos distribuidos, seguimiento, métricas, estadísticas y datos en formatos JSON/YAML/BSON. Admite cambiar la configuración del servicio sobre la marcha, sin detenerlo.

Anteriormente, Yandex transfirió sus otras tecnologías clave en forma de proyectos abiertos, por ejemplo, el sistema de gestión de bases de datos distribuidas YDB, capaz de procesar millones de solicitudes por segundo, así como la biblioteca de aprendizaje automático CatBoost, que Yandex utiliza en Búsqueda y otros servicios.

Fuente: opennet.ru

Añadir un comentario