基于服务网格的三级协同电力交易系统设计与实现

2020-12-24 08:01李晓刚冯树海吴敏洪元瑞承林
软件 2020年7期
关键词:交易系统调用架构

李晓刚 冯树海 吴敏 洪元瑞 承林

摘  要: 随着国家深化电力体制改革工作的不断推进,中长期电力交易品种和交易频次近年来也呈现快速增多的态势,新一代电力交易系统已引入云计算、微服务、大数据等最新IT技术,为了更好地提高多级电力交易系统之间的快速协同,本文提出了一个基于服务网格技术框架的三级协同电力交易系统应用设计方案,该方案优化了电力交易系统从单体架构演进到分布式架构后的复杂服务调用时的执行效率。通过多个场景的测试,验证了该方案可以降低三级电力交易系统结构复杂度、优化服务器使用开销、提升三级系统应用的性能和执行响应速度,是分布式电力交易系统优化提升的一种不错选择。

关键词: 电力市场;服务网格;微服务;电力交易系统;电力信息化

中图分类号: TP311.11    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.07.007

本文著录格式:李晓刚,冯树海,吴敏,等. 基于服务网格的三级协同电力交易系统设计与实现[J]. 软件,2020,41(07):37-41

Design and Implementation of Three-level Collaboration Power MarketTrading System Based on Service Mesh

LI Xiao-gang1, FENG Shu-hai2, WU Min1, HONG Yuan-rui1, CHENG Lin3

(1. East China Branch Of State Grid Corporation of China, Shanghai 200120, China;2. China Electric Power Research Institute, Nanjing 210003, China;3. Shanghai Keyu Information Technology Co., Ltd, Shanghai 201721, China)

【Abstract】: AbstractWith the continuous advancement of the countrys deepening of the power system reform, the medium and long-term power trading varieties and trading frequency have also shown a rapid increase in recent years. The new generation of power trading systems has introduced the latest IT technologies such as cloud computing, microservices and big data. In order to better improve the rapid coordination between multi-level power trading systems, this article proposes an application design scheme of three-level collaborative power trading system based on service mesh technology framework. This scheme optimizes the execution efficiency of the complex service invocation after the power trading system evolves from a single architecture to a distributed architecture. Tested in multiple scenarios, it is verified that the scheme can reduce the structural complexity of the three-level power trading system, optimize server usage overhead and improve performance and execution response speed of three-level system applications. It is a good choice for optimization and improvement of distributed power trading system.

【Key words】: Power market; Service mesh; Micro service; Power market trading system; Electric power informatization

0  引言

當前,按地域划分,国家电网管理区域的电力交易可分为跨区、区域内省间和省内电力交易。随着《中共中央、国务院关于进一步深化电力体制改革的若干意见》(中发[2015]9号)及其配套文件发布[1],电力市场化交易的规模每年都在快速增长,同时,为了满足各地经济发展的需要和新能源消纳的需要,中长期电力交易品种和交易频次近年来也呈现快速增多的态势,这就对当前三级电力交易组织提出了新的挑战。之前一些文章主要是对某一层级的电力交易进行研究[2-6],很少有将三级电力交易放在一起进行考虑的,这是因为之前对三级电力交易之间的衔接效率要求并不高,所以没有得到更多的重视。

另外,除了业务需求不迫切外,技术实现也并非易事。十一五和十二五的电力交易平台都是以单体系统架构实现的,庞大并远距离部署的单体系统之间的数据交换是通过指定的数据交换通道,而非服务调用方式实现,因此数据交换的及时性不是很高,无法实现多级交易的分钟级甚至秒级衔接。

随着信息技术不断发展,国家电网公司的新  一代电力交易平台已采用基于微服务架构开发建 设[7-11],这为多级电力交易快速协同在技术層面创造了一定的有利条件,本文将在微服务架构的基础上,引入服务网格(Service Mesh)技术框架,设计一种有利于提高多级电力交易系统快速协同的架构技术解决方案。

1  微服务架构

微服务是由Martin Fowler与James Lewis于2014年共同提出[12]。微服务框架是由很多小服务组成,每个服务运行在单独进程中,并通过轻量级通信机制(如RPC),完成整个应用通信,然后是针对业务的垂直划分,进行自动化独立部署,来保证最低限度的集中式管理的一种服务[13]

1.1  微服务架构组成

微服务架构一般由负载均衡、服务网关、本地缓存、服务管理层、微服务层、远端缓存、数据访问层、消息队列层等。(1)负载均衡负责扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力提高网络的灵活性和可用性。(2)服务网关负责对接入客户端的身份认证、防报文重放与防数据篡改、功能调用的业务鉴权、响应数据的脱敏、流量与并发控制等。(3)本地缓存负责降低了服务调用的频次,同时也提示了访问速度。本地缓存一般使用自动过期方式,业务场景中允许有一定的数据延时。(4)服务管理层负责微服务的注册、发现与治理等内容。(5)微服务层包括各业务的原子服务,实现各类业务的增删改查和计算处理等。(6)远端缓存是访问DB前置一层分布式缓存,减少DB交互次数,提升系统的TPS(吞吐量)。(7)数据访问层负责对数据库表的增删改查操作,单表数据量过大则可以做数据的分库分表处理。(8)消息队列层负责解耦服务之间的依赖,异步调用可以通过MQ的方式来执行。

1.2  微服务架构特点

微服务架构本质上依然继承了SOA设计理念,淡化了ESB的概念,使用去中心化的设计思想,使服务之间切分和组合更为灵活,更容易应对业务的变化和发展。

微服务的优点主要有:(1)逻辑清晰,服务简单,以组件化的方式分解为多个服务;(2)开发迭代速度高;(3)微服务是松散耦合的;(4)可以有不同团队开发;(5)方便运维,一个服务进行变更并不需要其他服务同步更新;(6)伸缩性好,微服务可以单独扩展,利用服务注册和发现技术可以将实现平滑的水平扩展,无需重启服;(7)容错性好,微服务可以实现故障隔离、分流转发以及熔断机制。

2  传统的服务发现模式

2.1  传统的服务发现模式

传统的服务发现模式主要包括服务提供方、服务消费方、服务注册中心和服务监控中心[14-15],如图1所示。

服务之间的调用主要包括:(1)服务容器负责启动,加载,运行服务提供者。(2)服务提供者在启动时,向注册中心注册自己提供的服务。(3)服务消费者在启动时,向注册中心订阅自己所需的服务。(4)注册中心返回服务提供者地址列表给消费者。(5)服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。(6)服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

2.2  传统的服务发现模式

在传统微服务架构中,随着业务越来越大,拆分的服务实例也越来越多,那么各个服务之间的依赖就变成了非常复杂的网络拓扑结构,可能就类似于如图2所示的样子了。

在如此复杂的分布式部署结构下,微服务中服务依赖调用和数据传输所面临的问题也成倍增加,极大的提高了服务治理的难度。

因此需要引入新的信息技术来解决这个问题,而服务网格(Service Mesh)技术正是当前最为合适的一种选择。

3  服务网格技术

服务网格(Service Mesh)技术最早使用由开发Linkerd的Buoyant公司提出[16],并在内部使用。2016年9月29日第一次公开使用这个术语。服务网格(Service Mesh)的定义是由Linkerd的CEO William给出来的,即服务网格是一个基础设施层,功能在于处理服务间通信,职责是负责实现请求的可靠传递。在实践中,服务网格通常实现为轻量级网络代理,通常与应用程序部署在一起,但是对应用程序透明。当前,服务网格作为服务间通信的基础设施层,正逐渐走向成熟[17]

通俗理解,可以将服务网格(Service Mesh)比作是应用程序或者说微服务间的TCP/IP,负责服务之间的网络调用、限流、熔断和监控[18-19]。对于编写应用程序来说一般无须关心TCP/IP这一层,同样使用Service Mesh也无须关心服务之间是通过应用程序或其他框架的实现机制[20-21],比如Spring Cloud、OSS,只要交给Service Mesh就可以了。

服务网格的主要特点:(1)应用程序间通讯的中间层;(2)轻量级网络代理;(3)应用程序无感知;(4)解耦应用程序的重试/超时、监控、追踪和服务发现。

服务网格(Service Mesh)模式也被形象称为边车(Sidecar)模式,服务的消费方和提供方主机(或者容器)两边都会部署代理SideCar,代理除了负责服务发现和负载均衡,还负责动态路由、容错限流、监控度量和安全日志等功能,这些功能与具体业务无关,边车(Sidecar)模式如图3所示。

4  解决方案

4.1  系统设计思路

设计Sidecar为独立进程,可以每台宿主机共用同一个Sidecar进程,也可以每个应用独占一个Sidecar进程。Sidecar的目的将每个微服务节点中相关服务框架功能剥离出来,使服务节点只聚焦于自身业务逻辑处理,服务之间的调用则交给SideCar。为了降低Sidecar的使用复杂度,本方案使用每台宿主机共用同一个Sidecar进程的方式,即部署在一个服务器上的电力交易微服务程序共同使用同一个Sidecar进程。该Sidecar进程负责协调服务网格中所有服务的出入站流量,以及注册服务、服务发现、请求路由、熔断限流、日志统计等。

4.2  系统服务网格总体设计

电力市场交易逻辑复杂,业务功能模块多,三级系统的信息交换任务重,特别是新一代电力市场交易引入微服务架构后,三级信息交换以及微服务调用的复杂度快速提升。

本文依据电力交易系统的应用场景、业务特点以及微服务架构特点,参考互联网行业比较成熟的技术解决方案,提出一个基于服务网格的三级联动电力交易系统解决方案。

该方案设计主要针对三级交易系统功能进行优化设计,根据边车模式思路,剥离原微服务的非业务功能,为每台交易系统服务器设计一个统一的管理与服务中心,如图4所示,负责该服务器节点下的所有微服务的出入站流量、服务注册、服务发现、请求路由、熔断限流、日志统计等。

根据电力交易三级系统的部署和功能内容,可以抽象成上图所示的服务网格架构图。若按照原每个微服务独自承担服务框架功能的方式,则微服务之间总的拓扑连接数为I,如公式(1)所示。

I=k1×…×kn×s1×…×sm×p1×…×pt(1)

现在按照上图方式,每个服务器节点对内外服务由这个服务器上的管理与服务中心统一处理,服务连接数可以降为J,如公式(2)所示。

J=n×m×t(2)

拓扑连接数从I减少到J,可以大大减少系统的IO开销,降低系统复杂度,从而增加了对各微服务处理的管理能力,提升了系统的响应速度和使用  效率。

4.3  管理与服务中心设计

管理与服务中心设计遵循服务网格的边车设计模式,负责所在服务器上的所有微服务注册、服务发现、负载均衡、熔断限流、日志统计等非业务处理功能,如图5所示。

(1)服务注册

管理与服务中心接受服务提供者的注册、存储服务提供者的服务信息,比如微服务名、微服务路径、微服务调用参数等信息。并与每个业务微服务保持心跳,如果心跳不能保持则注销该实例。

(2)服务发现

接收本服务器上的各业务微服务的请求、以及其他服务器上的微服务的请求,并调用本服务器上对应微服务程序进行业务处理。

(3)负载均衡

管理与服务中心根据对本服务器微服务调用请求情况以及当前服务器各微服务的调用执行情况,从中选取请求需要的并且空闲的微服务,按照轮询法或者随机法进行选择,并提供给请求方进行响应执行。

(4)熔断限流

本方案的熔斷处理主要是指当某个微服务不属于核心流程的业务处理,且对该微服务的请求经常超时,为了避免影响当前服务器的负载,这时管理与服务中心会把请求方的请求直接短路掉,返回请求方一个可以识别的空值,并且会把该微服务从管理与服务中心的服务列表中摘除,避免整个系统受到影响。

本方案的限流处理主要是指在管理与服务中心会注册每个微服务的流量阈值,当对某微服务的请求数超过该阈值时,该管理与服务中心会拒绝对该微服务新的请求,并自动让请求方去其他服务器寻找可用的微服务进行调用。

(5)日志统计

管理与服务中心会实时监控该服务器的CPU使用率、内存使用率、IO连接数、每个微服务被调用的时间、请求方信息、执行时间信息等,这些信息有助于系统管理者更好地维护电力交易系统的软硬件资源,从而进一步保障系统的平稳运行。

5  方案验证

基于本文提出的方案构建的三级模拟验证系统,按照两种服务器配置构建。第一种服务器配置是三级系统各两台虚拟机,共六台虚拟机;第二种服务器是三级系统各三台虚拟机,共九台虚拟机。

对于电力交易系统而言,请求并发数不高,负载性能不是业务痛点,因此本方案主要是为了降低结构系统复杂度,并优化服务器使用开销,具体测试结果如下。

由测试结果看,本系统采用的基于服务网格的三级联动电力交易系统设计,可以通过对微服务的有效管理,降低系统运维难度,减少服务器的IO开销,减少请求响应平均执行时间,降低CPU的使用峰值,从而提高了服务器的可用性和可靠性,保障系统的稳定性,提升应用的性能和执行响应速度,为三级远程系统应用进行数据交换和服务调用的响应及时性打下了很好的基础。

6  结论

根据电力交易系统从单体模式向微服务架构的演进路线,以及三级系统之间服务调用与数据交换的及时性要求,本文提出了一种基于服务网格的三级联动电力交易的系统设计与实现,优化了电力交易系统从单体架构演进到分布式架构后的复杂服务调用时的执行效率。该方案通过多个场景的测试,验证了可以降低三级电力交易系统结构复杂度,优化了服务器使用开销,提升了三级系统应用的性能和执行响应速度,是分布式电力交易系统进一步提升的一种不错选择。

参考文献

中共中央国务院. 关于进一步深化电力体制改革的若干意见[R/OL]. (2015-03-31)[2018-04-16].

李晓刚, 杨立兵, 邹斌, 王小君. 华东跨省集中竞价交易市场的实证分析[J]. 中国电力, 2014, 47(03): 146-151.

王小君, 李晓刚, 杨立兵, 邹斌. 华东跨省集中交易中发电企业结盟报价实证研究[J]. 电力系统保护与控制, 2013, 41(09): 106-111.

杨争林, 曹帅, 郑亚先, 等. 电力市场全景实验平台设计[J]. 电力系统自动化, 2016, 40(10): 97-102.

高志远, 冯树海, 薛必克, 等. 集中式现货市场下的省级调度业务框架设计[J]. 电力系统自动化, 2019, 43(18): 185-191.

龙苏岩, 杨争林, 耿建, 等. 跨区跨省交易管控指标及其平台技术[J]. 电力系统自动化, 2014, 38(13): 108-114+152.

史连军, 邵平, 张显, 等. 新一代电力市场交易平台架构探讨[J]. 电力系统自动化, 2017, 41(24): 67-76.

承林, 王海宁, 高春成. 微服务在电力交易系统中的应用研究[J]. 电网技术, 2018, 42(2): 442-446.

承林, 王海宁, 高春成. 分布式任务调度在电力市场交易系统中的应用设计[J]. 计算机应用与软件, 2018, 35(11): 163-167.

古润南, 艾中良. 基于LOD控制与内外存调度的大规模网络态势数据节点处理算法[J]. 软件, 2016, 37(3): 89-93.

杨继伟. 视频云源站的资源调度系统设计与实现[J]. 软件, 2018, 39(5): 170-181.

Fowler M, Lewis J. Microservices-a definition of this new architectural term[EB/OL]. (2014-03-25)[2017-06-18]. http:// martinfowler.com/articles/microservices.html.

金俊平, 杜軍龙, 周剑涛. 电子政务云框架服务体系研究及应用实践分析[J]. 软件, 2018, 39(6): 147-149.

郝振强. 终端管理系统北向对接中微服务的应用研究[J]. 软件, 2018, 39(11): 101-104.

焦会英, 辛存生, 刘俊艳. 大数据技术及其在智能电网中的未来应用[J]. 软件, 2018, 39(9): 200-202.

William Morgan. What's a service mesh? And why do I need one?[EB/OL]. [2017-04-25]https://buoyant.io/2017/04/25/whats- a-service-mesh-and-why-do-i-need-one/.

沈林强. 基于服务网格的物联网平台研究与实现[D]. 浙江理工大学, 2019.

郑俊褒, 沈林强. 基于服务网格的微服务架构服务治理研究[J]. 计算机系统应用, 2019, 28(02): 55-61.

廖艳艳. 面向Istio服务网格的微服务治理平台的设计与实现[D]. 南京大学, 2019.

孙杰平. 论Service Mesh在微服务架构中的优势, 通信世界(23)(2018)49.

徐琛杰, 周翔, 彭鑫, 等. 面向微服务系统的运行时部署优化[J]. 计算机应用与软件, 2018, 35(10): 85-93.

猜你喜欢
交易系统调用架构
基于FPGA的RNN硬件加速架构
山东首套ETC匝道准自由流预交易系统正式运行
ETC拓展应用场景下的多源异构交易系统
功能架构在电子电气架构开发中的应用和实践
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
LSN DCI EVPN VxLAN组网架构研究及实现
基于系统调用的恶意软件检测技术研究
基于AS仿真的电子商务交易系统研究
一种基于FPGA+ARM架构的μPMU实现