微服务架构下的电力信息系统交互方式*
2019-01-02陈咏秋王纪军顾永生
陈咏秋 王纪军 顾永生
(江苏电力信息技术有限公司 南京 210024)
1 引言
传统的电力信息系统的IT架构一般抽象为三层相对独立模型:表示层、应用层和数据库层[1]。这种架构起初依托于单个代码库或部署单元,结构较为简单。基于小规模的计算资源消耗和运行进程内部的低延迟,系统运行也十分高效[2~3]。但是随着系统运行开销的增加,会导致电力信息系统存在很差的可维护性和可扩展性,并且在长时间运行的情况下,系统的交互性能也难以符合使用者的心里预期[4~5]。
从20世纪80年代起,基于C∕S(客户端∕服务端)交互模式的信息系统开始在电力信息系统广为应用,因为这种模式是信息系统根据使用需求动态调配系统开销的一种具有性价比的选择[6]。C∕S模式可以根据使用需要单独配置系统服务端的计算资源,这有助于优化系统性能配置,而且不会影响用户端的应用程序[7]。由于上述性能优势,基于C∕S交互模式的电力信息系统在覆盖的地理区域较小且需要对客户端计算资源要求不高的情况,得到较为广泛的运用。
从2000年初开始,面向服务的体系结构(Service Oriented Architecture,SOA)开始在电力信息系统建设中得到重视。作为一种具有全新的设计模式和信息系统的交互方式,SOA将一个大的应用程序分解为不同的应用程序功能作为服务,从而使电力企业的信息系统变得更加灵活[8-9]。SOA的优势在于单个的服务可被重用,独立于信息平台,可以在省级电力系统平台内提供服务,可以有效提供改进的电力信息系统可扩展性和可用性,并且可以大大提高电力信息的生产周期和使用效率[10]。但是由于频繁的信息服务交互以及对请求的完整验证,还会增加电力信息系统的额外开销[11]。由于电力企业对信息系统之间数据交互的实时性和准确性的严苛要求,导致了服务管理的异常复杂,并且由于海量数据的交互而带来了大量数据管理的挑战[12]。
通过对电力信息系统交互模式发展的梳理,基于提升规模不断增大的电力信息系统的交互性能的考虑,本文希望通过将微服务架构应用于电力信息系统,满足电力信息系统对交互性能以及可维护性、可拓展性的业务需求。
2 微服务体系结构
微服务架构是作为可独立部署的服务组件的电力信息系统应用程序开发的独特方法[13]。在微服务架构中,复杂的电力信息系统应用程序是由小的、独立的、使用API进行交互的服务所组成。这些微服务都由体量较少的代码搭建,基于高度独立和灵活交互思路用于解决大型电力系统中的独立小任务[14]。基于微服务的系统交互模式大大促进了电力信息系统构架的模块化程度。所以,简单来说,基于微服务架构的电力信息系统就是一组小型独立、可单独部署的服务[15]。电力信息系统的微服务抽象架构如图1所示。
图1 微服务架构
随着电力系统信息化程度日益完善,拥有大量信息系统的电力企业由于其传统系统架构的交互效率的低下而开始对信息系统架构进行改造。基于传统信息系统架构不支持允许快速功能添加或功能变更以适应灵活交互的缺点,采用基于微服务的松耦合系统方法对电力信息系统进行设计。
3 关键技术
3.1 容器技术
基于软件的容器与集装箱在物流运输中的作用相同,软件容器使应用程序从一个平台移动到另一个平台变得更容易。容器由一个完整的运行环境组成:一个应用程序加上它所有的运行依赖元素。这些元素包括运行库、二进制文件以及所需的配置文件。通过对电力信息系统的应用平台及其运行环境的容器化,操作系统以及底层基础架构的差异被抽象出来。容器化的应用平台架构如图2所示。
图2 基于共享内核的容器架构
与容器技术密切相关的两项技术是:Docker和Flocker。Docke实现了一个高级别的API,用来提供运行独立进程的轻量级容器。这个容器依赖于内核的功能,并使用资源隔离来实习应用程序的操作系统视图的解耦和,其隔离资源包括CPU、内存、I∕O、网络资源等。Flocker是基于 Docker的应用程序的开源容器数据卷管理器。Flocker支持基于块的共享存储。当Docker应用程序在给定集群上的主机之间移动时,Flocker能够确保数据的一致性。Flocker提供部署数据库、键值存储和容器队列等服务。
基于容器技术的信息系统虚拟化已在电力企业中得到成功运用,并体现出良好的经济效益和管理效益。
3.2 微操作系统
微操作系统是一个轻量级的分布式操作系统内核。这些最小化的操作系统被设计为托管Docker应用程序并尽量简化了基础架构。采用结合容器技术和微操作系统的基础技术替代电力信息系统的多主机应用平台,能够有效提高电力信息系统的扩展性、灵活性、高可用性、高安全性以及高可靠性。微操作系统结构如图3所示。
图3 微操作系统
3.3 基于Unikernel的内核编译
图4 自定义Unikernel内核
Unikernel技术将源代码编译成只包含应用程序逻辑所需功能的自定义操作系统。这使操作系统内核变得更小,运行速度更快,提高了系统效率。通过减少在操作系统级别部署的代码数量,必然会减少数据或用户被攻击成功的概率,从而提高安全性能。基于Unikernel的结构如图4所示。系统的交互效率。通过在自定义内核的固定模块中创建一定相关性将有助于搭建基于微服务架构的电力信息系统。在微服务架构中对内核直接修改是不允许的,所有的内核级别的功能修改只能通过对内核源代码的自定义裁剪。Unikernel能够为跨平台环境、大数据分析和横向扩展云计算提供部署方便的同时,为信息系统之间交互提高卓越的灵活性、速度和多功能性。构建Unikernel有很多方法,比如ClickOS、Clive、MirageOS、Runtime.js等。
4 面向微服务的信息系统架构
Unikernel有助于减小内核尺寸,从而有助于缩短启动时间,这有助于提高微服务架构下电力信息
容器、微操作系统和精简化内核存在于一个介于主机和应用程序之间的模糊区域中,既没有应用程序的性能监控也没有传统的基础设施监控。这造成了监控的盲点,而这也是基于微服务架构的电力信息系统需要改进的地方。
微服务架构通过消除大多数电力系统之间交互的依赖关系,并为搭建在微服务架构上的电力信息系统提供软件组件作为独立部署模块的套件,并提供定义明确的松耦合的交互方法。为了使电力信息系统的微服务能够独立工作,功能模块依赖和操作系统内核将被包含在架构的功能组件中。从某种意义上说,任何想要降低复杂性、增加可靠性以及提高效率的电力信息系统及其组件,都应该被设计成可灵活交互微服务。
图5是基于微服务的Web和App在常见的多层电力信息系统环境中的交互架构。
图5 基于微服务的web和App交互架构
在Webserver和Appserver层中,可以通过水平方式旋转多个实例来实现电力信息系统的可伸缩性。通过将微服务功能赋予电力信息系统组件,如负载均衡、Web服务器实例和Appserver实例等,来完成组件的高度独立。基于微服务架构的组件完全独立提高了电力功能组件的高可用性和各个系统之间的灵活交互功能。通过与微服务包装在一起的操作系统功能可以为系统交互提供必要的安全功能。
与Webserver和Appserver层不同,数据库实例需要保持完全状态的会话连接才能使数据持久化,这将通过使用Flocker数据库容器化技术来实现。通过这种微服务和DB数据库服务之间的通信方式,可以模块化在多个系统之间的移动数据,使得系统之间的数据交互不需要太多的困难就可以实现高可用性,并且可被独立地管理。基于微服务的数据交互架构如图6所示。
图6 基于微服务的数据交互架构
由于容器和微操作系统仅包含应用程序所需的那些依赖元素,因此应用程序交互过程的脆弱性会减少,从而更容易将其锁定。同时更小的系统体量也减少了需要使用安全更新进行修补的组件数量。
5 应用实践
基于传统架构的电力交易系统在业务快速增长的背景下,系统内部页面功能性交互无法支持业务需求多样化,系统之间的数据交互实时性和通讯性能也面临巨大挑战。基于本文所述的微服务架构对其进行系统改造,将其系统架构变成基于微服务架构的分布式系统,通过容器技术从系统功能上充分独立,利用微操作系统将系统平台与系统应用解耦,采用自定义内核提高平台操作系统的运行性能。同时结合负载均衡、容错管理和服务监控技术,提高系统的运行可靠性。改造前电力交易系统架构如图7所示。
改造后电力交易系统的架构如图8所示。
图8中,系统采用NGINX和LVS在系统前端进行负载均衡调度。API服务网关包括服务网关、监控报警、入口鉴别、API管理等组件,为系统提供统一用户接口服务、流量引导、性能监控等服务。数据层不仅支持关系数据库,也支持内存数据库和分布式数据库,并通过Flocker数据库容器化技术为用户提供统一的数据接口服务。
图7 改造前电力交易系统架构
图8 电力交易系统的微服务架构
为验证微服务架构对改造后的电力交易系统交互性能的提升,进行交互压力测试。采用10台服务器搭建的测试环境,其中4台为部署微服务架构的单独运行的电力交易系统。对改造前后的吸引交互压力测试结果如表1和表2所示。
表1 改造前系统测试数据
表2 基于微服务架构的系统测试数据
由表1数据可知,在测试中随着交互线程数的增加,电力交易系统每秒处理数(TPS)逐渐饱和,CPU负荷率也随着TPS增加而快速增加。由表2数据可知,经过微服务架构改造后,在交互线程超过70的时候,微服务架构的优势逐渐显露出来,TPS、平响应时间、CPU利用率均优于改造前。随着交互线程数量的进一步提高,微服务架构的优势更为明显。在交互线程数达到150的时候,改造前的系统已经达到饱和,系统交互能力出现明显下降,而微服务架构交互性能仍然能够保持在可控范围内,由此可以看出微服务方案更能适应交互压力较大的业务场景。
改造后的系统上线后进行了6个月的测试运行,交易规则的开发上线时间从最初的35人天∕个降低至20人天∕个,系统版本更新频率从1次∕月提升至2次∕月,系统升级时间由6h降至1.5h。系统开发时间对比数据如表3所示。由表3数据可知,系统应用功能性开发效率有了明显提升,这意味这系统对用户交互需求变更的支持能力有了明显提升。
表3 系统开发时间对比
对上述测试结果分析可以得出,交互压力越大,基于微服务架构交互方式的性能优势越明显。交易管理模块是交互负载最集中的模块,对其微服务化改造,能取得最具性价比的改造效果。同时,服务独立出来后,也能够更方便地针对交易业务变化、交易品种不断增加的情况进行服务升级改造。另外,相对于改造前系统,基于微服务的电力交易系统的维护效率、扩展效率也有了较大的提升。
6 结语
本文提出了一种基于微服务架构的电力信息系统的交互方式。微服务架构是通过虚拟化的服务组件、统一的系统平台以及精简化的系统内核,为电力信息系统的交互提供了充分的灵活性、可靠性。通过电力交易系统的微服务化改造实践表明,基于微服务架构的电力交易系统具有较好的交互性能、可维护性和可扩展性。