XXL-JOB任务扫描活动状态

项目 

在这个抽奖系统主要干了两件需要任扫描的事, 第一个是把"已审核通过"的活动变成"进行中"状态,第二个是把"已结束"的活动关闭。 主要是通过 XXL-JOB这个分布式任务框架,比Spring自带的@Scheduled更强大。然后配置的是每10秒跑一次,扫描数据库里的活动。最后需要通过分页查询(每次查1

MQ解耦抽奖发货流程

项目 

首先我们在user_strategy_export表加了mq_state字段,用来记录消息发送状态。整个流程是这样的:当用户抽中奖品后,系统会先在数据库生成中奖记录,此时mq_state是待发送状态(0)。然后通过KafkaProducer发送发货消息,如果发送成功就把状态改成1,失败就改成2。这里

将要入夏的夜是沉醉的东风吗?

杂记 

建立规则引擎实现人群的决策量化

项目 

当时我们做抽奖系统的时候,确实遇到了人群分类的问题。最开始的做法特别粗暴,直接写了一堆if-else: if(user.getAge() > 18 && user.getGender().equals("男")){ // 给男性成年人分配A策略 } else if(user.getVipLe

颜文字

杂记 

🎩 经典老派颜文字 (´・・) (´-ι_-`) (´ー) (´Д`。) (´;ω;`) (´;д;) (´;∀;) (´;⌒;) (´・ω・) (´・・) (´・ω・`) (´・ᴗ・) 使用场景:90年代聊天室怀旧、蒸汽波氛围、略带忧郁的文艺感。

emoji大全

杂记 

💕 搭配小符号更萌 (´∀`)♡ (๑•́ ₃ •̀๑) (◕‿◕✿) (⁄ ⁄•⁄ω⁄•⁄ ⁄) (⸝⸝⸝ᵒ̴̶̷̥́ ⌑ ᵒ̴̶̷̣̥̀⸝⸝⸝) ( ˘ ³˘)♥ 表情类 🤩 🥳 🥰 😍 😻 👀 💫 🌟 ⭐️ ✨

ZooKeeper实现分布式锁


除了Redis可以实现分布式锁之外,还可以通过Zookeeper实现,它较于前者的优势是它的数据是强一致的,一般秒杀会用到。今天我们来介绍一下基于ZooKeeper实现分布式锁。😄 首先在介绍ZooKeeper实现分布式锁之前,先介绍一下ZooKeeper遵循的一个ZAB协议。专为 ZooKeep

MyBatis 的执行流程


配置加载阶段 读取配置文件:加载 mybatis-config.xml(全局配置,如数据源、插件、类型处理器等)。 加载映射文件:解析 Mapper.xml 或注解形式的 SQL 定义,生成 MappedStatement 对象(包含 SQL、参数/结果映射等信息)。 构建 SqlSession

自研数据库路由组件:实现动态数据源切换与分库分表

Java 

为什么需要分库分表? 背景 首先,抽奖活动通常会在短时间内吸引大量用户参与,导致系统瞬时请求量激增。同时,活动有明确的时间范围,需要在活动期间完成。然后还有一点是抽奖活动数据不会长期累积,活动结束后数据量相对来说是稳定的。 引入 业务体量较大,数据增长较快,所以需要把用户数据拆分到不同的库表中去,减