目录
当前位置: 首页 > 文档资料 > Casbin 中文文档 >

观察者

优质
小牛编辑
138浏览
2023-12-01

我们支持使用分布式消息系统,例如 etcd 来保持多个Casbin执行器实例之间的一致性。 因此,我们的用户可以同时使用多个Casbin 执行器来处理大量的权限检查请求。

与策略存储 adapters类似,我们没有把watcher的代码放在主库中。 任何对新消息系统的支持都应该作为watcher程序来实现。 完整的Casbin watchers列表如下所示。 欢迎任何第三方对 watcher 进行新的贡献,如果有请告知我们,我将把它放在这个列表中:)

GoJavaNode.jsPython.NETRuby
监视器类型作者说明
Etcd 监视器键值对存储Casbinetcd的监视器
Redis Watcher键值对存储CasbinRedis的监视器
Redis 监视器键值对存储@billcobblerRedis的监视器
TiKV 监视器键值对存储CasbinTiKV 的监视器
Kafka 监视器消息传递系统。@wgarunapApache Kafka的监视器
NATS 监视器消息传递系统。SolutoNATS的监视器
ZooKeeper 监视器消息传递系统。GrepsrApache ZooKeeper的监视器
NATS, RabbitMQ, GCP Pub/Sub, AWS SNS & SQS, Kafka, InMemory消息传递系统。@rusenask基于Go Cloud Dev Kit与领先的云供应商和自托管基础设施运作的监视器
RocketMQ 观察器消息传递系统。@fmyxyzApache RocketMQ的监视器
监视器类型作者说明
Etcd 适配器KV store@mapleafgoetcd的监视器
Redis 监视器键值对存储CasbinRedis的监视器
监视器类型作者说明
Etcd WatcherKV storeCasbinetcd的监视器
Redis WatcherKV storeCasbinRedis的监视器
Pub/Sub WatcherMessaging systemCasbinGoogle Cloud Pub/Sub的监视器
Postgres Watcher数据库Matteo CollinaPostgreSQL的监视器
监视器类型作者说明
Redis 监视器KV storeScienceLogicRedis的监视器
PostgreSQL Watcher数据库CasbinPostgreSQL的监视器
监视器类型作者说明
Redis WatcherKV store@SbouRedis的Watcher
监视器类型作者描述
Redis 监视器键值对存储CasbinRubyetcd的监视器
RabbitMQ 监视器消息传递系统。CasbinRubyRabbitMQ 的监视器

WatcherEx

为了支持多个实例之间的增量同步,我们提供 WatcherEx 接口。 我们希望它能够在策略改变时通知其他实例,但目前尚未实现 WatcherEx。 我们推荐您使用调度器来实现它。

Watcher 接口相比,实现的WatcherEx 可以区分执行的是什么样的更新操作如 AddPolicy, RemovePolicy等等。

WatcherEx 的调用接口:

api描述
SetUpdateCallback(func(string)) error当数据库中的策略已被其他实例更改时SetUpdateCallback会设置监视器将调用的回调函数。 一种典型的回调是Enforcer.LoadPolicy()。
Update() errorUpdate调用其他实例的更新回调以同步他们的策略。 它通常是在改变数据库中的策略之后进行的,如Enforcer.SavePolicy(), Enforcer.AddPolicy(), Enforcer.RemovePolicy()等。
Close()Close停止并释放监视器,回调函数将不再被调用。
UpdateForAddPolicy(params ...string) errorUpdateForAddPolicy 调用其他实例的更新回调来同步他们的策略。 它在 Enforcer.AddPolicy()被调用后调用
UpdateForRemovePolicy(params ...string) errorUPdateForRemovePolicy 调用其他实例的更新回调来同步他们的策略。 它在 Enforcer.RemovePolicy()被调用后调用
UpdateForRemoveFilteredPolicy(fieldIndex int, fieldValues ...string) errorUpdateForRemoveFilteredPolicy 调用其他实例的更新回调以同步其策略。 它在 Enforccer.RemoveFilteredNamedGroupingPolicy()被调用后调用
UpdateForSavePolicy(model model.Model) errorUpdateForSavePolicy 调用其他实例的更新回调来同步他们的策略。 它在 Enforccer.RemoveFilteredNamedGroupingPolicy()被调用后调用
← 适配器调度器 →