qcon2023广州PPT速览
19 Jul 2024
|
|
ppt在这里 https://www.modb.pro/topic/640977
只有两个感兴趣
https://wanghenshui.github.io/pdf/byconity.pdf
https://wanghenshui.github.io/pdf/antkv.pdf
AntKV: 蚂蚁实时计算 KV 分离5x性能提升实践
WiscKey的rocksdb改造工作
AntKV 核心功能
- KV分离
- 元数据管理
- 空间回收
- GC
- TTL
- 数据版本
- Checkpoint
- Ingest Value Log Files
- 特性支持
- 异步恢复Checkpoint
- Table API
- 性能优化
- Scan 优化
- 流控优化
- Learned Index
Scan优化
kv分离现状
- value 是vlog追加模式
- 访问value多一跳
- 导致scan局部性差
优化策略,并发prefetch
- 根据用户访问 Pattern 或者 Range Hint 发起异步预取
- 发挥 NVMe SSD 能力并行预取
- 利用 Block Cache 实现数据同步
新的问题
- 中等大小(如256B)Value 情况下,Scan 仍然比 RocksDB 差很多
原因
- Block 中数据不连续,磁盘带宽即便打满,大多内容都是无效数据
优化策略 Diffkv ATC 21: Differentiated Key-Value Storage Management for Balanced I/O Performance
核心思路
- 对于中等大小的 KV pairs,对 Value Log Files也进行分层处理,增强局部连续性
- Level N-2 及以下的层级不做重写
- Level N-1 及以上的层级在 Compaction 时重写Value Log Files
- 针对 Scan 优化的重写:
- Compaction 过程中,对本轮参与的 Value Log Files 进行重叠记数
- 当发现某文件重叠记数超过阈值,则标记相关文件后续进行重写
收益 写入降低30% 但scan提升巨大
这种还是要考虑业务来使用,但是这个工作是很亮眼的
借助 Learned Index 优化查询
Learned Index主要是要设计构建算法,这里需要展开一下
因为实际 SST 保存的 key 为 string 类型,非 integer,因此需要进行转换
- 要求
- 唯一性:不同的 key,转换出来的 key_digest 不能相同
- 保序性:如果 key1 < key2,那么转换后的 key_digest_1 < key_digest_2
- 问题
- 字符串长度是随机的,并且可能很长
Learned Index非常小,读效率非常高
Learned Index: 生成过程
- 在构建新的SST过程中,会缓存待写入的所有KV数据,在Finish时进行建模并持久化相关参数。
- 不会在L0构建Learned Index
- 不会对大小在阈值以下的SST进行构建
- 当不满足构建条件时,退化为默认的Binary Index
ByConity:基于云原⽣架构的开源实时数仓系
clickhouse痛点
- Shared Nothing架构
- 运维困难:扩缩容、读写分离、资源隔离困难
- 资源浪费:存储和计算⽆法独⽴扩容、弹性伸缩
- 事务⽀持缺失
- 不满⾜对数据⼀致性要求⾼的场景
- 提⾼了使⽤和运维成本
- 复杂查询性能差(如多表Join)
架构
设计考虑
- 需要统⼀的元信息管理系统
- 分布式⽂件系统⼤多数存在元信息管理压⼒问题
- 分布式统⼀存储系统⼤多不⽀持rewrite,⼀些对象存储系统甚⾄不⽀持append
- 分布式对象存储系统⼤多move代价都⽐较⾼
- io latency通常情况对⽐本地⽂件系统下都存在增加的情况
数据缓存
- ⼀致性hash分配parts
- 热数据worker节点⾃动缓存
- 改进bucket-lru算法
- 避免数据reshuffling
ByConity事务
- 隐式(开源)和显示事务(待开源)
- Read Committed 隔离级别,写不阻塞读
- 两阶段提交实现,⽀持海量数据的原⼦写⼊
- 具备灵活可控的并发控制的功能
中⼼授时服务TSO(TimeStamp Oracle)
- Timestamp ordering
- 创建事务:为事务分配开始时间t_s
- 提交事务:为事务分配提交时间t_c
- 可⻅性判断:对t_s为TS的事务,能读到所有已提交且t_c < TS的事务数据
说的东西还是非常多的,直接看pdf比我复述直观
https://wanghenshui.github.io/pdf/byconity.pdf