All Projects → TaXueWWL → Seckill Rocketmq

TaXueWWL / Seckill Rocketmq

Licence: apache-2.0
seckill-rocketmq-基于RocketMQ-电商高并发场景实战

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Seckill Rocketmq

SpringBootIntegration
SpringBoot集成学习项目 SpringBoot Integration
Stars: ✭ 20 (-84.96%)
Mutual labels:  springboot, rocketmq
Xc Spring Cloud Alibaba
spring cloud alibaba(2.2.1最新版)+nacos+dubbo+gateWay+sentinel+rocketmq+(pgsql/mysql8.0的json支持)+ignite集成可用于docker分布式框架+分布式自动化任务+mybatis多数据源+seate+ shardingSphere分布式分库事务解决方案
Stars: ✭ 131 (-1.5%)
Mutual labels:  springboot, rocketmq
compose-pay
🔱 HA distributed payment gateway. 高可用分布式支付网关/支付前置/支付系统/微信/支付宝
Stars: ✭ 21 (-84.21%)
Mutual labels:  springboot, rocketmq
robert
基于SpringCloud的企业级微服务多租户系统、多语言的脚手架, 代码组件化、高内聚低耦合,代码简介,注释丰富容易上手,该项目包括用于开发分布式应用程序服务的必要组件,支持多应用程序访问,并使开发人员可以轻松地使用Spring Cloud编程模型来开发分布式应用程序服务。
Stars: ✭ 45 (-66.17%)
Mutual labels:  springboot, rocketmq
Onemall
芋道 mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
Stars: ✭ 5,312 (+3893.98%)
Mutual labels:  springboot, rocketmq
Java-CS-Record
记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后续请移步博客
Stars: ✭ 73 (-45.11%)
Mutual labels:  springboot, rocketmq
order-charge-notify
模拟电商下单->订单处理->订单结果通知的完整流程,基于RocketMQ进行实现
Stars: ✭ 46 (-65.41%)
Mutual labels:  springboot, rocketmq
taotao-cloud-project
微服务开发脚手架,包括大数据模块、微服务模块、前端模块。基于Spring Cloud Alibaba的微服务架构。提供技术框架的基础能力的封装,减少开发工作,只关注业务,包含了工作以来的工作总结和技术沉淀
Stars: ✭ 76 (-42.86%)
Mutual labels:  springboot, rocketmq
Newbie Plan
📚 Java 技术体系面试指南 , 旨在锻炼学习方法论的技术指南 🚀 数学,算法,基础框架,原理剖析,职业感悟,技术面试
Stars: ✭ 412 (+209.77%)
Mutual labels:  springboot, rocketmq
Tutorial
Java全栈知识架构体系总结
Stars: ✭ 407 (+206.02%)
Mutual labels:  springboot, rocketmq
weweibuy-framework
基于Springboot 封装的基础组件, 包括: Http请求响应日志,日志脱敏,APM, 加解密,签名(AES,BCrypt,RSA,JWT),数据库脱敏,报文脱敏,下滑线风格URL传参,统一异常处理,feign mock,feign日志,feign报文风格转换,跨应用异常上抛,自动补偿组件,幂等组件,RocketMq客户端
Stars: ✭ 24 (-81.95%)
Mutual labels:  springboot, rocketmq
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (-24.81%)
Mutual labels:  springboot, rocketmq
hanzo-cloud
SpringCloud(Hoxton.SR5) + SpringBoot(2.3.0.RELEASE)的 SaaS型微服务后端脚手架。授权中心开发完毕。文档地址:https://www.kancloud.cn/hanzo/hanzo
Stars: ✭ 15 (-88.72%)
Mutual labels:  springboot, rocketmq
Taoshop
开源电子商务项目,SpringBoot+Dubbo技术栈实现微服务,实现一款分布式集群的电商系统. 项目releases链接:https://github.com/u014427391/taoshop/releases (开发中...)
Stars: ✭ 491 (+269.17%)
Mutual labels:  springboot, rocketmq
Myth
Reliable messages resolve distributed transactions
Stars: ✭ 1,470 (+1005.26%)
Mutual labels:  springboot, rocketmq
Securing Rest Api Spring Security
Spring Boot 2.2.x + Spring 5.2.x Rest Api Security Example
Stars: ✭ 117 (-12.03%)
Mutual labels:  springboot
Spring Javafx Examples
Example apps for springboot-javafx-support. See
Stars: ✭ 124 (-6.77%)
Mutual labels:  springboot
Studentmanager
基于springboot+mybatis学生管理系统
Stars: ✭ 116 (-12.78%)
Mutual labels:  springboot
Springboot
📚 springboot学习记录
Stars: ✭ 119 (-10.53%)
Mutual labels:  springboot
Mall Coupons Server
淘宝客项目,支持App,微信小程序,QQ小程序
Stars: ✭ 131 (-1.5%)
Mutual labels:  springboot

seckill-rocketmq[基于RocketMQ-电商高并发场景实战]

场景为:示例项目以用户访问秒杀网关进行秒杀订单下单,平台通过RocketMQ对秒杀流量进行削峰填谷。用户通过主动查询订单 获取下单结果的完整业务流程,加深对RocketMQ的理解,并学会如何在实战场景下使用RocketMQ。

项目基本按照实际秒杀场景进行设计与编码,提供了充分的预校验逻辑,可以作为业务中开发的参考demo。

主要技术

消息队列(RocketMQ): 作用,长流程异步化,提升吞吐量,削峰填谷
    |-普通消息的发布及订阅
SpringBoot
    |-配置资源预加载
RestTemplate
    |-application/x-www-form-urlencoded格式数据的发送
H2
    |-嵌入式数据库

业务流程图

业务流程图如下

秒杀下单流程

秒杀下单

订单查询流程

订单查询

模块描述

模块 说明
seckill-rocketmq 父工程
seckill-gateway-service 秒杀收单网关,提供秒杀下单入口,提供用户主动查单接口
seckill-order-service 秒杀订单平台,通过整合RocketMQ,消费秒杀下单消息;提供内部订单查询实现
seckill-message-protocol 消息协议封装

业务描述

  1. 用户访问秒杀网关seckill-gateway-service,对感兴趣的产品发起秒杀操作。
  2. 网关对秒杀订单进行充分的预校验之后,将秒杀下单消息投递到RocketMQ中,同步给用户返回排队中
  3. 秒杀订单平台seckill-order-service订阅秒杀下单消息,对消息进行幂等处理,并对商品库存进行真实校验后,进行真实下单操作
  4. 用户通过秒杀网关seckill-gateway-service提供的查单进行对自己下的秒杀订单进行查询。

真实场景下,在下单前有绑定账号、绑定收货地址等操作;下单完成后还有支付、物流等操作。

本demo的重点在于如何在秒杀核心场景使用RocketMQ进行业务异步化及订单的压单操作,因此对于细节不予实现,敬请谅解。

注意:商品信息直接在初始化的时候记载到seckill-gateway-service,进行前置库存校验。此处依据缓存已经做了一次流量的过滤。

订单真实下单的时候,进行库存真实校验,此时请求量已经不大了,从而做到对核心资源(DB)的保护。

待优化

由于本项目主要目的在于使用RocketMQ进行削峰填谷,因此对于部分秒杀场景的业务处理尚未优化,此处列出待优化的点,供读者参考

  1. 分布式减库存:使用Redis的decr进行分布式原子减库存
  2. 预热库存时候将库存适当调大,防止恶意刷库存导致正常用户不能进行正常的秒杀订单投递
  3. 【注意点】数据库侧的库存校验万万不能少,本demo已经加上了该校验
  4. 秒杀接口需要做防刷处理,可以在前端通过倒计时方式定时开放接口、增加验证码减少下单频率、增加下单前校验收货地址等方式

windows下单点RocketMQ搭建

  1. 解压rocketmq-all-4.4.0-bin-release.zip到C盘根目录,或者某个盘的根目录(我是C盘)

     配置环境变量,增加环境变量
     ROCKETMQ_HOME=C:\rocketmq-all-4.4.0-bin-release(不要出现空格和中文)
    
  2. 启动nameServer

     mqnamesrv.cmd
    
  3. 启动broker

     start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true
    
  4. 启动admin-console

     java -jar -Drocketmq.config.namesrvAddr=127.0.0.1:9876 rocketmq-console-ng.jar
    

windows下RocketMQ安装部署

H2后台地址

  1. 秒杀网关:http://localhost:8070/h2/
  2. 秒杀下单:http://localhost:8071/h2/

混合云支持

支持了ACL方式,编译打包后运行,云上envType为aliyun,线下envType为offline

网关
java -jar -DenvType=aliyun seckill-gateway-service-1.0.0.jar
下单
java -jar -DenvType=aliyun seckill-order-service-1.0.0.jar

下单之后进行订单查询,使用curl命令

curl http://127.0.0.1:8071/api/query.do -X POST -d  "userPhoneNum=15288888881&prodId=pid_0001"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].