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

秒杀接入层
- 从Etcd中加载秒杀活动数据到内存当中。
- 监听Etcd中的数据变化,实时加载数据到内存中。
- 从Redis中加载黑名单数据到内存当中。
- 设置白名单。
- 对用户请求进行黑名单限制。
- 对用户请求进行流量限制、秒级限制、分级限制。
- 将用户数据进行签名校验、检验参数的合法性。
- 接收逻辑层的结果实时返回给用户。
秒杀逻辑层
- 从Etcd中加载秒杀活动数据到内存当中。
- 监听Etcd中的数据变化,实时加载数据到内存中。
- 处理Redis队列中的请求。
- 限制用户对商品的购买次数。
- 对商品的抢购频次进行限制。
- 对商品的抢购概率进行限制。
- 对合法的请求给予生成抢购资格Token令牌。
秒杀管理层
- 添加商品数据。
- 添加抢购活动数据。
- 将数据同步到Etcd。
- 将数据同步到数据库。
目录结构
├─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实现的秒杀系统的更多相关文章
- Java商城秒杀系统的设计与实战视频教程(SpringBoot版)
课程目标掌握如何基于Spring Boot构建秒杀系统或者高并发业务系统,以及构建系统时采用的前后端技术栈适用人群Spring Boot实战者,微服务或分布式系统架构实战者,秒杀系统和高并发实战者,中 ...
- 基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】
前言 本教程使用SpringMVC+Spring+MyBatis+MySQL实现一个秒杀系统.教程素材来自慕课网视频教程[https://www.imooc.com/learn/631].有感兴趣的可 ...
- laravel基于redis实现的一个简单的秒杀系统
说明:网上很多redis秒杀系统的文章,看的都是一头雾水,然后自己来实现一个,也方便以后自己学习 实现的方式是用的redis的list队列,框架为laravel 核心部分为list的pop操作,此操作 ...
- PHP秒杀系统-高并发高性能的极致挑战
慕课网实战教程后端:1.java c++算法与数据结构2.java Spring Boot带前后端 渐进式开发企业级博客系统3.java Spring Boot企业微信点餐系统4.java Sprin ...
- PHP秒杀系统全方位设计(二)
商品页面开发 静态化展示页面[效率要比动态PHP高很多,PHP程序需要解析等步骤,本身就需要很多流程,整个下来PHP的处理花的时间和资源要多] 商品状态的控制 开始前.进行中.库存不足.结束 数据逻辑 ...
- Java高并发秒杀系统【观后总结】
项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目中学到了什么玩意.. 该项目源码对应的gitHub地址(由观看其视频的人编写,并 ...
- SSM实现秒杀系统案例
---------------------------------------------------------------------------------------------[版权申明:本 ...
- SpringBoot开发案例从0到1构建分布式秒杀系统
前言 最近,被推送了不少秒杀架构的文章,忙里偷闲自己也总结了一下互联网平台秒杀架构设计,当然也借鉴了不少同学的思路.俗话说,脱离案例讲架构都是耍流氓,最终使用SpringBoot模拟实现了部分秒杀场 ...
- 从构建分布式秒杀系统聊聊Disruptor高性能队列
前言 秒杀架构持续优化中,基于自身认知不足之处在所难免,也请大家指正,共同进步.文章标题来自码友 简介 LMAX Disruptor是一个高性能的线程间消息库.它源于LMAX对并发性,性能和非阻塞算法 ...
随机推荐
- EasyNVR如何实现跨域鉴权
EasyNVR提供简单的登录鉴权,客户端通过用户名密码登录成功后,服务端返回认证token的cookie, 后续的接口访问, 服务端从cookie读取token进行校验. 但是, 在与客户系统集成时, ...
- SQL语句备份和还原数据库(转)
1,使用SQL最简单备份,还原数据库 1 /* 备份 */ 2 backup database Test to disk='D:/Test.bak' 3 /* 还原 */ 4 restore data ...
- Channel (digital image) 通道 色彩深度 Color_depth
en.wikipedia.org/wiki/Channel_(digital_image) Color digital images are made of pixels, and pixels ar ...
- Java使用到的常用类总结
基本类型 常用:int.long.double.boolean. 不常用:byte.float.char.short
- SVM怎样解决多分类问题
从 SVM的那几张图能够看出来,SVM是一种典型的两类分类器.即它仅仅回答属于正类还是负类的问题.而现实中要解决的问题,往往是多类的问题(少部分例外,比如垃圾邮件过滤,就仅仅须要确定"是&q ...
- STO到底是什么?
最近,链圈谈论最多的就是STO了,那STO到底是什么?现阶段发展得怎么样? 什么是STO STO英文全称Security Token Offering,即证券化通证发行,指在安全法律体系下受到约束的基 ...
- 关于JavaScript中prototype机制的理解
最近几天一直在研究JavaScript中原型的机制,从开始的似懂非懂,到今天终于有所领悟.不敢说彻底理解,但是起码算知道怎么回事了. 为什么一开始似懂非懂 开始了解一遍原型机制后,感觉知其然但不知其所 ...
- Machine Learning in Action(4) Logistic Regression
从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为它开始要建立价值函数(cost function),接着优化价值函数求出权重,然后测试验证.这整套的流程是机器学习必经环节.今天要学习的话题 ...
- webpack-dev-server原理及要点笔记
webpack-dev-server启动了一个使用express的Http服务器,这个服务器与客户端采用websocket通信协议,当原始文件发生改变,webpack-dev-server会实时编译. ...
- Adding Form Fields to a MS Word Document
Configuring a Word Merge in SmartSimple is a three-step process: Create the MS Word document that wi ...