17 releases
0.8.1 | Jul 10, 2024 |
---|---|
0.7.2 | Apr 22, 2024 |
0.7.1 | Feb 27, 2024 |
0.7.0 | Sep 6, 2023 |
0.2.0 | Jul 9, 2021 |
#153 in Web programming
289,532 downloads per month
Used in helyim
34KB
460 lines
ginepro
ginepro
provides client-side gRPC load-balancing out of the box by enriching tonic
‘s channel with periodic service discovery.
Overview
ginepro
enriches tonic by periodically updating the list of
servers that are available through a ServiceDiscovery
interface that currently is implemented for DNS.
How to install
Add ginepro
to your dependencies
cargo add ginepro
Getting started
The interface remains fairly the same as we implement all the logic for a drop-in replacement for
tonic's Channel
.
// Using the `LoadBalancedChannel`.
use ginepro::LoadBalancedChannel;
use ginepro::pb::tester_client::TesterClient;
// Build a load-balanced channel given a service name and a port.
let load_balanced_channel = LoadBalancedChannel::builder(
("my_hostname", 5000)
)
.channel()
.await
.expect("failed to construct LoadBalancedChannel");
// Initialise a new gRPC client for the `Test` service
// using the load-balanced channel as transport
let grpc_client = TesterClient::new(load_balanced_channel);
For more examples, have a look at the examples directory.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~18–28MB
~528K SLoC