All Projects → parkt90 → dis-seckill

parkt90 / dis-seckill

Licence: MIT license
⭐⭐⭐⭐SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统

Programming Languages

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

Projects that are alternatives of or similar to dis-seckill

Jeeplatform
一款企业信息化开发基础平台,拟集成OA(办公自动化)、CMS(内容管理系统)等企业系统的通用业务功能 JeePlatform项目是一款以SpringBoot为核心框架,集ORM框架Mybatis,Web层框架SpringMVC和多种开源组件框架而成的一款通用基础平台,代码已经捐赠给开源中国社区
Stars: ✭ 1,285 (+587.17%)
Mutual labels:  zookeeper, dubbo
Superman
Superman是什么:构建Java 高级开发技术的知识体系,从基础不断打怪升级成为超人之路(更新中.......)
Stars: ✭ 106 (-43.32%)
Mutual labels:  zookeeper, dubbo
E3mall
宜立方商城,SOA架构学习项目
Stars: ✭ 91 (-51.34%)
Mutual labels:  zookeeper, dubbo
Java Sourcecode Blogs
Java源码分析 【源码笔记】专注于Java后端系列框架的源码分析,每周持续推出Java后端系列框架的源码分析文章。
Stars: ✭ 448 (+139.57%)
Mutual labels:  zookeeper, dubbo
Meetingfilm
基于微服务架构的在线电影购票平台
Stars: ✭ 149 (-20.32%)
Mutual labels:  zookeeper, dubbo
Onemall
芋道 mall 商城,基于微服务的思想,构建在 B2C 电商场景下的项目实战。核心技术栈,是 Spring Boot + Dubbo 。未来,会重构成 Spring Cloud Alibaba 。
Stars: ✭ 5,312 (+2740.64%)
Mutual labels:  zookeeper, dubbo
Whatsmars
Java生态研究(Spring Boot + Redis + Dubbo + RocketMQ + Elasticsearch)🔥🔥🔥🔥🔥
Stars: ✭ 1,389 (+642.78%)
Mutual labels:  zookeeper, dubbo
Dis Seckill
👊SpringBoot+Zookeeper+Dubbo打造分布式高并发商品秒杀系统
Stars: ✭ 315 (+68.45%)
Mutual labels:  zookeeper, dubbo
Nacos Sync
Service Sync component
Stars: ✭ 138 (-26.2%)
Mutual labels:  zookeeper, dubbo
E3 Springboot
SpringBoot+Docker重构宜立方商城
Stars: ✭ 139 (-25.67%)
Mutual labels:  zookeeper, dubbo
Nutzboot
NutzBoot,简称NB,是可靠的企业级微服务框架,提供自动配置,嵌入式web服务,分布式会话,服务治理,负载均衡,hystrix,RPC等一篮子解决方案
Stars: ✭ 430 (+129.95%)
Mutual labels:  zookeeper, dubbo
eagle
Eagle分布式rpc调用,借助Zookeeper实现服务注册和发现,基于AQS实现高性能连接池,支持分布式追踪、监控、过载保护等配置。提供Spring和SpringBoot插件,方便与Spring和SpringBoot集成。
Stars: ✭ 77 (-58.82%)
Mutual labels:  zookeeper, dubbo
Gpmall
【咕泡学院实战项目】-基于SpringBoot+Dubbo构建的电商平台-微服务架构、商城、电商、微服务、高并发、kafka、Elasticsearch
Stars: ✭ 4,241 (+2167.91%)
Mutual labels:  zookeeper, dubbo
Eshop Soa
EShop基于Dubbo实现SOA服务化拆分,并基于RocketMQ解决了分布式事务(新版SpringBootSOASkeleton)
Stars: ✭ 65 (-65.24%)
Mutual labels:  zookeeper, dubbo
Highdsa
2018年本科毕设项目,已更新所有开发和部署文档。基于Dubbo、SSM、Shiro、ELK、ActiveMQ、Redis等实现的一套高可用、高性能、高可扩展的分布式系统架构,实现可支持业务的基础公共服务,API使用Restful风格对外暴露。已经实现的包括:发送邮件服务、FastDFS文件存储服务、ELK实时日志查询服务、Redis缓存服务、Mybatis数据库、阿里短信推送、Goeasy消息推送、Druid监控、ActiveMQ消息队列、shiro权限认证、cas单点登录、权限配置web系统、移动端后台系统。持续更新中......
Stars: ✭ 385 (+105.88%)
Mutual labels:  zookeeper, dubbo
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (-46.52%)
Mutual labels:  zookeeper, dubbo
Zheng
基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:集中权限管理(单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。
Stars: ✭ 16,163 (+8543.32%)
Mutual labels:  zookeeper, dubbo
Node Zookeeper Dubbo
A middleware helps node to communicate dubbo by using its default protocol, which is registered in zookeeper
Stars: ✭ 296 (+58.29%)
Mutual labels:  zookeeper, dubbo
X Admin
致力于快速开发中小型后台管理系统项目模板(更新中......)
Stars: ✭ 123 (-34.22%)
Mutual labels:  zookeeper, dubbo
Advanced Java
😮 Core Interview Questions & Answers For Experienced Java(Backend) Developers | 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
Stars: ✭ 59,142 (+31526.74%)
Mutual labels:  zookeeper, dubbo

分布式高并发商品秒杀系统

介绍

本项目是在dis-seckill上改进,项目名含义为分布式秒杀系统。采用微服务思想,意在提高秒杀系统的整体性能。

改进点:

秒杀系统应具备要求

  1. 高性能。秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。对应的方案比如动静分离方案、热点的发现和隔离、请求的削峰与分层过滤、服务端的极致优化。
  2. 一致性。秒杀中商品减库存的实现方式同样关键。有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分“拍下减库存"”付款减库存“以及预扣几种。系统需要在大并发更新的过程中要保证数据的准确性。
  3. 高可用。现实中难免出现一些我们考虑不到的情况,所以要保证系统的高可用性和正确性,我们还需要设计一个planB来兜底,以便应对一些意外情况。比如高并发情况下服务的熔断和降级。

快速启动

在运行秒杀系统之前,需要安装表格第一排软件,并开启相应软件。

准备:修改mysql数据库配置,连接、账户和密码。

spring.datasource.url=jdbc:mysql://localhost:3306/seckill?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123
(根据自己数据库配置做相应修改)

第一步;执行dis-seckill-common/schema/seckill.sql文件,初始化数据库。

第二步;如果安装了git,则可以采用下面的方式快速启动;

git clone https://github.com/parkt90/dis-seckill.git
mvn clean package

启动缓存服务:

java -jar dis-seckill-cache/target/dis-seckill-cache-0.0.1-SNAPSHOT.jar

启动用户服务:

java -jar dis-seckill-user/target/dis-seckill-user-0.0.1-SNAPSHOT.jar

启动订单服务:

java -jar dis-seckill-order/target/dis-seckill-order-0.0.1-SNAPSHOT.jar

启动商品服务:

java -jar dis-seckill-goods/target/dis-seckill-goods-0.0.1-SNAPSHOT.jar

启动消息队列服务:

java -jar dis-seckill-mq/target/dis-seckill-mq-0.0.1-SNAPSHOT.jar

启动网关服务:

java -jar dis-seckill-gateway/target/dis-seckill-gateway-0.0.1-SNAPSHOT.jar

注:启动服务时最好按上面的顺序启动。

如果将项目导入IDE中进行构建,则分别按上面的顺序启动服务模块主程序即可。

第三步;访问项目入口地址

http://localhost:8082

初始用户手机号码:13111897391,密码:000000

项目架构图

项目架构图

项目入门

  • 模块介绍

    • dis-seckill-common:通用模块

    • dis-seckill-user:用户模块

    • dis-seckill-goods:商品模块

    • dis-seckill-order:订单模块

    • dis-seckill-gateway:网关模块

    • dis-seckill-cache:缓存模块

    • dis-seckill-mq:消息队列模块

      用户请求全部交由Gateway模块处理,Gateway模块使用RPC(远程过程调用)的方式调用其他模块提供的服务完成业务处理。

  • 秒杀流程图

秒杀流程图

  • 秒杀方案介绍

设计方案

  • 前端文件资源路径dis-seckill-gateway\src\main\resources\

TODO

Q&A

Q&A
前后端交互接口定义
前后端交互接口逻辑实现
Redis中存储的数据
使用分布式锁解决恶意用户重复注册问题
拦截器HandlerInterceptor的使用
Rabbitmq如何保证消息的可靠投递(推荐文章)
redismysql如何实现双删一致性(推荐文章)
限流的的原理和项目中使用(近期更新)

参考资料

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