All Projects → tengshe789 → Springcloud Miaosha

tengshe789 / Springcloud Miaosha

Licence: other
一个基于spring cloud Greenwich的简单秒杀电子商城项目,适合新人阅读。A simple spring cloud based seckill shopping mall project, suitable for young people to read. It can be used as a paper material for academic defense.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Springcloud Miaosha

Spring Boot Quick
🌿 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等📌
Stars: ✭ 1,819 (+872.73%)
Mutual labels:  mybatis, redis, druid, spring-boot, oauth2
Okhelper Service
OK帮 云进销存 (SpringBoot Restful 全家桶)
Stars: ✭ 146 (-21.93%)
Mutual labels:  lombok, mybatis, redis, druid, spring-boot
Eshop Soa
EShop基于Dubbo实现SOA服务化拆分,并基于RocketMQ解决了分布式事务(新版SpringBootSOASkeleton)
Stars: ✭ 65 (-65.24%)
Mutual labels:  lombok, mybatis, redis, druid, spring-boot
Lovinghome Real Estate Platform
⚡️基于springboot+MyBatis+FreeMarker+redis+nginx+Echarts+druid等技术的JavaWeb项目------恋家房产平台(采用B/S架构,项目包含前后台,分为前台展示系统及后台管理系统。前台系统包含首页门户、登录注册、房产推荐、房产详情、热门房产、房产及小区搜索、经纪人列表及经纪机构创建、创建房产、房产百科、地图找房、用户个人中心、房产评论、房产打分等模块。 后台管理系统包含房产信息管理、用户管理、管理员管理、小区信息管理、博客管理、评论管理、经纪人管理、系统统计与多种图表展示、数据报表导入导出等模块。系统介绍及详细功能点、技术点见项目内文档描述)
Stars: ✭ 140 (-25.13%)
Mutual labels:  mybatis, redis, druid, spring-boot
Spring Cloud Shop
spring cloud 版分布式电商项目,全力打造顶级多模块,高可用,高扩展电商项目
Stars: ✭ 248 (+32.62%)
Mutual labels:  mybatis, redis, druid, oauth2
Springbootlearning
《Spring Boot教程》源码
Stars: ✭ 2,065 (+1004.28%)
Mutual labels:  mybatis, redis, spring-boot, springcloud
Hope Boot
🌱 Hope-Boot 一款现代化的脚手架项目
Stars: ✭ 3,241 (+1633.16%)
Mutual labels:  mybatis, redis, druid, spring-boot
My Blog Layui
layui 版本的 My-Blog : A simple & beautiful blogging system implemented with spring-boot & layui & thymeleaf & mybatis My Blog 是由 SpringBoot + Layui + Mybatis + Thymeleaf 等技术实现的 Java 博客系统,页面美观、功能齐全、部署简单及完善的代码,一定会给使用者无与伦比的体验
Stars: ✭ 204 (+9.09%)
Mutual labels:  lombok, mybatis, druid, spring-boot
Spring Boot Leaning
Spring Boot 2.X 最全课程代码
Stars: ✭ 2,008 (+973.8%)
Mutual labels:  mybatis, redis, druid, spring-boot
Seconds Kill
基于 Springboot + Redis + Kafka 的秒杀系统,乐观锁 + 缓存 + 限流 + 异步,TPS 从 500 优化到 3000
Stars: ✭ 180 (-3.74%)
Mutual labels:  lombok, mybatis, redis, druid
Spring Boot Study
SpringBoot框架源码实战(已更新到springboot2版本实现)~基本用法,Rest,Controller,事件监听,连接数据库MySQL,jpa,redis集成,mybatis集成(声明式与xml两种方式~对应的添删查改功能),日志处理,devtools配置,拦截器用法,资源配置读取,测试集成,Web层实现请求映射,security安全验证,rabbitMq集成,kafka集成,分布式id生成器等。项目实战:https://github.com/hemin1003/yfax-parent 已投入生产线上使用
Stars: ✭ 440 (+135.29%)
Mutual labels:  mybatis, redis, spring-boot, oauth2
Fw Cloud Framework
基于springcloud全家桶开发分布式框架(支持oauth2认证授权、SSO登录、统一下单、微信公众号服务、Shardingdbc分库分表、常见服务监控、链路监控、异步日志、redis缓存等功能),实现基于Vue全家桶等前后端分离项目工程
Stars: ✭ 717 (+283.42%)
Mutual labels:  lombok, redis, springcloud, oauth2
Spring Boot Demo
spring boot demo 是一个Spring Boot、Spring Cloud的项目示例,根据市场主流的后端技术,共集成了30+个demo,未来将持续更新。该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户密码设计)、actuator(服务监控)、cloud-config(配置中心)、cloud-gateway(服务网关)等模块
Stars: ✭ 323 (+72.73%)
Mutual labels:  mybatis, redis, spring-boot, oauth2
Springbootunity
rabbitmq、redis、scheduled、socket、mongodb、Swagger2、spring data jpa、Thymeleaf、freemarker etc. (muti module spring boot project) (with spring boot framework,different bussiness scence with different technology。)
Stars: ✭ 845 (+351.87%)
Mutual labels:  lombok, mybatis, redis, spring-boot
Mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Stars: ✭ 54,797 (+29203.21%)
Mutual labels:  mybatis, redis, spring-boot, springcloud
X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (-34.22%)
Mutual labels:  lombok, redis, druid
Nimrod
Nimrod - 基于 Spring Boot 构建 的 Java Web 平台企业级单体应用快速开发框架,适合中小型项目的应用和开发。所采用的技术栈包括 Spring Boot、Spring、Spring Web MVC、MyBatis、Thymeleaf 等,遵守阿里巴巴 Java 开发规约,帮助养成良好的编码习惯。整体采用 RBAC ( Role-Based Access Control ,基于角色的访问控制),具有严格的权限控制模块,支持系统与模块分离开发。最后希望这个项目能够对你有所帮助。Nimrod 开发交流群:547252502(QQ 群)
Stars: ✭ 125 (-33.16%)
Mutual labels:  mybatis, druid, spring-boot
Ibase4j
Spring,SpringBoot 2.0,SpringMVC,Mybatis,mybatis-plus,motan/dubbo分布式,Redis缓存,Shiro权限管理,Spring-Session单点登录,Quartz分布式集群调度,Restful服务,QQ/微信登录,App token登录,微信/支付宝支付;日期转换、数据类型转换、序列化、汉字转拼音、身份证号码验证、数字转人民币、发送短信、发送邮件、加密解密、图片处理、excel导入导出、FTP/SFTP/fastDFS上传下载、二维码、XML读写、高精度计算、系统配置工具类等等。
Stars: ✭ 1,548 (+727.81%)
Mutual labels:  mybatis, redis, spring-boot
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 (-29.95%)
Mutual labels:  mybatis, spring-boot, springcloud
Milkomeda
Spring extend componets which build from experience of bussiness, let developers to develop with Spring Boot as fast as possible.(基于Spring生态打造的一系列来自业务上的快速开发模块集合。)
Stars: ✭ 117 (-37.43%)
Mutual labels:  mybatis, redis, spring-boot

miaosha秒杀商城 2代 (Spring Cloud 版本)

项目名称:秒杀商城----SpringCloud-miaosha

由于面临毕业,且时间有限,准备把这个过去的项目使用微服务技术重构一下交上去。截至到2019年9月,会完成全部的更新。

附:老版本请看gitmaster的0.91版本

重要说明: 现在的项目,启动不起来的,1是因为我没有上传sql文件,文档里面的sql文件是master分支的;2是本人也是边学边用技术,会有很多不成熟的地方,请见谅;3是文档的确再写,但是最近事情比较多所以打算一下子把所有文档都上传完毕。

因为是毕业设计作品,毕业前一定会写完的,而本人面临毕业,也想苟活一次(出国转一转),各位稍安勿躁,也不必期待过高~

项目技术:

后端技术选型为:

Java 11、SpringBoot 2.1.3 与 Spring Cloud Greenwich 技术栈、swagger、Elasticsearch、MyBatis plus 、Druid 、Redis、Log4j、Thymeleaf 、RabbitMQ、kaptcha等。

前端技术选型为:

本人能力有限,暂时摒弃一代miaosha商城前端框架。新的前端还在学习思考ing。不更新。

Spring 家族技术选型

Spring Security OAuth2、Spring Cache、Spring Cloud Config、Spring Cloud Gateway、Spring under OpenFeign、Hystrix、Spring Event、Spring IO Platform、Actuator、Configuration-processor、spring-boot-admin

开发工具:

IntelliJ IDEA x64、MySQL 5.7、Kubernetes、Docker、Linux、Lombok、Maven、dev-tools、Admin-UI、Git、Navicat、JMetert、Jvisualvm、Postman、curator、elastic-job-lite、Consul

项目描述:

随着网络商城在全球范围内的广泛应用,人们对于互联网技术的要求已不单单是浏览一下网页,日益忙碌的人们已经习惯的利用网络商城这一强大的平台实现的网上购物。可随着网络商城的用户量不断增多,网络商家的营销活动不断增多,许许多多的传统网络商城会出现一系列的性能问题。

双十一的秒杀活动家喻户晓,天猫、京东、苏宁等等电商网站经常会在凌晨零点出现服务中断现象。例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,可能会有几十万几百万的并发量,来抢这个手机,在高并发的情形下会对数据库服务器或者是文件服务器应用服务器造成巨大的压力,严重时说不定就宕机了。

第二个问题是,秒杀的东西都是有量的,一款手机只有10台的货物量,那么,在高并发的情况下,成千上万条数据更新数据库,那次这个时候的先后顺序是很乱的,很容易出现10台的量,抢到的人就不止10个这种严重的问题。

第三个问题是,传统的购物商。应用往往使用集群方式管理,即一个虚拟化节点上往往会部署负责多种业务的模块。在高流量的压力下往往会导致多个节点不可用,这时只能通过传统的“加机器”方式来缓解压力。这在已经步入2019年的今天是极其不可取的。

本课题的目标是设计一个“秒杀商城”云服务平台,解决这些严重的系统性能问题、数据一致性问题、架构问题。

平台使用微服务架构搭建,主要集成两种系统,第一种系统实现以下功能:用户登录、用户管理、权限管理;第二个系统实现以下功能:商品列表、商品详情、商品秒杀、订单详情、第三方支付。同时平台会有公共的网关负责管理权限,会有服务代理进行负载均衡策略分发流量。

项目特点:

  1. 基于SpringBoot,简化了大量项目配置和maven依赖,让您更专注于业务开发,独特的分包方式,代码多而不乱。
  2. Java 11 支持:使用原生Java 11,并大量实践streamwebfluxlambda、三元运算符,测试数据集在多核机器的速度上有巨大提升。
  3. 细粒度缓存。利用JSR107规范,redis对经常调用的查询、页面、实例进行缓存,保证运行速度。
  4. 注解验证。使用JSR304规范和AOP编辑代码,使得验证逻辑从业务代码中脱离出来。
  5. 异步下单。多种分布式消息队列以及百万级并发框架Disruptor参与下单进程,高效且可靠。
  6. 强力监控。多种监控工具的加入使得你可以全方位的统计观测数据。
  7. 日志系统。基于spring event异步处理日志。
  8. 容器化。Docker、rancher的支持。
  • 未来目标:争取早日建成一个高并发 、高可用 、高性能的秒杀系统平台

项目架构图

//TODO

分包结构

├─ SpringCloud-miaosha
│  │  
│  ├─ doc---------------- 项目文档
│  │ 
│  ├─ logs---------------- 日志存放目录
│  │ 
│  ├─ miaosha-auth---------------- 鉴权中心
│  │  
│  ├─ miaosha-common---------------- 基本依赖
│  │  ├─ miaosha-common-base---------------- 基础封装模块模块
│  │  ├─ miaosha-common-bom---------------- 公共版本控制模块
│  │  ├─ miaosha-common-core---------------- 公共工具类核心包模块
│  │  ├─ miaosha-common-data---------------- 数据与持久化模块
│  │  ├─ miaosha-common-log---------------- 日志处理模块
│  │  ├─ miaosha-common-mq---------------- 消息队列模块
│  │  ├─ miaosha-common-security---------------- 安全模块
│  │  
│  ├─ miaosha-config----------------- 配置中心
│  │  
│  ├─ miaosha-gateway-------------- 商城网关
│  │ 
│  ├─ miaosha-discovery-------------- 服务发现功能
│  │  
│  ├─ miaosha-mall-------------- 商城
│  │  ├─ miaosha-mall-ads---------------- 广告模块
│  │  ├─ miaosha-mall-goods---------------- 商品模块
│  │  │  ├─ miaosha-mall-goods-api---------------- 商品模块的接口端
│  │  │  ├─ miaosha-mall-goods-biz---------------- 商品模块的服务端
│  │  ├─ miaosha-mall-order---------------- 订单模块
│  │  │  ├─ miaosha-mall-order-api---------------- 商品模块的接口端
│  │  │  ├─ miaosha-mall-order-biz---------------- 商品模块的服务端
│  │  ├─ miaosha-mall-pay---------------- 支付模块
│  │  ├─ miaosha-mall-search---------------- 搜索模块
│  │  ├─ miaosha-mall-seckill---------------- 秒杀模块
│  │  │  ├─ miaosha-mall-seckill-api---------------- 商品模块的接口端
│  │  │  ├─ miaosha-mall-seckill-biz---------------- 商品模块的服务端
│  │  
│  ├─ miaosha-plugins-------------- 插件
│  │  ├─ miaosha-plugins-monitor---------------- 秒杀平台的监控组件
│  │  ├─ miaosha-plugins-sidecar---------------- 秒杀平台的sidecar
│  │  ├─ miaosha-plugins-zipkin---------------- 秒杀平台的zipkin监控组件
│  │  
│  ├─ miaosha-sys-------------- 账户后台控制系统
│  │  ├─ miaosha-sys-api---------------- 账户后台控制系统的接口端
│  │  ├─ miaosha-sys-biz---------------- 账户后台控制系统的服务端
│  │  
│  ├─ script-------------- 脚本语言
│  │  

秒杀设计

怎么使用:

启动顺序

请在系统的host文件中,加上以下几条

127.0.0.1 miaosha-mysql
127.0.0.1 miaosha-redis
127.0.0.1 miaosha-rabbitmq
127.0.0.1 miaosha-zipkin
127.0.0.1 miaosha-config
127.0.0.1 miaosha-gateway
127.0.0.1 miaosha-auth
127.0.0.1 miaosha-sys
127.0.0.1 miaosha-mall-goods
127.0.0.1 miaosha-mall-orders
127.0.0.1 miaosha-mall-seckill

然后请务必严格按照以下顺序启动程序

  1. 请看代码中doc目录下的consul文件夹,启动consul
  2. 启动miaosha-config
  3. 启动miaosha-gateway
  4. 启动miaosha-auth
  5. 启动miaosha-sys
  6. 启动miaosha-mall-goods
  7. 启动miaosha-mall-orders
  8. 启动miaosha-mall-seckill

暂且这个启动顺序,目前mall模块还没重写,以后增加新功能,譬如分布式事务,我会重写readme的。

部署

请看代码中doc目录下的markdown,写的零零散散,后期有时间会专门开个gitbook做为文档!

QA

  1. 为什么不用原来的Java 8,而换到现在的Java 11?

    看到了一篇文章:https://www.optaplanner.org/blog/2019/01/17/HowMuchFasterIsJava11.html

    结论:Java 11 与 Java 8 比较过程中,在几乎所有测试数据集上都有速度上的提升。平均而言,仅通过切换到 Java 11 就有 16% 的改进,这种改进可能是因为 Java 10 中引入了 JEP 307: Parallel Full GC for G1。

  2. 为何用rabbitMQ作为秒杀业务的主要消息中间件?

    一开始我对MQ的选型主要是KafkarabbitMQ这两种。

    对于 Kafka 而言,其采用的是类似 PacificA 的一致性协议,通过 ISR(In-Sync-Replica)来保证多副本之间的同步,并且支持强一致性语义(通过 Acks 实现),Kafka 设计之初是为日志处理而生,给人们留下了数据可靠性要求不高的不良印象,但是随着版本的升级优化,其可靠性得到极大的增强。

    而后者 rabbitMQ,是通过镜像环形队列实现多副本及强一致性语义的,多副本可以保证在 Master 节点宕机异常之后可以提升 Slave 作为新的 Master 而继续提供服务来保障可用性。

    除了政治原因,加上rabbitMQ可靠性+可用性在业界口碑较好,因为我这个项目设计金融支付领域,消息可靠性尤为重要,故我使用rabbitMQ作为秒杀结构中异步下单的消息中间件。

  3. 为何在代码中极少使用@Autowired注入bean?

    请参考网页:https://kinbiko.com/java/dependency-injection-patterns/?tdsourcetag=s_pctim_aiomsg

项目界面:

个人服务器被ddos,下面的图片可能显示不出来,见谅。

登陆

版本迭代Update content:

请看CHANGELOG.md.

联系我:

微信:tengshe789 , catch me as you can~

参考资料

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].