ginepro
cargo install ginepro

ginepro

A client-side gRPC channel implementation for tonic

by TrueLayer

0.4.0 (see all)License:MIT OR Apache-2.0
cargo install ginepro
Readme

ginepro

ginepro provides client-side gRPC load-balancing out of the box by enriching tonic ‘s channel with periodic service discovery.

Crates.io Docs.rs CI Coverage Status

Overview

ginepro enriches tonic by periodcally 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

[dependencies]
# ...
ginepro = "0.3.0"

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);

// 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.

GitHub Stars

82

LAST COMMIT

1mo ago

MAINTAINERS

3

CONTRIBUTORS

10

OPEN ISSUES

1

OPEN PRs

0
VersionTagPublished
0.4.0
1mo ago
0.3.0
8mos ago
0.2.0
1yr ago
0.1.5
1yr ago
No alternatives found
No tutorials found
Add a tutorial