分布式锁——咸鱼也能懂的Zookeeper分布式锁实现原理
Zookeeper 是一种分布式协调服务,在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。…
在这个技术方向,积累扎实的知识与实践。
共 316 篇文章Zookeeper 是一种分布式协调服务,在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。…
一、超卖问题复现 1.1 现象 存在如下的几张表: 商品表 订单表 订单item表 商品的库存为1,但是并发高的时候有多笔订单。 错误案例一:数据库update相互覆盖 直接在内存中判断是否有库存,计算扣减之后的值更新数据库,并发的情况下会导致相互覆盖发生: @Transactional(rollbackFor = Exception.class)…
作为一名 Java程序员,部署生产环境的服务器是一项基本能力要求,那么,如何部署才能做到业务无感?选择什么样的部署策略,才能将生产事故降到最低?今天我们就来一起聊聊5种常用的部署策略。 Big Bang Deploy 定义 Big Bang…
对技术人来说,面试成功的道路只有一条,就是好好准备技术基础。本文是面试系列文章架构设计篇,作者把自己的八股文和一些经验总结汇总在一起,供大家参考。 一、社区系统的架构 系统拆分…
业务实现消费回调的时候,当且仅当此回调函数返回 ConsumeConcurrentlyStatus.CONSUME_SUCCESS ,RocketMQ才会认为这批消息(默认是1条)是消费完成的 如果这时候消息消费失败,例如数据库异常,余额不足扣款失败等一切业务认为消息需要重试的场景,只要返回…
随着 RocketMQ 5.1.0 的正式发布,多级存储作为 RocketMQ 一个新的独立模块到达了 Technical Preview 里程碑:允许用户将消息从本地磁盘卸载到其他更便宜的存储介质,可以用较低的成本延长消息保留时间。本文详细介绍 RocketMQ 多级存储设计与实现。 设计总览 RocketMQ 多级存储旨在 不影响热数据读写的前提下…
文件刷盘机制 RocketMQ 的消息是存储在磁盘上的,这样做有两个优点: 保证断电后恢复 让存储的消息量超出内存的限制 RocketMQ 存储与读写是基于 JDK NIO 的内存映射机制,具体使用 MappedByteBuffer(基于MappedByteBuffer 操作大文件的方式,其读写性能极高)RocketMQ…
1 . 为什么从业务上保证 1.1 消息丢失问题 RocketMQ 虽然号称消息不会丢失,但是还是有几率存在MQ宕机以及rocketMQ使用上的问题可能存在消息丢失等,对于类似于支付确认的消息一般来说是一条都不允许丢失的 1.2 消息 幂等 性 在网络环境中,由于网络不稳定等因素, 消息队列 的消息有可能出现重复,大概有以下几种: 发送时消息重复…
架构 架构始于建筑,是因为人类发展(原始人自给自足住在树上,也就不需要架构),分工协作的需要,将目标系统按某个原则进行切分,切分的原则,是要便于不同的角色进行并行工作。 为什么需要架构? 有系统的地方就需要架构,大到航空飞机,小到一个电商系统里面的一个功能组件都需要设计和架构。…
1 . 生产端保障 生产端保障需要从以下几个方面来保障 使用可靠的消息发送方式 注意生产端重试 生产禁止自动创建topic 1.1 ⚠消息发送保障 1.1.1同步发送…