高校云数据库平台的设计与实现
2021-09-23张坤涛吴思莹王世华
张坤涛 吴思莹 王世华
(广东石油化工学院理学院 广东省茂名市 525000)
1 绪论
近年来,云计算进入突飞猛进快速发展阶段,正日益演变成为新型的信息基础设施。在各国纷纷大力扶持云计算产业的背景下,中国率先实行“云优先”政策,云计算技术不断演进发展成熟,并快速在政务、医疗、金融等重要领域普及,其市场也从十几亿规模快速增长至千亿规模。而信息系统的建立越来越依赖数据库的支持,云数据库已成为当前的一个研究热点[1-4]。
目前国内外越来越多企业或组织将自身业务数据从基础设施移到云数据库,以充分利用云数据库的优势,从而极大降低运维成本和提高数据库性能。也越来越多的企业、组织和研究人员进行云数据库的设计与开发。如国内阿里云的云数据库,拥有关系型数据库、NoSQL数据库,具有稳定可靠、可弹性伸缩等特点,同时在性能、监控等方面具有优势;国外的如Amazon RDS,一种关系型云数据库。使用这个数据库,很多部署管理的工作不需要使用者来做,或者说做起来很容易,如数据库安装、版本升级、环境准备、备份/还原等[5];文献[6]则基于PaaS平台和云编排引擎设计出了新的云数据库平台,实现了自主研发。
虽然云数据库是当前的一个研究热门,但是在针对于高校云数据库的研究却少之甚少。数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一,它是计算机信息系统与应用系统的核心技术和重要基础[7]。但是在数据库的相关教学中,采取的教学设备在设计中存在一定的缺点,如教学机每次重启设备自动还原、学生电脑与教学机不统一、设备卡顿等,造成学生的时间的浪费,课后没法继续深入研究等问题,导致学生的深入研究的兴趣逐渐降低,严重抑制了学生的进一步思考与分析。另外,在信息化快速发展的背景下,传统的数据库已经无法满足需求。随着高校师生所产生的信息不断增多,传统的信息技术早已无法满足高校师生的日常需要,高校教生对信息技术有了更高的要求[8]。
一个专门针对于高校的数据库势在必行。高校云数据库在高校教学中的应用不仅能有效降低硬件、软件的运行成本,同时还为高校教学提供优质的云服务,促进高校的教学。
本文对广东地区大学院校对云数据库的需求进行了调研,通过研究目前高校在数据库教学中存在的缺陷和不足以及基于现有云计算和云数据库的相关技术,提出并设计出了一种专门针对于为高校服务的云数据库平台。
2 云数据库在高校计算机教学中的需求分析
高校云数据库在基础功能上需求基本与目前国内大部分云数据库需求一致。基本功能模块需求有用户管理、容器管理、镜像管理、实例管理、物理机管理和监控报警。由于本文主要针对于高校的云数据库研究,主体用户为高校师生和高校管理员,所以主要进行了对学生、教师、管理员三方的需求分析。
2.1 学生对云数据库的需求
学生主要在于目前大多数教学学生机器每次启动会自动还原,学生需重复配置环境,浪费课堂时间。另外,如SqlServer、Oracle等常见数据库软件,它们占用空间大,运行所需要消耗的计算机资源较多,这对于性能一般的计算机会出现卡顿、运行缓慢等现象,导致学生无法再运行或运行卡顿其它软件等问题。学生主要需求在于能根据自己的需求申请指定的数据库,并能支持任意一台机器均能访问,支持数据库备份,当操作失误时能够快速还原等。
2.2 教师对云数据库的需求
教师在课堂数据库教学当中,目前主要存在问题是上课地点不统一、课室机器不同教师之间安装不同环境导致冲突,有些机器甚至自动还原,在教学中重复配置环境等浪费时间。所以教师需要一个独立的数据库,并且支持任一地点访问,不与其他服务冲突。
一般情况下,个人计算机的软件不能达到“共享”使用的目的。而在我们的教学过程中往往需要操作数据库中共同的数据,一般方式是从教师数据库导出数据后再导入每个学生自己的本地数据库,数据的迁移会浪费很多时间,而且还会因为数据库版本不兼容等原因造成无法导入或数据丢失的问题。所以教师的主要需求还有独立的数据库空间,能够自定义数据库并能实现快速共享等。
2.3 管理员对云数据库的需求
管理员的需求在于能够减轻管理员的负担,系统能够自动化完成大部分任务。所以管理员主要需求为拥有可视化管理平台,能自动化管理平台,自动化监控资源使用情况,自动生成报表和预警。
3 系统设计与实现
基于SpringBoot技术开发出一套云数据库管理系统,再通过Java操作Kubernetes API实现管理由Kubernetes架构搭建的云数据库平台。即实现了云数据库系统的实现,又实现了云数据库平台可视化管理。
3.1 设计内容
基于现有的Kubernetes云计算平台,通过分析其框架原理和API管理接口,搭建出基本的云数据库平台。然后主要根据对高校云数据库的需求,对其功能和设计进行创新,以满足高校对云数据库的需求,其主要功能有如下几个方面:
(1)支持师生申请自己独立的数据库,且根据管理员设置的申请限制条件,符合条件系统即可自动生成数据库,无需任何人工审核和运维操作;
(2)支持自定义数据库。如选择Mysql、Oracle、Redis、MongoDB数据库等、版本号、初始环境;如上课所需环境需要定制,教师只需通过拷贝自己的数据库环境,即可实现一键分发至每一位学生;
图1:云数据库平台架构图
(3)用户数据库之间环境没有任何影响,每个用户可独立操作、修改自己的数据库环境;
(4)资源动态可视化。每个用户可查看自己数据库的资源使用情况;管理员亦可查看每个用户和云数据库整体集群的资源使用情况;
(5)区分临时数据库和长期数据库,临时数据库到期资源自动回收,数据会临时保存指定期限后删除,也可申请延期;长期数据库系统自动监控使用情况,长期未使用系统自动提醒,避免资源浪费。
3.2 Kubernetes架构云数据库平台设计与实现
本文Kubernetes架构设计在每个控制节点都安装Docker容器,利用Docker容器技术和Kubernetes容器编排技术搭建了高校云数据库平台,整个云数据库平台的架构如图1所示。
Kubernetes是Google公司用Go语言开发的一个开源容器集群管理平台,它可以实现 Docker 容器的自动部署维护、自动调度、服务发现、自适应负载伸缩等功能,能高效简单地管理Docker容器应用[9]。整个云数据库平台底层采用Docker容器技术实现[10]。采用Docker容器部署数据库,可有效节约资源、部署时间和启动时间,且部署多个数据库时,每个容器之间互相隔离,容器之间不会相互影响,具有独立性,能够区分计算资源,可实现每个用户可根据自己需求调整环境、变量和资源消耗统计。当用户需重置或卸载数据库时,只需重置或卸载其对应的Docker容器即可,实现一键重置或卸载。
相比于传统模式下安装数据库,Docker容器技术只需从镜像仓库中拉取我们所需的镜像,再利用镜像直接生成对应的容器,即可实现数据库的部署,大幅度提高了数据库部署的时间,同时传统模式比Docker容器要消耗更多的CPU、内存和IO资源,因此,采用Docker部署数据库,资源利用率更高。
本文采用多master集群方式部署,master节点主要负责整个集群的管理,采用3台方式部署,任意一台master节点发生故障时,另外两台还能进行正常保证系统的运行。三台机器同时出现故障的概率是相对较低的,综合资源利用,三台是相对合适的。而node节点部署数量可根据每台node节点的配置、集群用户量、资源使用情况等进行弹性伸缩,将资源利用率最大化。
3.3 可视化管理平台设计与实现
本可视化管理平台采用SpringBoot架构实现微服务,最终将其打包成Docker镜像部署在集群中。通过Kubernetes API实现管理和监控云数据库。当师生向平台申请数据库时,平时将根据申请者的用户类型、申请的数据库类型、版本抓取相应的数据库镜像,通过创建Pod API在指定的Node节点中创建一个新的数据库容器,同时采用NodePort的方式将数据库容器访问端口暴露在云数据库外,申请者通过系统分配的Node ip地址和暴露的端口即可实现访问自己的数据库,并可在自己的账号登录的可视化平台中进行查看数据库运行状态,资源消耗情况等,并可进行数据库备份、还原和卸载等操作。
4 结语
本文通过研究高校对云数据库的需求,进行了调研、需求分析、系统设计等方面的研究,并最终设计与实现满足于高校所需求的云数据库及其管理平台。该设计充分利用了高校的服务器计算和存储资源,另一方面降低师生使用数据库开发的学习成本和时间成本,为高校师生的教学、学习和研究等方面提供优质的云服务。云数据库及其管理平台的建设能够为高校师生教学与研究带来极大便利。