00:01
好,那接下来呢,是我们阿兹卡班这个课程的最后一部分内容,那此处呢,主要就是一个注意事项啊,什么叫什么叫做阿兹卡班诶多ex模式下的一个注意事项。啊,那什么叫做阿兹卡班的多excu模式呢?其实咱们前面讲过对吧?所以的多excu模式呢,是在我们一群当中的多个节点去部署excu,那一会我们会有多个ex啊,那在这种模式下呢,我们这个最终的任务是如何进行分配的呢?其实是由呃,阿斯卡班的web server根据相应的选择策略,选择其中一个ex去执行任务。啊,那在这种模式下呀,如果说我们呃不加注意的话,就可能会出现一些啊任务执行失败的这个现象。啊,那具体是什么现象呢?我现在呢,先通过一个呃小案例给大家演示一下,演示完之后呢,我们再去说明这个问题,然后呢,再去讲如何解决这个问题。
01:01
好,那假如说我现在呢,在我的海DO102这台节点啊,在我的加目录里边,我创建一个呃这样的一个脚本啊,比如说就叫test啊,Test上一个脚本,那在这个脚本里边呢,呃,我写上呃一段一个简单的这个代码,嗯,咱比如说我们就打印一句话,哎,E。后h he lo,然后呢,后边咱们就叫hello就行了啊完之后呢,我们shift CC给它进行诶保存,然后呢,我们加一个执行权限,趁着Mo加X啊test.sh那那我们点杠test.sh之后呢,我们发现这个脚本咱是不是就可以执行了,对吧?啊现在假如说我就想让阿兹卡班帮我们去执行这个s.SSH脚本。那你看我们这应该如何去编辑我们这这个工作流程呢?如何编辑啊,其实很简单,在这边呃,我们再来写一个这样的呃配置文件哈,来我们就以之前那个first flow为例就可以,对吧?诶,当然这个first flow呢,咱们已经改了啊,咱们已经变成啊这个test Java了,对吧?那这边咱们再重新改一下,比如说我就叫test啊,那这个类型呢,它叫做这个叫com man,因为我要执行的是一个shell脚本对吧?所以咱们仍然是command类型啊好,那下边的参数呢,是不是就可望的参数就可以对吧?那这两个呢,可能就不需要了啊,那我们的可望的应该是什么呢?
02:25
Command的呀,其实是不是就可以直接,哎使用我们这个open本的绝对路径对吧?哎,Home at硅谷下边的这个test对吧,那咱们现在呢,给它写上后at,诶硅谷下边的test.sh。对不对,那目前来看,那我们是不是,呃,这个任务应该能够顺利的执行才对啊,对吧?啊,那现在咱们先测一下,看它到底能不能成功啊来咱们CTRLX保存一下,保存完之后呢,我们嗯,拿到这个我们的firstl flow,这是我们刚刚修改的那个文件,对吧,应该是吧,咱们看一眼啊first flow没问题,然后呢,再找一个这个嗯,Product文件,把它拿过来,完之后呢,我们右键,然后呢给它放到一个zip包里。
03:09
好,我们取个名字。比如说叫做test t ST。点Z,好,那这时候我们,呃,来到这个阿兹卡文的工作界面,我们新建一个product,这个product的名字呢,我们就叫做test t s t s,然后呢,点击create。呃,之后呢,我们将刚刚的那个zip包给它进行上传,找到test.sh,呃,test.zip打开完之后呢,Upload,好,那这时候我们点击cute flow,那接下来呢,我们点击cute执行。啊,大家其实现在可以猜一下啊,这个任务它能不能执行成功,那我们现在点击来点击continue,那你会发现呢,它报错了啊,它变红了啊变红了啊,但是如果说你这边你去重试足够多的这个次数的话啊,就这边呢,你重试足够足够多的次数。
04:01
啊,那这个任务呢,可能会成功啊,也可能会成功,也就是说目前咱们这个任务呢,他可能会成功,可能会失败。哎,他为什么会有这样的一个现象产生呢。啊,其实道理很简单啊,再问大家思考一个问题啊,我们这个test就是我们让阿兹卡班帮我们去执行的这个test.sh这个脚本是不是只在海杜配102这台节点是有的呀?对不对,103和104是没有的,但是我们这个多excuor模式下,这个任务是如何分配的,是由web server选择一个excu去执行这个任务,对吧?那假如啊,咱们的web server选中了海子102,那就能够执行成功,那如果选中了海子103是不是就执行成功不了了呀?啊,其实是这么一回事啊,那所以说那这种问题我们应该如何解决呢。这种问题的解决思路呢,两个啊,哪两个呢?第一个啊,就是我们指定特定的ex去执行任务,比如说我们现在这个脚本在海图102,那我就指定海图102这个ex去执行这个任务,那这个是不是肯定能找到对应的脚本,这是一种方案,那第二种方案呢。
05:14
很简单啊,就是在所有的exor所在的节点都部署我们这个任务所需的脚本,或者是脚本所需的其他的一些应用啊,是这样的,那这样一来,不管任务分到哪个ex,哎,我们这个任务都能正确的执行。嗯,就是这两种思路啊,好了,接下来我们把这两种啊,这个做法呢,都给大家去演示一下,那我们现在呢,先看第一种啊,就是指定特定的ex去执行任务,那如何指定呢。如何指令呢?其实这样的啊,分两步,首先我们需要哎,买circle的阿兹卡文数据库啊,里边有一个exs表,这个表我们之前看过,对吧?然后找到海度B102上的ex的ID,找它的ID啊,那找到ID之后呢,我们需要在执行这个工作流程的时候呢,加上一个这样的属性啊,叫做use ex属性,然后呢,把对应的ID给它放上来,那这样一来我们就能够指定咱们执行任务的ex了。
06:15
好,那具体怎么做,我们来演示一下。这边我们找到,呃,这个咱们之前,诶,咱们这个已经打开了啊,找到阿德卡班这个数据库,找到阿德卡班数据库呢,找到这个表,然后之后呢,我们找到这个102,哎,对应的这台节点的ID是不是就是一呀,对吧?然后这会有一个小细节大家需要去注意一下啊,就是这张表的ID是一个自增主键。啊,是一个智能组件啊,那我们阿兹卡班的excu每次重新启动之后呢,那我们这个主件呢,都会增加的,都会增加的啊因为呃,因为什么呢?因为阿兹卡班大家都知道,Ex启动时候呢,会在诶这张表里插入一条数据,等它关闭的时候,那这个是不是就就会怎么样啊。啊,就会删掉对吧,那删掉之后下次再重新启动,那是不是这个ID就会变呀,对吧,也是这个ID呢,它不是固定的,它会哎逐渐的增长啊,它是一个自增组件啊好,那现在它的ID是一,那现在我们把这个ID为一,先给它记住之后呢,我们找到哎,咱们那个咱们自己之前创建的那个text点诶这个诶,Product test product,然后点击flow,我们找到呃,Flow parameter,然后在这里边呢,我们加上一个这样的属性,叫做use e seco to use ex,然后ID就是E,拿完之后呢,我们点击excu,然后点击continue。
07:34
这时候你会发现呢,它就执行成功了啊,而且呃,咱们点开这个job list,点开log,你就能找到,诶是不是已经输出了hello了呀,对吧?啊,那这个呢,是我们解决这个问题的一种方案,那第二种方案是怎么做呢?是在每台节点上边都部署任务所需的脚本和应用,对吧?那咱们这儿很简单,只有一个脚本,那所以我们也可以将啊这个脚本给它进行分发,TSH分发。
08:00
啊,那我们现在呢,每个ex所在的节点是不是都有这个test斯脚本了呀,对吧?102是有的,那103呢,加目录里边也是有的啊OK,那这时候我们再去做一个测试啊来,我们重新找到刚刚的这个呃,Test,重新找到这个test啊点击点完之后呢,我们点击EXQ,然后注意观察,这次我们还有这个参数吗?这咱数没有任何参数对吧?没有参数它是不是就相当于会随机找一个ex去执行任务啊对吧?那现在我们点击ex,然后点击continue,好,那这时候呢,我们的任务也能够顺利的执行成功。啊,那这两种方案我们就都演示完了。好,那这两种方案我们,呃,大家其实可以简单思考一下,你说我们在实际的生产环境中呢,我们推荐使用哪种呢?那显然推荐使用咱们这个方案二,那显然推荐使用方案二,那首先方案一有哪些不足呢?方案一首先第一点啊,这个ID它不是固定的,它会变对吧?啊这是哎第一个啊,那第二一个呢,如果我们在执行任务的时候。
09:04
特地的去指定了这个ex。啊,那大家可以思考一下,那我们部署多ex还有意义吗?是不是没有意义了,对吧?那我们前面提到过多个ex模式呢,哎,我们可以起到一定的负载均衡和容灾的作用啊,没错吧?啊,那所以说呢,我们在这儿呢,呃,方案一就不推荐大家在实际的生产环境环境中去使用了啊,自己去做测试的时候可以用一下啊啊,那实际的生产环境中呢,我们还是推荐大家呢去使用这个方案二。OK,好,那部分的内容呢,也就结束了。
我来说两句