Skip to content
gqlxj1987's Blog
Go back

Bytable Intro

Edit page

原文链接

我们团队最初使用 Bigtable 的开源实现 HBase 为搜索业务提供服务。在全网链接关系的实时更新需求下需要提供足够高的可用性和足够低的延时,由于其数据量极其庞大所以会创建极多的数据分片,集群的整体尾延时和可用性会随着数据分片实例数的增多而成指数级别的恶化

image-20200707103956031

master/placement driver/tablet server

当前市面上大部分系统比如 MySQL, MongoDB, TiDB, CockroachDB 等,在写日志时都会写入复制日志和引擎日志两份日志,在 HDD 盘的场景下往往会造成分别写入两份日志时写流量放大一倍并且使磁头频繁发生摇摆,制约写入性能。为此,研发了一套 WAL 存储引擎,进行多组复制日志的合并,实现了仅一次的日志写入,不会造成 HDD 盘磁头摇摆,不进行 Compaction 时也可以打满 HDD 盘的写入带宽。

我们为每一个 SST 在 Flush 和 Compaction 的过程中手工生成一个 BloomFilter 存储在其 TableProperty 中,并关闭了内置的 BloomFilter 以节省空间。

针对热点写入优化,RocksDB MemTable,写入时仅写入队列中实现了 O(1) 复杂度的在线写入,靠后台线程池将数据并发的写入实际的 SkipList 中,在读取的时候使用 ReadIndex 的机制进行等待


Edit page
Share this post on:

Previous Post
Ormb Intro
Next Post
Fiber Intro