基于微服务的“互联网+”智慧能源服务平台设计与实现

2021-12-27 11:48胡健坤陈志坚
南方能源建设 2021年4期
关键词:服务平台架构部署

胡健坤,陈志坚

(中国能源建设集团广东省电力设计研究院有限公司,广州 510663)

“互联网+”智慧能源是国内对能源互联网的诠释,旨在将互联网平台、信息通信技术与能源生产、传输、存储、消费及市场交易各环节进行深度融合,为传统的能源产业赋能,建设纵向“源网荷”协调互动、横向多能协同互补的新型能源生态系统。为推进能源互联网建设,国家发改委发布了《关于推进“互联网+”智慧能源发展的指导意见》并在全国范围内组织开展能源互联网示范项目建设。国内能源企业都希望通过“互联网+”找到创新发展的新支点,其中两大电网公司都做出了重大的发展战略调整,加快向综合能源服务商转型的步伐:国家电网公司提出按照“一主四翼”的总体布局建设中国特色国际领先的能源互联网企业;南方电网公司确立数字化转型发展战略,围绕数字电网建设具有数字化、智能化、互联网化特性的新型能源生态系统。“两网”的转型计划中都将应用互联网思维和技术,构建开放、共享能源信息服务平台,打造共赢、共享能源互联网生态圈列为重要任务,同时积极开展相关探索。例如已经建成的苏州工业园区智慧能源管理系统和广州中新知识城的智慧用能服务平台。智慧能源服务平台是能源生态圈各方参与互动的最便捷途径,也是能源互联网价值变现的高效工具。然而,智慧能源服务平台是面向互联网的创新业务平台,在扩展性、灵活性,可靠性方面相比传统企业信息管理系统要求更高。本文应用互联网业界流行的微服务架构,对平台进行设计和实现,提升平台对未来能源业务需求的快速响应能力。

1 智慧能源服务平台建设需求

1.1 平台定位及特点

智慧能源服务平台是充分结合“大云物移”等IT新技术,面向能源生态圈用户构建的互动、开放互联网平台。平台提供绿色、安全、经济、高效、增值的智慧能源服务,例如支持能源企业开展需求侧管理业务,支撑售能公司管理售能业务,辅助能源服务商开展能源增值业务,为微网、能源运营商提供多能协同优化分析,为分布式能源拥有者、工商业用户提供设备运行监测服务等。

平台的定位决定其具有扩展速度快、需求多变、可靠性要求高等特点:(1)扩展速度快体现在平台用户数量的快速增长。传统行业企业级管理系统的用户群体主要是内部员工、合作伙伴或访问频次有限的公众用户。智慧能源服务平台用户包括了能源生态圈中数量众多的各类市场参与主体和广大的能源消费者,且业务功能丰富,随着平台用户越来越多,平台的访问量将会迅速增加,因此,平台规模需要具备横向快速扩展的能力;(2)需求多变体现在综合能源商业模式的不确定以及市场主体的不成熟。“互联网+”智慧能源是随着国家能源革命、电力体制改革等背景下发展出来的能源新业态,一方面不可避免地受到政策、经济、社会、技术等多方面因素影响,例如分布式发电交易缺少政策文件支持,冷热电互联受到传统行业壁垒的限制、能源交易市场尚未建立等;其二,能源互联网生态圈尚处在发展初期,部分市场主体尚未发展成熟,例如能源整合商、代理售能公司等。业务需求不稳定必然导致系统功能的经常性调整,因此平台需要具备快速响应新需求的灵活调整能力;(3)可靠性要求高体现在平台具备向用户提供不间断服务的能力。用户通过平台开展日常业务,平台的服务中断将会降低用户体验,甚至严重影响用户工作,尤其是涉及能源交易及实时监控等敏感业务。因此,平台需要具备高可靠的、不间断服务能力。

1.2 传统单体式架构存在的问题

目前大多传统行业的信息管理系统均采用单体式架构,用单体式架构开发的系统通常被打包成一个独立单元,并部署在同一台机器的同一进程中运行。单体式架构系统存在以下缺点:(1)灵活扩展能力差:系统只能通过负载均衡进行整体水平扩展,不能针对系统的局部功能模块进行按需扩展,且会浪费较多的软硬件资源;(2)开发周期长:随着系统的不断升级和功能的增加,模块间的耦合会越发严重,复杂的内部关系会严重影响系统的可维护性,任何微小的系统改动都需要对整体进行重新部署,耗费大量时间。强耦合模块的开发人员离职甚至会导致整体系统无法继续升级;(3)可靠性差:单体部署的系统由于用同一个进程,当某个模块出现异常时,会导致整个系统崩溃和服务中断。

单体架构系统还存在与外部系统集成困难的问题,SOA架构的引入一定程度解决了系统间的标准化集成困难,但在高并发、高实时的情况下,依然无法实现服务负载的简便调整以及系统灵活部署。

2 微服务技术

2.1 微服务设计理念

微服务的设计理念是将庞大的业务系统划分为独立的微服务,每个微服务包含从数据存储到业务逻辑的完整结构。各个微服务是高度“自治”的,体现在:每个微服务内部都可以按需采用不同的技术实现架构和数据存储技术;每个微服务都可以独立部署和维护,拥有独立的生命周期和服务边界;微服务之间从开发、部署到运行都不存在依赖关系,只通过轻量级接口调用进行数据交换。微服务架构实现单个服务的高内聚,各个服务间低耦合的效果,更有利于系统的局部灵活变动和部署。

2.2 微服务优势和不足

微服务应用“分治”思想,按大系统划分为独立、松耦合的细小模块,在大型的、复杂多变的互联网应用中有明显的优势:(1)更好的扩展性:根据业务或功能边界对整体系统进行拆分,结合良好的设计可以降解整体系统的复杂度,降低代码问题的排查难度。实现单个模块高内聚以及模块间松耦合,有助于提升开发的专注度和效率,总体降低系统变更及成本;(2)部署更灵活:微服务可以分别部署在不同的容器环境,对微服务更新部署不会影响到其他微服务的正常运行,实现系统局部模块的在线迭代发布;(3)更好技术开放性:与传统单体架构必须采用统一技术路线开发不同,微服务架构允许不同微服务采用不同技术路线实现,开发团队可以自由选择熟悉或合适的开发语言和工具,从而提高效率和可靠性。

微服务带来上述好处同时,也带来一些问题:(1)微服务设计复杂。微服务拆分实际是将部分模块间的关系从代码级别提升到接口级别,服务之间的接口调用关系复杂,微服务的划分对设计人员要求较高;(2)微服务数据库架构更复杂。对于涉及更新多个业务对象的事务,单体架构系统只存在一个数据库,实现相对简单,微服务业务对象可能分散在多个数据库,需要保证各个库数据一致性,对开发人员的要求较高;(3)管理维护成本高。与单体架构系统整体一次性部署不同,微服务架构系统拥有大量服务,每个服务均要部署并且要进行独立配置,工作量巨大。所幸的是,这些问题通过良好的设计规划,以及借助微服务框架治理,自动化部署等工具都可以得到有效解决。

3 基于微服务的智慧能源服务平台设计

3.1 平台总体架构

“互联网+”智慧能源服务平台采用“微服务+容器云”技术构建,确保了平台业务功能具备横向弹性扩展能力和迭代更新的灵活性,同时引入大数据能力组件,用于支撑平台的数据分析业务。总体架构如图1所示。

图1 “互联网+”智慧能源服务平台总体架构Fig.1 The overallarchitecture of the"Internet plus"smart energy service platform

1)能源生态圈用户可以通过门户、APP等方式接入平台,服务层由众多相互独立、可拓展的微服务构成,根据功能特性和可重用程度,可以将微服务划分为专业微服务、共享业务微服务和技术微服务三大类。每个微服务采用独立或共享数据库,按照数据特征(如结构化数据、非结构化数据、空间数据等),选择不同的数据库存储和应用,如使用MySql、Redis、PostgreSQL等数据库进行数据持久化或缓存。

2)平台层主要由微服务设施、容器云、大数据组件等组成。微服务设施为平台微服务提供运行监控、服务治理等基础组件,实现负载均衡、服务注册发现、调用链跟踪、日志监控等功能;容器云采用Kubernetes+Docker技术框架搭建,实现容器镜像的管理和自动化部署,以及容器级的自动扩容和缩容能力,支持微服务规模的弹性伸缩。大数据组件采用主流的大数据计算分析和存储组件搭建,实现能源数据的存储、融合及分析计算,计算结果存储于关系型数据库,并构建数据微服务,为应用提供数据分析服务。

3)基础资源层实现将服务器、存储、网络等物理设备虚拟化,向上层提供云平台的虚拟化IT资源,包括计算资源、存储资源和网络资源等。

3.2 基于微服务的核心架构设计

智慧能源服务平台核心部分采用SpringCloud微服务开发框架搭建,并根据微服务运行和管理需求拓展了日志管理等组件,平台微服务技术架构如图2所示。

图2 “互联网+”智慧能源服务平台微服务技术架构Fig.2 The microservice technology architecture of"Internet plus"smart energy service platform

微服务设计遵循前后端分离、动静分离的原则,并实现负载均衡,前后端的解耦使得平台模块修改更灵活,页面和后台服务升级更新互不影响,有助于提升系统开发效率和用户体验;后端微服务接入统一网关,实现微服务的动态路由、服务的访问权限安全校验,对服务请求进行监控,实现服务的负载、熔断、降级和限流等功能;Eureka服务注册与发现、Config配置组件实现服务注册与发现、心跳检测及所有服务配置的集中管理和配置热部署;Hvstrix熔断器是微服务的容错管理工具,可通过熔断机制控制服务和第三方库的节点连接,从而对延迟和故障提供容错能力;Sleuth服务调用跟踪、ELK日志中心等,实现服务之间调用关系、调用时间等信息跟踪记录,辅助运维人员开展平台微服务的日常运维;部署消息队列,与Kafka实现无缝集成,为分布式事务处理机制时提供可靠性消息服务,确保存储在不同微服务的相关数据一致性。

3.3 微服务划分

微服务架构的优势发挥与微服务划分设计息息相关,拆分粒度过细会导致平台因服务数量多,相互依赖关系复杂而变得难于管理维护,应以拆分到可以通过自由编排服务来获取所需组合服务为宜。然而,微服务划分不是一蹴而就的工作,成熟的微服务需要业务的不断滋润、细化并沉淀。初次设计可以参考以下原则:(1)对于业务完整、职责单一的应用功能单元应当拆分为独立微服务;(2)具有重用性特点的公共功能应当拆分为独立微服务;(3)对于访问量较大、资源消耗较大、耗时较长的功能,应拆分为独立微服务;(4)对于强关联数据对象的新增、删除、修改操作,合并为一个微服务;(5)对于耦合性强、具有事务强一致性要求的业务,尽量在一个微服务中实现。

经过调研能源生态圈各类用户的需求,结合上述划分原则,“互联网+”智慧能源服务平台微服务划分如图3所示。

图3 “互联网+”智慧能源服务平台微服务划分Fig.3 The microservice division of"Internet plus"smart energy service platform

专业微服务是面向特定业务需求的定制化服务,一般不具备重用性,例如需求响应微服务、多能协同管理微服务、能源交易微服务等。共享业务微服务实现如订单、合同、支付等通用业务功能,同时可以为多个专业微服务提供诸如用户信息管理、权限访问控制公共信息服务。技术微服务提供用于支撑平台机制的基础能力,如分布式业务管理、短信发送、文件管理等。

3.4 微服务治理

对平台的微服务治理重点从服务注册与发现、服务调用跟踪以及日志监控三个方面考虑。设计中采用Eureka组件实现,每当微服务启动时,都会向Eureka发送自身地址信息,Eureka维护所有微服务的地址,并定时发送心跳消息更新微服务状态,微服务通过Eureka获取其他服务调用地址;服务调用跟踪及日志监控应用Sleuth+ELK组件实现,Sleuth可以记录众多的微服务之间互相调用,清晰地记录服务的调用链路,ELK(Elasticsearch+Logstash+Kibana),通过实时数据采集引擎Logstash和日志框架Log4j对微服务运行日志进行收集并存储,应用搜索服务器Elasticsearch及可视化分析平台Kibana实现日志的查询、分析,极大地方便运维人员对微服务调用失败的故障分析与快速定位。

3.5 分布式事务处理

微服务本质是一种分布式架构,高并发情况下会采用异步的消息机制作为微服务之间的通信方式,因此必须解决分布式事务处理问题。按照基于可靠性消息模型的思想进行设计,主服务与从服务之间不会直接交互,两个服务的状态通过消息中间件进行传递,根据对侧状态消息决定本侧事务继续或回滚,整个过程中消息中间件要对主从服务的执行状态进行监控并更新状态信号。假设主服务A事务需要和从服务B事务同步,基于可靠消息模型的处理流程如图4所示。

图4 微服务间基于可靠性消息模型的事务一致性处理流程Fig.4 Transaction consistency processing flow based on reliability message modelbetween microservices

4 基于微服务的平台实现

4.1 微服务同步开发

智慧能源服务平台涉及业务广泛,组织了多专业、庞大的团队进行开发。在传统单体架构模式下,功能开发、测试、部署都需要协同,无法在项目要求时间内完成。应用微服务开发模式,将平台划分为众多微服务,相应将整个团队分为多个小组,不同小组独立负责一个或多个相关微服务开发、测试和部署,小组间只需沟通少量的交互接口设计,保证了各组可以同步开展工作并在集成期间无缝衔接。通过前后端分离技术,小组内部不同开发人员也能明确分工,独立开发,且更专注质量。这样大大降低了开发的相互依赖性,提升集成和联调效率,确保了项目按时完成。

4.2 内部技术差异屏蔽

平台采用微服务架构使得不同开发小组选择不同开发技术成为可能。建设中负责多能协同管理微服务开发小组擅长Java开发,需要与由科研团队提供的用Matlab开发的调度优化算法模块,以及用Python开发的负荷预测模块进行集成。Matlab和Python在多目标求解、机器学习算法等方面具有优势,而Java重写则相当困难且费时。通过对算法模块的微服务封装,顺利实现了算法集成,屏蔽了底层技术的差异性,实现“黑盒”调用,节约了大量开发与调试时间。此外,不同微服务可以根据业务特点应用不同类型数据库,例如分布式资源管理微服务主要涉及结构化数据的操作,可采用MySQL等传统结构化数据库,而多能协同微服务侧重对能源网络拓扑数据操作,则使用PostgreSQL等擅长空间数据处理的数据库,发挥不同数据库针对不同类型数据应用的技术优势。

4.3 部署更新

微服务架构的应用使得平台能够便捷地发布测试并实现持续集成。平台建设过程中,随着微服务陆续完成并具备部署测试条件,依靠微服务架构实现了单个微服务的更新上线不影响其他微服务,大大提高了部署的灵活性。在服务调试过程中,需求响应微服务发生问题并崩溃,得益于微服务架构和前后端分离技术,平台的门户、能源交易、多能协同等模块依然正常运行。在运维阶段,对需求响应微服务的升级,不需整体服务关停,只需更新单个微服务,既提升了更新部署的灵活性,也提升了平台运行可靠性,真正实现系统的不间断服务。

4.4 平台扩展

通过应用微服务+容器云的开发技术,使得平台具备服务级的横向扩展能力,并提升了资源的利用效率。在开展多能协同管理微服务性能测试时,发现某工单查询页面对应的一组后台微服务存在瓶颈,在200并发持续5 min的情况下,存在CPU过载的情况。通过Kubernetes复制了该微服务对应的Docker实例,并通过微服务网关的负载均衡机制,解决了高并发下的性能瓶颈问题。此外,还可以通过增加微服务的硬件资源,如服务器内存、使用高性能CPU等手段解决性能扩展问题,应对智慧能源服务平台用户的快速扩展。

4.5 平台测试

选取2个功能场景测试平台运行性能:“巡视工单查询”代表简单查询类业务,“合同电量统计”代表复杂统计类服务。测试环境为2台8核、16 G虚拟机,一台部署微服务Docker,另一台部署Mysql数据库,100 M网络带宽连接,用LoadRunner软件。平台性能测试中,200个虚拟用户外部用户并发执行“巡视工单查询”功能,持续5 min,事务平均响应时间为0.269 s,成功率100%,对应的2台服务器CPU使用率分别为9.27%、12.22%,其他资源使用率正常;100个虚拟用户外部用户并发执行“合同电量统计”,持续5 min,事务平均响应时间为0.879 s,成功率100%,对应的2台服务器CPU使用率为10.13%、12.97%,其他资源使用率正常。结果显示,按微服务架构设计开发的智慧能源服务平台,根据业界性能测试“2-5-8原则”,平台功能的性能表现良好。

5 结 论

本文阐述了“互联网+”智慧能源服务平台的建设背景、需求特点,分析了传统单体架构用于开发需求多变的互联网平台的局限性,介绍了微服务架构的理念以及优点和可能遇到的问题,然后详细说明了基于微服务架构的“互联网+”智慧能源服务平台的总体架构、技术及设计要点,最后基于微服务架构进行了“互联网+”智慧能源服务平台实践,证明了平台在实现扩展性、可靠性以及部署灵活性的同时,可以达到良好的性能。

目前微服务架构在传统能源行业的应用仍然处于起步阶,随着能源革命的不断推进以及能源生态圈的逐步形成,是平台未来发展的技术方向,“互联网+”能源的商业模式将更加丰富多样,微服务架构将有更大的应用发展空间。本文提出的基于“互联网+”智慧能源服务平台设计思路与实现方法,旨在探索互联网新型IT架构在能源行业中的应用,为行业内建设能源互联网服务平台提供参考。

猜你喜欢
服务平台架构部署
这才叫创业!90后水产追梦人打造一条龙式技术产品服务平台
一种基于Kubernetes的Web应用部署与配置系统
晋城:安排部署 统防统治
高校财务“一站式服务平台”建设探讨
功能架构在电子电气架构开发中的应用和实践
部署
基于B/S架构的图书管理系统探究
福州首家“奶爸版”母婴服务平台上线
构建富有活力和效率的社会治理架构
基于自媒体的编程服务平台研究综述