If you are deploying SpiceDB under Kubernetes, it is recommended to use the SpiceDB Operator, which will configure dispatching automatically
What is Dispatching?
Dispatching is a feature of SpiceDB where requests to SpiceDB are, in turn, forwarded onto ("dispatched") to other SpiceDB nodes within the cluster, to allow for reuse of cache.
Each SpiceDB node maintains an in-memory cache of permissions queries it has resolved in the past; when a new permissions query is encountered by one node, its answer may be present on another node, so SpiceDB will forward the request onward to the other node to check the shared cache.
For more details on how dispatching works, see the Consistent Hash Load Balancing for gRPC article.
Configuring Dispatch in Kubernetes
If not using the SpiceDB Operator, the
dispatch-upstream-addr should be of the form
spicedb.default is the Kubernetes
Service in which SpiceDB is accessible.
Configuring Dispatch in non-Kubernetes Environments
Non-Kubernetes based dispatching relies upon DNS updates, which means it can become stale if DNS is changing. This is not recommended unless DNS updates are rare.
To enable dispatch, the following flags must be specified:
spicedb serve --dispatch-cluster-enabled=true --dispatch-upstream-addr=upstream-addr ...
or via environment variables with the
SPICEDB_DISPATCH_CLUSTER_ENABLED=true SPICEDB_DISPATCH_UPSTREAM_ADDR=upstream-addr spicedb serve ...
upstream-addr should be the DNS address of the load balancer at which all SpiceDB nodes are accessible at the default dispatch port of