All Projects → sirwsl → shopping-kill

sirwsl / shopping-kill

Licence: other
商品秒杀系统(限时抢购系统),包含商城展示与后台管理,主要技术有:springboot、redis、zookeeper、rabbitmq、sms通知、email通知。该项目为21年毕设设计项目,其中融入基本目前所使用的框架与技术。PS:The system includes the display and backstage management of the mall. The main technologies are: springboot, redis, zookeeper, rabbitmq, SMS notification and email notification. The project is a 21-year completed design project, …

Programming Languages

java
68154 projects - #9 most used programming language
CSS
56736 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to shopping-kill

taotao-cloud-project
微服务开发脚手架,包括大数据模块、微服务模块、前端模块。基于Spring Cloud Alibaba的微服务架构。提供技术框架的基础能力的封装,减少开发工作,只关注业务,包含了工作以来的工作总结和技术沉淀
Stars: ✭ 76 (+145.16%)
Mutual labels:  springboot
tutorials-java
Java Spring related tutorial collection
Stars: ✭ 22 (-29.03%)
Mutual labels:  springboot
Java-CS-Record
记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后续请移步博客
Stars: ✭ 73 (+135.48%)
Mutual labels:  springboot
xiaomi-vue-store
基于Vue + SpringBoot实现的前后端分离的仿小米商城项目,包含秒杀模块。
Stars: ✭ 58 (+87.1%)
Mutual labels:  springboot
Goku.Framework.CoreUI
基于 SpringBoot + Spring + SpringMvc+Mybatis+CoreUI +Layui 开发后台管理程序
Stars: ✭ 87 (+180.65%)
Mutual labels:  springboot
vm-engine
vm-engine为“微视频”网站的后端,java语言开发。涉及技术包括,springboot,springcloud,mybaties,docker,websocket,rabbitmq,redis等。
Stars: ✭ 57 (+83.87%)
Mutual labels:  springboot
qynat-spring-boot-starter
A springboot-starter that can achieve Intranet penetration. 一款可以实现内网穿透的springboot-starter。
Stars: ✭ 65 (+109.68%)
Mutual labels:  springboot
ember-java
Ember sample with Java and REST
Stars: ✭ 25 (-19.35%)
Mutual labels:  springboot
NBlog
🍓 Spring Boot + Vue 前后端分离博客系统 https://naccl.top
Stars: ✭ 700 (+2158.06%)
Mutual labels:  springboot
backlog-board
This is Kanban Board connected to Backlog
Stars: ✭ 18 (-41.94%)
Mutual labels:  springboot
ff4j-spring-boot-starter-parent
A spring boot starter for FF4J (Feature Flipping For Java)
Stars: ✭ 23 (-25.81%)
Mutual labels:  springboot
RuoYi-fast
🎉 (RuoYi)官方仓库 基于SpringBoot的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用
Stars: ✭ 117 (+277.42%)
Mutual labels:  springboot
docker-api-graphql
GraphQL API wrapper around the Docker Remote API. SpringBoot-based app, written in Kotlin
Stars: ✭ 13 (-58.06%)
Mutual labels:  springboot
opsli-ui
OPSLI 快速开发平台基于springboot、vue、element-ui ,项目采用前后端分离架构,热插拔式业务模块与插件扩展性高 ,代码简洁,功能丰富,开箱即用
Stars: ✭ 76 (+145.16%)
Mutual labels:  springboot
shik
shik项目基于springcloud微服务搭建的分布式项目。搭建了shik-config云公共配置,通过shik-RA服务注册发现各个模块,通过shik-zuul路由转发与统一接口。并整合了包括mybatis,jpa,jedis,quartz,freemarker和layui等多个模块,支持spring-session二级域名共享session,使用了RESTful方式提供api接口
Stars: ✭ 89 (+187.1%)
Mutual labels:  springboot
energy-management-sys communication-sub-sys
基于DLT645-2007/DLT645-1997协议的智能电表数据采集系统。借助于高性能的网络编程框架Netty开发,系统可以和智能电表交互并把设备传上来的数据实时写进数据库(目前只支持MySQL)。
Stars: ✭ 27 (-12.9%)
Mutual labels:  springboot
itstack-naive-chat-server
💞 《服务端》| 服务端同样使用Netty4.x作为socket的通信框架,同时在服务端使用Layui作为管理后台的页面,并且我们的服务端采用偏向于DDD领域驱动设计的方式与Netty集合,以此来达到我们的框架结构整洁干净易于扩展。同时我们的通信协议也是在服务端进行定义的,并对外提供可引入的Jar包,这样来保证客户端与服务端共同协议下进行通信。
Stars: ✭ 21 (-32.26%)
Mutual labels:  springboot
creek
使用Spring Security + JWT Token + RBAC的方式实现认证和授权,持久层使用Mybatis plus。避免每次重复编写认证和授权功能、角色管理、异常处理、参数校验等代码,直接上手业务代码,不再烦恼于构建项目与风格统一。
Stars: ✭ 21 (-32.26%)
Mutual labels:  springboot
ods-provisioning-app
Provisioning app, which triggers project and component provisions (including Jira / Confluence / BitBucket and OCP resource creation)
Stars: ✭ 13 (-58.06%)
Mutual labels:  springboot
Jyami-Java-Lab
💻 Jyami의 Spring boot 및 Java 실험소 💻
Stars: ✭ 27 (-12.9%)
Mutual labels:  springboot

商品秒杀系统(已上线)

商城地址:https://kill.wslhome.top

后台管理:https://admin.wslhome.top

项目V1.0版本已上线,该项目是今年毕设项目。 PS:码云同步仓库地址:https://gitee.com/sirwsl/ShoppingKill

两处代码完全一致,gitee上的gitlog记录更加详细 喜欢就给个

作者:sirwsl

博客:https://www.wslhome.top

CSDN: https://blog.csdn.net/qq_40432886

欢迎交流:[email protected]

WX:sirwsl

使用说明

1、前端部署说明

前端文件在resources资源目录下的html文件中,运行时候把整个html文件夹直接copy或者cut出来

注:项目在打包时候是去除html文件的,只包含后端文件

前端部署Tomcat或者Nginx,直接把整个html文件夹复制到www或者对应目录下,然后配置tomcat或者nginx进行启动

nginx配置参见项目中的nginx.conf

注意:前端端口设置8081,如果更改前端端口,请更改对应的com.wsl.shoppingkill.config.request下的跨域设置

访问:必须使用localhost,访问地址如下

http://localhost:8081/html/user/index.html   #商城主页
http://localhost:8081/html/admin/login.html  #后台管理

2、后端部署说明

后端必须运行80端口,否则需要更改前端文件的请求路径比较麻烦

可以用idea直接运行,也可以打成jar包 Java -jar运行

你也可以使用docker运行,参见dockerfile

知识点

  • springboot+Mybatis-plus搭建
  • redis、zookeeper、mq集群
  • redis缓存、jetCache缓存
  • RabbitMq消息通知、死信、延迟队列使用
  • zookeeper分布式锁
  • 自定义注解
  • 统一封装返回
  • 切面使用
  • 设计模式使用
  • 事物、回滚使用
  • docker、nginx使用
  • 图片服务器OSS使用
  • stram、lambda使用
  • 多线程、线程池使用
  • 定时任务使用
  • 短信验证、邮件服务使用
  • JWT验证TOKEN令牌使用
  • 雪花算法分布式算法使用
  • 拦截器、Log4j日志使用
  • 还有很多的工具类、组件使用
  • 数据库连接池Druid使用
  • MapStruct实体转化工具使用
  • 然后部署时候CDN之类的使用
  • ... ...

效果

PS:不过多展示图片,需要看效果自己访问kill.wslhome.top 或 admin.wslhome.top 前端首页 商城 后台主页 后台活动 后台主页 我的订单

简介

项目主要针对秒杀系统进行实现,前后端分离项目,其中设计到技术主要为SpringBoot、Zookeeper、Redis、rabbitMQ。 添加一键部署,mybatis-plus逆向生成 其中融入短信通知(榛子云)、邮件通知(boot-starter-mail)、短信验证(kaptcha)、一二级缓存(JetCache)、跨域登录(jjwt)、数据库连接(druid),还包括自定义注解、切面编程等相关东西

一、项目概况

采用SpringBoot+中间件实现在高并发业务场景下商品的的限时抢购秒杀系统,本题目基于线上电商平台,以高可靠、高负载、高并发来实现商品的限时抢购系统。

二、目录说明

.
├── Dockerfile   docker配置文件
├── README.md
├── doc
│   ├── ER
│   ├── api  接口文档
├── shopping-kill.iml
├── sql
│   ├── shoppingkill-num.sql
│   └── shoppingkill.sql  项目sql
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── wsl
│   │   │           └── shoppingkill
│   │   │               ├── Application.java  启动类
│   │   │               ├── common   公共一些工具 日志切面  异常封装
│   │   │               ├── component   一些自定义组件
│   │   │               ├── config   配置类
│   │   │               ├── controller  C层
│   │   │               ├── domain   实体
│   │   │               ├── mapper  mapper层
│   │   │               ├── obj     VO|BO|Param|DTO
│   │   │               ├── service  实现接口层
│   │   │               └── serviceImpl 实现层
│   │   └── resources
│   │       ├── application.yml  配置文件
│   │       ├── config  配置文件
│   │       ├── ftl    邮件模版-未优化
│   │       ├── log4j.properties 日志配置
│   │       ├── mapper  sql的xml 文件
│   │       └── templates
│   │           ├── admin  商城后台
│   │           ├── static  静态资源
│   │           └── user  商城前端
│   └── test  测试文件
|
└── target  生产
 

三、完成进度

参见doc下的完成进度表

四、主要技术

(一)、整体架构:

1、Redis主从架构:

本系统为保证系统的高可用、高负载、和容灾性,通过redis集群主从复制实现,在集群环境中master会自动将数据同步到slave,可以进行读写分离,从而实现分载master的读操作压。master是以非阻塞的方式为slave提供服务,通过redis主从架构进一步实现负载均衡与故障恢复,从而提高系统的容灾性。

2、Zookeeper集群架构:

通过Zookeeper集群架构实现了应用的简单性,可靠性、可拓展性、透明性。Zookeeper基本更进一步提高了系统的整体容灾性能。

3、RabbitMQ集群架构:

通过RabbitMQ集群化部署实现系统的高可靠高可用,对于限时抢购系统,rabiitMq更加提供了高可用、高并发的成熟方案。

4、OSS存储:

在系统的整体架构中,OSS存储将单个对象分离为meta、data两部分,并将二者分离存储,OSS实现了Region级资源快速调度能力,在用户有突发带宽、Qps需求而旧数据所在集群无法满足时,可以按前缀、或者按比例将一个桶的新写入数据在一个Region内不同集群,甚至不同的AZ见调度从而快速满足用户需求。通过镜像会员实现Region级容灾。从而在满足与资源存储的基础上提供限时抢购系统的性能。

5、CDN加速:

由于CDN几乎覆盖国内的所有线路,对于可靠性来说,不会因为限时抢购系统Qps锅盖,意外而导致网站的内容无法访问,由于是全国化多节点覆盖,在意外节点发生故障后,对网站的访问会自动导向其他健康节点,从而实现整体的稳定性。通过CDN的使用,极大减轻服务器压力,提高网站的访问速度。

6、网站集群化部署:

通过网站的集群化部署,能够更好的实现负载均衡,提高系统的并发量。

(二)、实现框架:SpringBoot+MySQL+MybatisPlus+BootStrap

1、RabbitMQ:通过rabbitmq的使用,在系统中进行短信推送、邮件推送、订单管理等模块中更好的实现了系统的解耦,以异步方式进行操作,使得系统更加平稳运行。通过消息队列的应用,在高并发场景下进行限流,从而保证系统的可运行,起到削峰作用。

2、Zookeeper:

通过zookeeper分布式锁的应用,保证数据在并发环境下的数据一致性与安全性,通过实现读写所,从而更好的提高系统的性能。

3、Redis:

系统中通过运用redis缓存用户基本信息除外,通过将商品进行提前加入缓存,进一步提升读写性能,通过redis缓存的运用提高用户访问量,同时引入JetCache采用两级缓存redis+ caffeine,从而防止缓存雪崩、缓存击穿的场景出现。

(四)、其余技术:

1、SnowFlake

雪花算法,系统中订单生成以及相关的id采用雪花算法替代传统的UUID进行实现,通过41bit的时间戳、10bit的工作机器id与12bit的序列号实现64bit的大整数,实现每秒20万id生成,从而在并发环境中提高系统性能。

2、Druid

在系统数据库连接采用druid代替传统的jdbc连接方式,通过连接池的方式实现,更好的实现数据的增删查改。通过druid可视化界面,更好的对sql性能进行整体监控。

3、Nginx

通过运行nginx代替创痛的Tomcat服务器,在网站集群化部署的过程中实现负载均衡,在高并发的环境下,网络稳定性对其影响非常笑,通过nginx负载均衡,更好的是的网站能够承担高在压力且稳定。

4、Docker

在docker中更好的为系统提供了持续部署与测试。docker可以通过确保从开发到产品发布整个过程环境的一致性来解决这个问题Docker容器通过相关配置,保持容器内部所有的配置和依赖关系始终不变。其在安全性上docker内部容器在部署时实现应用程序将的完全分割与隔离,更好的保证系统的安全性。

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