3 Star 5 Fork 2

郭某人 / seckill-dubbo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

seckill-dubbo

介绍

在imooc上克隆名称为wtiscm人的代码。他的介绍如下: 跟着老师吧整个项目做了一边,收获很多;然后把老师视频中提到的MQ消息队列内容加进来了。最后不断整合以及重构,构建了一套分布式秒杀系统,SpringBoot+Dubbo+Zookeeper,利用页面静态化,CDN缓存,Nignx缓存,以及服务端的页面缓存,Redis对象缓存,层层过滤,防止访问直接穿透到数据库;采用异步消息队列分担短时间的数据库读写;利用Dubbo分布式RPC调用降低耦合与容错,保证整个项目可用;更多细节可以看源码,一起讨论,一起学习进步,项目源码:https://github.com/wtiscm/seckill-dubbo

项目介绍

plateform IntelliJ IDEA JDK SpringBoot Dubbo Zookeeper MySQL reids RabbitMQ

本项目是基于Dubbo的分布式秒杀项目。

image

项目特性:

  • 秒杀的时候系统的并发量会非常的大,系统要在短短的几秒内完成非常大的访问处理。

  • 并发量大的同时,网络的流量也会瞬间变的很大。

  • 秒杀项目特性下,可能会存在安全性问题,1.可能会存在脚本来进行秒杀,2.可能会提前得到秒杀接口,影响秒杀公平性。

  • 项目要具备CAP中的AP,可用性与分布式容错,保证系统服务可用。

项目功能介绍:

  • 针对短时间并发量访问非常大的情况,我们可以通过横向扩展的方式,增加服务的数量;但是在进行秒杀的时候,会进行大量的数据库读写,这个时候数据库成为瓶颈, 我们需要通过优化使得最终秒杀成功的有限用户进行数据库读写;如果秒杀的商品数量很大的时候,也需要进行大量的数据库读写,这个时候,我们需要把大量的读写操 作放到消息队列中异步处理,数据库可以"慢慢"的读写,分担短时间的处理量。

  • 针对并发量很大带来的流量很大的问题,我们可以给浏览器做静态缓存,页面静态化,服务只返回访问所需要的数据而不是整个页面;或者在CDN部署页面。

  • 针对利用脚本,或者过于频繁秒杀的操作,服务端需要做防刷处理,限定单位时间的秒杀次数;对于秒杀接口,采取隐藏秒杀接口的处理,只有在秒杀进行时,才暴露 秒杀接口。

  • 针对可用性与分布式容错,我们需要双机热备,利用keepalived+Nignx做负载均衡,然后利用Dubbo框架接着实现负载均衡与容错处理。

特性:

  • 利用页面静态化,CDN缓存,Nignx缓存,以及服务端的页面缓存,Redis对象缓存,层层过滤,防止访问直接穿透到DB。

  • 假如实际秒杀产品很多,最终过滤后还有大量的数据库读写,这时采用消息队列,异步处理;浏览器只需要轮询秒杀结果就可以了,这样可以把短时间的大量数据库操作 分担的相对较长的时间,保证数据库可用。

  • 秒杀过程中,需要保证可用性,所以需要对Nignx进行水平扩展,双机热备份;服务提供方也需要按照实际情况水平扩展。

注意事项:

项目启动过程:

  • 启动MySQL,Redis,Zookeeper,RabbitMQ。

  • 需要启动6个服务,注册的Zookeeper注册中心。如果使用IDEA,分别启动 seckill-cache,seckill-goods,seckill-user,seckill-miaosha,seckill-mq,seckill-order 6个 提供方服务;然后启动seckill-controller 服务消费方。 或者把对应的服务提供方,与服务消费方打成jar包,以jar包的形式启动。

  • http://localhost:8091/seckill/to_login 用户名:13512341234,密码:123456,进行登陆。

引用:

http://dubbo.apache.org/en-us/index.html
https://github.com/apache/dubbo
https://www.keepalived.org/
https://zookeeper.apache.org/
http://nginx.org/en/docs/
https://redis.io/
https://coding.imooc.com/class/168.html
https://blog.csdn.net/jokeMqc/article/details/87933573
https://www.rabbitmq.com/

空文件

简介

在imooc上克隆名称为wtiscm人的代码。他的介绍如下: 跟着老师吧整个项目做了一边,收获很多;然后把老师视频中提到的MQ消息队列内容加进来了。最后不断整合以及重构,构建了一套分布式秒杀系统,SpringBoot+Dubbo+Zookeeper,利用页面静态化,CDN缓存,Nignx缓存,以及服务端的页面缓存,Redis对象缓存,层层过滤,防止访问直接穿透到数据库;采用异步消息队列分担短时间的数据库读写;利用Dubbo分布式RPC调用降低耦合与容错,保证整个项目可用;更多细节可以看源码,一起讨论,一起学习进步,项目源码:https://github.com/wtiscm/seckill-dubbo 展开 收起
Java
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Java
1
https://gitee.com/guoanhao/seckill-dubbo.git
git@gitee.com:guoanhao/seckill-dubbo.git
guoanhao
seckill-dubbo
seckill-dubbo
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891