项目名称:畅购商城 开发环境:JDK1.8+IDEA +Maven4.0+MySQL 采用技术:SpringBoot,SpringCloud,Mybatis,Thymeleaf,Nginx 项目描述:该商城是一个基于 SpringCloud 的微服务 B2C 电商项目,支持用户在线浏览、搜索商品,将喜欢的 商品加入购物车下单购买,用户可以参与在线秒杀,支持第三方登陆,支持支付宝、*、银联等在线支付。该 项目采用微服务架构,使用 Gateway 作网关,使用令牌桶算法实现网关限流,项⽬采⽤了 SpringSecurity OAuth2.0+JWT 解决了各个微服务之间的单点登录和用户授权,采⽤用了 Elasticsearch 解决了海量商品的实时 检索,数据存储采用了 MySQL,并结合 Canal 实现数据同步操作,利用 Redis 做数据缓存操作,使用 RabbitMQ 实现分布式事务,保证最终一致性。各个微服务之间采⽤RabbitMQ 实现异步通信。 责任描述:我主要参与过商品首页、秒杀系统、商品微服务等模块开发
参与商品微服务的开发,该微服务主要是针对商品的一些基本服务,如 sku、spu、品牌、规格等操作。
商品首页部署在 nginx 中,提高并发性能,nginx 采用漏桶算法限流,商品首页中广告位、商品分类使用 OpenResty+Lua 脚本+Redis 缓存预热、多级缓存,提高性能,避免缓存穿透。
秒杀系统由定时任务每天凌晨开始扫描秒杀商品表,将前一天用户添加的秒杀商品添加到 redis 缓存中,同时 库存也添加到缓存中,由缓存中数据生成各个时段的秒杀商品栏。下单时候首先在 redis 缓存中预扣减库存,预 扣减库存会执行 redis 中原子性的 decr 操作,得到返回值大于 0 则有库存,然后使用 RabbitMQ 中间件实现异 步下单。基于 RabbitMQ 的 confirm、ACK 机制保证消息可靠性。基于 Redis 令牌桶算法使用自定义注解+AOP 切面增强实现秒杀接口限流。