00:00
刚才呢,我们用一个SQL语句解决了我们库存超白现象,那么也就是说咱们的第二种方案,那么就是使用一个SQL语句可以解决我们的引发性问题。那么一个SQ语句,那么这个SQ语句啊,我们的特点是什么呢?是在更新数量时来做判断,判断库存是否充足。那如果充足我们再进行更新,如果不充足,那就不用更新了。那么这还能不能解决咱上述三个所失效问题呢?它已经可以解决了哈。那么这三个所失效。所失效这种场景都能解决。首先呢,集群部署已经解决了,在刚才演示的时候就是以集群部署的形式来演示的啊。那么然后呢,多利模式能不能解决呢?让集群部署都解决了,多服务器都解决了,那多利模式能不能解决呢?肯定也能。好,咱可以呢,去演示一下啊,那么在这呢,咱可以把这个scoop这个玩意儿给它解开。
01:06
那么解开之后呢,我们来去重新启动咱们这个服务器吧,咱们重启这两个服务器吧,那么这样的话呢,咱们可以先重启第一台服务器。然后呢,再来去重新启动呢,那么第二台服务器。好两台服务器呢,咱们都已经重启成功了。那我们这里呢,使用的是。是集群步数,并且又使用了多例模式,如果这么复杂的情况下,我们都可以解决并发性的问题。那如果纯粹只是多利模式,能不能解决呢?肯定也可以。那么这里呢,咱们来去浏览器中访问一下,来我们来去刷新,来看我们的库存有没有减库存,哎,我这里是零件库存,咱先给它改成5000件库存啊。那么改好之后呢,我们再回到浏览器来去刷新,好来看我们的数据库,刷一下4999件,那么减库存呢,肯定是没有问题的。
02:03
那么在并发情况下,它会不会出问题呢?咱们这个地方呢,改回5000。那么改为5000之后呀,我们来去看啊。之前我们测试的,咱们可以呢,简单的去,呃,再回忆一下啊,那么如果我们使用gbm锁,它并发量大概多少呢?大概是不到600的吞吐量啊。啊,咱们在测试的时候。那我们一个SQL语句,它吞吐量啊,可以达到将近2000的吞吐量,所以性能呢是非常优秀的。那么然后呢,我们再回到压力测试工具里面去。那么现在呢,我们再来去运行一下,看效果怎么样,再把这个呢,来清空掉,来去运行。好,来看最终效果,哎,最终效果呢,更快了啊。独立模式。送币发展更快了。那么库存有没有减为零呢?来,去刷一下,哎,也已经减为零了。那么也就是说使用多粒啊,反而性能提高了。
03:03
啊,不仅没有影响,反而性能提高了。好是咱们这一块啊。性能将近提高了10%左右。现在多利模式呢,没啥问题。然后呢,我们来看这个事物能不能与事物并存。那我再把咱们的scope多例给它注射掉,那再把这个事物解开啊,那咱肯定不能使用这个未提交吧,都未提交吧,所以把这个东西呢,给它删掉。C,这肯定能解决,为什么呢?因为即使你不加事物注解MYSQ呢,也会对咱每一个增删改的这种写操作呀。来加来加15啊。也会也会加食物。那你只要没有禁用,没有把那个ul出commit设置为零的情况下,我们知道MY思库里面一个ul commit啊,如果你没有把它设置为零的情况下。那么他都会有一个失误。
04:00
啊,所以呢,它能够与事物并存。那咱废话不多说,我们还是得要去演示一下,用事实呢来去说话。咱们先把啊第二个服务器呢,给重启一下啊,让他找到第一台服务器,我们来继续重新启动。啊,那么启动成功之后呢,来看啊,第二台服务器已经启起来了,第一台服务器呢,也启起来了。那么接下来之后呢,咱按照老规老规矩先去在浏览器上刷新一下访问没有问题。那访问没有问题啊,我们就直接把库存数量改为5000这样的一个数量,那么改好之后呀,我们现在再去使用压力式工具,我们可以压一下把它给清空啊。控制号点击运行,那么此时呢,咱的压力测试呀,开始在运行了,那我们可以发现呢,加入事物之后啊,加入手动事物之后呢,我们的性能呢,损耗啊升高了。你看吞吐量呢,还剩1800多。啊,大概呢,损耗了10%的吞吐量。
05:03
那么其实呢,咱不管有没有加这个事物注解都有事物啊,只是自动事物的话呢,好像性能会更高一点。哎,手动事物呢,性能降低了啊。好,那么由此可见,那我们的一个SQ语句,它可以解决上述这些问题。那么他有没有新的问题呢?那它会有这么几个问题哈,首先呢来看啊,它的问题呢,第一个问题就是所范围,咱们比要把控好,你如果要使用这个玩意的话,一定要注意锁的范围好,第一个问题就是所范围问题啊。那么第二个问题呢,是同一个商品有多条库存记录。那么比如说呢,在我们的数据库里面。那我的1001这个商品在北京仓,我有5000件库存。
06:01
那么可能在另外一个仓库,比如说呢,1001这个商品在上海仓也可能会有5000件库存。那么此时如果我们依然还使用这个词后语句来去完成的话。那么会怎么样呢?他就会对我所有101商品所在仓库都去减库存去了。那明显呢?这一个社会语句啊,就出现这种局限性了。他就做不到了。那往往呢,我们可能要根据商品编号,先查询出满足条件的仓库有哪几个。然后我再根据某种算法来计算出从哪个仓库来发货效益最高。那么比如说呢,北京仓如果有货,咱肯定从北京仓可以发货了,那如北京仓无货呢,那有些商品咱可以呢,从其他仓库进行调配。那比如说呢,你在你在北京,你买买某一个东西可能显示无货。
07:00
但它显示呢,可调配,哎,京东就这么去做的啊。就这么搞的。好,那我们将来也有可能会这么去搞啊。所以呢,如果是这种情况的话,那我们一个搜索语句它就很难做到了啊。好,咱们这个第二个。那么第三个问题呢,啊,就是咱把这个呢再放大一点。那么第三个问题啊。无法记录库存变化前后的状态,那你比如说呢,我库存变化之前是多少件库存。那么这次操作之后,那我库存还剩多少件,它是无法记录的。但是如果我们按照之前的方式,咱们是可以记录出来的,比如变化之前呢,我们查询过。啊,还有多少。那变化之后呢,那我们也可以输出一下,还剩多少。啊,都可以进行记录啊,可以输出日志。
我来说两句