SecKill-SOA简介
简易在线秒杀web应用程序——升级版
用户可以在秒杀开启后进行秒杀活动;秒杀结束,阻止用户秒杀;用户成功秒杀到商品后阻止其二次秒杀;
演示:
特性
项目分为和
前端处理与用户打交道的工程,后端专门处理数据交互
由于是对之前的Seckill-Monolithic-Architecure项目进行升级,所以本项目由三个模块组成:
seckill也就是之前的版本,虽然进行了大量修改,但还是一个经典的SSM结构seckillback不关心与用户的交互,专心处理数据的模块seckillapi为seckill以及seckillback提供公共类或接口当上游数据顺利到达下游后,seckill会将消息发送到MQ,seckillback处理队列消息,进行创建订单与扣减库存,所以需要使用到RabbitMQ提供消息中间件的服务,以及Dubbo提供RPC调用服务
运行流程图:
项目整体结构图:
为确保消息%落地,额外添加brokerDB,通过定时检查该库status字段为非1的数据行并进行补偿操作,以避免后端消费MQ失败。
使用的技术
数据库:Redis、MySQL
Web框架:SpringMVC
持久层框架:Mybatis
依赖管理:Maven
版本控制:Git
容器:Spring
分布式服务框架:Dubbo
消息中间件:RabbitMQ
工具:lombok、Protostuff
安装
用IDEAopenseckill工程,然后按下ctrl+alt+shift+s打开ProjectStructure,点击Modules,点击“+”号,再点击importModule,将剩下的两个模块导入
在sql包下,执行seckill.sql与seckillback.sql,建立数据库,然后在seckill模块下的jdbc.properties文件里面修改前端要用到的数据库连接参数,以及seckillback模块下的application.properties文件里面修改后端用到的数据库
启动Redis,默认host:.0.0.1,port:;如需修改请在spring-dao.xml文件里面修改
启动RabbitMQ,使用默认参数
启动Zookeeper,使用默认参数
项目启动过程:
直接启动seckillback模块里面的SeckillmqreceiveApplication再为seckill模块添加Tomcat,部署项目并启动最后访问连接:
转载请注明:http://www.0431gb208.com/sjslczl/4585.html