Page 36 - 网络电信2022年7/8月刊
P. 36

光    通    信

             图2 微服务架构应用                                           图3 重复部署微服务,实现分布式


























                2.单体式架构系统
                传统的软件架构是一个项目一个应用,这个应用不能重复
            安装部署,也就是只能安装在一台服务器上,因此无须考虑对
            应用进行多服务器部署,也就不用考虑各节点之间的网络通信
            问题。这种架构的最大特点是安装部署简单,但由于不能横向                          术。由于隔离的进程独立于宿主和其他的隔离的进程,因此也
            扩展,需要一般需要性能强劲的专业服务器设备。由于采用单                          称其为容器。
            服务器部署,系统将不可避免地会发生单点故障,单个服务器                              在Docker技术出现之前,微服务架构是很难实现的。因为
            发生故障的时候会波及整个系统或者网络,从而导致整个系统                          微服务系统需要一套独立的执行环境,这套环境不能对外部有
            或者网络的瘫痪。这种架构的缺点很明显,随着需求和功能增                          依赖性。同时,执行环境的粒度又必须足够的小。Docker在容
            加,系统将越来越大,功能间的依赖会越来越复杂,难维护、                          器的基础上,进行了进一步的封装,极大简化了容器的创建和
            扩展性差、升级困难。                                           维护,粒度足够小,是一个很优秀的微服务运行环境。
                3.分布式架构系统                                            Docker是一种虚拟化技术,如何使网络中的容器们可以相
                分布式系统架构是把一组独立主机划分为逻辑主机,同时                        互通信,又能让容器外部网络的用户访问这些容器呢?
            对外提供服务,对于用户来说,逻辑主机和独立主机都是不可
            见的,就像是一台主机在提供服务一样。分布式架构的优势之                              三.跨主机网络通信问题
            一是可以使用廉价硬件(相对于昂贵的专业服务器),另一个                              没有跨主机网络时,比如一个应用有两个服务,两个服务
            优势是提高了系统的可靠性,可扩展性。主机越多,CPU、内                         不可能部署到同一个机器上,这样没办法做到高可用,所在的
            存、存储资源等也就越多,能够处理的用户并发访问量也就越                          主机一旦出现故障,主机上所有的服务都将无法访问。如果将
            大。比如一个大型网站,一般会把一个网站横向拆分成很多小                          服务部署到两个主机上面,但是两个主机上面这个容器的IP在
            功能模块,然后把不同的功能模块部署到不同的服务器上,各                          主机外面是看不到的。所以只能把容器的IP转换成了一个宿主
            个功能模块之间通过远程服务调用(RPC)等方式进行通信,以                        机的一个IP,或者宿主机的一个访问端点,才能让外部的主机
            一个逻辑主机的形式对外提供服务。这些拆分的小功能模块,                          访问。所以,传统方案是通过端口映射,把容器的一个端口映
            也就是微服务的雏形。                                           射到主机的一个端口,让另外一个主机和这个主机映射到这个
                4.分布式微服务架构                                       容器上去通信。这样会带来一些问题,首先通过端口映射,比
                分布式微服务架构本身是一种去中心化的架构,即微服务                        如说映射到8090端口,如果还要启动另一个容器,就需要映射
            是跨机房、可重复部署的,是跨机房负载均衡的,用户在访问                          到另外一个端口,因为宿主机上只有这一个8090端口,不可能
            这个微服务的时候,为其提供服务的主机和机房是不确定的,                          共享同一个端口。映射出去之后是宿主机的一个端口,这样这
            并且微服务随时可以在任意不同的服务商或机房之间迁移和部                          个端口就是对外暴露的,安全性需要严格控制。
            署。                                                       在Docker1.9之后,增加了跨主机的网络,它就可以直接通
                                                                 过容器的IP去通信,通过这个外部跟它是隔离的,这样又能做
                二.微服务与Docker 容器                                  到安全,启动多个容器,容器的IP端口也是不会冲突的。
                Docker使用Google公司推出的Go语言进行开发实现,基于                     1.VXLAN 封包模式
            Linux内核对进程进行封装隔离,属于操作系统层面的虚拟化技                           VXLAN封包模式,比如overlay驱动,它是用VXLAN的协议去


            64                                        网络电信 二零二二年七,八月
   31   32   33   34   35   36   37   38   39   40   41