2 Star 2 Fork 1

幽灵柯南/platform-open

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

本项目持续完善中... 具体技术 详解&业务设计,参见WIKI

1.项目说明

  • 本项目基于SpringCloud Hoxton.SR8 &SpringCloud Alibaba 2.2.3.RELEASE 最新版;
  • 关于SpirngCloud、SpringCloudAlibaba、SpringBoot 三者的版本依赖关系 参见SpringCloud官方文档
  • 本项目可以作为微服务架构,整合了nacos、rocketmq、sentinal、feign、redis、redisson、jjwt、mybatis等常见微服务组件
  • 网关采用Spring Cloud Gateway 是另外一个单独的项目
  • 本项目以商城秒杀下单为例,使用Redission分布式锁控制库存扣减,RocketMq进行异步、削峰处理、以及用事务消息实现分布式事务等
  • 基于Redis的幂等性方案
  • 全局统一异常处理
  • 业务:秒杀&优惠券&微信支付&商品配置&订单
  • 设计模式:工厂模式、策略模式、模板方法、状态机模式等

2.秒杀介绍

  • 秒杀的难点
    • 瞬时流量
    • 防止库存超卖
    • 吞吐量
  • 流量预估
    • 如何预估秒杀峰值?
    • 每个订单对象大小估算?
    • 带宽估算?
  • 优化
    • 秒杀下 JVM如何优化
    • 如何快速定位线上问题
    • 如何压测?

3.秒杀架构演变

  • V1.0 单机环境下早期采用数据库的悲观锁 for update进行控制 or ReentrantLock synchronized
  • V2.0 分布式环境下 采用分布式锁进行控制库存扣减
  • V3.0 微服务高并发环境下,采用redis+mq 多级缓存、异步、削峰

4.秒杀解决方案

  • 业务尽可能简单,能取缓存就从缓存取(可以是多级缓存),减轻mysql的压力
  • 采用mq异步,削峰,控制入库的数量
  • 流量拦截,尽可能将请求拦截在上游,比如参数校验,黑名单校验等业务校验
  • 前端
    • 秒杀倒计时(甚至有部分电商,各用户看到的倒计时都不一样)
    • 页面静态化
    • 防止重复点击
    • 隐藏url
  • 网关拦截
    • 校验token
    • 接口防刷 (防黄牛 - 风控机制)
    • 幂等性校验

5. 项目架构图

系统架构

6. 技术栈

  • SpringCloud Hoxton.SR8
  • SpringCloud Alibaba 2.2.3.RELEASE
  • nacos
  • open feign
  • Ribbon
  • Redis
  • Redisson
  • RocketMq 4.7.1
  • Sentital
  • ElasticSearch
  • Spring Cloud Gateway
  • JWT
  • Mybatis
  • mybatis-plus 3.4.0
  • jackson
  • HikariCP
  • kaptcha
  • Swagger

7. 工程结构

基于maven的多module模块,如果要加入其它微服务模块,直接添加即可

8. 秒杀业务时序图

参数校验-->redis库存预扣减-->发送下单消息到MQ-->提示订单处理中 订阅者-->拉取下单消息-->真实库存扣减…&下单入库

9. 业务功能模块

  • 秒杀业务
    • 秒杀场次列表 - 待实现
    • 秒杀活动,一个活动包含秒杀起止时间、活动名称等
    • 秒杀场次,一个场次包含多个秒杀商品 - 待实现
    • 秒杀商品,一个秒杀商品可以被多个秒杀场次关联
  • 支付
  • 通知
    • 待支付提醒
    • 订单取消提醒
    • 支付提醒
    • 发货提醒
  • 支付回调
  • 订单状态机 -状态模式实现

10.系统流程

11.开发者规约

  • 参考 阿里巴巴java开发者规范 Java开发手册嵩山版

12.压测结果

使用jemeter进行压测

13.部署说明

先导入数据库脚本 修改application.yml里面的mysql、redis、nacos、rocketmq链接地址 启动相应的组件

14.许可协议

15.功能截图

  • 前端效果 前端效果 前端效果

优惠券前端效果

MIT License Copyright (c) 2022 幽灵柯南 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

本项目基于SpringCloud &SpringCloud Alibaba ,整合nacos、rocketmq、sentinal、feign、redis、redisson、jjwt、mybatis等常见微服务组件;包含分布式锁、RocketMq(事务消息、延时消息、普通消息)、线程池、常用设计模式等技术的使用场景。还包含商城秒杀功能、优惠券体系、权限系统、订单&商品系统、微信支付等业务功能。 展开 收起
README
MIT
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/enetq/platform-open.git
git@gitee.com:enetq/platform-open.git
enetq
platform-open
platform-open
master

搜索帮助