温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
那接下来呢,我们就测试一下我们本地锁在我们分布式的情况下会产生什么样的问题,那按照分析,本地锁呢,我们加的都是锁在我们当前服务,那在分布式情况下呢,它锁不住别人,那如果我们把这个商品服务启动上多个,那至少会有多个同时来查询数据库,好我们来测试一下,那为了启动我们这个多个商品服务,我们可以在找到我们这个商品服务,我们右键这有一个叫copy configuration,把它的配置呢复制上一份,复制一份呢,我们就把商品服务这个就是商品服务一,我们给它起一个端口,比如叫10001端口,我们10001,那想要改变它的端口,我们用spring boot,在运期间可以写上杠杠啊,两个短横杠server.port等于我们10001,这样呢,我们就给它指定了一个新的端口,好,我们来复制上一个,然后呢,其他的我们也来复制上几个,这是有一个复制的,我们再来复制一个,把这个呢,我们比如复。
01:00
这个10002,我们多复制几个呢,效果就非常明显了,那端口呢,改为10002,还有我们的10003。好,我们再来复制一个10003端口的,那在这呢,就叫10003,给它起个名字,好,然后端口号10003,我们呢把商品服务来同时启动多个,好,现在呢,除了我们1万端口的启动,那这个100011000210003,那相当于商品服务呢,有四个,那压力测试我们来看。最终效果怎么样,我们这一块呢,压测我们就要写鼓励mail.com,而且我们端口号呢,就得写八零,相当于我们把我们的压测请求交给我们Linux的nnux,由Linux呢再交给我们网关,由网关负载均衡的到达我们这四个服务,好这四个服务都启动起来,我们一定把这些控制台我们都清空,103的清空,102的清空,包括101的,还有我们这个1万的,好,我们现在都清空。
02:00
那这几个服务呢,让他们都来启动,成功把这一块呢全部清空。现在我们来准备压力测试,我们来看我们现在的这个请求到底能不能锁住数据库,那这个要来测试呢,我们就把我们的缓存里的数据把它删掉。把这个呢,我来先删掉,然后呢,我们来刷新一下,好缓存里边确定没有数据,然后我们来压测,这个压测呢,比如我们就来写上50个线程,50个线程,每个线程呢,我们来循环十次,我们给它固定压测500个请求就行了,或者我们来100个并发,我们每一个并发呢循环五次都行。好,我们来启动起来,把以前的这个报告我们都已经清理过了,好,我们来启动起来,我们来看我们这个500个并发,我们什么时候能测试完,来看一这一块的汇总报告吞吐量,这个吞吐量呢,每秒有40多50多啊,接下来我们来看控制台,首先来看第一个控制台,那么这个1万端口有没有查询数据库,CLCCF来找,诶,他有一次查询数据库。
03:05
相当于我们第一个服务他只查了一个数据库,然后我们来看第二个服务他有没有查,诶我们发现第二个服务呢,他也查了数据库,但不管怎么样,每一个服务只查了一次数据库,来看第三个服务CTRLF我们来搜一下,诶我发现第三个服务也查了数据库,还有第四个CTRLF我们来搜一下,第四个服务也查了数据库,那说明我们确实使用本地锁的情况下,把这些全部呢锁不住,就跟我们分析的一样,我们本地锁的这个this只能锁住我们当前服务,所以呢,当前服务会有一遍的查询请求,那其他人同时进来,那都会同时查询,那接下来我们为了锁住我们所有的东西,我们就需要加一个分布式锁,那下一节课呢,我们就来看一下分布式锁是怎样的,我们如何使用分布式锁。
我来说两句