Skip to content

gRPC Balancer that routes requests using a consistent hashring

License

Notifications You must be signed in to change notification settings

authzed/consistent

Repository files navigation

consistent

GoDoc Discord Server Twitter

This package implements a gRPC Balancer that routes requests based upon a consistent hashring. The hashing algorithm is customizable, but xxhash is recommended. It was originally built to serve SpiceDB, but has been extracted from that repository to be made available for other projects.

In order to use this balancer, you must:

  1. Register the balancer (typically in main):
balancer.Register(consistent.NewBuilder(xxhash.Sum64))
  1. Configure the connections:
// This is using the defaults, but you can create your own config.
grpc.Dial(addr, grpc.WithDefaultServiceConfig(consistent.DefaultServiceConfigJSON))

Acknowledgements

This project is a community effort fueled by contributions from both organizations and individuals. We appreciate all contributions, large and small, and would like to thank all those involved.

A large portion of the structure of this library is based off of the example implementation in grpc-go. That original work is copyrighted by the gRPC authors and licensed under the Apache License, Version 2.0.