分布式系统运维交付解决方案研究与应用

2017-12-14 11:37曹雨薇
电脑与电信 2017年10期
关键词:作业管理仓库分布式

曹雨薇 张 毅

(中国移动(深圳)有限公司,广东 深圳 518048)

分布式系统运维交付解决方案研究与应用

曹雨薇 张 毅

(中国移动(深圳)有限公司,广东 深圳 518048)

伴随着云计算与大数据技术的飞速发展,SOA、微服务等分布式软件架构模式已成为业务系统的基本架构模式。相对于传统的非分布式系统,分布式系统以其易扩展、高可靠、处理速度快、灵活性强等优点逐渐受到业界的青睐。本文基于分布式系统部署提出更为有效的解决方案,围绕现有框架进行设计,提出了基于MVC分层架构具备可视化流程编排、万能工具仓库以及自动化作业管理等核心功能的分布式系统运维交付解决方案。

分布式系统;工具仓库;可视化流程编排;自动化作业管理;MVC分层架构

1 引言

随着网络技术的飞速发展,软件运行平台逐渐从单机环境迁移到网络环境,计算机系统也由集中式系统逐渐发展为分布式系统。与此同时,由于分布式计算技术在电信、金融等许多关键领域的广泛应用,分布式系统逐渐呈现出规模庞大,服务对象众多,对象之间的关系复杂等特点,由此给分布式系统管理的配置、部署、运行监控以及维护带来了许多问题。为提高系统的性能和可用性,在大型分布式系统中对应用服务进行监控和管理就变得尤为重要。因此,如何对大型分布式系统进行高效管理,特别是如何满足服务对象部署一致性以及系统服务对象云端状态监控实时性要求,是一个具有理论意义和实用价值的研究。

2 分布式系统运维交付框架需求

传统的运维人员通常只面对几十或者上百台的服务器,规模不会太大,而且相对应用来说,每台机器都是一个独立节点。但在大规模分布式集群中,工作任务明显不同:首先,运维人员面临的服务器动辄就是三五千台甚至上万台,量级大幅提升;其次,分布式操作系统提供存储、CPU调度能力、内存使用、网络等功能,是基本资源的包装整合,从逻辑上看,相当于一台计算机;第三,基于分布式系统开发的应用相当于一个分布式数据仓库,用户可以在上面进行ETL处理、SQL查询、数据导入导出等基本操作,以及实现一些MATLAB、统计软件等功能。因此,与传统运维相比,分布式系统运维人员必须要有更强大的整体把控能力,包括对机房网络、带宽、硬件、服务器的性能进行优化,熟悉上层应用,实现数据分析等,做到对各个方面的情况了如指掌。因此对于分布式系统运维交付人员来说,亟需一个更加专业的分布式系统运维交付方案来解决上述繁琐的技术操作。

根据业界常见的分布式系统运维交付解决方案的实现原理,对其共同点进行抽象建模,提出了一种更普遍更有效的分布式系统运维交付解决方案,通过规划和统一运维交付流程、搭建尽可能全的工具仓库并融入数据作业的自动化管理可以极大提高运维、交付人员的工作效率,使系统得以快速上线,从而提高分布式系统交付效率。

3 现有分布式系统运维交付框架

目前最常用的分布式系统部署主要依赖系统工程师把主要精力放在监控、部署上线以及数据备份三个方面。最初,软件开发人员通过对分布式系统中各节点程序部署进行分别编写以及各服务器性能监控脚本的编写来完成相关操作,这对于节点规模较小的企业来说是可以满足的。当节点数量达到千台左右的情形,开发人员又开发出了各种开源的分布式系统集中式操作平台,其中最为常用的是puppet集中配置管理系统,使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些系统实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。客户端可以与服务器定期进行配置信息同步,从而实现资源的依赖关系管理。但此类方法需要安装puppet工具,同时需要对puppet控制代码进行编写和调试,其批量部署优势较明显,这类垂直管理系统的使用极大减轻了工程师在重复性、批量化操作方面的负担,并有效完成既定的运维子目标,但这类软件只针对某一垂直领域的特定问题进行处理,对于它们之间的关联性很难应付。

图1 puppet的C/S架构图

4 分布式系统运维交付框架设计

本文提出了一种分布式系统运维交付解决方案,核心思想是通过一个平台来规划和统一运维交付流程、搭建尽可能全的工具仓库以及数据作业的自动化管理来实现分布式系统的运维与交付,我们暂且称该平台为分布式系统运维交付管理平台。

为了便于平台的使用、管理和扩展,该平台必须有如下四层架构,并采用MVC模式完成实用性优化。

视图层:建议采用标准规范的JSP+JSTL结合面向对象的界面组件包来进行视图展现。

控制层:建议使用Spring组件包中的Spring-MVC功能,Spring MVC引入了注解驱动功能。使用注解即可实现一个普通JAVA类具有Controller的全部功能,同时Spring-MVC的框架具有灵活性、易用性和扩展性。

业务层:在实际的项目开发中,各个领域均有自己独特的业务逻辑并且往往没有实现两个分离,一个是前台与应用的分离,一个是应用与数据的分离,故而导致了在传统项目中代码高度耦合,比如两个业务逻辑中相同的子功能或者子模块原本有可能被重用,但由于它与各自业务逻辑绑定在一起导致很难被重用。通过将这些具体逻辑的代码独立出来成为单独一层即我们所说的业务层,使业务层降低与系统其他部分的耦合度,让该层以最小的改动适应最大的变化,并建议在编码时尽量考虑同一业务多种实现的兼容能力和可扩展能力。

数据持久层:开发过程中,与数据库进行数据交互必不可少,主要的数据操作包括添加、读取、修改、删除,它们占据了系统开发中的大部分时间,由于数据库操作频率往往较高,该层与数据库交互的性能问题是需要我们重点考虑的,如采用连接池、数据缓存等等。因此,在本层实现中,建议使用MyBatis功能对JDBC进行封装,实现面向对象的业务操作,同时兼顾业务Sql的复杂性和灵活性。

图2 基于MVC模式的四层架构

5 分布式系统运维交付框架功能与实现

为了实现对不同用户的统一管理,本框架通过建立公有工具库与私有工具库,面向不同的用户开放不同的工具执行权限,并记录工具执行记录,根据用户需求执行相关操作,并结合可视化流程编排与作业管理从而完成系统的快速上线。图3提供了一种可供执行的框架功能图。平台主要功能由用户管理、系统管理、资产管理、权限管理、工具仓库、审计管理、应用中心、流程管理等组件模块构成,上述是一个分布式系统运维交付所必须具备的基础功能与核心功能,在此基础上可根据具体情况相应扩展。接下来将详细阐述此分布式系统运维交付解决方案的核心思想——可视化流程编排、万能工具仓库以及自动化作业管理。

图3 分布式系统运维交付基础框架

5.1 可视化流程编排

分布式运维交付管理框架可实现可视化的流程编排,并生成通用的流程模板供用户直接调用,对于个性化配置可通过一次性配置保存模板供后续通过模板管理进行调用而无需重复配置,从而节约配置时间并降低配置复杂度。以数据库安装为例,将各类型数据库安装操作封装成一个可视化图标保存在流程库当中,点击数据库安装可视化图标展开系列数据库选项,可选择性地安装特定类型的数据库,并拖拽到流程相应节点中,流程节点全部拖拽完即生成流程模板保存在模板库中供本次以及下次调用。

图4 可视化流程编排

5.2 自动化数据作业管理

自动化数据作业管理是整个分布式系统运维交付平台的核心之一,旨在完成分布式数据库海量数据规划。传统方式一般采用脚本管理进行数据的分布式存储发布,通过编写Linux自动处理脚本的方式,执行脚本批量导入业务数据并提交到数据库集群上,并利用脚本监控数据库运行过程从而实现半自动化的数据部署。某种程度上脚本管理节省了人工干预成本,但在整个处理过程中仍然是半自动化的不够智能,每次操作均需开发人员重新编写,运行时候出错不易于查找,总的来说需要较多的人工介入。

那么本文所介绍的全自动化的数据作业管理是指数据分布可配置化管理。具体实现是在系统内部实现脚本库,为脚本库设置参数,前台设计不同的功能菜单通过输入不同的参数自动录入所匹配的脚本从而实现前台零脚本化的数据分布式部署。脚本库越丰富分布式数据库运维交付的自动化实现将越明显。目前业界已经实现了数据的自动部署功能,只需稍加应用即可整合到我们的分布式系统运维交付框架当中,可采用web服务接口的方式,向目标服务器集群同步数据并按规则划分各服务器数据节点及数据量,所需部署的数据采用XML作为数据内容的载体,可以方便地转化数据库中的数据存储到XML中。XML是Internet环境中跨平台的、依赖于内容的技术,是当前处理结构化文档信息的有力工具。

图5 自动化数据作业管理

5.3 万能工具仓库

工具仓库包括公共仓库和私有仓库两部分。公共仓库开放给所有平台用户,平台用户可选择性执行所需要的工具。而私有仓库是各用户按需定制。公共仓库与私有仓库均可记录执行过程。用户在登录后自行加载可供用户使用的公共工具和私有工具,公共工具由管理员统一发布,私有工具是用户根据个性化需求自行编写。平台提供统一的工具模板实现可视化的工具定制。当查询出工具列表后,在后面点击执行工具,后台接收页面上传过去的参数并根据相应的脚本代码去服务器执行,返回执行结果。不同的用户登录代表着不同的工具使用权限,并遵循“通用工具为所有用户开放、私有工具只为特定用户开放”的原则。另外可以通过项目组关联项目成员,同一个项目组下各成员工具仓库实现共享,减少重复定制。

图6 私有仓库执行工具处理逻辑

可采用gitlab存放脚本文件的形式实现工具仓库,亦可通过svn实现,两者的区别在于svn以服务器为中心,用户直接连在中间服务器上,本地修改再提交到svn服务器上,主要用于小项目开发。而gitlab则可以有效、高速地处理从很小到非常大的项目脚本管理,适用于仓库管理系统开源项目,使用Git作为代码管理工具,并在此基础上搭建服务。

6 结束语

本文提出一种通用的分布式系统运维交付解决方案,围绕现有框架进行设计,提出了基于MVC分层架构具备可视化流程编排、万能工具仓库以及自动化作业管理等核心功能的框架设计。目的在于减少运维、交付人员的工作量,使系统得以快速上线,从而提高分布式系统交付效率。

基于该平台可以有效地完成分布式系统部署交付,通过维护定制化流程模板,在系统部署时,不需要对每台分布式子系统进行——手动部署,而是按照预先编排好的流程进行自动部署,并加快系统上线时间,降低系统风险。各企业用户通过使用该平台,可以大大节省部署资源和人员投资,在研发过程中快速地组织系统的分布式部署。后续我们将持续完善提供更加通用便捷的分布式系统运维交付解决方案,从部署方式入手,实现各平台兼容的搭建方案,如物理机部署、虚拟机部署、容器部署等等,这将是我们今后研究的方向。

[1]王晓鹏.大型分布式系统服务对象部署与运行监控技术的研究与实践[D].长沙:国防科技大学,2006.

[2]燕振斌.分布式环境下程序部署与监控系统中的任务调度模型研究[D].北京:北京工业大学,2013.

[3]李新虎,刘正伟,刘俊朋.基于puppet工具的软件批量部署的实现[J].信息技术与标准化,2014(6):70-75.

[4]李小文.基于Puppet的自动化部署工具的设计与实现[J].软件,2015,36(12):224-227.

[5]陈兴振.基于Hadoop的数据作业管理平台设计与实现[D].北京:中国科学院大学,2015.

[6]郭学英,余国诚,姜颖.一体化环境下部署数据管理系统的设计与实现[J].中国民航大学学报,2014,32(4):31-35.

[7]徐瑞雪.基于JAVA/XML的分布式数据同步系统的设计和实现[D].大连:大连海事大学,2011.

Research on andApplication of Distributed System Operation and Maintenance Delivery Solution

Cao YuweiZhang Yi
(China Mobile(Shenzhen)Limited,Shenzhen 518048,Guangdong)

With the rapid development of cloud computing and big data technology,SOA and micro service distributed software architecture model have become the basic architecture model of business systems.Compared with the traditional non-distributed systems,distributed systems are gradually favored by the industry because of their advantages of easy expansion,high reliability,fast processing speed,and high flexibility.This paper puts forward more effective solutions of distributed deployment system.Based on the existing frame,the solution has core functions of visual process orchestration,universal tool warehouse and automated management with MVC layered architecture.

distributed system;tool warehouse;visual process orchestration;automated management;MVC layered architecture

TN929.5

A

1008-6609(2017)10-0044-04

曹雨薇(1990-),女,湖南人,硕士,系统架构分析工程师,研究方向为移动第三代业务支撑系统架构。

猜你喜欢
作业管理仓库分布式
“双减”背景下初中生作业管理的实践探究
“减负增质”理念下作业管理的创新策略
填满仓库的方法
落实各方责任 加强特种作业管理
四行仓库的悲壮往事
客车调车作业管理的探讨
分布式光伏热钱汹涌
分布式光伏:爆发还是徘徊
小猫看仓库
基于DDS的分布式三维协同仿真研究