开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术:体系结构之部署设计】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/80/detail/15934
体系结构之部署设计
部属图是用来设计什么,可以看到组建图用来设计的是一个模块里头的内部的几大块。
那部署图其实在描述的是这些东西怎样装在一个物理的机器上,为什么来画这个部署图,这个其实在整个设计的早期就要做的,因为部署图决定着努力的目标是什么,最后做出来的产品是怎样装在一个特定的环境下走,它是什么样的。
最后检查的这个状况来画这个部署图,不是图图放 ppt里。首先来说不是图里头其实主要是两个东西一个叫做节点,一个叫做工件。节点要分为物理节点和环境节
点。物理节点表示一台物理的机器。环境节点表示要安装的软件环境。
因为通常来说要部署的软件是需要依赖于一些软件环境的,比如超系统,电话虚拟机,比如说像数据库还有装一个 dpm s 都属于它的这个软件的环境。那工件就是会交付给客户的执行文件,价文件、瓦文件、要跑的 c 口的脚本文件,我们给的用户
一个 u 盘 ,u 盘里头有多少个文件,就是多少个工件,这称为工件。工件和组件之间不是有必然的关系的。大家可以看到在画这个组件图中间的第二个组件,其实不是工件,是二个组件那个加文件。你交给客户之后你不会将那个加文件给客户。那个加文件是被打到其他的服务里去,所以组建和工件不是打等号的关系。
比如说第一个组件和第三个组件,就是工件。交给用户一个权限微服务交给客户一个这个网关的应用程序。这是两个工件,但是中间那个第二个那个不是工件,那个是这个模块的主键,但是它会存在于其他的模块里面,所以他们两者之间并没有必然的。这样的一个关系,那从数据库的这台服务器开始发起发检查的时候,要求每个组自己要架一台数据的服务器或者说架几台可以,所以当只画一台数据库服务器的情况,因为是可以把数据库做成好几台的。因为数据库的话是按照微服务切开
的,如果觉得数据库是瓶颈,在最后测试时候不仅会跑功能测试还会跑性能测试。如果发现性能就是崩了,然后要去分析一下崩的原因是什么。
如果说觉得崩的原因是这个数据服务器太慢了,可以把数据附近切成几台。现在只花一台的情况,那首先画一个物理节点,物理节点是一个带这个透视效果的这个方盒子这是表示节点那通常在物理节点上头不仅仅把它表示一台物理机器,还会去表示一些这个物理系统,完了以后应该有的一个环境,比如说操作系统,往往也把它写在了这个物理节点上。首先一定是他物理机器,是一台虚拟机。这时候物理节点也会把他的一些这个操作系统,虚拟机等等这些信息写在这个部件。但在这个阶段,第二个节点说出去,环境节点是不是把数据库用环境节点描述出来,数据库打算用MySQL,这个课的特征就是把所有的软件架包全部升到最新的,这里需要用一个同样是这个节点看见没有,但是它画在了一个物理节点里头表示说它并不是一台物理的机器。它是一个环境节点,这个环境节点表示说在这台物理机上头要安装的环境,所以这个环节表示的说在这台机器上装一个买 mySQL八点零装一个mySQL
八点零那买四个八点零以后放什么放的就是工件,第一个已经看见的这个是 segame,不显示ecl就是ecl这个是建表的文件。
第二个是 β 点是一口这个是初始化数据的文件。第三个是开始的 data ,这个是测试数据的文件,给大家三个文件。就是所有的建表里头是不包含所引,所以是需要你们自己完成。所以你们自己要做一个 inx 的这个文件,测试之前,你要测试把这台数据库服务器不好,然后把这三个文件还有你自己这个文件把它刷成这个我要测试之前的这个状态。这是第一台服务器,数据库服务器,所以大家可以看到物理节点,缓解一点用来表示这个mycql 的服务器,这个没有透视的这个方框是工件,工件用来表示说在这台服务器上的要刷哪些辛苦的脚本,这四个脚本就是你提供给客户的工件,因为要把这社交们给客户,客户才能在那个服务器上去刷这几个脚本,这是第一台服务器。那第二台服务器这是你的那个模块,当然这个只是换一个示意,也许你的模块你想用四个或者五个服务器也可以。我只画一个就好了,同样是一个Ubuntu十八点零四的服务器,这个也是个物理节点那在这个服务器上打算部署一个微服务,比如说订单,所以订单打成一个价包拷给客户,跟他说你不得这款服务器上去,我们其实每台服务价格有 ip 的,比如说一七二点多少白天写字一七二点多少多少多少,这个都属于这个物理节点的信息,这样就知道这台服务器的 ip 是多少了,写上去那这服务器打算不欧德的这个微服务的会是一个价包,实名不是的应用吗,打算是个价包那这时候知道里面其实包含了一个他们 cad 的容器,设备的容器但我们觉得t要不要换成一个环境节点或者勒体的容器,不用换要换要有要坏的理由,不要画理由它是内置的,在核心的地方你画这个环境节点意思是说这个文件是不能独立跑的,需要装一个环境这个东西才可以跑,比如说这个我给你一个 cel 能跑,不能跑你要装一个买 cel 的b m s 才可以跑这个 cel 那我们现在是最近 boss 的应用,所以是一个价包,这个价包其实是不需要任何环境的,只要有虚拟机你要画的话你可以画个虚拟机,虚拟机写成是他的这个跟操作系统一样的,写成物理节点的一个属性。需要一个 o 的点架,这是个工件,这是一个word的微服务,那你把这个拷到这个上面去然后又加把杠架把它抛下就好了,所以不需要再装任何的环境节点,因为他的环境已经内嵌到这个架文件里头了当然每一个模块你是可能设计出多个微服务的。可以选择说让这个微服务跑在一台机器上,还是跑在不同地区上。要跑两个微服务的话,需要在上头放两个加文件就是放两个工件。两个件都放到这台服务器上去,那你如果要用多台服务器的话,你是在上面在话多个物理节点。但是你有一台服务器,你是一定要换的。就是我们需要换一个,同样是一个Ubuntu十八点零四我们还需要给他提供一个工件是用来做查明服务的,有瑞卡服务器这个大概是什么,计划一中间会会讨论的比较仔细,当然知道这个服务器是用来去管理所有的微服务的路由的,就是每个微服务的这个 ip 是多少。他在哪台服务器,因为你这个部署都是不一样的,所以所有的这些微服务都会到这台服务器上去登记然后所
有的请求都会到这里来查一下。这个服务器的ip 是多少,所以这个油瑞卡的服务器是要套装的。
那根据前面的这个瓶颈的分析,我们需要安装一个做缓存的 read 式服务器是一个独立的软件。所以它是一个环境节点安装在一台独立的服务器上,然后还需要安装一台用来写自制的 voc 的 m q ,这也是一个环境节点,它也是一个独立的软件,所以需要装两个,可以把这两个环境装在一台机器上去,就是在这个在这个机器等换两个环境节点,把它拉长一点换两个换一两个直接这个机上的装了两个环境,当然还需要装我们的权限的服务我们的权限的服务,我们要的不是 vip 点架,然后我们还需要装全线服务的网关服务器,要借服务器,模块都装一台服务器上,最少当然你可以装在一台服务器上,能否承受这个性能测试,不行的话那就尽量把它散开,这是我们每一台服务器和每一台服务器上的环境以及在这台服务器上我们会放什么样的工件在这里头,然后所有的服务器之间是由网络联连接的,重建在这里头然后所有的服务器之间是由网络连接的你需要描述说这些服务器他们之间的访问关系是什么,这台服务器是核心,所有的服务器都会要就是这些东西都会要访问到这台服务器上去。这个其实是工件,做了几个模块自己写的几个价包都会要访问这台服务器去获得说其他的价格的。
比如说订单,他只是要用到其他的模块的话,他都要做这台服务器查一下,这台服务器是核心,会以为这台服务就会是负载最重的,在客户端都会做缓存随着他起伏,其实是可以公用的。真正查都不会到这里,所以他其实看起来大家都要来用他其实他的负担并不大。所以往往他们都可以做这个那对于他这个get来说我们知道日志要通过 rap 的 mq 来访问,对于全新系统来说它的权限要写到这个 mdx 里头来他叫权限同样要通过这个 rg scme叫权限然后这两个都要访问数据库,所以要画一堆的线要画一对的线线上面。比如说在这个地方可以写 gdp 表示说它是通过 gdpc 连过来,去读那个瑞吉斯的相关的信息。这是你不的这个服务器然后这外头,还有我的服务器我会用一台服务器来测你们的整个的系统监测功能测试,再测性能。功能测试的话是会毁坏数据的,我功能测试做完了以后,你的所有的数据都会改变。
用新能测试把服务器给它测崩掉为止,在前面测的话你崩掉了,工资也没法撤了,所以说先测功能测试你撑不住了工人测试,因为工程师错了他也会继续往下走所以他没有关系。但是新的车子会把你整个服务器给撤崩,撤到崩为止逐步的往上加看你们最后能够达到多少。现成的并发,而且新的测试不仅仅你会测大负载也会测高并发。
所以订单模块或者商品模块的客户存的Ubuntu十八点零四,用一个测试的价包,测试的文件在这个上头,往往关去发请求往往弯曲法请求。然后往关区叫权限去写日志,然后如果权限对的他再把它转发给后面,这个部署图,所以部署图是在设计的早期阶段就不做的事情。这个部署图为什么会这么设计是我们各个模块去做了瓶颈分析以后就会知道我们为什么需要 radise 为什么会需要这个 root mq 。
我们的设计目标是一个大负载高并发的,个大负载的高并发的系统,所以我们要用有服务器把所有的服务器把它散开变成一种微服务的这样的一种体系结构那针对这样的一些设计的要求,才会做出这样的一个结构的设计,有了这样一个结构设计以后我们各个部分才会按照这样的一种设计的方案和设计的思路继续往下做。
那这个结构,其实是在早期要做这个决定了成本决定了硬件的采购成本。一堆的服
务器,硬件的采购成本决定了软件的开发成本,因为这样结构的开发的软件和你开发巨无霸的这个软件开发的成本是不一样的至少要翻一倍。
比如说你要开发这样的结构的软件至少跟别人要加要一倍多的价格,所以这是我们在设计的早期要完成。因为这个结构其实就决定了我们整个后续设计的努力的方向,包括那个结构,组建图和部署图,这个都是我们在整个世界的早期就需要去决
定,还会去修改如果说我们在设计工程前发现了有新的瓶颈以现有的这个 rop mq 或者是没办法解决的再找一个什么新的技术来解决技术。
所以我们把这个设计放到这个详细设计的早期,先考虑了它的必要性它的瓶颈,再来去考虑说怎么来解决这个瓶颈,这个技术问题。