Dispatchers
Dispatcher(分发器) 把 增量 策略更新传播到多个 enforcer 实例(例如一个集群)。它们使用一致性协议(例如 Raft),使所有 enforcer 最终看到相同的策略。Casbin 的常规 API(AddPolicy、RemovePolicy 等)保持不变;由 dispatcher 负责把更新发送到其他节点。
它包含两部分:(1)Casbin 内部由 dispatcher 实现的钩子,以及(2)dispatcher 自身的设置(例如集群成员关系、配置)。
备注
Dispatcher 只在初始化之后同步 变更。它们 不会 修复已经存在的分歧。在启用 dispatcher 之前,应先让所有 enforcer 以相同的策略启动(例如来自同一个数据库或同一份快照)。
可用的 dispatcher:
| Adapter | Type | Author | Description |
|---|---|---|---|
| Hashicorp Raft Dispatcher | Raft | Casbin | A dispatcher based on Hashicorp Raft |
| KDKYG/casbin-dispatcher | Raft | @KDKYG | A dispatcher based on Hashicorp Raft |
DistributedEnforcer
DistributedEnforcer 在 SyncedEnforcer 之上封装,以便与 dispatcher 协同工作。
e, _ := casbin.NewDistributedEnforcer("examples/basic_model.conf", "examples/basic_policy.csv")