| Template Layanan | Kembangkan / Batang Hijau | v2.0 | v1.0 |
|---|---|---|---|
| Inti: | [➚] | [➚] | |
| PostgreSQL: | [➚] | [➚] | |
| GRPC+POSTGRESQL: | [➚] | [➚] |
Userver adalah kerangka kerja asinkron open source dengan serangkaian abstraksi yang kaya untuk pembuatan layanan mikro C ++, layanan, dan utilitas C ++ yang nyaman.
Kerangka kerja memecahkan masalah interaksi I/O yang efisien secara transparan untuk pengembang. Operasi yang biasanya akan menangguhkan utas eksekusi jangan menangguhkannya. Alih -alih itu, utas memproses permintaan dan tugas lain dan kembali ke penanganan operasi hanya ketika dijamin akan segera dieksekusi:
# 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 ();
});
}Akibatnya, dengan kerangka kerja Anda mendapatkan kode sumber langsung, hindari sakelar konteks yang memakan CPU dari OS, secara efisien memanfaatkan CPU dengan sejumlah kecil utas eksekusi.
Anda dapat mempelajari lebih lanjut tentang sejarah dan fitur utama Userver dari publikasi dan video kami.
Lihat dokumen untuk info lebih lanjut.