基于Go实现的秒杀系统

Posted yxhblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Go实现的秒杀系统相关的知识,希望对你有一定的参考价值。

这是基于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实现的秒杀系统的主要内容,如果未能解决你的问题,请参考以下文章

基于SpringBoot+RabbitMQ+Redis开发的秒杀系统(异步下单热点数据缓存解决超卖)

简单几步,设计一个高性能的秒杀系统!

演讲实录:使用 Go 开发秒杀系统的实践

如何基于微服务设计亿级用户的秒杀系统?

如何设计出骚气的秒杀系统?

详解:如何设计出健壮的秒杀系统?