日志分区(Shard)是日志服务中数据保存和读写的最小单元,每个分区具备一定的数据读写能力。
日志主题由一个或多个日志分区构成,每个日志主题均以 MD5 作为主题中所有分区的总范围,每个分区提供一定的数据读写能力。您可以在创建日志主题时指定分区数量,日志服务也支持通过自动分裂分区功能或手动分裂分区功能来动态扩充当前日志主题的数据读写性能。分区分裂等管理操作会改变分区的状态,但日志服务仅对于读写状态的分区计费。
每个日志分区(Shard)均提供一定的读写能力,详细说明请参考下表。
说明
非强制性要求,数据读写超出日志分区的读写能力时,系统会尽可能提供服务,但不承诺服务质量。
限制项 | 限制 |
---|---|
读 QPS | 100 次/秒 |
写 QPS | 500 次/秒 |
读流量 | 20 MiB/s |
写流量 | 5 MiB/s |
分区数量会产生一定费用,请根据业务流量合理规划分区数量,建议设置较小的分区数量,并开启分区自动分裂功能,日志服务会在分区持续超出读写能力 5 分钟自动分裂分区,提供更大的读写性能,避免空闲分区分区数量过多造成不必要的费用。
日志主题以 MD5 的取值范围作为整体范围,日志主题中所有读写状态的分区范围为左闭右开的区间,共同构成整个日志主题的 MD5 范围。创建日志主题时需要指定分区数量,日志服务会根据分区数量自动平均划分整个主题的 MD5 范围。分区也可以执行分裂操作,分裂出来的两个新分区会覆盖原分区的 MD5 范围。
通过日志服务 API 读取数据时,需要指定数据所在的分区 ID。您可以在控制台主题详情页面查看主题中每个分区 ID,或通过 DescribeShards 查看日志主题的分区列表。
写入数据时,可以选择负载均衡模式或通过 HashKey 模式。
例如名为 NewTopic 的日志主题中包含3个读写状态的分区和 1 个只读状态的分区,分区 ID、状态及范围如下:
分区ID | 状态 | 范围 |
---|---|---|
分区0 | 读写 | [00000000000000000000000000000000,80000000000000000000000000000000) |
分区1 | 只读 | [80000000000000000000000000000000,ffffffffffffffffffffffffffffffff) |
分区2 | 读写 | [80000000000000000000000000000000,c0000000000000000000000000000000) |
分区3 | 读写 | [c0000000000000000000000000000000,ffffffffffffffffffffffffffffffff) |
如果写入数据时指定 MD5 的 Key 为 5F,则数据将被写入包含 5F 的 0 号分区中;当您写入数据时指定 MD5 的 Key 值为 8C 时,则数据将被写入包含 8C 的 2 号分区中。
日志服务提供以下两种状态的分区:
创建日志主题时,所有分区均为读写状态。分区分裂后,原读写状态的分区会转为只读状态,不支持写入新的数据。同时也会产生多个读写状态的新分区,用于承担后续的数据写入流量。
日志服务支持分裂分区功能,当某个读写状态的分区数据流量超过其服务能力时,可以进行分裂分区操作,即将该分区分裂为多个小范围的分区,从而扩大日志主题的整体读写能力。分裂分区后,原分区的 MD5 范围不变,同时转为只读状态,并在其中的数据过期删除后自动删除。同时分裂操作会产生多个读写状态的新分区,新分区均分原分区的 MD5 范围。
日志服务支持手动分裂分区和自动分裂分区。
说明
推荐开启分区自动分裂功能,以免数据量超出分区的读写能力,触发数据写入流量限制。
本文档以创建日志主题后再开启自动分裂功能为例,创建日志主题时设置自动分裂功能的操作请参考日志主题。
登录日志服务控制台。
在顶部导航栏中,选择日志服务所在的地域。
在左侧导航栏中,选择资源管理 > 日志项目。
在日志项目页面,找到指定的日志项目,并单击项目名称。
在日志主题页签中,找到指定的日志主题,在其操作列单击编辑。
重新设置自动分裂功能相关的参数。
参数 | 说明 |
---|---|
自动分裂日志分区 | 是否开启分区的自动分裂功能。
|
最大分裂数 | 分区的最大分裂数,即分区分裂后,所有读写分区的最大数量。取值范围为 1~50,默认为 50。 说明
|
单击确定。
操作步骤如下:
创建日志主题后,您可以在日志主题的详情页面中查看分区列表。
登录日志服务控制台。
在顶部导航栏中,选择日志服务所在的地域。
在左侧导航栏中,选择资源管理 > 日志项目。
在日志项目页面,找到指定的日志项目,并单击项目名称。
在日志主题页签中,单击指定日志主题的名称。
在分区列表区域,查看分区列表。
展示项 | 说明 |
---|---|
分区编号 | 分区在日志主题中的唯一编码,由日志服务后台指定。在日志服务中,分区编号从 0 开始。 |
状态 | 分区的状态,包括:
|
分区范围 | 分区的 MD5 范围。每个区间范围均为左闭右开区间。 |
停止写入时间 | 日志数据在当前分区中最后一次写入数据的时间。 |