一、问题引入 由一个案例引进,先上代码 上面是一个 由两个线程分别去循环1亿次去修改一个对象中两个不同属性的测试用例。测试结果:cache1= 99999999,cache2...
一、问题引入 由一个案例引进,先上代码 上面是一个 由两个线程分别去循环1亿次去修改一个对象中两个不同属性的测试用例。测试结果:cache1= 99999999,cache2...
一、引言 在缓存-淘汰策略原理及其实现[//www.greatytc.com/writer#/notebooks/53040491/notes/105565497/...
引入 caffenie作为目前本地缓存的首选,其内部设计思想有很多值得我们学习的地方。缓存中最主要的数据竞争源于读取数据的同时,也会伴随着对数据状态的写入操作;写入数据的同时...
问题引入 在java体系中,为保证并发安全,我们通常会采用显示锁或者cas无锁编程。使用显示锁(包括sychorized,lock)来保证临界区的资源安全,是一种常用方式。而...
一、归并排序的定义: 归并排序是建立在归并操作上的一种有效的排序。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。分治,顾名思义,先分再治。分...
一、问题引入 先来思考这样一个问题:假如给你20亿个数字,范围大小是 1- 20亿,需要你把这些数字存储起来,然后再随机给定一个数字,判断其是否存在这20亿个数字中, 你怎么...
一、秒杀的功能概述: 营销后台设置秒杀活动并为活动添加秒杀商品 开启活动、关闭活动 C端获取秒杀活动列表 C端查看秒杀商品详情 提交秒杀订单 秒杀订单支付 二、秒杀服务面临的...
明白了,lua 脚本中的命令只能支持命令串行执行,中间不会插入其他命令,但是保证不了类似数据库中的原子性,也就是要么一起成功,要么一起失败。所以可能前面的命令执行成功,后面的命令执行失败
电商技术 -- 库存设计指北前言 最近在解决一套老电商系统的库存"超卖"问题。一直以为超卖问题,最难解决的是库存扣减,实则不然,我们的系统在解决了库存扣减问题之后,还会一直有“超卖”现象?这一切的背后到...
使用Redis 做库存扣减会有一个问题(伪代码如下),Redis数据和MySQL数据并不能保证强一致性,因为Redis的数据相当于直接写进去了,如果在需要回滚的时候,Redis不可用了导致数据无法回滚,最终会造成MySQL没有写入订单数据,Redis却扣减了库存
疑问: 个别商品库存扣减失败,之前的商品库存需要回滚,前文不是说了这段整体逻辑不是写在lua 脚本中嘛, 那么这段逻辑不就要么一起成功,要么一起失败吗?
电商技术 -- 库存设计指北前言 最近在解决一套老电商系统的库存"超卖"问题。一直以为超卖问题,最难解决的是库存扣减,实则不然,我们的系统在解决了库存扣减问题之后,还会一直有“超卖”现象?这一切的背后到...
一、引言 在日常开发使用中,我们经常会使用key-value,也就是hash的数据结构,在java中我们用的HashMap通常是没有淘汰策略的,大小在超过我们设定的值之后会自...
引言:在库存的变动中,最关键的节点是库存的扣减,在什么时候扣减库存非常重要。目前通用的库存扣减方案有以下几种 支付后扣减库存,缺点:成功下单的用户,到支付时没有库存可用,导致...
一、 业务背景 我们业务中台是一个多租户的saas服务平台,使用我们中台的商户有大小之分,有的大商户可能有好几百个门店,有的小商户只有几个十几个门店。业务中台最常见的就是批量...
灰度系统所要解决的问题 平滑上线,减少新版本上线可能带来的问题,使得部分用户用的是新上线版本的系统,部分用户使用的依旧是稳定运行的旧版本。 没灰度之前版本上线全部是晚上9点半...
跳表是一种神奇的数据结构,因为几乎所有版本的大学本科教材上都没有跳表这种数据结构,而且神书《算法导论》、《算法第四版》这两本书中也没有介绍跳表。但是跳表插入、删除、查找元素的...
问题引入:多线程并发安全引起的思考 首先我们通过引入一段示例进入我们今天的主题。先来看下面一段生产者消费者多线程并发的代码示例 在上面的代码中,我们做了一个简单的消息队列,1...
一、dubbo的分层架构 1、dubbo的分层架构在具体将dubbo服务暴露和消费之前,我们还是限流看下dubbo的分成架构 Service和Config两层可以认为是API...
动态代理的解释本文不再赘述,在许许多多的框架代码中,我们都可以看到动态代理的应用,重要性可见一斑,理解动态代理,对于我们理解各种框架的原理具有重要意义。下文将从动态代理常见的...
相信对dubbo有过了解的小伙伴应该知道,dubbo之所以被广泛的使用,其中最重要的一个原因是因为其优秀的可扩展性。而如此良好的扩展性有两个密不可分的原因,一个是设计模式,另...
引子 在上篇文章中我们介绍了sentinel中的滑动窗口算法,发现限流的准确度依赖于划分的子窗口数量。而在很多情况下,我们的限流更多的是需要限制到参数级别,比如我们需要限制每...
引子 在说滑动窗口原理之前,我们先来看一个最简单的限流算法。 假设我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以...