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值,定位节点