吉承文,马 超,张铁钢,朱 淼
(海南电网有限责任公司信息通信分公司,海南 海口 570203)
国家对信息化建设非常重视,电网企业初步建立了数据处理中心云计算平台,提供基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)三种服务模型[1]。云计算平台的充分开发和应用,将云计算服务逐渐应用到电网企业生产活动中,有着重要的意义。
随着电网业务功能的快速拓展,对应用架构提出了高内聚、低耦合的要求。微服务架构与容器虚拟化技术日趋成熟,满足了这一需求。采用微服务架构设计[2],运用基于容器技术的容器即服务(CaaS)服务模型[3],能快速构建云平台基础设施和开发流程,实现自动化部署和发布,降低系统运维难度,有利于电网平台的集成和扩展。
微服务是一项在云中部署应用和服务的架构技术。微服务架构技术根据业务上下文,选择合适的语言、工具进行构建[2]。微服务运行在各自隔离的环境中,是将业务功能进行细粒度划分的结果。微服务之间的交流采用轻量级通信机制进行。
微服务架构有别于传统的单体式方案,也区别于传统的SOA架构。微服务架构可将应用拆分成多个核心功能,每个功能都被称为一项服务。每一个微服务的构建和部署运行是在各自独立环境中的,这意味着各项微服务在工作和出现故障时,被隔离在自身的环境中,错误崩溃不会影响其他微服务业务,最大程度地保证了系统稳定与可靠。
虚拟化(Virtualization)是云计算技术的基础架构即服务层,其将各种资源如内存、存储、服务器及网络等予以抽象、转换后呈现出来,提供资源的整合和数据资源按需分配,使得资源充分利用。
虚拟化技术能够在一台高性能服务器上构建出多个虚拟操作系统,最大化地利用硬件平台所有资源。虚拟化是对用户交付资源的一种呈现方式,交付给用户的资源不再是物理实体,而是满足用户资源配置需求的逻辑资源[3]。
容器技术是虚拟化的服务器资源共享方式,可以按需构建操作系统应用实例。Docker是容器技术的典型应用,围绕Docker开发的众多项目,如容器操作系统、开发平台、开发工具、大数据、系统监测等[5,6],主要使用Docker应用程序接口来进行容器管理。
容器技术相较于虚拟机技术,优势十分明显。虚拟机将完整操作系统内核进行了虚拟化。Docker容器是更加轻量级的解决方案,未使用虚拟机操作系统来实现资源和环境的隔离。容器技术与虚拟机技术的优势主要在于[5,6]:
(1)容器技术的抽象层更为简单。Docker没像虚拟机那样将硬件资源虚拟化,容器内运行的服务都是直接使用物理机底层资源,在利用CPU和内存方面占据显著优势。
(2)容器技术的轻量级、高性能、便捷性。Docker直接利用宿主操作系统的内核,而不需要创建虚拟机操作系统,能够节省大量的时间和资源消耗。利用Docker技术很容易创建成百上千的容器。
Docker容器化管理架构如图1所示。最上层电网业务连接着Docker客户端。运行在后台的是Docker守护进程,通过Docker服务器模块接收Docker客户端的请求,在Docker引擎中处理请求,根据处理情况创建特定的作业并运行。Docker底层保证了PaaS层各Docker实例进程间的安全性与隔离性,Docker实例都在独立空间内运行。
在服务器上安装Docker引擎,通过Docker将常用的应用制作成镜像,直接将业务参数配置完成,在发布和部署过程中大大提高效率。
图1 Docker容器化管理架构
海南电网数据中心云平台的微服务框架是面向企业级集资源管理、微服务开发、服务治理和服务运维为一体的平台,帮助业务开发和运维人员快速构建和发布微服务应用,提供多样化的运维工具,保障服务的上线质量。
微服务框架为企业构建微服务应用提供全生命周期管理,调用链跟踪,数字化运营,资源管理等能力,同时兼容主流开源框架,低成本轻松接入。
微服务框架提供兼容SpringCloud的微服务开放框架,满足服务注册、服务调用、动态配置、服务鉴权、参数传递等功能。SpringCloud微服务框架原生应用可无缝迁移到微服务框架平台,同时兼容Dubbo等主流开源框架,通过简单的Jar包替换,即可使用微服务框架服务,使用“零”门槛。
微服务框架提供从创建应用到运行应用的全程管理,功能包括创建、删除、部署、回滚、扩容、下线、启动和停止应用。微服务框架提供应用分组来实现应用的版本控制和灰度发布功能。
微服务框架提供构建微服务所需的计算,网络,命名空间等资源的管理。微服务框架支持云主机和容器部署应用,提供云主机和容器的创建、配置、销毁等全生命周期管理。通过设定命名空间,可以将不同的命名空间的部署组内的应用进行隔离,例如可以将开发环境、联调环境、测试环境的服务分别放到不同的命名空间中,实现三个环境相互隔离,互不影响。
微服务框架提供全面的监控和分布式调用链分析工具,帮助用户把握应用上线后的运行状况。用户可以根据时间范围和服务名等条件来查询一组调用链。调用链详情显示了请求经过每个服务的层次关系和耗时情况等信息。
电网系统业务规模大,业务用户众多,业务交互需求多样化,采用微服务和容器框架不仅能让多租户共用一个应用程序或运算环境,实现租户间应用程序环境的隔离和数据隔离,且增加多用户使用云平台的便捷性,完成电网数据的深度挖掘和价值利用。
本文研究将传统业务系统架构转换成微服务架构的系统,提出多租户模型,结合负载均衡、容错管理和服务监控技术,用微服务技术将系统应用解耦,用容器技术将系统功能独立,充分提高系统可靠性。
基于微服务架构的分布式系统,其业务应用需要更好的环境隔离,更细力度的计算资源隔离和调度能力,本文采用微服务与容器构建多租户服务平台,如图2所示。架构上层提供主机、网络及其他配套资源等基础设施微服务。容器虚拟化资源服务是架构底层,提供存储、权限管理等综合微服务。架构的多租户之间相互隔离,微服务相互独立,数据开发和数据应用自由。资源管理、数据服务、权限管理、监控服务等由公共服务区的微服务提供。
图2 基于微服务与容器的多租户架构
平台是多租户数据服务监控及管理体系,为扩大平台的适用和灵活应用,多租户数据微服务平台应具备以下特性:
(1)按需使用:租户对资源或服务可以自助配置并自动化使用。
(2)广泛接入:平台支持与兼容多种设备、协议、接口和安全技术,具备被广泛访问的能力。
(3)资源管理:实现多租户资源池化和隔离。
(4)弹性扩展:自动、透明地扩展资源。
(5)用量统计:平台要对租户的实际使用或被授予资源能精确记录。
(6)可恢复性:平台服务要具备高可用和自愈设计,给租户提供故障恢复能力。
微服务架构和容器等技术逐渐发展成为较为领先的设计思想,本文探讨了基于微服务与容器架构在电力业务系统应用。微服务架构与容器虚拟化的服务组件提高了灵活性、可靠性。微服务架构化的电力业务系统实践,体现业务系统具有较好的交互性、可维护性和可扩展性。