基於Go實現的秒殺系統

2022-03-23 05:17:56 字數 1552 閱讀 5157

這是基於go語言的乙個秒殺系統,這個系統分三層,接入層、邏輯層、管理層。專案原始碼:

系統架構圖

秒殺接入層

從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

基於PHP redis的秒殺系統

php原生 編寫,沒有基於框架,主要讓使用者了解秒殺原理。github seckill 秒殺系統 環境 1.php5.6 phpredis擴充套件 2.redis服務 3.apache2 4.mysql table 商品表 goods 訂單表 order 實現功能 1.基於redis佇列,防止高併發...

秒殺系統的實現

按照正常的購買流程 查詢商品庫存,庫存大於0時,生成訂單,去庫存。如果出現併發,導致在查詢商品庫存的時候,庫存會一直出現大於0的情況,出現超賣現象。基於mysql的事務和鎖實現方式 如果不開啟事務,第二步即使加鎖,第乙個會話讀庫存結束後,變會釋放鎖,第二個會話仍有機會在去庫存前讀庫存,出現超賣。如果...

redis實現的秒殺系統

利用redis的樂觀鎖,實現秒殺系統的資料同步 基於watch實現 import redis conn redis.redis host 127.0.0.1 port 6379 conn.set count 1000 with conn.pipeline as pipe 先監視,自己的值沒有被修改過...