redis
1.保证最终一致性,副本间的数据复制是异步进行,(set写 get读,redis是读写分离架构,存在主从从不延迟的情况),而且,主从切换可能导致部分数据,没有复制过去,导致数据丢失,所以要求强一致性时,推荐zk.
2.Redis各集群的方法响应时间为最低,随着并发量和业务数量上升其响应时间会明显上升,但是极限qps,可以达到最大基本无异常。
ZK
1.也无法保证完全一致性,其他原理是使用临时顺序节点,节点生命周期在client与集群的Session结束时结束。因此某个client节点存在网络问题,与zk断开连接,Session超时同样会导致错误的释放锁(导致其他线程错误的持有锁)
2.有较好的稳定性,但并发量上升,会导致qps下降
总结:
1.zk每次进行锁操作前都需要创建若干节点,完成后释放节点比较耗时
2.redis么有上述问题