跳到主要内容

Dispatchers

Dispatchers 将 incremental(增量)策略更新传播到多个 enforcer 实例(例如集群)。它们使用一致性协议(例如 Raft),以便所有 enforcer 最终看到相同的策略。Casbin 的正常 API(AddPolicy, RemovePolicy 等)保持不变;dispatcher 向其他节点发送更新。

两部分组成:(1) Casbin 内部由 dispatcher 实现的钩子,以及 (2) dispatcher 特定的设置(例如集群成员资格、配置)。

备注

Dispatchers 仅同步初始化后的 changes(更改)。它们 不会 修复现有的分歧。在启用 dispatcher 之前,请确保所有 enforcer 以相同的策略启动(例如来自同一个数据库或快照)。

可用的 dispatchers:

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 以配合 dispatchers 使用。

e, _ := casbin.NewDistributedEnforcer("examples/basic_model.conf", "examples/basic_policy.csv")

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