Перейти до основного контенту

Watchers

Ми підтримуємо використання розподілених систем обміну повідомленнями, таких як etcd, для підтримки узгодженості між кількома екземплярами Casbin enforcer. Це дозволяє нашим користувачам одночасно використовувати кілька Casbin enforcers для обробки великої кількості запитів на перевірку дозволів.

Подібно до адаптерів зберігання політик, ми не включаємо код спостерігача до основної бібліотеки. Будь-яка підтримка нової системи обміну повідомленнями повинна бути реалізована як спостерігач. Повний список спостерігачів Casbin наведено нижче. Ми вітаємо будь-які сторонні внески для нового спостерігача, будь ласка, повідомте нас, і ми додамо його до цього списку:

WatcherTypeAuthorDescription
PostgreSQL WatcherExDatabase@IguteChungWatcherEx for PostgreSQL
Redis WatcherExKV storeCasbinWatcherEx for Redis
Redis WatcherKV store@billcobblerWatcher for Redis
Etcd WatcherKV storeCasbinWatcher for etcd
TiKV WatcherKV storeCasbinWatcher for TiKV
Kafka WatcherMessaging system@wgarunapWatcher for Apache Kafka
NATS WatcherMessaging systemSolutoWatcher for NATS
ZooKeeper WatcherMessaging systemGrepsrWatcher for Apache ZooKeeper
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@rusenaskWatcher based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemoryMessaging System@bartventerWatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ WatcherMessaging system@fmyxyzWatcher for Apache RocketMQ

WatcherEx

Для підтримки інкрементної синхронізації між кількома екземплярами ми надаємо інтерфейс WatcherEx. Ми сподіваємося, що він може повідомляти інші екземпляри, коли політика змінюється, але наразі немає реалізації WatcherEx. Ми рекомендуємо використовувати диспетчер для досягнення цього.

Порівняно з інтерфейсом Watcher, WatcherEx може відрізняти, який тип дії оновлення отримано, наприклад, AddPolicy та RemovePolicy.

API WatcherEx:

APIОпис
SetUpdateCallback(func(string)) errorSetUpdateCallback встановлює функцію зворотного виклику, яку спостерігач викликатиме, коли політика в базі даних змінена іншими екземплярами. Класичний зворотний виклик - Enforcer.LoadPolicy().
Update() errorUpdate викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Зазвичай викликається після зміни політики в базі даних, наприклад, Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy() тощо.
Close()Close зупиняє та звільняє спостерігача, функція зворотного виклику більше не буде викликатися.
UpdateForAddPolicy(sec, ptype string, params ...string) errorUpdateForAddPolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після додавання політики через Enforcer.AddPolicy(), Enforcer.AddNamedPolicy(), Enforcer.AddGroupingPolicy() та Enforcer.AddNamedGroupingPolicy().
UpdateForRemovePolicy(sec, ptype string, params ...string) errorUpdateForRemovePolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після видалення політики через Enforcer.RemovePolicy(), Enforcer.RemoveNamedPolicy(), Enforcer.RemoveGroupingPolicy() та Enforcer.RemoveNamedGroupingPolicy().
UpdateForRemoveFilteredPolicy(sec, ptype string, fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.RemoveFilteredPolicy(), Enforcer.RemoveFilteredNamedPolicy(), Enforcer.RemoveFilteredGroupingPolicy() та Enforcer.RemoveFilteredNamedGroupingPolicy().
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.SavePolicy()
UpdateForAddPolicies(sec string, ptype string, rules ...[]string) errorUpdateForAddPolicies викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.AddPolicies(), Enforcer.AddNamedPolicies(), Enforcer.AddGroupingPolicies() та Enforcer.AddNamedGroupingPolicies().
UpdateForRemovePolicies(sec string, ptype string, rules ...[]string) errorUpdateForRemovePolicies викликає функцію оновлення інших екземплярів для синхронізації їхньої політики. Викликається після Enforcer.RemovePolicies(), Enforcer.RemoveNamedPolicies(), Enforcer.RemoveGroupingPolicies() та Enforcer.RemoveNamedGroupingPolicies().