| Modèles de service | Développer / tronc vert | v2.0 | v1.0 |
|---|---|---|---|
| Cœur: | [➚] | [➚] | |
| PostgreSQL: | [➚] | [➚] | |
| GRPC + PostgreSQL: | [➚] | [➚] |
Userver est un cadre asynchrone open source avec un riche ensemble d'abstractions pour la création rapide et confortable de microservices, services et services publics C ++.
Le cadre résout de manière transparente le problème des interactions efficaces d'E / S pour les développeurs. Les opérations qui suspendraient généralement le fil d'exécution ne le suspendent pas. Au lieu de cela, le thread traite d'autres demandes et tâches et revient à la gestion de l'opération uniquement lorsqu'il est garanti de l'exécution immédiatement:
# 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 ();
});
}En conséquence, avec le framework que vous obtenez un code source simple, évitez les commutateurs de contexte consommant du CPU à partir du système d'exploitation, utilisez efficacement le CPU avec une petite quantité de threads d'exécution.
Vous pouvez en savoir plus sur l'historique et les principales fonctionnalités de l'utilisateur de nos publications et vidéos.
Voir les documents pour plus d'informations.