以下内容仅自己理解,总结。<请教了几位大佬>
一. 针对无限请求,多资源设计
针对并发会有以下几种设计(不止限这几种设计):
1.有限并发无限请求:
用有上限的容器(不止是容器)去拒绝无限请求
2.有限并发无限请求:
设置有限数量令牌(可执行资格),让请求去争夺可执行资格
3.无限并发无限请求
所有请求全部接收,筛选满足条件请求去执行
以上的几种设计在一下这些场景中可以借鉴:
1.秒杀场景:
1>可以定义有限容器去接收请求,当容器达到上限时,拒绝其他请求;
2>可以在网关去设定同一时间有多少请求可以进入,限制请求数量;
2.短信平台:
1>所有发送短信请求,全部接收,进行逐条执行;(mq等)
3.金融有限金额抢标:
1>所有下单请求接收,逐条筛选,满足条件,可以下单成功,其他下单失败;
二.针对无限请求,单资源设计
1.数据库设计:
当有无限个请求去请求单一资源,资源数据存在数据库中,可以通过主键的方式去 update 触发行级锁,进行限制;
2.在缓存中设计锁
当有无限个请求去请求单一资源,在缓存中启动缓存事务,进行锁获取,当发现获取不到锁,则占用失败;
网友评论