00:00
这个地址呢,它非常好找,因为呢它是托管在get up上面去的,所以呢,你不用去管这个地址你也能找到啊。因为呢啊,咱们这里只要能够访问get up,那就可以访问这个。那么get呢,在国内啊,是可以访问的,只是呢,它不是很稳定啊,因为它走国际网络。好,那么来一个啊,这个是red,我们来搜索一下,那么很容易就可以搜索到我们的red框架了,因为排名最高的这个就是我们这个官方的这个了啊,来打开看一下。那么打开之后呢,它就是英文的啊,一个托管项目啊,那么咱也可以去看它的文档,那文档呢,在这个VP这个位置啊,它是中英文双语的,所以呢非常的方便。那么你想看中文呢,你可以点这个,你想看英文呢,你可以点这个,但你可以在这里呢,直接点目录也是可以的,它目录结构呢,也是中英文双语的哈。但是有同学呢,啊,总是点的时候呢,是英文的。
01:00
但也有同学他总是点的是中文的,那为什么呢?因为点的位置不一样。比如说呢,相同的一个啊,这个第二章啊,相同的第二章,那有的同学点击的是中文的,你点这里呢,是中文的。但是有些同学呢,他点的总是英文的,为什么他点的是这个地方,你点这个地方他展示的就是英文的了。那么一定要注意,一定要注意你点击的位置啊。好,那么点出来之后呢,我们来看这个肯定看中文的呀,因为呢,中文的我们都能读懂啊,那英文的就不一定了。当然有同学呢,可能英文比较好啊,也能装逼对不对啊,那我们可以点英文的也没啥问题啊。那么这个everything它什么东西,那么它也有这个概述,那这个概述呢,咱刚才已经都看过了啊,所以呢,咱不打算再读一遍了。来看下面有一张图。那么这张图呀,我们的red是基于red那么来去玩的啊,那可以是单机点的red,也可以是组从,也可以是哨兵,也可以呢,是这种啊啊这种领托管啊。
02:04
那么也可以呢,是这种分片集群。啊,那么咱去啊,看一下怎么去玩,那怎么玩呢?那作为一个客户端,作为一个Java客户端,那肯定去引入依赖才可以。那么这个依赖的坐标在哪里呢?啊,在这个库的这一块呀,它有一个快速开始这样的一个玩意儿啊,啊,在这个地方有个快速开始。那快速开始里面就有我们me的相关坐标了,咱可以呢,把这个坐标啊直接拷贝过来。然后呢,放在我们的这个分布是所这个项目里面去啊,给它扔进去,那么扔进之后呀,它就会下载我们的依赖,那么下载好之后啊,第二步肯定就是配置了嘛。那么它有没有相关配置呢?那么引入依赖成功之后啊,你们可以点一点看看啊,如果有对应配置的话,它肯定会有提示啊,来一个。你看它是有相关配置的啊。
03:00
配置你点点就可以了,就可以点出来了。但是有red的配置吗?我们没有发现你来一个red,你点塔没了,哎,所以呢,在这个pro里面是没有red相关配置的,那我怎么去配置呢。你至少得告诉我我的red在什么地方吧,那不然的话呢,我red怎么找到red呢?他找不到啊。好,那我们来看一下怎么配置啊,那么它专门呢,给他提供了配置这一张,哎,或者你看下面它也有配置的一些参照。你看这的话呢,有很多这个配置啊,乱七八糟的啊。你看不太懂。那我们呢,可以找他的文档,在文档里面它有详细的一些说明,点开这个viking,它有配置这一张啊配置方法。那么你可以呢,基于程序来去配置,要有程序化的配置方法,写代码的一个配置呀。那么还有文件方式配置,那文件方式配置是不是就是我们那个点配置文件的,那咱可以去看一下啊。
04:03
因为这个文件方式呢,它是通过email格式来配置的,哎,它提供这种email格式配置。哎,那也就是说我是不是就改成压面配置文件就可以了呢?哎,不是这样做的啊。那我们知道咱们的play.ma也支持点ma的啊,是不是改成ma就行了呢?好,咱们看一下啊。其实不是这样子的,因为呢,你看这个是一个独立的压面配置。既然这个压缩配置呀,它也需要读取出来,读取到这个配置类里面去,然后再通过这个配置类来生成一个red客户端ing clean。这个red肯定啊,就类似于我们之前玩的那个string red temp啊,Red,然后temp。那我们的一切操作都会通过这个red temp,那么来去操作咱们red对吧?啊,那么咱这个RA也是一样的。我们要玩anything,那就操作要通过这个客户端,那么来操作才可以。
05:04
他又跟我们的string ready摊开的是一样的哈。OK,那么啊,咱有了这个客户端之后呢,那就可以随意去玩了呀。那么咱这呢,压面配这种配置方式呀,其实很垃圾,你会发现。你除了写个页面配置之外,还得以手动读取,那不是很难受吗?我还不如直接写程序呢。来看第一章啊,程序化配置怎么配置呢?就又一个配置配置类,然后给他去设置一些参数就可以了。然后设置一下这个地址。那就可以初始化了啊,那么这样的话呢,反而比我们的压面配置要方便。OK,所以的话呢,建议呢,使用程序化配置。那么程序化配置里面,诶,好像又没有那个对项的初始化,没为那个肯特的初始化。那么它这只是一个配置方法啊,那么还有可能还有这个各种模式呢,有集群模式,有云托管模式,有单ready节点模式,有哨兵模式,有主成模式。
06:05
那不同不同模式下,那么初始化那个red clean的方式呀,也是不一样的啊,Clean的方式也是不一样的。OK,那么啊,咱们要去看不同的模式了,哎,我们现在呢,是单ready历节点模式,你只要会任何一个模式,另外一些模式呢,基本上你也就会了啊。好,来看你看程序化的配置,单节点怎么配置啊。如果你连的是本机的啊,那个release的话,那默认地址呢,是本机的release,那你可以直接呢,通过这句话就可以初始化一个red c了。如果你的release不在本机上,我们就去设置你的release地址,通过这样的一个配置类来去设置你的这个模式,并且拿来去设置你的地址。最后呢,通过这样的一个配置类,就可以初始化一个reducing clean客户端了。
07:02
那进而呢,我们就可以通过这个客户端,那就操作我们的了。好,那么到底该怎么去写呢?第一步依赖我们已经写好了哈,第二步呢,我们是Java配置。我们需要写一个Java配置类,那么来去配置我们的red,好,咱就可以呢,去new一个类,给它放在conig目录下,我们就命名为reding,然后是config。Config这个配置文件。那么这要声明这是一个Java配置,那这要加一个注解叫con啊,这个主解,然后再来一个AB方法,像死盆容器里面可以初始化一个reding reddiing啊,Clean,将来我就可以使用这个raing clean了啊。那么这个方法呢?啊,这个方法呢,咱怎么写呢,那代码呢,就是这几行代码,把这几行代码拷贝过来就可以了。
08:00
那么你可以copy,但你手写呢,其实也不麻烦啊。那我们这里呢,就不手写了,咱直接拷背过来,因为呢,没有没有手写的必要啊,那你即使现在会手写了,那你以后的话呢,可能还是要参照这个文档。好,我们给它拷贝过来就可以了。因为这个东西呢,你会手写,其实也体现不出你的水平啊。OK,那么这道题可以接续retain。那么我们就需要导入一些类了,这个配置类我们需要导入进来,那一定要导入这个配置类啊。那么还有呢,是这个这样的一个类,咱也需要导入进来,好导入好了,导入好之后呢,这个地址我们需要去配置一下。那么你可以呢,从这个配置文件里面,通过it value注解让读取过来啊,读取过来啊,通过it value注解读取过来,让它放在这个位置,那你也可以呢,在这个位置写死。那比如说呢,我就不打算去读取了,我给他写死在这这个位置来一个,然后是幺七二点幺六点幺幺六点,然后100好,那么写好之后呢,我们这个配置类啊,我们就已经配置好了,那下来呢,我就可以随时去使用clean了。
09:14
接下呢,我们来看一下reing在实际啊代码中该如何去使用它,那么打开我们库存这个类啊service类,在service类里面,我们可以把减库存这个方法重新拷贝一下啊,拷贝到上面这个位置,那么然后咱就把这个下面这个抵大的方法呀,重命名为啊七了啊啊六七。那么然后回到抵达的方法里面去,咱们可以把这个方法呢,重新还原一下,还原成最初的样子,他把枷锁,那么解锁代码全部给它删掉啊,只保留查库存减库存的业务操作。那么这里呢,在呃,方法开始的时候我们加锁,那么结束之后呢,我们要进行解锁。
10:02
那么在这里呢?咱们去首先注入ready。那么这个ready肯定啊,就类似于我们之前的ready。那么在spring data release里面,我们的一切操作都通过red release comp来去完成的。那么在里面也是一样,那么一切操作都通过raing来去完成的。那clean到底该怎么去玩我们的所能好来看一下它里面的方法,它里面的方法呀,主要就是get方法,比如说呢,可以get lock get不能filter啊,不能过滤器啊。那么get奥米克double奥米克拉这原子操作这一项。还可以呢,去获取这些分布式的啊,阻塞双单队列,阻塞队列,那么以及啊其他的一些东西。那我们这个地方明显要玩的就是一个所谓战了,那么get lock就可以了。
11:01
那么大要给这个lock呀,起一个名字,有单叫嗯,Lock,那么在里面它就会以lock作为key保存到里面去啊,那本质呢,就对这个锁的一个增强,对这个K的一个增强。那最终我们可以返回一个呃,I lock对象,那么这个R呢,就是red的首字母,Lock呢就是锁,它就是里面的锁。那么然后呢,我们怎么以加锁呢?咱可以通过lock.lock为加锁,然后呢,我们最好是在finally里面解锁,以保证我们的解锁的代码一定会被执行。在这里呢,我们可以来一个lock,点上onlo为解锁。好,那咱这样代码呢,已经改造完了,改造完之后呢,我们来去重新启动我们这两个服务。
12:00
好,启动成功之后呢,我们在浏览器中啊,去测试一下,我们来去刷新,好来看已经成功了。那我们再来去刷一下来进行预热。啊,那么啊,在浏览器中没有问题之后呀,我们再去压力测试一下,先去修改我们的库存数量,把库存数量重新改成5000件库存。好来保存一下,那保存好之后呀,我们打开咱的解密的工具,好,我们来去运行压力测试。啊,最终效果怎么样呢?哎,咱们这个效果呀,5000个请求很快就发送完了。那么吞吐量可以达到每秒800多的吞吐量,比我们自己封装的呢,性能要好一些啊,毕竟呢,别人是专业的框架啊,啊底层呢,使用了很多技术来做了优化。接下来呢,我们来看一下RA中的库存有没有减成零,它已经变成零了,那说明ready的分布数所也可以解决超买现象。
13:05
解决县城并发问题。
我来说两句