Skip to content

schmohlio/grpc-etcd-java

Repository files navigation

grpc-etcd-java

Client Service Discovery for gRPC with etcd

Usage

You will need

  • a running etcd cluster
  • a gRPC server that registers itself under a service directory (etcd key)
  • a gRPC client that provides the service directory in the target URI

Examples

See the examples/ project.

Client-side Example

ManagedChannelBuilder
    .forTarget("etcd:///" + SERVICE_DIR) // note that the Authority is omitted
    .nameResolverFactory(EtcdNameResolverProvider.forEndpoints(endpoints))
    .loadBalancerFactory(RoundRobinLoadBalancerFactory.getInstance())
    .usePlaintext(true)
    .build();

Server-side Example

Pseudocode:

long leaseId = etcd.getLeaseClient().grant(TTL).get().getID();

etcd.getKVClient().put(
        ByteSequence.from(PREFIX + getCurrentUri(), Charsets.US_ASCII),
        ByteSequence.from(Long.toString(leaseId), Charsets.US_ASCII),
        PutOption.newBuilder().withLeaseId(leaseId).build());

etcd.getLeaseClient().keepAlive(leaseId, new EtcdServiceRegisterer());
});

About

Service discovery for gRPC with etcd

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages