Наблюдатели
Мы поддерживаем использование распределенных систем обмена сообщениями, таких как и т.д., для поддержания связи между несколькими информер Casbin. Таким образом, наши пользователи могут одновременно использовать несколько караулов для обработки большого количества запросов проверки разрешений.
Подобно адаптерам хранения политики, мы не ставим код наблюдателя в основную библиотеку. Любая поддержка новой системы обмена сообщениями должна осуществляться в качестве наблюдателя. Полный список наблюдателей Casbin представлен ниже. Любой вклад сторонних наблюдателей приветствуется, пожалуйста, сообщите нам и я поместим его в этот список:)
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Наблюдатель Etcd | Магазин KV | Casbin | Наблюдатель для и т.д. |
Наблюдатель Redis | Магазин KV | Casbin | Наблюдатель для Redis |
Наблюдатель Redis | Магазин KV | @billcobbler | Наблюдатель для Redis |
Наблюдатель TiKV | Магазин KV | Casbin | Наблюдатель от TiKV |
Кафка Наблюдатель | Система сообщений | @wgarunap | Наблюдатель от Apache Kafka |
Наблюдатель NATS | Система сообщений | Солюто | Наблюдатель для NATS |
Наблюдатель ZooKeeper | Система сообщений | Grepsr | Наблюдатель от Apache ZooKeeper |
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory | Система сообщений | @rusenask | Наблюдатель основан на Go Cloud Dev Kit , который работает с облачными провайдерами и самоуправляющейся инфраструктурой |
Наблюдатель RocketMQ | Система сообщений | @fmyxyz | Наблюдатель от Apache RocketMQ |
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Адаптер Etcd | Магазин KV | @mapleafgo | Наблюдатель для и т.д. |
Наблюдатель Redis | Магазин KV | Casbin | Наблюдатель для Redis |
Кафка Наблюдатель | Система сообщений | Casbin | Наблюдатель от Apache Kafka |
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Наблюдатель Etcd | Магазин KV | Casbin | Наблюдатель для и т.д. |
Наблюдатель Redis | Магазин KV | Casbin | Наблюдатель для Redis |
Наблюдатель | Система сообщений | Casbin | Наблюдатель для Google Cloud Pub/Sub |
Наблюдатель Postgres | База данных | Matteo Collina | Наблюдатель от PostgreSQL |
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Наблюдатель Redis | Магазин KV | Логика | Наблюдатель для Redis |
Наблюдатель PostgreSQL | База данных | Casbin | Наблюдатель от PostgreSQL |
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Наблюдатель Redis | Магазин KV | @Sbou | Наблюдатель для Redis |
Наблюдатель | Тип | Автор | Описание |
---|---|---|---|
Наблюдатель Redis | Магазин KV | CasbinRuby | Наблюдатель для Redis |
Наблюдатель RabbitMQ | Система сообщений | CasbinRuby | Наблюдатель за RabbitMQ |
Watcher | Type | Author | Description |
---|---|---|---|
Redis Watcher | KV store | Tinywan | Watcher for Redis |
Наблюдатель Экс
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.
Compared with Watcher
interface, WatcherEx
can distinguish what type of update action is received, e.g., AddPolicy
and RemovePolicy
.
WatcherEx Apis:
api | description |
---|---|
SetUpdateCallback(func(string)) error | SetUpdateCallback sets the callback function that the watcher will call, when the policy in DB has been changed by other instances. A classic callback is Enforcer.LoadPolicy(). |
Update() error | Update calls the update callback of other instances to synchronize their policy. It is usually called after changing the policy in DB, like Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy(), etc. |
Close() | Close stops and releases the watcher, the callback function will not be called any more. |
UpdateForAddPolicy(sec, ptype string, params ...string) error | UpdateForAddPolicy calls the update callback of other instances to synchronize their policy. It is called after a policy is added via Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() and Enforcer.AddNamedGroupingPolicy(). |
UpdateForRemovePolicy(sec, ptype string, params ...string) error | UPdateForRemovePolicy calls the update callback of other instances to synchronize their policy. It is called after a policy is removed by Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() and Enforcer.RemoveNamedGroupingPolicy(). |
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) error | UpdateForRemoveFilteredPolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() and Enforcer.RemoveFilteredNamedGroupingPolicy(). |
UpdateForSavePolicy(model model.Model) error | UpdateForSavePolicy calls the update callback of other instances to synchronize their policy. It is called after Enforcer.SavePolicy() |
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) error | UpdateForAddPolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() and Enforcer.AddNamedGroupingPolicies(). |
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) error | UpdateForRemovePolicies calls the update callback of other instances to synchronize their policy. It is called after Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() and Enforcer.RemoveNamedGroupingPolicies(). |