https://zhuanlan.zhihu.com/p/382477856
论文: https://dl.acm.org/doi/pdf/10.1145/3448016.3457565
问题
- 写吞吐 (千万级 QPS)
- 租户
1000+( ) 业务上, - 读写
PB+( ) - 低延迟写入+实时的数据可见性
在这个基础上尽可能的降低成本
对比开源方案
HBase
另外上面的结构都是
- Druid: 支持查询丰富
但是只能异步读写, - Amazon S3(这个不是对象存储么
) 按照租户分割: 不够经济,
结构体系
云分布式数据库
- Shared Nothing
利用本地存储, 写扩展性好, 但是存储和计算资源耦合, 不经济, 例如。 ES: - Shared Storage
解耦计算和存储资源, 由下层存储来做数据复制, 物化、 但是写吞吐有限, 例如。 PolarDB: - Shared Data
同样解耦计算和存储资源, 但是使用对象存储, 优点是存储便宜。 缺点是对象存储, 写延迟高, 例如。 SnowFlake:
问题
LogStore
具体结构
Controller
用
Query 层
SLB 负载均衡到 Broker
Execution 层
Worker
- 本地写
写。 复制到其他, LogStore。 。 - 远程归档
异步转换成, 写入到, 。
云存储层
问题: OSS
OSS 优势
问题
问题
多租户
策略
LogBlock
压缩+列存索引+自恰
特点是全文索引+可
LoadBalance
自动化的减少热点数据
想法
论文着墨比较多的是
- 读写分别设计数据结构优化
但是没想清楚异步写怎么保证实时可见性。 有点矛盾, 。 - 用
避免了, OSS。 论文里也写了好几个解决放方法, 比如元数据和日志数据打包在一起避免遍历大量小文件, 并发读取解决读延迟, 。 - 多租户的
写数据结构放在一起: 减少空间浪费, 读数据结构隔离起来。 避免浪费读吞吐, 。