Yandex abriu o código da estrutura do usuário para a criação de aplicativos de alta carga

Yandex publicou o código-fonte da estrutura Userver, que permite criar aplicativos de alta carga em C++ que funcionam em modo assíncrono. A estrutura foi testada sob cargas de nível Yandex e é usada em serviços como Yandex Go, Lavka, Delivery, Market e projetos fintech. O código do Userver é escrito em C++ e é de código aberto sob a licença Apache 2.0.

Userver é mais adequado para desenvolver aplicativos com arquitetura de microsserviços. Inicialmente, o framework foi desenvolvido para Yandex Taxi, com sua ajuda a equipe passou de uma aplicação monolítica para uma arquitetura que permite desenvolver componentes independentes separados (microsserviços) e utilizá-los em diferentes aplicações. Os microsserviços são autônomos, portanto, um aplicativo baseado em uma arquitetura semelhante é fácil de atualizar e adicionar novos recursos. Assim, o microsserviço para encontrar um motorista para pedidos de táxi pode ser usado para uma tarefa semelhante - por exemplo, encontrar um mensageiro para atender pedidos do Yandex Delivery. O mesmo pode ser feito calculando a hora de chegada de um motorista ou mensageiro e muitas outras tarefas.

O framework foi criado inicialmente com ênfase em confiabilidade e conveniência, e dentro dele é fornecido tudo o que é necessário para desenvolvimento, diagnóstico, monitoramento, depuração e experimentos. Por exemplo, o userver sugere como corrigir erros no estágio de compilação, pode trabalhar com diferentes bancos de dados, alterar parâmetros rapidamente e assim por diante. Suporte declarado para sistemas Ubuntu, Debian, Fedora, Arch, Gentoo, macOS, x86, x86_64, AArch64, arquiteturas Arm, compiladores GCC 8+ e Clang 9+, padrões C++17, C++20, C++23.

A composição inclui drivers para trabalho assíncrono com DBMS (MongoDB, PostgreSQL, Redis, ClickHouse, MySQL), clientes e servidores de trabalho assíncrono para vários protocolos (HTTP, HTTPS, GRPC, TCP, UDP, TLS), primitivos de baixo nível para gerenciamento de sincronização e acesso aos recursos do sistema operacional, bem como componentes de alto nível para trabalhar com cache, tarefas, bloqueios distribuídos, rastreamento, métricas, estatísticas e dados nos formatos JSON/YAML/BSON. Ele suporta a alteração da configuração do serviço em tempo real, sem interrompê-lo.

Anteriormente, Yandex transferiu suas outras tecnologias-chave para a forma de projetos abertos - por exemplo, o sistema de gerenciamento de banco de dados distribuído YDB, capaz de processar milhões de solicitações por segundo, bem como a biblioteca de aprendizado de máquina CatBoost, que Yandex usa em Pesquisa e outros Serviços.

Fonte: opennet.ru

Adicionar um comentário