随笔分类 - redis
摘要:一.多线程下引起的超卖问题呈现1.1.我先初始化库存数量为1、订单数量为0 1.2.然后我开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redi
阅读全文
摘要:一.什么是脑裂? 有了两个master,一个让你向左,一个让你向右,一个集群中出现多个主节点,使得集群处于异常状态。 二.脑裂的产生 2.1.正常的集群状态 两个网络只有1个master。 2.2.出现脑裂 当前集群中有6个节点,左边3个节点(在上海)和右边3个节点(在北京)不在同一个网络,如果两个
阅读全文
摘要:一.未做消息队列缺陷:用户秒杀,请求到了上游服务秒杀服务,然后上游服务调用下游服务下订单,减去库存,更新余额。上游服务秒杀服务的并发量能力有10000,下游服务的并发量能力有1000,当真的客户端并发量是10000,上游服务秒杀服务能接收10000个请求,但是下游服务只能接收1000个请求,那么下游
阅读全文
摘要:一、什么是消息队列?1、消息就是数据。2、队列有队尾和队头,队列有入队和出队,队列先进先出。3、生产者存数据入口4、消费者取数据入口 二、推模型--发布订阅模型--阻塞 主动把消息推给订阅者。数据实时要求高,用推。 三、拉模型--生产者消费者模型--非阻塞消费者自己去拉取数据。数据实时要求不高,用拉
阅读全文
摘要:一.单进程多线程的锁-线程锁 锁住线程的锁叫线程锁,像C#中的lock,Monitor,让线程排队,同一时刻只能有一个线程进来,让线程同步排队。 二.多进程的锁-分布式锁 锁住进程的锁就叫分布式锁,是锁住进程的一种机制,让进程排队。 三.电商秒杀场景 3.1.单体架构 并发量不够,秒杀服务只能并发1
阅读全文