00:00
加。点一下库存减少一个用ready来实现库存的秒杀。那么来看看我们来做一个最简单的案例,完成我们相关的业务证明和分布式所的学习。走起。首先,所谓分布式锁,请看。就一句话,多个服务经验。我们现在是不是11112222,假设有多个订单,购买服务,支付服务可能是12345678。八个价包八个微服在不部署。但是我们要保证在分布式微服务的多个服务之间,保证同一时刻内,那一瞬间同一个用户只能有一个请求打到我们的库存里面,减少或者是添加一个货品,否则就会出现超买超卖的现象,防止我们的关键业务出现数据冲突和并发错误。
01:00
说白了就是要从单机版的GVM锁到我们的分布式锁完成这么一个过渡,那么现接下来呢,那么同学们,同学们。所有的分布式啊,都是从单机版开始,那么从零开始啊,杨哥带着大家构建。那么现在呢?我们呢,程序架构大概是这样的,我会做两台机器啊,BOOT01 boot0202,完全拷贝零一。只不过把端口号换了一下,那么零一这台机器端口号就是四个111112号,微服务就是四个22222,那么接下来我们走起,那么如果看过杨哥的这个和我内部分享的spring cloud 2020阿里巴巴的那些呢,都知道这个小口诀。怎么做微服务键Mo的改泡沫写亚M主启动业务类小测试,OK,主要就是前五步,那么这儿时间的关系就节约大家时间。
02:03
比如说fair,你整个什么mode,然后选一个Java吧,点这个不废话了,我把这个环境先搭建好,所以说呢,建mode的话呢,我就建了两个BOOT01 boot02,节约时间,我已经先建好。第二步,改泡沫。那么现在我们用的是spring2.3.3。233,然后接下来的话呢,加的包web和这个图形化的一个支持boot跟整合,我们用的是。然后加这个,然后呢,后续我们呢,接啊,那么一般通用的直接粘过来,不废话。第三步写亚目,我们的亚木呢也很简单,提前把这些配置啊,先给大家整理好。那么这是一号机器,那么一号机器的话呢,端口号就是1111,然后下面就是red相关的配置啊,那么接下来呢,同学们请注意。
03:02
香菜,OK,那么是1:1个那个解连接池呃,更快更好的一个,那么这个呢,你爱用哪个都可以啊,杨哥呢,就稍微升级了一下,用这个你也不用管那么多,反正这个是red的配置啊,你用杰那些我们都剪烂了,OK吧,扎就行了,老图发给大家。然后呢主启动,那么主启动类呢,就更简单了,对不对,自动化给你生成一个,那么在这儿。搁到这儿,那么这个。不用我多废话吧,加这么一个,那么接下来我们这些都处理完了以后,是不是要来完成我们的。业务逻辑处理类写两个东西,一个叫control,一个叫controlrler,那么以前我们在项目的过程当中呢,都讲过我们这个controltr了,我们最终是不是需要有一个东西叫red templ这么一个东西,那么现在我是不是要把它注入进去,在controltrl里面才能用这个red template去干活呀,然后给我们在Linux Linux的。
04:02
这个服务器上面,那么来有这么多我们的服务器也搭建好,说了就是Windows上面的idea Java程序能够去连接到我们的Linux上面的red服务器,完成库存的增减,好,那么不废话,直接过来,现在我们的业务类我们就手写,前面这些配置类的我们直接粘代码,我们手写一下,带大家再最后再熟悉一下,搭建出这个小环境。第一步啊,写这个配置,那么走起来只要是配置啊,那么大家请看,其实整体而言啊,这个很简单的一个小DEMO,听懂了吧,就是个主体动类配置类CTRL了。呃,我们都不用去写什么service啊,因为今天编这个什么controller service,调什么dio不是杨哥这讲的重点,不废话,直接拿controller师做就完了,主要是强调分布式所这道题目。那么对于我们的red conflict,那接下来我们应该怎么写呢?那么首先public,那么是不是我们的red template,那么让它具备通用性的话呢?一般是我们的key。
05:07
这个呢,是它的通用性更强,包括那些什么呀?呃,Inte等等的一些序列化都可以,OK哈,那么这样complete来完成我们的构造方法,那么letters connection factory,那么这二块呢,就是写我们的connection factory。这波OK吧,那么来。我们在这儿完了以后的话呢,直接是六一个。Temp PLA这一波同学们没什么问题吧,第二,那么这呢,我们就需要ready在这个的泛形的上面呢,就是还是上面这两个参数写这么一个配置类OK吧,那么把这个模板里面我们要注入一些什么呀?第一个你连的是哪一个,我们是不是要设置connection?Factor,那么这个factory你连哪一个,是不是就是我们传在的这个参数后台的话呢,我们在配置这是吧,呃,在这块的话呢,我们在配置这要告诉你的register我在哪连是哪个库啊等等等等它给你初始化的时候。
06:11
加载进去,然后我们写这个配置的关键是什么,我们都清楚,如果你要用野生版的red塔,它进这个里面的值啊,会有一些什么0X啊,叉叉叉的一大堆,还记不记得,那么我们这样是不是要把它完成一些序列化,希望我们Java里面代码写进去是什么,在库里面就是什么,不要有那些序列化,反序列化的问题,好,那么所以说我们这red templ。T。Izer设置序列化,那么尿一般我们最常用的是不是用stringize这一波OK吧,然后呢,我们用诶。我们用A。Temp,然后再设置我们的什么value。这儿注意见有好多种杰森,那么我们为了安全起见,因为大家都知道哈,以前我们用的是不是用那个fast杰森比较爽一些,但是fast杰森呢,爆出一些安全漏洞,所以说这一块呢哈,我们用的是Jackson,用这个来替代我们的fast Jason,那么用我们的Jason Jackson to Jason OK,那么有这个以后相当于说六出来这个东西我们呢,就给你。
07:24
配置一下兄弟们,这波OK吧,但是不要忘了在这儿是不是要给容器管理起来,我们需要有这么一个病。写在这个构造方法上面,写在这个方法上面,这波OK吧,好,那么同学们。这个算是完成了我们的一个配置。这一步完成,那么下一步我们就要写我们的CTRL了,那么我们想实现的一个CTRL了,就是发过来一个rest客户端啊,发过来一个rest这个请求以后,那么假设现在还没有NX啊,同学们。那么你先不要管,那么现在就是一个单机的,直接去找幺幺幺幺点一下,那么我就去去查一下它的库存,如果大于零,那么说明什么,还有库存,那么是不是就卖掉一个这个这个数字是不是自动就少一个,OK,那么这样来做了以后呢,我们。
08:15
走起,那么temp,那么同学们请看它有一个什么?是不是有一个子类叫string既乘以明白,一般子类功能都比父类更强大一些。那么大家请看这些东西是不是跟刚才我们所写的类似啊?好,那么所以说我们本次啊,我们在CTRL来,我们来做这么几件事情,那么跟着我来啊,代码呢很简单。首先CTRL了,那么。过了这,那么我们private。这个时候我们是不是就要加string,跟你那个是一回事啊,自动的给我注数好完火以后,那么由于我们到后面我会把它变成分布式的一个架构,那么我们需要。
09:05
为了给大家演示啊,最爽的一种情况是不是知道我们的一个服务端口号啊。这波能跟上,那么服务端口号我们配在哪了?对于我们的这个工程里面,我们的application样么?当然我这用的property啊都一样,我这个一号机端口是多少,是不是1111肯定端口号不会轻易变换,可以写死了,那么这样的话呢,就爽爽死了,那么这块的话同学们我们是不是可以。这一波同学们没什么问题吧?能能不能理解,就是说我用这个value这个值啊,从我们的配置文件里面读取到我们的端口号,那么大家想一下,这个时候我们应该怎么读办啦,这个时候是不是有一个东西叫这个呀。同学们。Dollar。点port还有印象吗?只要我们写在配置文件里面的,点port是不是相当于TV键值,对这个T是不是可以通过Dollar这个东东给你。
10:06
搞定。想一下,那么相当于说我们从这儿就知道了,如果我这个请求发过来,我调的是哪一台微服务上面的机器,1111就说明是一号机,如果待会是2222就是二号机,那么这样我们不管是待会的演示还是以后故障的排查都非常方便,这个几乎是写CTRL的标配了啊,还是希望同学们能够把它写上去,那接下呢,就好说喽,那么public string,那么我要干什么是不是?
我来说两句