Design KV Store
Design KV Store
1. Scenario
a. Storage Estimate: 100TB, QPS Estimate: 100k (sharding is necessary)
b. Architecture Selection (High Availability: Peer to Peer, 因为如果用master slave pattern,当master down了需要重新选择master的时候,写变得不available, High Consistency: Master-Slave)
2. Service
a. Read
同样是Big Table的方法
先检查内存的skiplist有没有
通过bloom fileter(false is always false)检查是否在sstable里
然后利用index找sstable的data
b. Write
用Bigtable的写方法,先写到log,再写到内存,然后size到达一个阈值则将内存的memtable flush到disk。disk的数据定期通过merge sort做一个compaction
c. Detele
用tombstone mark 被delete的record,在compaction的时候才将不需要的数据删除
d. Tunable Consistency
3. Storage
4. Scale
a. 如何sharding: Consistent Hashing
b.怎么做replication: Consistent Hashing
c. node down了怎么办
Last updated
Was this helpful?