无服务器计算助力高校快速开发应用

2022-11-09 06:11李俊峰胡丹丹
中国教育网络 2022年7期
关键词:容器架构服务器

文/李俊峰 胡丹丹

随着云计算技术的不断发展和应用,越来越多的行业已经或者正在进行着数字化转型,云计算的应用也逐渐深入核心应用当中。高校在智慧校园的建设过程中,无论是自建私有云还是使用公有云,都已经开始充分利用云计算技术构建智慧校园的基础架构,但是目前高校云计算的应用大部分还是基于IaaS。随着云计算技术的发展,云原生、微服务等技术的不断成熟,高校智慧校园建设对敏捷开发需求的增多,无服务器计算将在高校信息化建设中发挥出相应的作用。

无服务器计算介绍

无服务器计算概念

无服务器计算是一个由业界创造的术语[1],作为一种基于云计算的新的软件开发方式正变得随处可见。无服务器计算不是没有或者不用服务器,而是指我们的应用程序使用第三方的函数(Function)和服务来进行计算,但是不需要管理计算所需的服务器。无服务计算架构主要包含以下两种类型:

其一,FaaS(Function as a Service,函数及服务):主要是指包括服务器端业务逻辑运行的无状态函数(Function)。这些函数是在容器里面独立运行的,是基于事件驱动的,并且是由第三方厂商进行托管的,例如AWS Lambda,华为云FunctionGraph,阿里云函数计算等[2]。事件驱动型计算、FaaS和Serverless FaaS之间的关系如图1所示。

图1 事件驱动型计算、FaaS和Serverless FaaS之间的关系

其二,BaaS(Backend as a Service,后端及服务):主要是指为移动和Web应用程序来提供后端的云服务,这里包括了云数据库、文件存储、消息推送等。同样,这些服务也是运行在第三方公有云。

无服务器计算架构存在以下特点:无需管理服务器、无状态、自动伸缩、无运营成本、事件驱动、首次启动存在延时和安全性较高[3]。

无服务器计算生命周期及架构

无服务器计算的生命周期主要分为五个部分,分别是事件触发、寻找可运行容器、启动运行容器、响应函数运行、运行结束或进入等待状态。在整个生命周期中,如图2所示,如果在第二步中没有找到可运行的容器,才会进入第三步新启动运行容器。

图2 无服务器计算的生命周期

由于事件驱动,无服务器计算的运行逻辑架构则更加简单,只需创建好需要运行的代码,定义好触发代码运行的事件源和触发条件,如图3所示。

图3 无服务器计算运行架构

触发无服务器运行的事件源可以有很多种,包括API网关、短信网关等,甚至也可以是另外一个无服务器计算的函数。那么无服务器计算的结果也可以发送至其他的服务器,例如可以发送至OBS存储保存、加入SQS消息队列、触发另一个无服务器函数等。

无服务器计算在高校的应用

智慧校园是高校信息化建设的核心任务。高校在建设智慧校园的时候都会建设各类应用系统,例如教务、科研、学工、人事、财务系统等,同时还包括统一数据中心、数据交换平台、统一身份认证平台、数据治理平台等大量的基础服务平台,通过以上系统满足高校各类复杂而又个性化的需求。在智慧校园的实际建设中高校需要采购多个厂家的软件产品,虽然不同软件厂家的系统可以实现数据对接和共享,但还是会有一些个性化需求无法得到及时满足,往往需要学校自己进行相应开发工作。而无服务器计算可以为高校快速开发软件带来一定帮助。

应用场景

由于学校智慧校园所使用的软件并不能100%满足学校所有需求,往往存在一些具有极强个性化的小功能需要定制开发,而厂家的开发工作存在周期长、费用高、调试慢等特点,无服务器计算因其云原生和CI/CD的特性,具有开发敏捷高效、运行稳定、扩展容易和维护简单的特点,所以特别适合高校用于开发一些需求紧急、功能单一、并发量大的功能和应用。例如,用户消息发送、图形图像处理、流数据分析等。

实际案例

1.无服务器网站案例

利用无服务器计算构建的网站特别适合负载不断变化的应用场景。在没有用户访问的情况下,无服务器架构不会产生计算成本。当网站的访问量突然增大时,无服务器计算又能够通过及时自动扩展来满足需求[4]。

如图4所示,本案例的Web网站内容都是以静态页面的形式保存在OBS对象存储中,用户通过CDN进行正常访问。当需要进行网站管理和内容修改的时候,可以通过管理域名访问管理API网关,触发无服务器计算的Function逻辑进行业务处理,同时将网页内容静态化后存入OBS对象存储中。

图4 Web网站应用

2.消息发送应用案例

江西中医药大学健康填报系统是学校基于SaaS平台自行开发的系统,主要用于全校师生每日上报个人健康情况,每天有近2万人使用。根据实际使用情况,每天总会有师生忘记填报,因此需要每日中午12点通过企业微信健康填报应用对仍未填报健康情况的师生进行消息提醒。本功能的实现正是基于AWS的Lambda,具体工作流程如图5所示。

图5 具体工作流程

第一步,新建CloudWatch Events触发器并设定为定时触发。在这里,事件源的定时触发,被设置为每天的12点。

第二步,Lambda使用代码GET请求企业微信https://qyapi.weixin.qq.com/cgibin/gettoke,获取企业微信的发送应用token。

第三步,Lambda通过配置VPC连接RDS数据库并获取表中的教职工数据,同时筛选出还未进行健康填报的人员信息。此项工作基于Python语言实现,并直接在Lambda工作台中运行。

第四步,Lambda使用代码编辑正文内容并推送正文至企业微信接口完成消息推送。此项工作同样是基于Python语言实现并直接在Lambda工作台中运行的。

第五步,Lambda自带日志CloudWatch,打印输出即可查看。

成本计算

在消息发送案例中使用的是无服务器计算,无服务器计算的成本是根据实际的计算时间来计费的,一个月的运行具体情况如图6所示。

图6 运行记录数

2021年10月26日以来,一共运行了11293次计算,每次计算耗时2毫秒,根据AWS计费规则未产生实际费用(属于每月免费份额)。而如果利用虚拟机(EC2)来运行本应用,根据测算,需要人民币500元左右的费用。因此,使用无服务器计算可以极大地减少公有云的运行成本。

总结

本文介绍了无服务器计算的概念和实际使用案例。无服务器计算可以帮助高校在智慧校园建设中减少服务器管理成本、运营成本,实现计算架构根据使用量进行自动伸缩,方便快速开发和发布等,可以解决很多架构和运营问题,简化开发者和运维人员的工作[5]。然而,无服务器架构无法直接取代现有组件,在决定是否要采用无服务器架构之前,需要先分析一下自身的业务和技术需求,通盘考虑各种优点和缺点。

猜你喜欢
容器架构服务器
基于FPGA的RNN硬件加速架构
容器倒置后压力压强如何变
功能架构在电子电气架构开发中的应用和实践
服务器组功能的使用
理解Horizon 连接服务器、安全服务器的配置
难以置信的事情
构建富有活力和效率的社会治理架构
PowerTCP Server Tool
计算机网络安全服务器入侵与防御
VoLTE时代智能网架构演进研究