Git Product home page Git Product logo

seckill-dubbo's Introduction

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/

seckill-dubbo's People

Contributors

wtiscm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.