Name: go-srvlb
Owner: Improbable Engineering
Description: DNS SRV Load Balancer for gRPC
Created: 2016-11-29 09:48:28.0
Updated: 2018-01-15 02:41:10.0
Pushed: 2018-01-10 17:35:45.0
Homepage: null
Size: 24
Language: Go
GitHub Committers
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
A gRPC naming.Resolver
that uses DNS SRV.
This allows you to do simple client-side Round Robin load balancing of gRPC requests.
= grpc.RoundRobin(grpcsrvlb.New(srv.NewGoResolver(2 * time.Second)))
, 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.
This is alpha software. It should work, but key components are missing:
srv.Resolver
implementation that respects TTL
, see miekg/dnsgo-srvlb
is released under the Apache 2.0 license. See the LICENSE file for details.