主要介绍 TiCI 的一些实现。
TiCI 的设计考量
写入路径
- 确定 Compaction 的策略
- Compaction vs Split
- S3 的 SlowDown
MetaService
Shard
在 shard 的大小上,我们默认设置为 4 GiB,这样对于 80 TiB 的集群规模,会有 20k+ 个 shard。一个 shard 中有多个 fragment,fragment 之间是可以 overlap 的,我们也按照传统方法引入了 leveled compaction。
过多(小)的 shard 和 fragment,对于查询是不利的:
- 过多的 fragment,会导致每个 fragment 中的词典会很小,压缩率不高
- 此外,一个查询如果覆盖多个 fragment,就需要按照每个 fragment 的词典都过滤一遍,再 merge,这样并发上不去