00:00
好,下边呢,我们来说一下这个我们分布式架构哈,它的一些个优缺点,先说优点啊,优点有这样几个方面,因为他把我们整个这个架构呢,进行了这个拆分啊,所以说呢,他的模块。模块化程度更高啊,有利于有利于我们这个分工啊,这个时候可能比如说我们一个人负责一个模块啊,一个人负责几个模块,或者一个小组负责一个模块,这就看我们这个系统的这个大小了啊呃,另外一个呢,呃,有利于去提升。我们项目的一个性能,这个性能的提升呢,我们从这几个角度来说,一个是这个整体的提升啊,一个是这个局部的提升。
01:14
整体的提升呢?我们有这样的这样的一些方面啊,它为什么整体能够提升呢?以前我们整个项目用一台服务器,现在整现在这个里边的一个模块用一台服务器啊,那么整个项目呢,用很多台服务器啊,这个时候其实呢,你用一个服务器和我用很多服务器相比较来讲,我用服务器多呢,占用的硬件资源的就多,哎,我们整个整个项目中。每个模块都可以独占啊,一台服务器整个项目呢,分配到的。
02:16
啊,服务器资源就更多啊,这个只是我们对项目性能的一个整体的一个提升啊,那你用的资源多了,那你当然就性能就会更好了。那么局部提升是什么呢?也是啊,由于我们对项目进行了拆分,所以可以有针对性的对项目中局部的。模块啊,进行这个呃,专门的优化,哎,这个优化呢,局部的优化怎么优化呢,你可以提升这个服务器本身的性能,加CPU加内存等等,加带宽也可以呢,去配置这个集群啊,所以说在这呢,这个优化呢,我们有这个横向的和这个纵向的,纵向的呢,就是给当前模块所在的服务器啊。
03:30
增加硬件资源啊,这个硬件的资源呢。呃,有哪些CPU啊,内存呀,是吧?啊带宽啊等等都是这样,但是我们分布式架构的情况下,一般我们不太建议这样的纵向去去进行这样的一个提升啊,纵向的这样一个增加啊,因为你相当于把鸡蛋放在一个篮子里边,这个服务器一旦宕机的话,这个模块呢,这个就整体就都不能用了,所以我们倾向于用这种横向的,就是说给当前模块去配置集群,哎集群的话呢,就是我们以前呢,你是一个模块,现在呢,我们有三个模块运行的是一样的,现在服务器运行相同的模块,都是同一个模块,你过来有一个负载均衡的一个服务器过来帮我们去协调啊,看看你把这个请求分摊到哪个模块上,这就是我们的集群,因为集群的话呢,你其中有任何一个挂了,其他的也都能够去提供服务啊,有这样一个效果。
04:40
这是这是我们分布式架构的一个优点,那么相应的呢,其实呢,它也有它的缺点,它的这个缺点是什么呢。第一个结构复杂啊,你想这个整个项目拆分成很多个模块,模块之间呢,又存在这个调用关系,这个调用关系可能是错综复杂的啊,那么呃,结构复杂体现在我们说调用的关系复杂,体现在我们的这个部署。
05:17
啊,部署上线部署运行的时候,这个就复杂啊,那牵扯的这个东西就多啊,包括我们还有这个中间键,哎。这个这个据一说呢,我们这个作为我们的外部服务器里边都会有这个session来管理我们用户的会话的信息,他就说它就会有这个session不一致的问题,哎,后边我们会学到我们会用spring session配合啊,解决session不一致的问题,哎,那么还会有这个。呃,分布式事物的问题。
06:00
啊,什么叫分布式事物的问题呢?你在这儿我们有一个修改的一个操作,我要去改MYSQL,要去改red,要去改elastic search啊,那么这几个东西,我未必能够说这三个操作哈,这分开的,你要都成功的话还则罢了,没有什么可说的,里边要是有一个是失败的。怎么办?这就不像我们传统的数据库的事物哈,有一个失败,咱们回滚了就完了呗,啊的这个事没有这么简单啊,那你回滚的时候,你red你怎么让他去回滚啊,你来这search你怎么回滚啊,你怎么去撤销这个操作啊,你要是做一个逆操作的话啊,你之前的一个side操作。啊,我去把它给这个改成一个,把它设置成一个旧址啊,你之前设置是一个新址,我现在要把它改成一个旧址,但是你这个逆操作啊,是顺逆的逆。
07:07
逆操作就保证一定能成功吗?万一之前的操作成功了,你的逆操作就失败了呢?啊,所以这个这些呢都是问题啊,这就是我们这个会有分布式事物这样的这个问题啊,这是它的这个分布式,分布式架构呢,也会有这样的一些个缺点,但是呢,即便是这样哈,我们硬着头皮也得上,所以说使用分布式架构并不是因为我们想要炫技,而是呢,我们确实是面面对了我们互联网环境下边的一些个实际的问题啊,不得已啊才做这样的选择,如果允许的话,这个项目我们遇见它访问量没有那么大啊,功能也不是那么特别的,这个复杂啊,完全有可能我们为了简单,我们就使用单一架过来。啊,所以说这时候大家一定要记住啊,用分布式架构并不是说我们必须得用,而是说根据我们现实的需求啊来做的这个决定。
我来说两句