All Projects → improbable-eng → go-srvlb

improbable-eng / go-srvlb

Licence: Apache-2.0 license
DNS SRV Load Balancer for gRPC

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to go-srvlb

Kubernetes Pfsense Controller
Integrate Kubernetes and pfSense
Stars: ✭ 100 (+143.9%)
Mutual labels:  dns, load-balancer
srvlookup
A small wrapper for dnspython to return SRV records for a given host, protocol, and domain name as a list of namedtuples
Stars: ✭ 21 (-48.78%)
Mutual labels:  dns, srv
Gobetween
☁️ Modern & minimalistic load balancer for the Сloud era
Stars: ✭ 1,631 (+3878.05%)
Mutual labels:  load-balancer, srv
Polaris Gslb
A free, open source GSLB (Global Server Load Balancing) solution.
Stars: ✭ 193 (+370.73%)
Mutual labels:  dns, load-balancer
micro-mesh
gRPC微服务架构实践
Stars: ✭ 52 (+26.83%)
Mutual labels:  grpc-gateway
Proxy
The type-safe REST library for .NET Standard 2.0 (NetCoreStack Flying Proxy)
Stars: ✭ 40 (-2.44%)
Mutual labels:  load-balancer
k8s-deployer
Deploy Kubernetes service and store retrieved information in the Consul K/V store
Stars: ✭ 23 (-43.9%)
Mutual labels:  load-balancer
ddal
DDAL(Distributed Data Access Layer) is a simple solution to access database shard.
Stars: ✭ 33 (-19.51%)
Mutual labels:  load-balancer
docker-django-nginx-uwsgi-postgres-load-balance-tutorial
實戰 Docker + Django + Nginx + uWSGI + Postgres - Load Balance -Tutorial 📝
Stars: ✭ 102 (+148.78%)
Mutual labels:  load-balancer
fastdns
Fast DNS package for Go. Tuned for high performance. Zero memory allocations in almost paths. Up to 1M QPS on a single host.
Stars: ✭ 67 (+63.41%)
Mutual labels:  dns
balboa
server for indexing and querying passive DNS observations
Stars: ✭ 42 (+2.44%)
Mutual labels:  dns
system-design-notebook
Learn System Design step by step
Stars: ✭ 372 (+807.32%)
Mutual labels:  load-balancer
CoSky
High-performance, low-cost microservice governance platform. Service Discovery and Configuration Service | 高性能、低成本微服务治理平台
Stars: ✭ 57 (+39.02%)
Mutual labels:  dns
llb
Dead simple event-driven load-balancer
Stars: ✭ 27 (-34.15%)
Mutual labels:  load-balancer
dohjs
DNS over HTTPS client for use in the browser
Stars: ✭ 71 (+73.17%)
Mutual labels:  dns
grpc-django-book-service
gRPC implementation integrated with Django Application.
Stars: ✭ 28 (-31.71%)
Mutual labels:  grpc-gateway
ansible-role-dns
Install and configure dns on your system.
Stars: ✭ 39 (-4.88%)
Mutual labels:  dns
Dumb
Dumain Bruteforcer - a fast and flexible domain bruteforcer
Stars: ✭ 54 (+31.71%)
Mutual labels:  dns
kube-toolkit
Toolkit for creating gRPC-based CLI and web tools for Kubernetes
Stars: ✭ 74 (+80.49%)
Mutual labels:  grpc-gateway
serviceq
Super fault-tolerant HTTP load balancer & queue. White paper for reference - https://github.com/gptankit/serviceq-paper
Stars: ✭ 66 (+60.98%)
Mutual labels:  load-balancer

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].