开发者社区> 问答> 正文

日志的分区范围是多大?


Logstore读写日志必定保存在某一个分区(Shard)上。每个日志库(Logstore)分若干个分区,每个分区由MD5左闭右开区间组成,每个区间范围不会相互覆盖,并且所有的区间的范围是MD5整个取值范围。

分区范围


创建Logstore时,指定分区个数,会自动平均划分整个MD5的范围。每个分区均有范围,可用MD5方式来表示,且必定包含于以下范围中:[00000000000000000000000000000000,ffffffffffffffffffffffffffffffff)。
分区的范围均为左闭右开区间,由以下Key组成:

  • BeginKey:分区起始的Key值,分区范围中包含该Key值
  • EndKey:分区结束的Key值,分区范围中不包含该Key值

分区的范围用于支持指定Hash Key的模式写入,以及分区的分裂和合并操作。在向分区读写数据过程中,读必须指定对应的分区,而写的过程中可以使用负载均衡模式或者指定Hash Key的模式。负载模式下,每个数据包随机写入某一个当前可用的分区中,在指定Hash Key模式下,数据写入分区范围包含指定Key值的分区。
例如,某Logstore共有4个分区,且该Logstore的MD5取值范围是[00,FF)。各个分区范围如下表所示。
分区号范围
Shard0[00,40)
Shard1[40,80)
Shard2[80,C0)
Shard3[C0,FF)

当写入日志时,通过指定Hash Key模式指定一个MD5的Key值是5F,日志数据会写入包含5F的Shard1分区上;如果指定一个MD5的Key值是8C,日志数据会写入包含8C的Shard2分区上。

展开
收起
轩墨 2017-10-20 14:10:32 2495 0
0 条回答
写回答
取消 提交回答
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载