前言:
在分布式系统中,当多个线程(或进程)同时操作同一个资源时,为了保证数据一致性问题,所以就需要一种机制来确保在同一时间只有一个线程(或进程)能够对资源进行修改,这就是分布式锁的作用。
2025年06月02日
前言:
在分布式系统中,当多个线程(或进程)同时操作同一个资源时,为了保证数据一致性问题,所以就需要一种机制来确保在同一时间只有一个线程(或进程)能够对资源进行修改,这就是分布式锁的作用。
2025年06月02日
在Redis中,zet作为有序集合,可以利用其有序的特性,将任务添加到zset中,将任务的到期时间作为score,利用zset的默认有序特性,zrangewithscores可以获取score值最小的元素(也就是最近到期的任务),判断系统时间与该任务的到期时间大小,如果达到到期时间,就执行业务,并删除该到期任务,继续判断下一个元素,如果没有到期,就sleep一段时间(比如1秒),如果集合为空,也sleep一段时间。
2025年06月02日
近日遇到了一个分布锁线上问题,导致用户获取锁一直失败,被阻拦提单近2H。 bug原因是Redis setnx获取锁超时,但实际写入成功,出现超时后并没有释放锁。由于锁维度是userId维度,导致用户再次提单一直无法获取锁,提单一直失败,客服同学说:用户情绪很激动,骂骂咧咧的。
为了避免锁超时导致并发问题,系统设置的超时时间过长——2小时。这导致用户2个小时都无法提单。由于系统日订单量在千万,即便超时比例非常低,每天也会有10单以上。用户找客服投诉的意愿十分强烈,并且态度很差。
2025年06月02日
前言:
分布式锁是用于在分布式系统中实现互斥访问共享资源的一种机制。它可以确保在分布式环境下只有一个进程或线程能够获得锁,并执行关键代码段,以防止并发冲突和数据不一致性。
下面就说说通过setnx和redisson实现分布式锁的说明。
2025年06月02日
作为互联网大厂后端开发人员,在项目开发过程中,你有没有遇到过这样的问题:多个服务实例同时访问共享资源,导致数据不一致、业务逻辑混乱?没错,这就是分布式环境下常见的并发问题,而分布式锁就是解决这类问题的关键。在 Spring Boot3 的开发场景中,如何高效实现分布式锁,也成为了我们必须攻克的技术难题。
如今,随着微服务架构的广泛应用,分布式系统的复杂性不断增加。Spring Boot3 作为新一代 Java 开发框架,以其高效、便捷的特性深受后端开发人员喜爱。但在处理分布式系统的并发控制时,我们需要一套可靠的分布式锁机制,来保证系统的稳定性和数据的一致性。传统的单机锁方案在分布式环境下不再适用,因此,探索适合 Spring Boot3 的分布式锁实现方法迫在眉睫。
2025年06月02日
在现代分布式系统中,接口限流是一项至关重要的性能优化策略。通过限制一定时间窗口内的请求频率,可以有效保护后端服务免受过载冲击,保持系统的稳定性和响应速度。Redis因其高性能和丰富的数据结构特性,成为了实现限流功能的理想选择。结合Lua脚本,我们可以实现原子性的限流操作,并为存储的限流状态设置过期时间,从而进一步优化资源使用。