项目名称:营销活动平台 - Lottery 微服务抽奖系统
系统架构:以 DDD 领域驱动设计开发,微服务拆分的分布式系统架构
核心技术:SpringBoot、MyBatis、Dubbo、MQ、MySQL、XDB-Router、Redis、xxl-job
项目描述 抽奖系统是营销平台的重要微服务之一,可以满足 C 端人群的需求,例如拉新、促活、留存等。该系统运用抽象、分治和 DDD 知识,拆解服务边界,凝练领域服务功能。围绕抽奖服务建设领域服务,包括规则引擎、抽奖策略、活动玩法、奖品发放等。这可以满足业务产品快速迭代上线的需求,同时减少研发成本,提高交付效率。
主要职责:
• 构建以 DDD 分层结构的处理方式,搭建整个抽奖系统架构。
• 运用设计原则和工厂、组合、策略、模板方法等设计模式的综合使用,定义抽奖过程标准和实现对应的多类型抽奖的服务模块,搭建和开发方便维护和易于迭代的系统工程。
• 因活动秒杀的并发场景,将秒杀从最开始的数据库行级锁优化为Redis Key加锁,又从 Redis Key 的独占锁,优化为滑块锁。优化后整体秒杀有了非常可观的性能提升。
• 解耦抽奖流程,把抽奖和发奖用MQ消息串联起来,避免一个流程太长,导致用户一直等待。
• 鉴于系统内有较多的规则策略过滤,包括准入、人群、风控、A/BTest等需求,为适应系统规模可快速开发和使用的方式,搭建了去中心化的量化人群规则引擎组件。通过业务需求对逻辑的扩展和内置引擎执行器的使用,完成自由组合的人群过滤服务。这降低了共性功能重复开发所带来的成本问题,并提高了研发效率。