核心数据平台Scale 套餐(租户登记表)

多租户 SaaS 后端

用一个集群服务众多客户,每个客户通过 ACL 被限制在自己的键内,并由租户登记表记录谁属于哪里。

每台服务器的租户数
256
键模式实现隔离
ACL
用户与配额记录
按租户
步骤 1 / 5
登记租户

随租户一起记录的 id、显示名称和配额值。

示例会话playing
# 登记租户
hotkv> TENANT.CREATE acme "Acme Corp" MAX_MEMORY 1073741824 MAX_KEYS 1000000
OK

使用真实 HotKV 命令和示例回复的动画演示。点击任意步骤即可跳转。 命令和回复保持英文,与您在 HotKV 中输入和看到的完全一致。

问题所在

为每位客户各运行一个缓存或数据存储,成本高、运维也痛苦,但共用一个就意味着客户之间需要强隔离,还需要记录哪些用户属于哪位客户。

HotKV 如何解决

带键模式的 ACL 用户把每个租户的应用限制在其自己的键前缀之内。租户登记表记录哪些用户属于哪个租户,以及配额值。登记表在集群的每个节点上都完全相同。

逐步演示

逐条命令,看看发生了什么

  1. 01

    登记租户

    随租户一起记录的 id、显示名称和配额值。

    TENANT.CREATE acme "Acme Corp" MAX_MEMORY 1073741824 MAX_KEYS 1000000
  2. 02

    限制其用户

    该 ACL 用户只能访问 acme: 之下的键,并且不能执行危险命令。

    ACL SETUSER acme-app on >s3cret ~acme:* +@all -@dangerous
  3. 03

    把用户绑定到租户

    登记表记录哪些用户属于哪个租户。

    TENANT.BIND acme acme-app
  4. 04

    隔离的实际效果

    acme 的应用读取自己的键。读取 globex 的键会被 ACL 拒绝。

    GET globex:billing:plan
  5. 05

    读取租户记录

    为该租户记录的配额值。在当前版本中,用量计数器不会由客户端流量填充,因此显示为 0。

    TENANT.STATS acme
适用场景

真实场景

B2B SaaS

每位客户的缓存和会话数据存放在共享集群上各自的前缀之下,由 ACL 隔离。

代理商与经销商

客户项目就是拥有各自用户的租户,因此可以按客户授予和撤销访问权限。

内置功能

您将获得

键模式隔离

ACL 用户被限制在一个键前缀和一组命令之内。

ACL SETUSER

租户登记表

包含名称、状态、配额值和绑定用户的租户,在每个节点上都相同。

TENANT.CREATETENANT.BIND

租户记录

每个租户的名称、状态、配额值和绑定用户。

TENANT.INFOTENANT.STATS

将租户拒之门外

停用该租户的 ACL 用户。

ACL SETUSER off

常见问题

配额值会被强制执行吗?

不会。它们会被记录并显示在 TENANT.STATS 中,但 HotKV 不会在命令上强制执行,而且在当前版本中用量计数器不会由客户端流量填充。隔离来自 ACL 规则。

暂停租户会阻止它吗?

TENANT.SUSPEND 只是为您的工具记录一个状态。要把租户的用户拒之门外,请用 ACL SETUSER 停用他们。

哪些套餐包含此功能?

ACL 在所有套餐中均可使用。租户登记表包含在 Scale 套餐中。

相关用例

在您自己的工作负载上试试

HotKV 兼容 Redis 协议,您可以把现有客户端指向它,运行这些相同的命令。