商城秒杀
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队列。