跳到主要内容
版本:latest

租户资源限制

当前 CnosDB 的资源隔离是租户级别的,共有两类限制:一类是限制租户创建的对象;一类是限制租户读写数据的大小和次数。两类限制均可通过同一种 SQL 来进行设定,并且该 SQL 只能由最高权限用户使用。

语法

alter tenant <tenant_name> set
object_config
max_users_number = <num>
max_databases = <num>
max_shard_number = <num>
max_replicate_number = <num>
max_retention_time = <num>,
coord_data_in
remote_max = <num>
remote_initial = <num>
remote_refill = <num>
remote_interval = <num>
local_max = <num>
local_initial = <num>,
coord_data_out
...
coord_queries
...
coord_writes
...
http_data_in
...
http_data_out
...
http_queries
...
http_writes
...
;

参数说明

  • tenant_name:租户名称。

  • comment:对租户的描述。

  • drop_after:指定租户的有效时间,格式为 '1d' 表示1天等。

  • 其余参数:属于 _limiter 租户资源限制的内容,具体分类为:

    • 对象限制 object_config:租户对象的数量及存储限制。

    • 读写限制 request_config

      • 协调层配置
        • coord_data_in:租户的协调层数据输入配置,包括 remotelocal 两种资源限制设置。
        • coord_data_out:租户的协调层数据输出配置,包括 remotelocal 两种资源限制设置。
        • coord_queries:租户的协调层查询配置,包括 remotelocal 两种资源限制设置。
        • coord_writes:租户的协调层写入配置,包括 remotelocal 两种资源限制设置。
      • HTTP 层配置
        • http_data_in:租户的 HTTP 层数据输入配置,支持 remotelocal 限制。
        • http_data_out:租户的 HTTP 层数据输出配置,支持 remotelocal 限制。
        • http_queries:租户的 HTTP 层查询配置,支持 remotelocal 限制。
        • http_writes:租户的 HTTP 层写入配置,支持 remotelocal 限制。

object_config ,对象限制,包含以下参数:

参数名描述必选单位
max_users_number指定租户下的用户(成员)最多有多少个,设置为null时,表示无限制。
max_databases指定租户下的数据库最多有多少个,设置为null时,表示无限制。
max_shard_number指定租户下的数据库最多能创建多少shard,设置为null时,表示无限制。
max_replica_number指定租户下的数据库最多能创建多少replica,设置为null时,表示无限制。
max_retention_time指定租户下的数据库的TTL参数,最多可设置多大,当为null时,表示无限制。

示例:

object_config
max_users_number= 1
max_databases= 3
max_shard_number= 2
max_replicate_number= 2
max_retention_time= 30
,

request_config 读写请求限制,包含以下配置项:

参数名描述必选
coord_data_in协调层数据输入限制
coord_data_out协调层数据输出限制
coord_queries协调层查询限制
coord_writes协调层写入限制
http_data_inHTTP 层数据输入限制
http_data_outHTTP 层数据输出限制
http_queriesHTTP 层查询限制
http_writesHTTP 层写入限制

其中参数限制是通过令牌桶算法实现的,共由两部分组成:一个是 meta 上的远程令牌桶,由 remote_max remote_initial remote_refill remote_initial 指定,另一个是 data 上的本地令牌桶,由 local_max local_initial 指定,令牌的单位是字节。

令牌桶 包含以下参数:

参数名描述必选单位
remote_max远程桶最大令牌数
remote_initial远程桶初始令牌数
remote_refill填充令牌数量
remote_interval填充间隔(毫秒)ms
local_max本地桶最大令牌数
local_initial本地桶初始令牌数

下面令牌桶设置示例表示,每100毫秒允许10KB数据大小写入,每100毫秒允许10KB数据大小写出;

数据写入设置示例

coord_data_in   remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_data_out remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,

整体示例

create tenant test;
alter tenant test set
object_config
max_users_number = 1
max_databases = 3
max_shard_number = 2
max_replicate_number = 2
max_retention_time = 30,
coord_data_in remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_data_out remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_queries remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
coord_writes remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_data_in remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_data_out remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_queries remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0,
http_writes remote_max = 10000
remote_initial = 0
remote_refill = 10000
remote_interval = 100
local_max = 10000
local_initial = 0
;