Go Srvlb Save

DNS SRV Load Balancer for gRPC

Project README

Go gRPC DNS SRV Load Balancer

Go Report Card GoDoc Apache 2.0 License Build Status

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 respects TTL, see miekg/dns

License

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

Open Source Agenda is not affiliated with "Go Srvlb" Project. README Source: improbable-eng/go-srvlb
Stars
42
Open Issues
3
Last Commit
6 years ago
License

Open Source Agenda Badge

Open Source Agenda Rating