We support to use distributed messaging systems like etcd to keep consistence between multiple Casbin enforcer instances. So our users can concurrently use multiple Casbin enforcers to handle large number of permission checking requests.
Similar to policy storage adapters, we don't put watcher code in the main library. Any support for a new messaging system should be implemented as a watcher. A complete list of Casbin watchers is provided as below. Any 3rd-party contribution on a new watcher is welcomed, please inform us and I will put it in this list:)
|Etcd Watcher||KV store||Casbin||Watcher for etcd|
|NATS Watcher||Messaging system||Soluto||Watcher for NATS|
|ZooKeeper Watcher||KV store||Grepsr||Watcher for Apache ZooKeeper|
|Redis Watcher||KV store||@billcobbler||Watcher for Redis|
|GCP Pub/Sub Watcher||Messaging system||LivingPackets||Watcher for Google Cloud Platform PUB/SUB|
|NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory||Messaging System||rusenask||Watcher based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure|
In order to support incremental synchronization between multiple instances, we provide the
WatcherEx interface. We hope it can notify other instances when the policy changes, but there is currently no implementation of
WatcherEx. We recommend that you use dispatcher to achieve this.