Casbin

Casbin

  • 文档
  • API
  • 编辑器
  • IDE 插件
  • Single Sign-On (SSO)
  • 论坛
  • 帮助
  • 博客
  • Pricing
  • Contact Sales
  • Languages icon中文
    • English
    • 한국어
    • Русский
    • Français
    • Deutsch
    • 日本語
    • 参与翻译
  • GitHub

›高级用法

基础知识

  • 概述
  • 开始使用
  • 工作原理
  • 教程

Model

  • 支持的Models
  • Model语法
  • 效果器
  • 函数
  • 基于角色的访问控制
  • RBAC with Pattern
  • 域内RBAC
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • 优先级模型
  • 超级管理员

存储

  • Model存储
  • Policy存储
  • 政策子集加载

扩充功能

  • Enforcers
  • 适配器
  • 观察者
  • 调度器
  • 角色管理器
  • 中间件
  • Graphql 中间件
  • 云端原生中间值

API

  • API 概述
  • 管理 API
  • RBAC API
  • 域内基于角色的访问控制 API
  • RoleManager API
  • 数据权限

高级用法

  • 多线程
  • 基准测试
  • 性能优化
  • Kubernetes的授权
  • 通过特使核准服务网格。

管理

  • 管理员门户
  • Casbin 服务
  • 日志 & 错误处理
  • 前端使用

编辑器

  • 在线编辑器
  • IDE 插件

更多

  • 本项目使用者
  • 贡献中
  • 隐私政策
  • 服务条款
Translate

性能优化

当应用于数以百万计的用户或权限的生产环境时,您可能会在Casbin 的强制执行中遇到性能降级,通常有两个原因:

高访问量

每秒到来的请求数量非常庞大,例如:单个Casbin实例每秒就能收到10000条请求。 在这种情况下,仅靠一个Casbin实例通常难以处理完所有请求。 现在有两种解决方案:

  1. 运用多线程来运行多个Casbin实例,这样以来您就可以充分利用机器中的所有内核。 详情请参阅:多线程

  2. 将Casbin实例部署到机器集群(多台机器)。 使用Watcher来确保所有Casbin实例运行一致。 详情请参阅: Watcher。

note

您可以同时使用上述方法,例如将Casbin部署到10台计算机的群集中。 每台机器同时具有5个线程来满足Casbin强制执行请求。

大量的策略规则

在云或多租户环境中,可能需要数百万条策略规则。 每次执行请求甚至是在最初期加载策略规则的速度非常缓慢。 这类事件通常可以通过以下几种方式缓解:

  1. 您的Casbin模型或规则设计得不够好。 精致的模型和策略将抽象每个用户/租户的重复逻辑,并将规则的数量减少到一个非常小的级别(< 100): 例如:您可以在所有租户之间分享一些默认规则,让用户稍后自定义他们的规则。 自定义规则可以覆盖默认规则。 如果您仍然有疑问,请将GitHub issue发送到Casbin报告。

  2. 通过共享让Casbin 的执行者只需要加载一套小套策略规则,例如:enforcer_0 只为tenant_0 到tenant_99提供服务, enforcer_1 只为tenant_100到tenant_199提供服务。 只需要加载所有策略规则的一部分,详情请参阅 :策略子集加载 。

  3. 以授予RBAC角色权限,取代直接授予用户权限。 Casbin的RBAC是通过角色继承树来实现的(作为缓存)。 因此授予类似Alice这样的用户权限,Casbin只使用O(1) 时间查询RBAC树来获取角色用户关系并执行操作。 如果您的 g 规则不会经常改变,那么RBAC 树将不需要进行更新。 详情请参阅这条讨论: https://github.com/casbin/casbin/issues/681#issuecomment-763801583

note

您可以同时尝试以上所有方法。

← 基准测试Kubernetes的授权 →
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization