Docker技术在微服务中的应用

2019-12-01 05:58章仕锋潘善亮
电子技术与软件工程 2019年4期
关键词:应用程序容器运维

文/章仕锋 潘善亮

随着计算机网络的发展,在信息系统设计过程中,软件体系架构的重要性愈发明显,传统单体架构设计的信息系统存在着系统功能耦合度高、业务模块复用性低等问题,已难以满足用户的使用需求。为解决这一问题,面向服务的架构(SOA)随即被提出,SOA架构将信息系统特定的业务功能模块封装成服务的形式发布,服务之间耦合度低,服务接口的实现可以根据需要来选择特定的技术路线,并根据需求最大化提高服务的复用度,有效的解决了单体架构存在的问题。

然而随着分布式、云计算技术使用的日益广泛,SOA架构的局限性开始显现,基于SOA架构设计的信息系统在面临业务数据高并发、高实时的情况下,难以根据需求进行服务负载上的灵活调整,同时信息系统业务高峰期和低谷期对计算机资源使用的差异,也使信息系统的运行部署应更加的灵活简便,基于这一背景,微服务架构(Microservices)开始兴起,成为目前诸多分布式系统的设计的首选架构,微服务架构可以看作是对SOA架构的一种改进,微服务架构通过对业务功能进行细粒度的划分,保证服务的单一职责性,加入服务注册中心、断路器等模块来满足系统负载均衡的性能需要。根据微服务架构思想,每一个微服务运行在独立的进程之中,服务之间通过轻量级通信机制互相沟通,为满足这一设计要求,以Docker技术为代表的容器技术成为微服务架构实现过程中的重要手段。

1 Docker技术与虚拟化

1.1 容器化技术

容器化技术是指独立的应用进程以容器的形式部署运行在操作系统之上,容器中只包含应用程序和其所依赖的环境资源,不会占用额外的计算机软硬件资源,容器技术在云计算、分布式背景下很好的适应了短时间、大规模数据计算访问需求,其易于管理部署的特点在DevOps开发模式中得到了很好的应用,大大提高了软件系统开发的效率。

1.2 Docker技术简介

Docker是由PaaS 提供商开发的一种Go语言开发的开源、轻量级的容器引擎,Docker技术有很好的隔离性,通过容器的形式,创建一个拥有处理器、内存和硬盘存储等计算机资源的独立虚拟网络空间,用户通过从Docker服务器端下载初始系统镜像,然后将将应用程序打包移植到系统镜像上,形成一个新的独立容器,该容器可以部署到任意安装有Docker环境的机器上,容器之间可以通过轻量级的网络协议进行交互。

1.3 Docker技术与传统虚拟化技术的区别

Docker和传统虚拟化技术的区别在于,Docker是一种轻量级的虚拟机,Docker在操作系统之上仅进行应用程序级别的虚拟,它对计算机资源的需求更少,启动更快,同时在分布式系统下,Docker部署的应用程序能够进行灵活的复制和回收,很好的适应的云平台伸缩性、高可用性的要求。

相较于传统虚拟机如vmware,Docker技术的特性能更好的适应微服务架构中系统的应用需求,越来越多的微服务应用采用了Docker技术作为应用部署开发的载体。

2 Docker技术在微服务中的应用

2.1 自动化运维平台

云计算背景下自动化运维平台需要短时间内完成大量服务器的部署,包括系统安装、环境配置、软件安装和性能监控等操作。对于传统的服务器部署方式已难以满足业务高效快速响应的需求,Docker技术的出现很好的解决了这一问题,在自动化运维平台中,利用Docker虚拟化技术部署的应用服务可以做到一次配置、多次部署,可以根据需求的变化进行快速迁移,在业务高峰高峰时通过增加容器来满足使用需求,业务低谷时通过容器管理平滑的回收再利用计算机资源,大大提高了运维的效率。

自动化运维平台利用DevOps(Development和Operations的组合词)开发模式来实现对应用系统生命周期的管理,DevOps提出加强IT开发、技术运营和质量保障三者的协同,将开发人员和运营人员之间原有的界限打破,采用DevOps开发的信息系统由于每次更新部署的范围都较小,信息系统会以平滑的曲线逐渐成长。

自动化运维平台的主要组成部分包括:系统资源管理、安装部署管理、配置管理和监控管理。系统资源管理模块负责统一对云平台软硬件资源进行管理,根据业务需求变化情况对云平台计算、存储和网络等资源进行分配,自动化控制Docker容器的数量。安装部署管理模块能够根据需要自动对应用程序运行所需的操作系统、软件和中间件等进行进行安装和升级,一键化构建开发环境、测试环境和运行环境。配置管理模块实现了对整体平台配置文件的统一管理,分布式环境下包括本地配置和远程配置。监控管理模块负责对平台所有服务状态的监控,对各个微服务容器接口的可用性进行检测,提供平台实时的性能参数数据,当发生错误时向管理员发送错误报警并将产生的错误隔离在一定范围之内。

2.2 负载均衡

利用Docker容器技术可以帮助解决云计算环境下,分布式系统的负载均衡问题,微服务背景下,特定业务功能设计的微服务会被大量重复调用,而基于Docker容器技术,对大量被重复调用的重负载服务进行多节点重复部署,利用服务注册中心对微服务节点进行管理,当某一容器对应的微服务应用程序被大量调用时,可以调整节点,选择负载较小的其他Docker容器中部署的相同微服务应用程序来提供服务,从而实现系统集群整体负载均衡上的控制。

2.3 容器云

随着容器技术的大量应用,云计算的三种服务模型逐渐由IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)向CaaS(容器即服务)过渡,容器云是指通过容器的虚拟化对应用系统的数据、程序等资源进行部署和管理,系统的应用可以通过重复部署的方式大大提高系统的可用性,系统整体位于以Docker容器为基本单位的集群之中,容器集群通过集群编排管理工具如Google Kubernetes、Docker Swarm对集群进行管理和维护,容器云是微服务架构的重要实现手段,Docker容器很好的解决了每个微服务独立部署运行的问题,为信息系统细粒度的业务服务划分提供了很好的载体。

3 结语

随着微服务架构在云计算、分布式应用系统中使用的越来越广泛,以Docker为代表的容器技术已经成为信息系统设计开发过程中的重要组成部分。本文介绍了目前Docker技术在微服务中的主要应用场景,利用Docker技术设计部署的分布式应用相对传统虚拟机方式部署的分布式应用大大提高了计算机资源利用率,整体应用系统耦合度低,灵活性好,利于后续改造拓展。

猜你喜欢
应用程序容器运维
Different Containers不同的容器
难以置信的事情
删除Win10中自带的应用程序
运维技术研发决策中ITSS运维成熟度模型应用初探
基于ITIL的运维管理创新实践浅析
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序