跳到主要内容

性能优化

在大规模场景下(许多用户或许多规则),两个常见的瓶颈是吞吐量和策略大小。以下是实用的缓解措施。

高请求量​

如果单个 enforcer 无法跟上(例如 10k+ req/s):

  1. Multi-threading — 使用 SyncedEnforcer 并运行多个工作线程/实例以利用所有核心。
  2. Cluster — 在多台机器上运行 Casbin,并使用 Watchers 同步策略。你可以结合两者:例如 10 个节点 × 每个节点 5 个线程。

大型策略(许多规则)​

当拥有数百万条规则时,执行和加载时间可能会受到影响:

  1. Model and policy design — 优先使用 RBAC 和共享默认值,使大多数租户使用较小的规则集(例如 < 100 条规则);仅在需要时进行覆盖。参见 GitHub #681 中的讨论。
  2. Policy sharding — 通过 Policy subset loading 仅加载每个 enforcer 所需的规则(例如按租户或按域)。
  3. RBAC over direct user permissions — 将权限分配给角色;Casbin 缓存角色树以实现 O(1) 的角色查找并减少策略规则数量。

尽可能结合这些方法以获得最佳效果。

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