00:00
实现了第三种情况就是集群部署,那么集群部署呢,在企业开发里面也是比较常见的一种需求了啊,那么集群部署啊,他跟我们多利模式有点类似。那多利模式之前我们演示过,如果当我的stop service是多利模式情况下,它就解决不了这种超卖问题了。那么我们现在呢,如果是集群部署。而我的服务呢,在这里部署了一个服务器,那么这个地方呢,还有一个服务器,那这个地方还有一个服务器。当我的请求到达这个服务器的时候,它可以访问共享资源。当我到达这个服务器的时候,也可以访问这个共享资源,那么到达这个服务器的时候也可以操作我们的共享资源。那你想都不在一个服务器内部了。他还是单利吗?就不是的了。那么服务器与服务器之间,每个服务器里面都会有一个to service这样的一个实例啊,这实例。
01:00
那你可以认为呢,违背了这个单利模式,它使用了独立模式。但是呢,又有点不太一样,我们是集群部署。其实我们每个服务内部呢,还是单立的啊,只是呢,多个服务器导致的啊。好,那么咱接下来呢,来去演示一下,首先呢,我们只要把代码还原回去,保证单机情况下咱不会出现超慢现象。那我们把这个事物注解呢,给它去掉。然后呢,我们来去启动咱们这样的一个服务。启动好之后呢,应该启动没啥问题啊,启动好之后呢,把库存数量重新改回5000啊,改回5000之后呀,我们来去找到压力测试工具来去运行,诶忘了它清空了对吧,来停掉啊。停掉之后呢,我们清空一下,然后呢,再去找到数据库,把这个数据数量呢,改成5000件库存啊保存一下。这一找到压力测试工具,我们来去运行一下。
02:03
那么此时我们吞吐量回到一个合理区间了,应该是500多的吞吐量。那5000个请求啊,也发送完了,都已经成功了啊。最后呢,我们的库存数量也没减为零了,减为零了。好,单击部署没啥问题。那如果我部署多台服务器会怎么样呢?但是我现在只有一台电脑,咋办呢?我们可以呢,Copy多个运行实例啊。那这个地方呢,每一个运营实例就相当于一台服务器。那我可以呢,去配置来打开这个edit configuration啊这个按钮。打开之后呢,我们可以去copy多个频部的运营实例啊。那么咱这个地方呢,改成二。那我启动类就是同一个这个呢,是它的一个启动类,那么跟这个启动类啊,是一模一样的啊。啊,那都通过一个类来启动的,这启动呢,也是同一套代码。
03:03
那端口号我是同一台机器,端口号不能一样啊。哎,那我二这个位置呢,我可以给他指定一下端口号那个杠杠serve.put等于10086。来,我来去应用一下。那么运用好之后呢?咱们也把二给它启动起来,因为这个二有一和二两个运行是一了,那么一呢,我已经启动过了啊,我只要把二给启动起来就可以了。那我来把二呢给启动起来。那么能不能启动起来呢?我们来看一下啊,因为此时呢已经启动成功,端口号呢是10086。那么也就是说我现在有一个一有一个二两个服务我都启动起来了。那我将来怎么访问呢?我到底是访问10010还是访问10086呢?好,那么答怎么办呢?我们只能通过负载进行工具。
04:04
比如说呢,我们这里呢,选择使用NEX来做负载负载均衡哈。那我请求首先到达N格啊,大量请求,比如100个请求先到达N格,然有N过负载均衡到10010和10086这样子。好,那我们这里呢,来我的课件资料里面就给你们发了一些工具啊。在这里呢,有一个indx,有Linux版的,有Windows版的。那我们这里的选择使用Windows版的,因为Windows版的更加方便啊。啊,有兴趣呢,你也可以装这个Linux版的。那我认为呢,你们已经有N几格的基础了啊。啊,如果你对N这个还不了解。啊,欢迎呢,关注上A股的相关专题哈,相关专题专用N和专题视频。你可以去看一下。那我们呢,可以把这个东西呢给解压出来,让它放在我们的分布式锁这个目录下面去。
05:06
那放进之后呢,我们可以打开这个康复,让他编辑它的配置文件。我们要去配置负载均衡。那么了解N的都知道啊,N呢主要是三大作用,第一呢是动静分离。那么第二呢是反向代理。第三呢是负载均衡,那我们这里呢,主要用到两大作用啊,那么一个呢,是咱们的反向代理,还有一个呢是负载均衡。那不管是哪种,我们都需要在配置文件里面配置过之后才能去实现。来打开NX的配置文件。那么这个配置文件呢,你不要怕啊,你直观去改,因为改错之后呢,大不了我再重新解压一个。那么这里呢,我们要去配置啊,先去配置负载均衡。
06:02
那咱可以呢,通过upstream来就可这。那么这些配置啊,我们就不再详细解释了啊,如果你对N这个词不太了解。那请关注上A股的相关专题。那我认为你们呢,对N这都有一定的基础啊。如果你没有基础,你照着我说的去做,那么基本上也能够实现。啊,来一个垂Bo的lock这个玩意儿。那我们呢,再来一个划括号,在画括号内部我们要有两个server,一个呢是我们的10010,咱可以来一个LOCALHO10010。那么还有一个server是local host10086。好,那么这样呢,咱的这个负载均衡啊,我们就已经配置好了,接下来可以通过它来做反向代理,代到我们这个里面去。
07:01
让进而呢负载均衡到这两个服务啊。好,那我们就要去配server了。那默认情况下这个server呢,有一点复杂,那咱可以呢,把这些东西啊,该删的你可以给它删掉,你都不要了。啊删掉,那么下面这些东西呢,你不想要啊,也可以给它删掉啊,通通删掉,那么下面还有很多呢,这些呢,都是垃圾配置,给它删掉。那么筛选之后呢,我们来看这里就有一个server,咱的反向代理呢,要在这个server里面去配置。当我们去访问。Local host任意路径的时候,那就会进入咱们这个location里面去了啊。那这个搂开你要干什么事情呢?我们可以配置动静分离,这是一个动静分离的配置。那我们也可以配置反向代理。来配置一个pro c pass这个配置反向代理到我上面那个负载均衡这个位置。
08:01
好把它呢给拷贝过来,这是咱那个负载均衡的名称,通过它,然后呢给它拷贝过来就可以了。那么copy好之后呢,那我们这个配置呀,就已经配置好了。那配戴好之后呢,我们可以呢,双击去启动。咱们这个N这个。来,双击。啊,然后呢,我们仍要运行。运行是否成功,那怎么去检查呢?来打开你的任务管理器。在任务管理器里面,如果你有两个N进程,那就说明你的N已经启动成功了,那么一个呢是工作进程,一个是主进程哈,N这个要有两个进程。启动好之后,我们开始去访问一下,咱们之前呢是直接访问到10010,那我现在呢,有两个服10086和1010。那我们要通过N来去访问,那么N的默认端口号呢,是八零端口号,咱们可以把这个位置呢改成八零端口号。
09:04
那么路径呢?依然这个路径。那么N呢,就会给我们负载均衡的两台服务上面去。那么到底负载定到哪台服务器,每台服务器上面去了呢?那我们呢,其实啊,你也可以简单的输出一句话。那如果你不输出啊,问题也不大哈,对啊,问题也不大。那么我们来去访问,看看能不能正常访问。他已经防御成功了。那比如说呢,我们这个库存数量,我得改成5000件库存来保存。绑定好之后呢,我在这里呢,还通过咱的N这个路径,我来一访问,我一回车来看有没有减库存啊来刷新一下。哎,一减库存了,我再刷新一下呢,应该又减库存了啊,咱们可以看一下。啊或者呢,我们可以打印一下看看啊。我们呢,还打印一下看看吧,啊,我来加一个打印信息,比如这个地方呢,我讲完之后呀,我弹一下看看还有这个余数啊,还有多少库存的余数,哎,加上。
10:07
然后talk点上get count啊在保存之前来输入出来,那么这样输入好之后呢,我们来去重新啊启动一下这两台服务啊,那么咱这两台服务呢。第一台服务我们先重启一下,那么第二台服务呢,我们也来去重新启动一下。啊,应该都重新启动好了。那么启动好之后呢,我们来看最终效果,咱们这个日志呢,给它清空掉。我来去访问的是N,我来刷新来,此时是哪台服务处理了呢?这第二台服务处理了还剩4997件。那我再来去刷新一下,此时呢,是哪台服务呢,你第一台服务来处理了,那明显看出来它已经做负载均衡了。那为了防止打印带来的性能消耗啊,咱还是把这个呢,给它注释掉,我们来去重新启动,那么服务二呢,我们也去重新启动。
11:08
重新启动好之后呀,我们可以把这个库存数量重新改回5000这个位置,那么改好之后呀,我们来去通过压力测试工具,我们压压看啊。把这个呢,先给它清空,我们来去运行解密。来看啊,它此时的性能应该比一台服务器的性能要稍微好那么一点点。看见600多的这个吞吐量,那那5000个请求都已经处理成功了。啊,失败率呢是零,那库存有没有减为零呢?来看还有1000多件库存了。那这问题就很大了呀。那就很大。好,那我们就是啊,集群部署情况下,可能会导致咱们的所机制失效。哎,那么如果我这里呢,这一次in造成的呢?有的同学怀疑是不是N造成的。
12:04
那其实不是啊。比如说,如果我这个位置只部署了一台服务。比如,我只部署了10010。那么它还会导致。咱的这个超白吗。那如果一台服务解决这个超卖问题了。那说明呢,跟N没有什么关系。是两台服务导致的,不是N导致的啊。咱为了严谨起见,我们呢,这种场景下咱也去测试一下,万一是N就导致了呢,那我们把库存数量改为5000件库存来保存一下。那保存好之后呢,我们还需要重新加载index的这个配置文件。那么N呢,有一个特点,就一旦启动永远不需要重启,但是呢,我们需要重新加载配置文件。那么首先呢,我们要打开CMD窗口,然后呢,在这里呢,来一个N这个杠,S reload这样的一个指令。再重新加载。
13:00
那这个呢,没有报错,那说明呢,咱已经加载成功了。那么此时咱找到紧密的工具来去压测一下运行。那么此时我们的性能呢,肯定比两台服务器呢稍弱一点。因为我们另外一台服务呢,也会占用一部分资源啊,而它又不处理请求,就导致它性能呢。比存一台服务器啊要弱一点哈。OK,那么咱这里已经运行完了。运营完之后呢,我们的库存余量还剩多少呢?还剩零件库存。那说明他已经可以防止超卖了。这单台服务,它是可以解决创办问题的。然后呢,我也通过N1访问了。那说明啊,多台服务的时候出现超卖现象,不是A导致的,而是呢,而是两台服务导致的啊,这两台服务导致的。OK,那我们这个的话呢,给它还原回去,那后续的话呢,我们会经常性的使用到集群负载运衡给它加回来。
14:01
加了之后呢,然后再重新加载回去啊,把这个配置文件重新加载一下。好,那么这样呢,咱在集群情况下所机制失效,我们就演示完了。
我来说两句