这是基于Go语言的一个秒杀系统,这个系统分三层,接入层、逻辑层、管理层。项目源码:https://github.com/BlueSimle/SecKill

系统架构图

秒杀接入层
  1. 从Etcd中加载秒杀活动数据到内存当中。
  2. 监听Etcd中的数据变化,实时加载数据到内存中。
  3. 从Redis中加载黑名单数据到内存当中。
  4. 设置白名单。
  5. 对用户请求进行黑名单限制。
  6. 对用户请求进行流量限制、秒级限制、分级限制。
  7. 将用户数据进行签名校验、检验参数的合法性。
  8. 接收逻辑层的结果实时返回给用户。
秒杀逻辑层
  1. 从Etcd中加载秒杀活动数据到内存当中。
  2. 监听Etcd中的数据变化,实时加载数据到内存中。
  3. 处理Redis队列中的请求。
  4. 限制用户对商品的购买次数。
  5. 对商品的抢购频次进行限制。
  6. 对商品的抢购概率进行限制。
  7. 对合法的请求给予生成抢购资格Token令牌。
秒杀管理层
  1. 添加商品数据。
  2. 添加抢购活动数据。
  3. 将数据同步到Etcd。
  4. 将数据同步到数据库。
目录结构
├─sk_admin
│ ├─config
│ ├─controller
│ │ ├─activity
│ │ └─product
│ ├─model
│ ├─service
│ └─setup
├─sk_layer
│ ├─config
│ ├─logic
│ ├─service
│ │ ├─srv_err
│ │ ├─srv_limit
│ │ ├─srv_product
│ │ ├─srv_redis
│ │ └─srv_user
│ └─setup
├─sk_proxy
│ ├─config
│ ├─controller
│ ├─service
│ │ ├─srv_err
│ │ ├─srv_limit
│ │ ├─srv_redis
│ │ └─srv_sec
│ └─setup
└─vendor
└─github.com
├─coreos
│ └─etcd
│ └─clientv3
├─gin-gonic
│ └─gin
├─go-sql-driver
│ └─mysql
├─gohouse
│ └─gorose
├─spf13
│ ├─cobra
│ └─viper
└─Unknwon
└─com

基于Go实现的秒杀系统的更多相关文章

  1. Java商城秒杀系统的设计与实战视频教程(SpringBoot版)

    课程目标掌握如何基于Spring Boot构建秒杀系统或者高并发业务系统,以及构建系统时采用的前后端技术栈适用人群Spring Boot实战者,微服务或分布式系统架构实战者,秒杀系统和高并发实战者,中 ...

  2. 基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】

    前言 本教程使用SpringMVC+Spring+MyBatis+MySQL实现一个秒杀系统.教程素材来自慕课网视频教程[https://www.imooc.com/learn/631].有感兴趣的可 ...

  3. laravel基于redis实现的一个简单的秒杀系统

    说明:网上很多redis秒杀系统的文章,看的都是一头雾水,然后自己来实现一个,也方便以后自己学习 实现的方式是用的redis的list队列,框架为laravel 核心部分为list的pop操作,此操作 ...

  4. PHP秒杀系统-高并发高性能的极致挑战

    慕课网实战教程后端:1.java c++算法与数据结构2.java Spring Boot带前后端 渐进式开发企业级博客系统3.java Spring Boot企业微信点餐系统4.java Sprin ...

  5. PHP秒杀系统全方位设计(二)

    商品页面开发 静态化展示页面[效率要比动态PHP高很多,PHP程序需要解析等步骤,本身就需要很多流程,整个下来PHP的处理花的时间和资源要多] 商品状态的控制 开始前.进行中.库存不足.结束 数据逻辑 ...

  6. Java高并发秒杀系统【观后总结】

    项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目中学到了什么玩意.. 该项目源码对应的gitHub地址(由观看其视频的人编写,并 ...

  7. SSM实现秒杀系统案例

    ---------------------------------------------------------------------------------------------[版权申明:本 ...

  8. SpringBoot开发案例从0到1构建分布式秒杀系统

    前言 ​最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路.俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了部分秒杀场 ...

  9. 从构建分布式秒杀系统聊聊Disruptor高性能队列

    前言 秒杀架构持续优化中,基于自身认知不足之处在所难免,也请大家指正,共同进步.文章标题来自码友 简介 LMAX Disruptor是一个高性能的线程间消息库.它源于LMAX对并发性,性能和非阻塞算法 ...

随机推荐

  1. 【BZOJ4241】历史研究 分块

    [BZOJ4241]历史研究 Description IOI国历史研究的第一人——JOI教授,最近获得了一份被认为是古代IOI国的住民写下的日记.JOI教授为了通过这份日记来研究古代IOI国的生活,开 ...

  2. EasyDSS流媒体解决方案之多方式虚拟直播方法

    EasyDSS_Solution虚拟直播 EasyDSS_Solution虚拟直播,是EasyDSS流媒体解决方案提供的虚拟直播方案.可以通过三种方式创建虚拟直播. (1)点播的视频文件: (2)本地 ...

  3. m*n matrix min rank square matrix

    m*n matrix m*n=1000 f(A)=25 https://www.cs.princeton.edu/courses/archive/spring12/cos598C/svdchapter ...

  4. Java拓展教程:文件DES加解密

    Java拓展教程:文件加解密 Java中的加密解密技术 加密技术根据一般可以分为对称加密技术和非对称加密技术.对称加密技术属于传统的加密技术,它的加密和解密的密钥是相同的,它的优点是:运算速度快,加密 ...

  5. 爬虫前戏(回顾掌握) -- HTTP和HTTPS

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  6. html5手机网站需要加的那些meta标签,手机网站自适应

    的html5相关meta和标签    a.<!-- 强制让文档与设备的宽度保持1:1 -->    <meta name="viewport" content=& ...

  7. ASP.NET MVC3中的路由系统

    MVC中,用户访问的地址并不映射到服务器中对应的文件,而是映射到对应Control里对应的ActionMethod,由ActionMethod来决定返回用户什么样的信息.而把用户访问的地址对应到对应的 ...

  8. PHP5.3之后的新特性【转】

    http://blog.csdn.net/black_ox/article/details/21163193

  9. python基础-私有变量和方法

    如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 __priva ...

  10. mybatis进行分页,使用limit

    这里记录两个思路: 首先是写一个不能执行的代码. <select id="query" parameterType="map" resultType=&q ...