APP下载

容器下微服务架构方法研究

2018-05-14宋庆鑫

数字技术与应用 2018年2期
关键词:虚拟化技术容器

宋庆鑫

摘要:基于容器的微服务已经成为现在系统开发设计非常常见的方式,该种方法在应用时具有非常多的优势和特征。本文在此先对微服务的架构进行分析,然后分析了微服务所具有的特性,分别是技术选型灵活、复杂度可控、独立部署以及容错性与扩展性等,此后以Docker容器为例探讨了容器的虚拟化技术,最后对分析了基于容器的微服务应用。

关键词:容器;微服务架构;虚拟化技术;Docker容器

中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2018)02-0070-02

当前时期各方对于微服务的争论非常多,对其评价也各不相同。在设计系统或进行开发时,通过微服务的应用可以比较轻松的实现跨部门开发的目标。而且利用容器的自动修复及其编排功能,有助于实現微服务的智能托管,进而将运维成本与难度等尽可能的降到最低。在对各个系统模块进行开发时,涉及到多种语言和框架,并且具有非常多的独立进程,大大增加了系统集成的难度。现阶段,很多公司在应用微服务架构方面,也都取得了非常好的效果,但是还有很大一部分公司并没有进行应用。

1 微服务架构

就微服务架构来说,主要是由多个微服务所组成,在进行软件开发时,应用的方式相比以往发生了非常大的改变。在开发软件的过程中,实际应用的也不再是库,而是对微服务进行开发。此外,每个微服务都有与之对应的业务功能,而且这些功能相对独立。软件也全都被解耦成多个较小的片段,各片段的功能也都相对独立。这些功能片段会限制系统中的其他部分,可以较好的对外界的故障进行有效的应对。在对新特性的请求进行应对时,微服务变更的速度非常快,而且容器扩张了其解耦性,最终从底层的硬件中分离出软件,而进行微服务的主要目的就是对应用程序进行分解,以更好的进行部署[1]。微服务架构大多应用与各服务的交互。微服务和ESB的差别比较显著,并不包括对服务间接口的同级别控制和数据建模进行定义。在ESB中,存在很多模式验证和消息路由等。传统的架构主要是面向服务,而微服务与之相比,其架构更加的简单。并且在应用之后,可以获得较快的开发速度。如果服务发生变化,仅仅匹配与之对应的业务需求即可。因此,实际上微服务架构最为核心和关键的优势在于其扩展较为独立,能够完全替代传统内存,并且弥补其劣势。在进行微服务的部署时,可以在非常小的主机上进行。

2 微服务的特性

2.1 技术选型灵活

在微服务架构下,在技术选型过程中相对而言更加灵活。可以充分结合自身对于服务所产生的需求,同时还可以结合当前时期的行业发展现状,合理的做出对技术栈的选择。相对而言,各个微服务并不复杂,而且非常简单。在升级技术栈时,需要面临的风向相对来说也比较低,在一定情况下也完全可以进行微服务的重构。

2.2 复杂度可控

每个微服务的功能都比较单一,可以将整体进行分解,进而成为一组服务。不仅没有改变整体的功能,也能将程序分解成可以进行管理的服务或模块。通过对接口进行定义,进而对服务边界进行表述,每个服务的界限都被清晰的定义。在将应用进行分解时,也不会出现很多复杂问题聚集起来的情况,而且在该模式下,各个部分模块化的水平更高,不断得到强化,也因此具有体积小和复杂度低,并且易于维护等。

2.3 独立部署

对于微服务而言,其具备独立运动的条件,所以在进行部署时,也具有独立性的特征。以往传统的架构模式下,如果想对程序中的一个细节进行变动,也会导致整体的重构和部署。而在新模式下,即便个别微服务出现其他情况,需要发送变更,也不会对原来的部署与编译产生影响。由于微服务所组成的应用,与可并行的发布流程非常接近,使得发布的效率比以往更高,而且也不容易对系统环境造成污染,进而将交付周期缩短。

2.4 容错性

如果其中一组应用出现故障,以往模式下,故障必然会出现扩散,最终使得应用失败[2]。而在微服务架构下,具备将故障隔离开来的功能,将其置于故障单元中。因此,通过运用这种设计以及微服务所具有的一些更加先进的特点,使得应用层具备容错的特征。

2.5 扩展性

在微服务架构模式下,每一个服务都具备独立扩张的条件,也能进行有效的横向扩张,进而在不同的节点上对整个应用进行复制。当在扩展需求上应用不同的组件时,其差异性也非常多。因此,可以看出该种架构的灵活性较高,能够在各个基础设施间,发挥扩展服务的作用,进而可以将风险进行有效的降低。

3 容器的虚拟化技术

通过容器技术的应用,能够起到缓解微服务负面影响的作用。该技术使用了内核接口,允许多个容器共享一个内核,并且各个容器被完全隔离。Docker是较为成功的基于容器应用微服务架构的案例。Docker容器的基本单位是资源分割和调度,并对整个软件的运行环境进行封盖,该解决方案可以实现跨平台并且可以移植,而且应用起来非常简单[3]。可以在容器内部快速的部署应用,而且以Docker作为代表的容器技术,标准化水平已经非常高,不仅能够进行存储服务,而且具有可伸缩的特性。该容器技术可以构建应用的镜像,并进行发布和持续交付等,同时对运维环节进行优化开发,不断提升开展业务的效率,将IT成本降到最低。通过各个容器之间隔离的实现,促使由不同语言所开发的微服务代码在部署起来更加的容易。总体来说,Docker容器具有两个比较明显的特点,分别是快速、可移植性。也就是说该容器的敏捷性更高,性能也更好。

4 基于容器的微服务应用

通过应用容器技术可以有效的解决微服务架构导致的问题,而且在应用Linux容器技术以后,一个内核能够服务于多个容器,并且实现完全的隔离。在Docker执行环境下,接口的标准化程度也更高,使得容器的共享等难度都大大的降低,这就导致各种语言开发下,部署微服务代码时,都更加的简单。虽然为负架构具有很多方面的优势,但是在构建和部署以及维护时,存在非常大的困难[4]。但是容器可以提供轻量级,使得微服务在进行虚拟化运行时,获得载体的难度大大降低。与此同时,基于容器技术的云服务使得微服务的创建相对来说非常简单,进而可以在云端大规模的进行微服务的实践。并且基于容器的微服务应用具有标准化、资源利用率高、隔离以及跨平台等方面的特征,使得应用起来更加的高效。就标准化特征而言,在构建标准开发环境的过程中,如果应用镜像技术并对环境与应用镜像进行迁移,会使得Docker容器不存在上下线的环境差异,能够确保应用环境具有一致性。所以,对于运维和测试人员而言,可以对软件镜像进行直接部署,这也使得持续集成和测试以及发布的过程得到了极大的简化。

5 结语

近年来,微服务架构和与之相关的容器等技术实现了非常快速的发展,在将其融合之后,逐渐发展成为较为领先的设计思想。通过微服务架构和容器技术等,应用程序的优点得以充分发挥,而且可以从底层的硬件中分离出软件。除此之外,容器的存在使得微服务架构被极大的简化,创建了更加快捷的应用程序,不仅非常完善,维护起来也比较简单。

参考文献

[1]丁晶晶,韩少杰,李栋,等.微服务分布式架构的GIS公有云平台实践[J].测绘与空间地理信息,2017,40(s1):56-60.

[2]孙海洪.微服务架构和容器技术应用[J].金融电子化,2016,(5):63-64.

[3]杨鸥,张羿,耿贞伟.微服务架构在容器云中的应用实践[J].电脑与电信,2017,(7):79-81.

[4]严丽云,杨新章,何震苇,等.容器技术及可行应用场景分析[J].广东通信技术,2017,37(11):46-51.

猜你喜欢

虚拟化技术容器
Different Containers不同的容器
人心像一个容器
难以置信的事情