Skip to content

Ggkd/SecKill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SecKill

商城秒杀

config:

从配置文件中读取每一项的配置:redis、etcd、log、user_control等。

redis:黑白名单、读写goroutine数量及chan的size、用户的请求等

etcd:秒杀服务的key及秒杀商品的key,value为所有秒杀商品;实时监控商品的状态和信息

proxy:

1:为用户提供秒杀商品服务接口。

2:对用户秒杀商品的请求进行控制处理。

  2.1:查询商品的信息和状态
  
  2.2:对用户的请求进行校验
  
    2.2.1:校验用户是否登录
    
    2.2.2:校验用户是否正常访问
    
    2.2.3:校验用户的访问行为是否正常。对用户的账号和ip进行记录,对于不合法的访问,
          将账号或ip放入redis黑名单,并且间歇式同步黑名单到redis。
    
3:将正常的用户请求放入redis队列,等待layer层的处理。

layer:

1:从redis队列获取用户的请求,将请求放入用户处理的通道

2:从用户处理的通道中获取用户的请求,并做详细处理。

    2.1:校验商品是否存在、商品是否售空、商品的状态
    
    2.2:校验商品每秒的售出数据是否大于限制的数量(商品每秒售出的数量将会记录)
    
    2.3:校验用户购买该商品的数量是否超出限制(用户的购买记录也会记录)
    
    2.4:校验用户是否在黑名单
    
3:将用户秒杀成功的响应放入写通道,从写通道获取响应并放入redis队列。