1.系统不是分布式 1.1.单机版系统抢单案例 // 抢取订单函数 public synchronized void grabOrder(Long orderId, Long userId) { // 获取订单信息 OrderDO order = orderDAO.get(orderId); if (Objects.isNull(order)) {…
1 . 为什么从业务上保证 1.1 消息丢失问题 RocketMQ 虽然号称消息不会丢失,但是还是有几率存在MQ宕机以及rocketMQ使用上的问题可能存在消息丢失等,对于类似于支付确认的消息一般来说是一条都不允许丢失的 1.2 消息 幂等 性 在网络环境中,由于网络不稳定等因素, 消息队列 的消息有可能出现重复,大概有以下几种: 发送时消息重复…
架构 架构始于建筑,是因为人类发展(原始人自给自足住在树上,也就不需要架构),分工协作的需要,将目标系统按某个原则进行切分,切分的原则,是要便于不同的角色进行并行工作。 为什么需要架构? 有系统的地方就需要架构,大到航空飞机,小到一个电商系统里面的一个功能组件都需要设计和架构。…
之前分享了关于Spring新项目 Spring AI 的介绍视频 open in new window 。视频里演示了关于使用Spring AI将Open AI的能力整合到Spring应用中的操作,但有不少读者提到是否有博客形式的学习内容。所以,本文就将具体介绍如何使用 Spring AI 快速让您的Spring应用拥有生成式AI的强大能力。 # 动手试试…
发现站长在偷偷维护一个开源项目: https://github.com/dyc87112/mini-pay 尝试部署了一下,还是挺不错的,就是有点可惜,目前只有微信支付,没有支付宝。希望站长大大能继续更新! 比较推荐的是,这个项目是全Spring体系,Spring死忠粉可以用来学习也不错。 技术栈 Java 17 Spring Boot 3.1.x…
1 . 生产端保障 生产端保障需要从以下几个方面来保障 使用可靠的消息发送方式 注意生产端重试 生产禁止自动创建topic 1.1 ⚠消息发送保障 1.1.1同步发送…
前言 我将我经历过的或者正在经历的状态,分成三个阶段进行总结:求生存,谋发展,修体系。 阶段一:埋头苦干求生存 作为一个服务一线业务的前端同学,支撑好业务占据我们 50%-60% 左右的 KPI,纵观行业前端本身很容易成为整个业务的资源瓶颈,而身为业务的前端我相信一定经历过疲于奔命,经常线上救火的事情。…
目前的MQ中间件从存储模型来,分为需要持久化和不需要持久化的两种模型,现在大多数的是支持持久化存储的,比如ActiveMQ、RabbitMQ、Kafka、RocketMQ。ZeroMQ却不需要支持持久化存储而业务系统也大多需要MQ有持久存储的能力,这样可以大大增加系统的高可用性。…
一、限流 为什么要进行限流? 1.瞬时流量过高,服务被压垮? 2.恶意用户高频光顾,导致服务器宕机? 3.消息消费过快,导致数据库压力过大,性能下降甚至崩溃? …… 什么是限流? 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在高并发系统中,出于系统保护角度考虑,通常会对流量进行限流。…
RocketMQ的消息投递分分为两种:一种是生产者往MQ Broker中投递;另外一种则是MQ broker 往消费者 投递(这种投递的说法是从消息传递的角度阐述的,实际上底层是消费者从MQ broker 中Pull拉取的)。 RocketMQ的消息模型 一个Topic(消息主题)可能对应多个实际的消息队列(MessgeQueue)…