00:00
来下边我们得去确认一个事儿啊,就是我们这个调用的时候呢,很有可能是需要去传参的。诶你看呢,我们在这边哈,咱们就是比如说从浏览器这边,咱们从这出发。我们。咱们先把这几个先,因为改源码的话呢,把这几个先停掉哈。把它给停掉。嗯。Quest。麦平。呃,我们来一个叫啥呢。嗯。Search。Search search EP吧,就是他需要传个关键词过去。它返回一个漂移的例子。ERP的历史?写歌吧。
01:00
Return一个县。我们这儿呢,去给他传一个参数啊,Keyword。让浏览器上把这个参数给我们传过来。呃,浏览器呢,他直接发请求给给这个地方吧。哎,就是说它,呃,请求参数的名字,如果跟这个一样,这个request的这个注解是可以省略的。这个。但是呢,我们要是调这个远程的这个接口的话,这个就不能省略了。这个get。List。把这个拿过来。然后呢,这时候我们CTRL1的话呢,咱们就可以把这个方法给它建出来。Request。就是,然后get。List。
02:00
然后呢,这个就特别容易忘,这边就写完这个以后,我们就就。很自然的就接着往后去写,这个地方特别容易忘,忘忘了去写这个。哎,咱们先按这个这个加这个注解的方式去测试一下啊。这边这个写完了以后呢,我们。把这个CTRLC复制过来。到我们的这个。Provider这边啊,把这个也给它加上。咱们去准备一下这个假数据哈。P list等于一个list。呃,你有一个一。这个比如说来个。三张。
03:09
我试一下,看看这个行不行啊。三换成。省得我自己一个一敲。然后把它返回。呃,不过主要我们看的不是这个哈,有点那个。呃,有点冲淡主题了,其实我们是,其实我们是想看这个。这个keyword呢,咱们得看一下这个东西呢,有没有接收到啊,有没有接收到。我们装配,咱们把这个啥拿过来呢,咱们去准备一个logo。
04:00
来个log。点get log。把当前这个类传进来。啊,这是我们自己准备的哈,所以这个就不需要奥。呃,然后呢,拿这个去,比如说咱们in吧,去打印一下啊。对,这个p word。等于。加上加上加上。写里边应该是。现在现在这个应该是一个对的哈,咱们这个跑一下试试。里面是吧。呃,跑一下试试啊,咱们把这几个启动一下。
05:02
U f consumer provider。哎,全选中一起去点这个启动的过程呢,能够这个节约一点时间啊。以前这个就以前原来我也是很谨慎的啊,特别小心翼翼的,先骑有瑞卡,再起provider,再起consumer啊就是说能够。就是说降低一些什么的问题呢,就是说你刚启动的时候呢,可能他们互相之间还没找着。啊,服务注册发现呢,可能其实还没有完成,哎,然后这时候你访问的可能他访问不着。啊,但是这个时候其实呢,我们说这个,呃,其实你等它全洗完了以后,他们互相之间呢,会去会去通信是吧,他们互相之间会去有一个房门。咱们可以先来看一下这个。直接走走他吧。这个哈。FA consumer search。
06:05
呃,我们手动给他传一个keywor。等于一个AAA。哎,就是这个哈,Not balance does not have a。Volleyball server啊,这啥意思呢?这个以后咱们会可以说比较频繁的看到这个问题。啊,你看这个load balance是啥玩意儿?哎,漏就可以翻译成负载balance,就是平衡balancer呢,就是什么器对吧,负载均衡器,负载均衡器我们知道就是谁啊。我们是靠ribon来做的,他说呢,这个其实就是说ribbon呢没有。Does not have就没有嘛,Volleyball是可用的服务啊,对于你这个啊,就是说作为我作为他的一个客户端吧。就是说ribon呢,其实rib这个意思就是说ribbon,根据我们这个微服务的名字,找不到那个provider。
07:01
啊,瑞本根据这个东西找不到,其实他去哪找呢?去有人卡里边去找。他去UI卡里边去找,UI卡里边找不到,那就是那就是provider还没有注册进去呗。那他就还没注册进去呗。没注册进去的话,其实这个事儿呢。嗯,只要他们能够连上,就是我们启动的时候呢。呃,我们是一块起的嘛,我们不是说先起的有人卡,后起的跑来,哎,这时候就是我们等一会儿,你看我刚才废话了半天了是吧。他们之间按说呢,应该是能够这个通信完成了啊。哎,如果这时候我们等了这么半天,还还还还不行的话。是吧,那就那这个时候就是说这个你就老老实实的那个重新那啥一下啊,不放心我们就来有瑞卡这边来看一下。哎,我们看到这时候这俩呢,已经都注册进来了哈。所以这边呢,我们再刷新一下。你看刚才那个异常就属于说不是我们自己写代码的问题,不是我们的代码的问题,就这个就是说他只是服务注册发现他需要一点时间。
08:08
啊,就是因为服务处的发现需要一点时间啊。我们这个你可以,呃,正常的话就稍微等一会儿就好了。但是也不排除什么呢,也不排除你这个服务的名字写错了。你这符文名字写错了,那他永被子他也找不着。是吧,他这个永远他也找不着啊,你给别人打电话,他当时没有接,那可能他现在有事是吧,然后你等一会儿再打,可能他就他就接了,就打通了,你要电话号码都拨错了,那你永远也打不通了是吧,你打通了,那那也不是你你要找的那个人啊。哎,这就是说这个我们看到这边显示了哈,关键是我们看一下控制台打印的那个logo。我们现在启动了多个哈,大家看哈,现在启动了三个程序,这三个程序都是在这一个控制台里边去打印这个打印东西啊,所以说呢,你想看哪个呢?你得来这儿去选啊,你看我们想看的是provider。
09:01
看看我们,哎,Employee handler keyword等于三个A,现在是能够接收到的啊。那么我们看一下下边儿关键要测试的就是如果我们在比如说。这。忘了加这个注解。或者是provider这边你忘了加这个注解,两边呢,有任何一边忘了啊,或者说你都忘了。这个就是应该是传不过来的啊呃。对,很有可能你都忘了啊,就因为你你是你听我的话,你这边这个你这一套是复制过去的嘛,那你这边没写,那你那边就肯定也没写了。所以这边吧,咱们去试一下啊,咱们先把这个这里边儿这个先给它去掉。去掉它的话呢,因为它是common里边哈,所以这个对provider和。对他对也有影响。咱们为了。哎,这个保险咱们就三个都重重启一下。
10:00
哎,以后咱们要启动的微服务哈,就会比较多啊,测试个啥得起好几个啊。然后每一个微服务,其实它能占多少的这个内存啊,咱们看一下啊。咱们这么看啊。你看有这么几个啊。这几个就是我们这个微服啊。你看200多兆,200多兆,300多兆,100多兆哈。就是。对吧,你这个现在我们还没有加这价班,还不是很多,就我们写的程序肯定没有这么大。我们才写几行。肯定1K都不到。我觉得咱们写这一点。是吧,咱们写这点划拉划拉收收敛到一块1K可能估计也不到是吧,就就一点点,我们就写一点点,但是它跑起来有几百兆啊,就是因为它里边加的价包太多了。哎,所以说我们是省事的是吧,但是他对这个服务器这边其实性能还是有一定的要求的啊,要求你这个这个内存空间得够大。
11:06
所以说你这样的微服,你想想跑起来十个。一个不多说,占300兆的内存的话,你这十个差不多就三个G了。你就啥都不算哈,就就跑这些微负就得三个G。你盘算盘算你这个内存空间是吧。所以说你还得开虚拟机的呀,你后边。啊,你还得开虚拟机呢,你还得你Windows系统还占占空间是吧,然后你这个你还有别的软件呢,Eclips是吧,还有你的这个啥啥啥乱七八糟别的。啊,所以说。咱们众筹这个项目其实也还好,就电商项目呢,说大家你八个G的内存是最低配置。至少要八个G,然后你最好是能够有12个G的内存。最好是能够有12个G的啊。来,咱们这回重新跑了一下啊,这边这儿没有加这个啊,咱们。
12:05
来咱们刷新一下看看啊。他说400。400。Reading哎,它读取这个时,这个呢,呃,这还有个500,这有个400。这谁500谁400呢。谁500谁400啊,咱们看看啊。咱们现在看一下,咱们现在看的是谁呢?现在看的是有卡哈。看一下provider这边呢。这是卡。这个不是,这是之前刚启动的时候,他没有找到有瑞卡,这是没有找到有瑞卡的,这个跑异常后边找到了就好了啊。后边找到了就好了。他说这是200。他说,Required string per keyword is not present。
13:00
这个应该大家哈,应该是不陌生的。你不应该对他陌生啊,这个提示就是说呢,我们provider这边你写了request解了。然后呢,你这里边儿呢,你也没有设置那个,你没有设置块的等于bos这个参数就是必须的,你要没有提供这个参数呢,它这边就会报这个错啊,告诉你这个东西是必须的。那他这边呢,看一下。呃,就是初始化完成了哈,这边他说是解析这个。那其实应该是啥呢?他这边是400 provider这边是400,大家还记不记得400这个响应状态码儿表示什么意思啊。哎,通常都是参数的问题。我越来越爱你们了,你们怎么这么棒?这个这个。真的是啊,就400这个错误是参数的问题,参数呢,比如说像我们这个人家必须传的参数,你没传。这是一种,还有呢,人家要的是int类型的,你非给人家一个字符串类型的,这叫类型,类型转换错误。
14:06
再然后呢,说如果说spring spring Mac这边呢,你用了什么?呃。哎,这个闹闹呀是吧,等等这个这类似的这个数据校验的这个这样的。规则的话,它数据数据校验失败了也不行啊,比如说你规定它在50~80之间,哎。哎,就是说在这个范围内,你必须在这范围内,结果你来了一个20的啊,这个时候这个就呃,这个也是违反数据校验的规则,它也会这个也是这个。这个是不是400。我忽然间有点不太确定啊。嗯,应该是哈。应该是哈,你要不放心,你可以再再去确认一下啊。呃,500就抛一场了,500基本上就是抛一场了啊。就是这个说阿姨我不想努力了,这个正确的范围是吧。结果来一个20的不行是吧。
15:02
20的,人家看不上你。嗯。哎。来,然后然后呢,我们然后这边是400这个错误,然后看consumer这边。他呢,就是叫provider出的问题。呃,这个是说啥呢,他他去调这个远程方法。人家对方呢,给他返回一个400,然后他这儿不是抛一场了吗?他抛一场他给浏览器返回的是500。啊,是这样一个关系。就是说这是我们浏览器。浏览器啊,他去找我们的这个。Consumer。呢,去找的是这个我们的provider哈。Provider呢,他给他给费呢,这边返回的是400费,这边呢,给浏览器呢,返回的是一个500,是这么一个关系。
16:03
款这边400,这边500。所以说呢,那我们就这个就这个其实还好。这种情况还好,因为这边能出错啊,这个你这个他很很明显的会告诉你,你来控制台一看你就知道哦,它这个是参数没提供。这个大家去调调这个就是出现问题以后,你调的时候呢,记得啊。呃,把控制台最大化,然后去看这里边呢,上上下下的去完整的去看这个信息啊。完整的完整的去看,有的时候呢,你只看现在它显示的这一小块,这有时候你你这有时候这个有时候你啥也看不出来。放大了去看啊,你要是能够,而且你是各个微服务你都要去看一看啊。我觉得你要能看到这句话啊,这个你就算你你这个有单词不认识是吧,把单词一查,你就能知道这句话什么意思。他就keyword,你就能够帮你定位到这个问题在哪啊,所以这个东西其实是你是有能力去自己去去去解决问题的啊。
17:04
呃,所以说这是这是这个还能看出来这个问题发生在哪。那么我们再换一下,如果我这边写了request。呃,但是我那边没写。我这是这是汉德吧。啊,就是。我们这边没写。咱们。哎,重新启动一下啊。看看这回是报个什么错。
18:04
嗯。这时候就得等一会儿了。我们以后可以利用这段时间是吧,起福气的时候让同学上来表演个节目。省得我们等这个时候等的挺无聊对吧。看看provider。Provider呢,这边你看哈,他刚起的时候呢,它会有这个。Cannot execute request or any no server,哎,不能够执行请求在任何的已知的服务器上。就是这个我们我们比较顺溜的语语语序,应该是在在任何已知的服务器上不能够执行请求,它这个服务器呢,指的是有瑞卡的服务器啊。
19:05
这不是有瑞卡吗?是不是reriable u瑞卡HD叫。这个这个这个时候我们看到这个其实对我们启发很大。这个单词咱们拆解一下。反正现在咱们也得等一会儿是吧。Riable。哎。嗯。TRY就是尝试。瑞就是。重复的再来一次,Re try就是重试。Able就是可以的,可以重试的,有重试功能的,他会去重试的。啊,所以这会儿他不行的话呢,他再等一会儿,你看这边抛完一场以后呢,后边又打印了这些个日志。Disable Delta property什么的啊。就是他跟有人卡交互的时候,它会有这样一些个。Discovery client and硅谷provider。呃,Re re啊,他去重新的去注册。
20:01
Registering service是不是正在注册服务?Registration status204。二开头的应该是是好的哈,应该是啊。The response也是200。相应200,就这回他重试了以后,他这边就好了啊。所以这时候你看我们有人卡这边呢。注册还是注册上了,哎,然后这边还是这个请求,我们就过来刷新一下。你看这个数据拿到了哈,因为我们现在没有依赖这个参数啊,我们这功能没有依赖它。然后呢,看一下这个控制台的打印,诶。是我记错了吗?嗯,这边加了。什么是这边加,这边可以不加吗?做了一个不太好的一个榜样啊,我说这个,那就是两边如果都不假。不过两边都不加。
21:02
呃,那这这个咱得这么说啊。虽然说这个咱们看到这边加,这边不加呢。呃,他也能传过来,但是说咱们还是不提倡这么写啊,还是不提倡这么写。啊,你要是能记得,你要是能记得我说的,你把这边复制到另外这一边去,这样往后去写啊,那这个其实你也就你这边写了,那边就不会不写对吧。呃,然后你要是复制的话呢,你要是这边没写,你从这边复制到这边,那就这两边你就都忘了写了。啊,基本上不太可能出现一边写一边没写的这种这种情况。这边是不是又给踹一下。就是先说哎不能执行。啊,他会隔一小会儿时间啊,这个肯定是得等他。明确打印这个日志,他说他注册上了,咱们再去做后续的这个操作。
22:03
他这边说注册上了诶。就说人家这个程序吧,就是说这个这个我觉得这是特别好的,就是它有弹性。啊,前面都抛一场了,没关系,咱们程序还可以继续运行啊,这个刚开始第一次没有成功的话,没关系,我再试一次,还没成功,我再试它不断的能够去重试。这个程序就很有弹性,不需要我们就小心翼翼的,我以前小心翼的按顺序,按顺序去启动的话,其实就就就显得有点这个不必那么小心啊,对我们来说呢,我们就可以比较。就是简单直接的,就我们就一块儿就骑,让他自己去去找。这个就就给我们使用的人来说,就用户这个就就很好。我们,我们自己呢,在生活当中,我们也是,我们也得有弹性。啊,就是说我们说生活呢,不可能事事都如意对吧。想你这个总总有可能是遇到一些个不如意的这个地方。
23:00
哎,所以说我们也是应该是。有弹性对吧,哎。遇到任何困难啊,受到打击啦,然后呢,你慢慢你自己还能缓过来啊。这是最了不起的啊。这时候你看这时候如果两边都没写的话,这边这个值打印,这边就是闹,这个职就传不过来了,我们现在这个职位闹呢,对于别的操作呢,没有没有什么影响。可是我们。真正去做做开发业务功能的时候,你想这边我要是没写的话,你后边要用这个,那你查什么东西,根据这个去查,你不就查不着了吗。哎,所以这边就会影响这个功能的实现了啊,所以这个地方得去注意啊。说了半天呢,说了这么半天呢,就是告诉大家这边传参数的时候呢,你该加注解,该加啥注解就都把它加好啊,不加的话这边是会出问题的啊,顺便我们也看了一下关于启动的顺序啊,还有他注册的时候呢,这个呃riable啊,它会重试进行这个注册啊。简单类型哈。
24:01
Request这边。复杂类型,这个request body也是必须写的,意思是一样的啊。而且request body呢,你想啊。Request body呢,我们是需要把它呢以Jason格式去传过去的。啊,这个实体类就会变成阶层格式,那么你provider这边呢,你要是没写它。这个东西呢,就不是和杰森对应,它就不是把杰森转换成这个,它是这个请求参数的名字,对应它的set方法。Username等于汤姆。那么你要这边没写request body。你要是没写这个。那么这个这边这个这个地方哈,它就是拿username去找他的这个set方法。呃,Set user name直接这么去找,他没有一个说把结算数据说在恢复到实体类里边,没有这个过程,他就他现在只有接测数据,他拿到的数据不是这样建筑论的形式,他就没办法去。注入职了,就是这个时候这个这里边儿就就接收不到了啊,所以说类似这样的这个注解啊,咱们不一个一式了,大家要有意识呢,他们是。
25:07
那个啥的啊,该加注解的地方,你都要把它给加上。
我来说两句