00:00
好,下边呢,我们就首先来创建负工程。这个名字呢,我们会稍微的做一些调整。Create new project。呃,之前呢。呃,我们先看一下啊,你看之前我们,呃。就是单一架构的案例是PRO05 SM,这个是零六,我们再建一个就是零七。PRO07。然后呢,后边这我们改一下,这是我们。Service啊,MS是它的缩写,然后呢,Com点艾特硅谷点微,好嘞,Finish。然后呢,每一次创建project,我们都需要呢做一下重新设置,首先呢是enable auto import。开启我们的自动导入。然后呢,点这个扳手。
01:01
首先呢,去查找一下我们问的核心程序。接下来给它定位我们的settings配置文件。好嘞,在这后呢,给他指定一下我们的本地仓库。这些都是常规的设置哈。把这个设置好了以后,接下来我们继续再创建啊它的model。啊,然后这些呢,虽然说我们就没有时间去做了哈,但是建的话,我们还是都给他们建出来。我们使用spring boot呢,有这么一个好处哈,就是说我们不用再把它再去调成这个web工程了啊,或者说就是呃,去调去生成这个web X啊,这个这个是一个很大的一个便利。
02:05
把这个点开啊。然后呢,第三个。呃,一个大型的一个,我们说基于微服务开发的一个这样的项目哈,这个这个里边建的这个model呢,甚至会达到有几十个哈。哎,第五个。第六个。啊,这个时候呢,我们可能大家会有这样一个问题,就是说呢。为什么要这么划分啊,包括这个问题,其实我们在SSM的那个案例的时候,也跟大家去探讨过,呃,这个时候这个根据业务功能进行模块的划分,包括我们这儿呢,进行一个微服务的一个划分,就这个呢,确实并没有一定之规,并没有谁规定必须要怎么样去做,我个人呢是呃,有这样的一个习惯,或者说叫倾向,就是说呢,我的consumer这一层。
03:21
啊,它呢,是根据我们的业务功能比较参照对照我们的业务模块的这个划分。啊,毕竟呢,呃,他们这一层啊,是直接面对我们前端的这个程序啊,前端程序他会来访问我们的这个啊第一层的consumer,然后后边呢,会有专门去帮我们去提供数据的。哎,像我们my SQL data provider provider这样,呃,再然后呢,说这个时候,呃,如果中间呢,还需要有一些个呃其他的运算和处理。比如说呢,我们可能要访问elastic search啊,或者说呢,我们有有对接这个消息队列的啊,又或者呢,中间呢,我们在有一个总的数据层,对这些所有的提供数据的,哎,这些都可以叫做data provider哈,对于所有的数据提供者呢,我们做一个数据的整合,专门建一个数据层。
04:13
啊,这个东西呢,也是有可能的,哎,所以说这个东西呢,呃,这个我们在划分这些之前呀,你不可能凭空拍脑袋,一定呢,是你先对我们整个项目要实现的所有的功能,它的整体上边的一个业务,业务的一个流程,数据的一个流向,哎,计算的一个方式,数据如何去整合,这些东西你都得先有一个初步的了解,然后呢,才能对我们这个项目从我们创建工程拈划分建呃定义微服务,包括我们的技术选型各个方面啊,才能够进行这个设计,越大型越复杂的这个项目,它肯定从这个架构设计上面来说呢,它这个难度就越大,对吧啊。但是反过来说呢,大家也不要觉得这个我们说呢,去设计一个架构呢,是多么高不可攀,多么啊神秘莫测的一个事情啊,我们想呢,我们生活中哈,大家很多时候觉得这个甲骨士是一个多么金光闪闪的一个名词。
05:09
是是我们所有Java工程师追求的一个终极的梦想。可是呢,你要想哈,我们说你要是设计这个京东啊是吧,哎,这个抖音啊,这样的超大型的这个项目是吧,你给这个美团设计一套这个架构是吧,你这个得非常顶尖的架构师,但是呢,如果你这个项目哈,本身这个要求就不高。很小很小的小的项目没有什么,它可能业务功能也不是特别复杂,然后呢,你的这个。呃呃,你的这个这个这个并发量也完全谈不上有任何的压力,这个时候这样的很小的项目,它在架构设计上这个难度就很低。你想是不是这样,所以说呢,如果我们大家有机会哈,或者说就是说你自己可以呃,去找一些个需求来练一练手的话,你可以先从这种比较小的这个项目,比较要求比较低的项目的架构的设计,先来这个入手。
06:07
那你先从这积累一些经验,也也是一些个比较宝贵的经验是吧,哎,然后呢,随着你不断的。在技术层面啊,在这个理论的层面不断积累的越来越深厚,再结合上我们的这个你实际项目开发当中的这个经验。这不就是你不断的在往上去提升自己吗?是吧,哎,技术呢,你从网上去查资料,你去看视频是吧,去看书能够去提升,而这个实际工作当中的这个经验,这个东西是花钱买不来的,这个就一定你是对亲身深入的去参与到我们这个项目的设计,开发,维护这个过程当中,才能够真的去积累这些经验,对吧?哎,就像呃,有一位这个非常著名的科学家呢,叫做大蛇丸。啊,我非常崇拜的一位科学家,他说呢,所谓忍术呢,无非就是查克拉和印。
07:03
其实查克拉不就是咱们中国武侠小说说的真气嘛。是吧?哎,你这个发动忍术不是要结印吗?所谓忍术呢,就是查克拉和这个印结合起来就是忍术啊,它有的大型的忍术,有非常非常强大的这个攻击力是吧?比如说有一招,有一个大招叫做树界降弹是吧?哎。啊,还有那个著名的一袋米哦,扛几楼是吧?哎,然后我们对于我们在现实世界来说呢,就是你的经验结合上你的技术。所以说呢,我们学技术是远远不够的,一定要让你的技术呢和实际的工作能够结合起来,然后呢去。哎,产生这个经验就是你的一个人生经历,你的职场发展的一个结晶。对吧,这二者要把它结合起来,才有真正的这个价值,有了价值你才能够,哎,要得上价格对吧。
08:00
好嘞啊,下一步呢,是我们需要呢,建立一下这个各个工程之间的这个依赖的关系,这这个图呢,我们已经给画好了。呃,这个我们呃单02USER of the center哈,它作为我们的一个consumer的一个代表。哎,我们说呢,别的consumer如果要去开发的话,也是参照这样的一个一个一个一个使用的方式哈,让他呢去依赖我们这个API这个模块。啊,依赖它API呢,需要依赖NTT啊,也需要依赖这个优秀。哎,你说这个API这里边只是一些接口,他要工具类干嘛。啊,这个事情呢,是因为YouTube里边呢,我们会分为一个类哈,叫result entity。这个类要去解决一个什么问题呢,就是说哈。我们每一个微服务返回的这个类型呢,它必须得是同一个数据类型,考虑到我们将来有可能熔断,有可能降级啊,即便是它熔断了,降级了,我们返回的类型也是要一样的,返回的类型如果要求是一样的,那我怎么能够让调用者知道现在是正常还是出了问题啊,那么我们就在result entity里边去封装我们这个服务调用的结果,它成功还是失败,如果失败的话,会有相应的消息,哎,然后呢,如果说这个。
09:22
你是查询操作啊,你是正常执行完的查询操作,我有数据返回给你,那么我还有地方呢,存放你返回的数据,这就是result n要解决的问题,我们是把它呢给放到了这个U里边了啊,所以这个时候呢,这个我们API也需要依赖U,因为它API声明我们这些对外暴露的接口的时候,需要用到这个result nt啊。呃,然后呢,我们这儿呢,下边啊,我们目前我们要做的这些个功能的范围里边,不包含我们的red啊,不包含red,所以说在这儿呢,我们就。呃,让他在,呃,就是我们会用到MYSQL这个数据提供者啊,MYSQL的这数据提供者呢,他去也是去依赖我们NT,依赖这个utu啊,他他就不需要依赖这个API了啊,我们下边呢,把这个依赖的关系呢,给他这个建出来。
10:16
嗯,首先来说呢,是我们的。呃,这样哈,我们我们先把他们的。坐标呢,给它们整理出来。稍等哈。呃,我们涉及到的需要被依赖的就这仨啊,API和U。呃,我们先先一个一个把他们的这个整理出来。哎。好嘞,这是我们API的这个坐标。
11:03
然后呢,下一个呢,是。呃,NTT的这个坐标。哎,然后呢,再下来一个YouTube。好嘞。然后呢,接下来我们说啊呃,让咱们来配这个DEMO02USER of center来配,来依赖我们的API。就按照这个图一步一步做啊,每一个写依赖这俩字的这个地方,都需要去做一下这个操作。哎。
12:03
呃,他呢,需要依赖我们API,把这个给拿过来。哎,这是一个,然后呢,下边按图索骥,API需要依赖NT。好嘞。呃,然后呢,再下来啊,API需要依赖我们的U艇。哎,就是它啊,需要依赖我们的右腿。好,然后呢。
13:01
我们看到MySQL data provider呢也依赖NGT和U,那就正好呢,哎,把我们这一组依赖CTRLC给这个MYSQL这呢给他拿过来。就行了。哎,这样完成我们就完成了工程model啊,他们初步的一个创建。
我来说两句