KV存储-Cellar和Squirrel

Cellar和Squirrel分别是美团基于Tair和Redis进行研发的两套KV存储组件。

1、集群架构与CAP

整体来看,Cellar是存在代理节点,Squirrel是去中心化集群架构。
1.1、如何保证一致性,保证的什么层次的一致性
Squirrel是弱一致性,使用的是gossip协议,Cellar是最终一致性,使用了raft协议。
都没有达到强一致性,所以是舍弃了C。
1.2、如何保证可用性
Squirrel一个分片下多个副本,master宕机,slave立刻顶上去
Cellar同样基于分片bucket来实现多副本
另外牺牲强一致性来保证响应
1.3、如何保证分区容错
类似,多副本冗余来尽可能保证分区容错

2、数据类型

Squirrel:String,Hash,Set,SortedSet,List,HyperLogLog
Cellar:String,Hash,List,Set

3、存储引擎

Cellar:mdb + rdb / ldb
Squirrel:hash

4、路由策略

类似,都可提供master only,slave only或all
Cellar的路由表在客户端保存,异步更新
Squirrel通过CRC算法计算slot值,定位节点

5、主从复制

Cellar:binlog
Squirrel:sync和psync

6、应用场景

Squirrel的定位是缓存,面向高吞吐,低延时,高性能场景
Cellar的定位是KV数据库,面向不能容忍数据丢失,数据量大,冷热数据明显场景

7、其他

1、Squirrel的持久化:AOF ,RDB
2、Squirrel的淘汰策略
3、Cellar内存淘汰策略

你可能感兴趣的:(Data,Base)