分布式锁,一般都需要依赖中间件来实现,例如:Mysql、Zookeeper、Redis..... Mysql的分布式锁比较少人用。 Zookeeper的有开源框架curator。 Redis常用的是Redisson。 不同框架之间的客户端定义不一致,如果从Zookeeper切换为Redis,就需要变更代码。 期望实现一层Facade,屏蔽底层依赖的中间件,提供统一的客户端。
购买火车票、淘宝购物....这些场景,在支付的时候,都涉及了订单过期自动取消的场景(30分钟未支付,订单自动取消)。 这就像,创建订单的时候,定了一个30分钟后的闹钟;如果30分钟内支付了,则把闹钟取消;如果超过30分钟未支付,则闹钟触发,取消未支付的订单。 除了支付,在其他一些场景,也会有一次性定时任务的需求,如果一些不太重要的push提醒。 改服务就是一个支持这些定时场景的“闹钟服务”。