APP下载

微服务在石油化工企业的多平台整合中的应用

2019-01-30吕亮亮

电子技术与软件工程 2019年1期
关键词:石油化工运维部署

文/吕亮亮

1 背景介绍

随着信息科技的发展,石油化工企业内部部署了大量的信息系统用于处理日常业务,比如为了满足生产需要,石油化工企业引入了各种自动化生产系统用于生产过程的管理,监督和监控。目前各企业内部已部署了超过一百个应用系统。随着应用系统的快速增加以及规模日益复杂,功能模块之间的边界划分越来越模糊,造成很多功能的重复以及架构复杂化的问题。但是靠单个系统的独立使用、独立实现的方式已经不能满足石油化工企业的生产需要,因此需要一种新的软件架构来改变当前的系统开发模式,提供系统的质量以及生产效率。提升软件复用性,从面向过程发展到面向对象,再到现在的微服务,微服务架构是一种非常高效的软件复用方式,在实际的业务中得到了大量的应用。

2 微服务架构介绍

信息系统的建设具有一定的历史发展轨迹,最开始为了解决企业内部的信息管理问题发展出了ERP系统。随着企业办公自动化需求的增长又演化出了OA系统。随着客户关系管理的需要又发展出了CRM系统。由于这些系统开发的时间不一样,开发的架构不一样,因此随着时间的演进,各种系统之间的集成成了新系统开发面临的一道难题。

微服务的概念是Martin Fowler在2014年抛出,用于解决各种异构系统的集成问题。最早微服务架构概念的诞生,便是Martin Fowler所在的公司Thoughtworks在集成各个企业系统时提出的一种解决方案。为了能够有效的解耦企业中互相依赖的系统,Thoughtworks提出了一种应用服务单一化的解决方案来形成一套简洁、高弹性的系统架构。微服务架构灵活的运用了虚拟容器的概念,将以前单一的应用比如CRM等使用独立的容器进行隔离,然后通过对外暴露API的方式来对其他系统提供服务。一般而言对外API采用HTTP API等轻量级的解决方案。由于虚拟容器采用了Doker等技术,因此十分便于进行自动化的集成、部署以及运维,并且成功的解决了异构系统的问题。

微服务的架构需要将不同的应用进行微服务化,从而实现自动化的部署以及快速迭代开发。一般而言在设计微服务的架构时需要满足如下原则:

(1)单一职责原则。也就是每一个应用或者服务只做一件事,集中精力解决自身的业务逻辑。比如crm系统只负责对客户相关的数据进行处理,而不用负责客户报表的分析。

(2)独立服务原则。也就是每一个微服务是一个独立的开发组建,具有独立的开发、测试、部署、运维、持续集成、优化等体系,类似一个独立的软件,对依赖进行解耦合。

(3)通信的轻量级架构。微服务任务不同服务或者模块之间的通信应该是轻量的,不应该过多的耗费系统资源。同时通信方式需要跨语言、跨平台。

(4)明确的接口定义。在微服务架构下,不同的模块通过调用接口来进行交互。为了对接口依赖进行解耦合,在设计接口时,要尽量通用,防止某个服务接口的修改影响到整个系统的运行。

微服务具有如下优点:

(1)易于开发和维护,由于微服务的单一、独立、轻量的特点,在开发单独的微服务时业务功能清晰、代码复用性高。开发、测试、部署的自动化能力强,因此十分有利于开发及运维。

(2)服务的速度快、效率高。由于微服务业务逻辑的简洁性,系统耗费资源有限,因此单一的微服务运行效率较高。

(3)易于升级及修改。由于微服务的轻量级特性以及接口的明确性,当某一个服务出现bug后,不会影响当整个系统的稳定性。同时由于独立性原则,在修改bug后能够快速进行部署及持续集成,修复问题。

(4)技术的多样性。由于微服务的跨语言、跨平台特性,因此开发微服务时并不局限在某一个特定的语言上。不管是java还是node.js,只要在开发时满足微服务的架构,那么可以方便的进行相互的替换,降低开发成本。

(5)按需伸缩,由于各个模块的独立性,当对某个模块进行扩展时,不会对系统的整体带来影响。

3 微服务应用架构设计

图1:微服务应用架构设计

针对目前企业内部系统众多,架构不统一,重复较多的情况,本文为企业内部系统设计了微服务架构,统一各系统的服务标准,架构的逻辑设计如图1所示。

整个架构分为三层体系,核心层负责实现各个服务,同时提供运维监控手段对服务进行监控。集成层将各个业务系统提供的服务接口进行集成,形成统一的服务标准为应用层提供服务。前端应用层通过服务路由、负载均衡等手段来负责服务的分发。针对企业内部系统较多的问题,首先对各个系统的业务功能进行定位。对业务系统对外提供的服务进行标准化。其次建立统一的服务注册中心,将业务系统的服务在注册中心进行服务,当其他系统需要在线调用服务时,在注册中心的服务目录中进行查找,匹配需要的服务。具体的技术架构如图2所示。

使用AMQP作为服务标准化的中间组件进行服务的注册、标准化及分发。使用MongoDB存储服务的相关信息。使用Elasticsearch对服务进行搜索管理。在服务接口层,各个系统使用Restful接口进行调用,Restful可以有效的解决异构系统、不同平台以及不同开发语言的问题,同时使用Redis对服务调用进行缓存,提高系统的效率。日志系统使用Flume,可以支持海量的日志读写。使用Docker作为容器来独立部署各个服务,Docker是为应用提供隔离的环境,并跟踪文件系统的变化,独立于主机操作系统的配置。同时Docker的使用让该系统的自动部署、自动监控成为可能,让企业从手工运维转型为Devops的方式自动进行。

4 总结

图2:微服务技术架构图

随着石油化工企业信息系统的发展,各类信息系统变得越来越臃肿,很难持续、高效的为企业带来业务价值。而且随着企业信息架构的混乱,严重的影响着开发效率、运维管理效率,为企业带来了诸多隐患。为解决石油化工企业中不断增加的系统应用所带来的重复率增加、系统架构混乱的问题,本文采用微服务的架构理念对企业的系统架构进行了重构,将应用系统进行解耦,使用微服务的方式统一企业的服务。同时针对设计的微服务架构,本文使用Docker等技术介绍该架构的实施方法,有效的提高了企业信息系统的扩展性。通过微服务架构的重构,企业的信息化架构变得清晰明了,IT开发效率得到了较大提升,随着运维管理自动化的部署,企业的运维安全水平也得到了较大的提升。随着微服务的独立部署,有效的满足了各个业务部门的需求,实现了企业的价值。

猜你喜欢

石油化工运维部署
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
《石油化工应用》2022年征订启事
部署
运维技术研发决策中ITSS运维成熟度模型应用初探
《石油化工建设》第40卷总目次
石油化工工艺的探讨
部署“萨德”意欲何为?
基于ITIL的运维管理创新实践浅析
《石油化工腐蚀与防护》2016年(第33卷)1~6期分类索引