分布式交易平台是一个供用户间进行交易的平台,用户可以在这里发布商品,其他用户可以对商品进行秒杀。
本项目是闲置交易平台的分布式版本,演示项目。该项目在一体化项目基础上将服务根据功能进行了拆分,拆分为了五个主要的微服务:用户服务,商品服务,订单服务,充值服务和通知服务。并将通用功能抽离到共享的模块中。
- 使用 SpringBoot 构建各服务
- 使用 SpringCloud 进行服务间通信
- 使用 MySql 存储数据
- 使用 Redis 缓存数据
- 使用 RabbitMQ 作为消息中间件在服务间异步通信
下单后将排队处理订单
秒杀成功
重复下单
使用消息驱动的模式,处理订单时将各自服务完成后的消息发送到队列,由下一个处理消息的服务取出,继续进行处理。利用 RabbitMQ ACK 机制和持久化机制确保生产者消息一定能投递到队列,消费者开启手动确认,在业务处理完成后发送确认消息,同时使用消息表来记录每个服务已处理的信息,保证消息处理幂等。在某个服务出现异常时向订单失败队列投递消息,由订单服务对已处理的内容进行回滚。保证该流程的最终一致性。