| Plantillas de servicio | Desarrollar / Trunk Green | v2.0 | V1.0 |
|---|---|---|---|
| Centro: | [➚] | [➚] | |
| PostgreSQL: | [➚] | [➚] | |
| GRPC+PostgreSQL: | [➚] | [➚] |
Userver es un marco asincrónico de código abierto con un rico conjunto de abstracciones para la creación rápida y cómoda de microservicios, servicios y utilidades C ++.
El marco resuelve el problema de las interacciones de E/S eficientes de manera transparente para los desarrolladores. Las operaciones que generalmente suspenden el hilo de ejecución no lo suspenden. En lugar de eso, el subproceso procesa otras solicitudes y tareas y vuelve al manejo de la operación solo cuando se garantiza que se ejecutará de inmediato:
# include < userver/easy.hpp >
# include " schemas/key_value.hpp "
int main ( int argc, char * argv[]) {
using namespace userver ;
easy::HttpWith<easy::PgDep>(argc, argv)
// Handles multiple HTTP requests to `/kv` URL concurrently
. Get ( " /kv " , [](formats::json::Value request_json, const easy::PgDep& dep) {
// JSON parser and serializer are generated from JSON schema by userver
auto key = request_json. As <schemas::KeyRequest>(). key ;
// Asynchronous execution of the SQL query in transaction. Current thread
// handles other requests while the response from the DB is being received:
auto res = dep. pg (). Execute (
storages::postgres::ClusterHostType:: kSlave ,
// Query is converted into a prepared statement. Subsequent requests
// send only parameters in a binary form and meta information is
// discarded on the DB side, significantly saving network bandwidth.
" SELECT value FROM key_value_table WHERE key=$1 " , key
);
schemas::KeyValue response{key, res[ 0 ][ 0 ]. As <std::string>()};
return formats::json::ValueBuilder{response}. ExtractValue ();
});
}Como resultado, con el marco que obtiene el código fuente directo, evite los interruptores de contexto que consumen CPU del sistema operativo, utilizan eficientemente la CPU con una pequeña cantidad de subprocesos de ejecución.
Puede obtener más información sobre la historia y las características clave de Userver de nuestras publicaciones y videos.
Vea los documentos para obtener más información.