go-srvlb

module
v0.0.0-...-303b979 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 15, 2017 License: Apache-2.0

README

Go gRPC DNS SRV Load Balancer

Go Report Card GoDoc Apache 2.0 License

A gRPC naming.Resolver that uses DNS SRV. This allows you to do simple client-side Round Robin load balancing of gRPC requests.

Usage

rr := grpc.RoundRobin(grpcsrvlb.New(srv.NewGoResolver(2 * time.Second)))
conn, err := grpc.Dial("grpc.my_service.my_cluster.internal.example.com", grpc.WithBalancer(rr))

This will resolve the DNS SRV address grpc.my_service.my_cluster.internal.example.com using the Golang DNS resolver with an assumed TTL of 2 seconds and use that as a set of backends for the gRPC RoundRobin policy. From this point on all requests on the conn (reusable across gRPC clients) will be load balanced to a set of these backends.

Status

This is alpha software. It should work, but key components are missing:

  • unit tests
  • integration tests with gRPC
  • srv.Resolver implementation that is concurrent and respects TTL, see miekg/dns

License

go-srvlb is released under the Apache 2.0 license. See the LICENSE file for details.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL