oa考勤管理系统解决方案,考勤系统操作流程
622
2022-05-30
2.3.5 微服务部署模式
微服务的部署模式有很多种,每种服务可有自己的部署、资源、扩展和监控要求,但必须快速、可靠和性价比高,如图2-24所示。
图2-24 微服务的部署模式
第1种:单主机多服务。这种方式简单,但是也会存在挑战,如监控困难,不知道哪个服务使用CPU的频率更高一点;同时服务之间会造成影响,一个服务可能会使系统资源用尽,这对其他服务也会有影响。
第2种:多应用程序容器。这种方式从根本上说是试图优化资源的使用,但现在云服务的出现使得这种诉求已经没有必要了。这种方式将5个Java服务打包在一个容器(如Jetty)中,不可避免地限制了技术的选择,同时在聚合监控时也会难以支持。
第3种:单主机单服务。这种方式很容易对服务进行扩展,安全性也可以在更小的范围内进行,但主机数据的增加也是个问题。
第4种:使用PaaS(平台即服务)。PaaS平台会提供一些特定的支持,还会自动配置机器然后运行,能够透明地对系统进行弹性管理,允许控制运行服务的节点数量,PaaS平台帮忙处理其他工作。
为了从众多的服务器中解脱出来,我们需要自动化,需要写一行代码来启动或开户一个虚拟机,需要能够自动部署的软件,需要自动完成数据库的变更。那么,如何实现上诉的需求呢?有以下几种方法。
(1)方法1:传统的虚拟化技术
图2-25所示为传统的虚拟化技术。在操作系统之上,存在着Hypervisor,它的任务主要有两个:对CPU和内存资源做从虚拟主机到物理主机的映射,以及给上层提供一个控制的层。但Hypervisor也需要一定的资源来完成自己的工作,它也会占用CPU、I/O和内存等,Hypervisor的主机越多,占用的资源就越多。
(2)方法2:Vegrant
Vegrant是一个部署平台,通常在开发和测试环境中使用,可以在一台机器上创建一个虚拟的云,它的底层使用的是标准的虚拟化系统。例如,可以同时创建多个VM,通过关掉其中的几台来测试故障模式,并且可以把本地目录映射到虚拟机上,这样就可以在修改代码后立即查看效果。
(3)方法3:Linux容器
Linux容器可以创建一个隔离的进程空间,进而在这个空间运行其他进程。在Linux中,进程必须由用户来运行,并且根据权限的不同拥有不同的能力,进程可以创建其他进程。举个例子,如果在终端启动了一个进程,可以认为它是终端程序的子进程,Linux内核的任务就是维护这个进程树。Linux容器扩展了这一想法,每个容器就是整个系统进程树的一棵子树,内核已经帮我们完成了给这些容器分配物理资源的任务,LXC就是这样一种容器(类似的还有Solaris Zones、OpenVZ),它的基本结构如图2-26所示。
图2-25 传统的虚拟化技术 图2-26 Linux容器
它不再需要Hypervisor,尽管每个容器可以运行不同的操作系统发行版,但必须共享相同的内核,因为进程树存在于内核中,这意味着我们的主机操作系统可以是Ubuntu,而在容器中可以运行CentOS,只要它们的内核相同即可。
由于容器更轻量,所以在相同的硬件上能够运行的容器数量比虚拟机要多得多,而且启动速度更快,但容器在隔离性上还存在一定的问题。
(4)方法4:Docker
Docker是构建在轻量级容器之上的平台,可以处理大多数与容器管理相关的事情,我们可以在Docker中创建和部署应用,这些基于容器的应用与VM镜像类似,Docker也能管理容器的配置,并处理一些网络问题。Docker本身并不能解决所有的问题,它只是一个在单机上运行的简单的PaaS,还需要一些工具来管理多台机器上的Docker实例上的服务。例如,当向这些工具请求一个容器时,它会找到容器并运行它。谷歌的Kubernetes和Deis就是这样的软件。
“Docker+调度工具”构成的解决方案介于IaaS和PaaS之间,我们可以称之为CaaS(容器即服务)。
OpenStack 云计算
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。