Kafka模式 | 纯Raft模式 | ||
---|---|---|---|
一致性瓶颈所做的事 | Only Log | Log + State Machine (B+树 or LSM树) |
分布式下一致性Consistency的代价cost |
支持外部的模式 | Half Master/Master | Stateless (计算和存储分离) |
BunnyRedis要解决Redis的一致性Consistency问题 |
Batch/Locality优化 | Log比较容易 | 可做,但难一些,特别是State Machine | 分布式思考:批发Batch是个好东西,用足它 分布式思考:近邻Locality是个好东西,用足它 |
磁盘优化 fsync/WAL/No Disk | Kafka已支持,外部系统(State Machine)需自我实现 | 可做,但现在很多未实现 | 分布式思考:我们需要fsync吗? 分布式思考:我们需要WAL吗? 分布式思考:我们需要磁盘吗? |
Failure忍耐度 | 只剩最后一个broker仍正常 | n/2+1 (n is cluster number) cluster=3: quorum=2; cluster=5: quorum=3 |
|
忍耐度为2时磁盘/网络最小倍数 | 3倍 | 5倍 | 少就是多,多就是少 |
单机磁盘写放大倍数 | 1 | 最少10(如果LSM树) | |
第三方依赖 | Zookeeper(或Raft) | 全部自我实现 | 少就是多,多就是少 |
Membership管理模式 | 独裁(效率高)和最终民主 | 全程民主 | 少就是多,多就是少 |
其他 | 还需进一步实现State Machine,但State Machine可以做到无单点限制 | 全部自我实现,但单点瓶颈过大 | BunnyRedis Kafka is Database 分布式下一致性Consistency的代价cost 少就是多,多就是少 |