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

Watchers

Watchers поддерживают синхронизацию политик между несколькими экземплярами энфосеров. Когда один энфорсер обновляет политику, он уведомляет другие (через шину сообщений, такую как etcd, Redis или Kafka), и они перезагружают или обновляют свою политику в памяти. Это позволяет запускать множество энфосеров за балансировщиками нагрузки без устаревших разрешений.

Watchers реализованы в отдельных пакетах, аналогично адаптерам. Приведенный ниже список охватывает поддерживаемые бэкенды. Чтобы добавить новый, откройте issue или PR.

Watcher Type Author Description
PostgreSQL WatcherEx Database @IguteChung WatcherEx for PostgreSQL
Redis WatcherEx KV store Casbin WatcherEx for Redis
Redis Watcher KV store @billcobbler Watcher for Redis
Etcd Watcher KV store Casbin Watcher for etcd
TiKV Watcher KV store Casbin Watcher for TiKV
Kafka Watcher Messaging system @wgarunap Watcher for Apache Kafka
NATS Watcher Messaging system Soluto Watcher for NATS
ZooKeeper Watcher Messaging system Grepsr Watcher for Apache ZooKeeper
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
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory Messaging System @bartventer WatcherEx based on Go Cloud Dev Kit that works with leading cloud providers and self-hosted infrastructure
RocketMQ Watcher Messaging system @fmyxyz Watcher for Apache RocketMQ

WatcherEx​

Для поддержки инкрементальной синхронизации между несколькими экземплярами мы предоставляем интерфейс WatcherEx. Этот интерфейс может уведомлять другие экземпляры об изменениях политик, хотя в настоящее время нет реализации WatcherEx. Мы рекомендуем использовать диспетчер для достижения этой функциональности.

По сравнению с интерфейсом Watcher, WatcherEx может различать тип полученного действия обновления, например AddPolicy против RemovePolicy.

API WatcherEx:

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

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.