帮助用户完成互联网在线购票,提高居民买票效率以及减少售票人员工作。项目基础架构采用 JDK17、SpringBoot3 和
SpringCloud Alibaba 构建,完成会员注册、车票查询、车票下单以及支付等业务。底层采用缓存、消息队列以及分库分表
等技术支持海量用户购票以及数据存储。
技术架构
核心技术:SpringBoot + SpringCloudAlibaba + RocketMQ + ShardingSphere + Redis + MySQL + Sentinel + Hippo4j
在票务系统开发中,为提升系统性能、保障数据一致性和应对高并发场景,采用了一系列针对性的技术方案:
责任链模式优化请求校验:运用责任链模式对查询购票、车票下单、支付结果回调等业务的数据准确性检验流程进行重构,
让各检验环节职责分明,增强系统的可维护性与扩展性,确保请求数据准确无误地进入后续处理流程。
RocketMQ 延时消息管理订单状态:借助 RocketMQ 的延时消息特性,当用户购票后 10 分钟内未完成支付,系统能够自动
触发取消订单操作,实现订单状态的精准管理,提升资源利用率。
缓存组件库解决穿透难题:精心封装缓存组件库,在用户注册环节,有效避免因用户名需全局唯一而引发的缓存穿透问题,
极大减轻了数据库的访问压力,提升系统响应速度。
BinLog 与 RocketMQ 保障数据同步:利用 BinLog 结合 RocketMQ 消息队列,实现 MySQL 数据库与 Redis 缓存之间的数
据最终一致性。在数据更新时,及时将变更信息同步到缓存,确保业务数据的准确性和实时性。
Redis Lua 脚本实现令牌限流:充分利用 Redis Lua 脚本的原子特性,为用户分配购票令牌。通过令牌机制对海量购票请求
进行限流,有效应对高并发场景,保障系统在大流量冲击下的稳定运行。
复合分片算法实现订单分库分表:采用订单号和用户信息的复合分片算法对订单数据进行分库分表处理。该方案既支持基于
订单号的查询,也支持以用户为维度的查询,显著提升数据存储和查询的效率。
关联表设计助力车票查询:创建订单明细与乘车人的关联表,并沿用与订单相同的分库分表规则。这使得乘车人通过账号登
录后,能够便捷地查询本人车票信息,优化用户体验。