项目作者: improbable-eng

项目描述 :
DNS SRV Load Balancer for gRPC
高级语言: Go
项目地址: git://github.com/improbable-eng/go-srvlb.git
创建时间: 2016-11-29T09:48:28Z
项目社区:https://github.com/improbable-eng/go-srvlb

开源协议:Apache License 2.0

下载


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

  1. rr := grpc.RoundRobin(grpcsrvlb.New(srv.NewGoResolver(2 * time.Second)))
  2. 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.