You need to enable JavaScript to run this app.
导航

管理分区

最近更新时间2023.11.09 13:55:59

首次发布时间2022.09.15 14:39:24

日志分区(Shard)是日志服务中数据保存和读写的最小单元,每个分区具备一定的数据读写能力。

分区概述

日志主题由一个或多个日志分区构成,每个日志主题均以 MD5 作为主题中所有分区的总范围,每个分区提供一定的数据读写能力。您可以在创建日志主题时指定分区数量,日志服务也支持通过自动分裂分区功能或手动分裂分区功能来动态扩充当前日志主题的数据读写性能。分区分裂等管理操作会改变分区的状态,但日志服务仅对于读写状态的分区计费。

读写能力

每个日志分区均提供一定的读写读写能力,详细说明如下:

限制类别

限制项

限制

频控

读 QPS

100 次/秒

写 QPS

500 次/秒

流控

读流量

5 MiB/s

写流量

5 MiB/s

分区数量会产生一定费用,请根据业务流量合理规划分区数量,建议设置较小的分区数量,并开启分区自动分裂功能,日志服务会在分区持续超出读写能力 5 分钟自动分裂分区,提供更大的读写性能,避免空闲分区分区数量过多造成不必要的费用。

分区范围

日志主题以 MD5 的取值范围作为整体范围,日志主题中所有读写状态的分区范围为左闭右开的区间,共同构成整个日志主题的 MD5 范围。创建日志主题时需要指定分区数量,日志服务会根据分区数量自动平均划分整个主题的 MD5 范围。分区也可以执行分裂操作,分裂出来的两个新分区会覆盖原分区的 MD5 范围。
通过日志服务 API 读取数据时,需要指定数据所在的分区 ID。您可以在控制台主题详情页面查看主题中每个分区 ID,或通过 DescribeShards 查看日志主题的分区列表。
写入数据时,可以选择负载均衡模式或通过 HashKey 模式。

  • 负载均衡模式:(默认)每个数据包随机写入当前可用的任一读写状态分区中。
  • HashKey 模式:指定 MD5 的Key值,将数据写入分区范围包含该 Key 值的分区中。

例如名为 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 范围。
日志服务支持手动分裂分区和自动分裂分区。

  • 自动分裂:开启自动分裂功能后,如果某个读写状态的分区持续超过服务能力 5 分钟,日志服务会自动分裂分区。您可以在创建日志主题或修改日志主题时开启自动分裂功能,并指定最大分裂数量。自动分裂分区的操作步骤请参考自动分裂分区
  • 手动分裂:创建日志主题后,如果未开启自动分裂功能,观测到日志主题读写流量超出服务能力时,建议根据业务量及时手动分裂分区。手动分裂分区的数量限制同样受最大分裂数量影响。手动分裂分区操作步骤请参考手动分裂分区

说明

推荐开启分区自动分裂功能,以免数据量超出分区的读写能力,触发数据写入流量限制。

自动分裂分区

本文档以创建日志主题后再开启自动分裂功能为例,创建日志主题时设置自动分裂功能的操作请参考日志主题

  1. 在左侧导航栏中选择日志服务 > 日志项目管理

  2. 找到指定的日志项目,单击项目名称。

  3. 日志主题区域,找到指定日志主题,在其操作列单击编辑

  4. 重新设置自动分裂功能相关的参数。

    参数

    说明

    自动分裂日志分区

    是否开启分区的自动分裂功能。

    • 开启:当写入的数据量持续超过已有分区服务能力 5 分钟后,日志服务会根据数据量自动分裂分区以满足业务需求,但分裂后的分区数量不可超出最大分裂数。 最近 15 分钟内分裂出来的新分区不会自动分裂。
    • 关闭:不开启分区的自动分裂。

    最大分裂数

    分区的最大分裂数,即分区分裂后,所有读写分区的最大数量。取值范围为 1~50,默认为 50。

    说明

    • 仅在开启自动分裂日志分区时需要设置最大分裂数。
    • 最大分裂数必须大于当前的日志分区数量,否则日志服务无法自动分裂分区。
  5. 单击确定

手动分裂分区

操作步骤如下:

  1. 在左侧导航栏中选择日志服务>日志项目管理
  2. 找到指定的日志项目,单击项目名称。
  3. 日志主题区域,单击指定的日志主题名称。
  4. 分区列表区域,找到指定的分区,在其操作列单击分裂
  5. 填写分裂数量。
    • 分裂数量应为非零偶数,例如 2、4、8 或 16。
    • 分裂后读写状态分区总数不能超过 50 个。
  6. 点击确认

查看分区列表

创建日志主题后,您可以在日志主题的详情页面中查看分区列表。

  1. 在左侧导航栏中选择日志服务 > 日志项目管理

  2. 找到指定的日志项目,单击项目名称。

  3. 日志主题区域,单击指定的日志主题名称。
    日志主题的详情页面中展示当前主题中的分区列表,其中包含分区编号等信息。

    展示项

    说明

    分区编号

    分区在日志主题中的唯一编码,由日志服务后台指定。在日志服务中,分区编号从 0 开始。

    状态

    分区的状态,包括:

    • 读写:当前分区可写入、读取数据。该状态的分区通常是被创建或分裂出来的新分区。
    • 只读:当前分区中的数据只能被消费,不可写入新的数据。该状态的分区通常是经过分裂操作的旧分区。

      说明

      只读状态的分区不计费。

    分区范围

    分区的 MD5 范围。每个区间范围均为左闭右开区间。

    停止写入时间

    日志数据在当前分区中最后一次写入数据的时间。