这是基于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. Entity Framework 4.1:多对多的关系

    这篇文章讨论多对多的关系. 让我们从最简单的例子开始.我们让 EF4.1 来推断表的映射.我在订单和雇员之间建模多对多的关系. )] publicstring CustomerName { get; ...

  2. iOS改变UIAlertView、UIActionSheet、UIAlertController系统字体颜色

    废话不多说,直接上代码,效果是最好的说服力 1.改变UIAlertView字体颜色 [UIView appearance].tintColor = [UIColor greenColor]; 个人还是 ...

  3. HDU 5247 找连续数 (set妙用)

    找连续数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 深入了解Cookie(1)------selenium2进行Cookie操作的前奏

    世界上最宽阔的是海洋,比海洋还宽阔的是天空,比天空还宽阔的是人的心量.做人的心量有多大.人生的成就就有多大. 不为一己之利去争.去斗.去夺,扫除报复之心和妒忌之念.自然"心底无私天地宽&qu ...

  5. git版本控制-- Windows+Git+TortoiseGit+COPSSH安装图文教程

    Windows+Git+TortoiseGit+COPSSH 安装图文教程 教程网址: http://www.liaoxuefeng.com/wiki/0013739516305929606dd183 ...

  6. oracle_sql的用法?

    本机连接oracle 数据库?打开cmd ----> 不同的用户有不同的用户名密码 ----> sqlplus scott/tiger(安装oracle数据库预留的用户)---- 回车 - ...

  7. BZOJ 1196 [HNOI2006]公路修建问题:二分 + 贪心生成树check(类似kruskal)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 题意: n个城市,m对城市之间可以修公路. 公路有两种,一级公路和二级公路,在第i对 ...

  8. 修改ubuntu14.04命令行启动

    方法1: 原来要想默认不进入xwindows,只需编辑文件”/etc/default/grub”, 把 GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 改成GRUB ...

  9. unity3d mvvm c#

    using UnityEngine; using System.Collections; public interface IState { void BeforEnter(); void Befor ...

  10. OpenCV——PS滤镜算法之 球面化 (凹陷效果)

    // define head function #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include < ...