◆房广江 鱼江海 李玥琨
基于容器云、微服务的综合平台应用实践
◆房广江 鱼江海 李玥琨
(中国电子科技集团公司第二十八研究所 江苏 210046)
随着信息技术的发展,信息系统面临功能扩展灵活、使用场景多变等新挑战,传统的单体应用存在功能耦合强、启动速度慢、弹性扩展难等缺点,难以满足需求;针对此问题,采用微服务架构将大型单体应用拆分为可独立部署的微服务组件;采用容器云对微服务进行编排,实现微服务的弹性扩容、柔性重组。实践表明,基于容器云、微服务的综合平台能够保障信息系统的平稳运行、弹性扩展、柔性重组,满足信息系统的使用需求。
容器云;微服务框架;综合平台
现有信息系统大都基于传统单体应用开发的。这些系统一般是以业务逻辑层为中心的六边形结构模式,同时提供数据库连接接口、管理消息的组件以及支持UI访问的Web模块适配器等[1]。虽然均以模块设计为出发点,但最终还是会被打包成单体式结构,即使是某个组件中一个小的修改,都需要重新部署整个应用。组件间缺乏严格的边界定义,相互依赖、日积月累导致系统复杂度提升,整体质量急剧下降。
微服务架构模式可解决上述问题,其思路不再是开发一个大的单体式应用,而是将其分解为小的互相连接的微服务应用[2]。一个微服务完成一个特定功能,每个单体式应用独立部署、维护以及扩展,每子系统均可在Web容器中独立运行,每个应用都是低耦合的,从而系统具有强大的扩展能力,并且各模块之间可通过提供接口进行相互调用,减少对其他模块的影响。
微服务架构虽然给信息系统带来了诸多优势,但同时也让构建、部署和维护这些分布式的微服务系统带来不少难题。近年来基于轻量级虚拟化技术、面向应用虚拟化运行环境的容器云为微服务提供了理想的载体,利用容器化技术简化微服务创建、集成、部署、运维的整个流程,推动微服务在云端的大规模实践[3]。
系统在总体架构上主要包括基础设施、容器云、微服务框架、访问终端。总体架构图如图1所示。硬件资源包含支撑系统运行的计算资源、网络资源、存储资源;容器云利用轻量化虚拟化技术将底层基础设施抽象,简化应用服务的开发部署,为微服务应用的管理、流水线开发提供底层支撑;微服务框架依托容器云提供服务网关、服务注册发现、服务统一配置、服务监控运维、服务可靠集群功能,满足服务高可用、故障快速恢复需要;访问终端提供移动终端、客户端、大屏等多种形式供用户实现服务的访问与调用。
容器云节点根据节点类型分为主节点和工作节点。其中,主节点负责整个容器云的控制和管理功能;工作节点负责运行实际部署的应用。容器云节点功能组成及原理如图2所示。
图2 容器云节点功能组成及原理
主节点包含API服务、调度器、控制器、分布式存储等组件。其中API服务是容器云平台的对外接口,供其他组件、客户端等调用;调度器负责调度应用,为可部署应用提供一个工作节点;控制器执行集群级别的功能,如复制组件、持续跟踪工作节点等;分布式存储,用于持续化存储集群配置。
工作节点包含资源管理、负载均衡、容器引擎等组件。容器引擎提供容器运行环境;资源管理,负责与API服务通信,并管理所在节点上的容器;负载均衡提供容器云内部服务网络流量的负载均衡。
容器云通过硬件资源的抽象,屏蔽了应用开发人员、运维人员对基础设施的关注,提升了研发效率和资源利用率,有效支撑微服务框架。
微服务框架包括服务接入网关、服务注册中心、服务配置中心、服务监控中心、服务集群。其工作原理如图3所示。
服务接入网关,为客户端访问提供统一入口,减少了客户端与应用程序之间的访问次数;服务注册中心,为微服务提供服务发布、发现、管理、共享、交换和整合能力,解决服务的统一发布和发现问题;服务配置中心,为微服务应用提供统一的配置管理,提升系统研发和运维效率;服务监控中心,为服务集群提供链路追踪和监控告警,便于实时掌握服务集群状态;服务集群,提供微服务集群能力,支撑微服务应用容灾抗毁、可靠运行。
图3 微服务架构原理图
为了验证本文综合平台的实际运行效果,使用3台服务器测试环境,部署容器云、微服务框架,基于此部署20个应用服务。三台服务器配置见表1。其中容器云软件部署时,1台为主节点,3台都为工作节点。作为对比,使用三台同样配置的硬件部署20个虚拟机和应用服务。
表1 测试服务器及参数
设备操作系统CPU内存存储 浪潮NF5280M5银河麒麟Xeon 4210*264G512G 浪潮NF5280M5银河麒麟Xeon 4210*264G512G 浪潮NF5280M5银河麒麟Xeon 4210*264G512G
基于虚拟机的单体应用与基于容器云的微服务定性分析结果见表2所示。相比基于虚拟机的单体应用,基于容器云的微服务在启动速度、资源损耗、服务高可用和安装部署等方面均有很大提升。
表2 基于虚拟机的单体应用与基于容器云的微服务定性分析对比
对比角度单体应用微服务 内核模式自有内核共享宿主机内核 资源损耗约15%几乎无损耗 虚拟机/镜像启动速度分钟级秒级 高可用策略容灾、迁移弹性、动态 部署运维成本一般低
基于虚拟机的单体应用与基于容器云的微服务定量分析结果见表3所示。基于容器云的微服务比基于虚拟机的单体应用的启动时间更快、并发访问响应更迅速、占用内存和CPU资源更少。
表3 基于虚拟机的单体应用与基于容器云的微服务定量分析对比
对比角度单体应用微服务 平均启动时间72秒6秒 内存平均占用率76%23% CPU平均使用率43%17% 100并发访问时平均相应时间16毫秒0.6毫秒
本文针对信息系统面临功能扩展灵活、使用场景多变等新挑战,采用微服务将大型单体应用拆分为可独立部署的微服务组件、采用容器云对微服务进行编排,实现微服务的弹性扩容、柔性重组。试验表明基于容器云、微服务的综合平台部署应用时启动速度快、资源损耗少、服务可靠性高和安装部署运维成本低,在信息系统中可推广使用。
[1]YOUSIF M. Microservices[J]. IEEE Cloud Computing, 2016,3(5):4-5.
[2]贲婷婷,李荣宽,汪敏,等.基于轻量级容器技术的战术微云框架[J].指挥信息系统与技术,2017,8(5):87-92
[3]丁乙,李荣宽,汪敏,等.面向军用微服务的服务网格架构研究与设计[J].指挥信息系统与技术,2020,11(1):18-23.