1.redis 按照一个key是否过期+lua脚本实现,官网推荐redlock算法的落地产品redisson
2.zookeeper 按照一个zk里面只可以有且仅有一个znode节点,加锁成功就是建立一个节点,到期使用完了,自己删除
3.这两者为了避免单点故障,一般三台机器,zk是全体同步才返回消息,redis异步通知,容易出现master宕机后,slave上位但锁丢失的情况。