(完整版)直播回顾:2021 MAXP 无服务器赛题讲解
Gartner 最近的一份报告表明:到 2021 年,全球将有 20% 的企业部署无服务器架构。无服务器架构不再只是一个热门话题,而是逐渐地成为云计算领域的重要技术方向,并且已经在软件世界掀起一场革命。诸多大型科技企业(如亚马逊、微软和谷歌)已经在无服务器架构领域重资投入,追赶革命的浪潮。与其名字相反,无服务器架构实际上并没有把服务器去掉。那么,究竟什么是无服务器架构?
9 月 24 日,biendata 邀请亚马逊云科技解决方案架构师吕宁,针对 2021 MAXP 无服务器赛题开展了一场线上直播讲解。在本次直播中吕宁老师分别介绍了亚马逊云科技的 Serverless 服务:Lambda 和 S3;以及内容分发网络服务 Amazon CloudFront;最后详细讲解了本次大赛无服务器赛题的解题技巧。本文为完整直播内容的转写图文回顾,希望能够帮助各参赛团队开阔思路,取得更好的成绩。
直播视频回顾:https://www.bilibili.com/video/BV1oR4y1H78r?spm_id_from=333.999.0.0
关于 2021 MAXP
2021 MAXP 高性能云计算创新大赛(2021 MAXP)由中国计算机学会高性能计算专业委员会和中国信息通信研究院指导,ACM 中国高性能计算专家委员会(ACMSIGHPC)和云计算开源产业联盟联合主办,亚马逊云科技和腾讯云支持,阿里云、华为云、UCloud、天翼云等厂商参与。大赛以高性能云计算为主题,旨在进一步推动国内高性能计算的发展,并为参赛者提供了高达 40 万元的奖金池,还会提供实习机会和权威荣誉证书。
直播回顾
针对无服务器的赛题分为三部分进行讲解。首先是 AWS Serverless 服务,分为 Lambda 和 S3 两个模块。其次是 CloudFront。最后讲解 Serverless 无服务器赛题。
无服务器具有 4 个特点。第一个特点是不需要管理服务器;第二个特点是能够持续拓展,它能够根据流量的大小进行自动拓展;第三个特点是为价值付费,也就是即用即付费。如果无服务器的应用处于空闲状态,那么这个应用不收费;第四个特点是具有高可用和容错的特点。
Lambda 是无服务器的计算服务,让用户可以无需预置服务器即可运行代码,Lambda 可以被事件源触发。
事件源主要包含三种类型。第一种是服务端点请求。例如 API Gateway 的 HTTP 请求。第二种是数据状态改变,例如数据库中有新的数据写入。第三种是资源状态改变,例如像 EC 机器变成了运行状态。Lambda 目前支持 Node.js , Python ,Java 等常用语言。根据 Lambda 的业务逻辑,它可以和任意的服务交互。
以 Lambda 的事件源举例,事件源里有与数据存储相关的,例如 S3 , DynamoDB 等。也可以被 ENDPOINTS 触发,例如 API Gateway。还能被开发和管理工具触发,CloudFormation 状态和资源变化,也可以触发 Lambda。通过事件和消息服务来触发。例如 SNS , SQS 等。
在 Lambda 的 function 中可以添加触发器,目前用 API Gateway 作为触发机。也可以添加其他触发器,目前支持多种 AWS Serverless 作为触发器。可以选择合作伙伴的事件源,在 Lambda 函数中写代码实现相应的功能。
当需要测试时用 JSON 形式写测试事件,点击测试按钮即可进行测试。赛题会提供一些模板,比如与 CloudFront 相关的模板,可以在此基础上进行更改。在监控标签页中可以看到 Lambda 的日志对后期的调试帮助很大。
点击日志链接跳转到相应的 CloudWatch。查看具体的日志信息,在配置标签页进行权限配置,可以设置环境变量以及对内存和超时进行配置等。
通过 API Gateway 触发 Lambda 的方式编写 Rest API,在进到 API Gatewaye 之后配置集成请求的类型,选择 LAMBDA_PROXY 后可以指定相应的 Lambda。
最后对 API Gateway 和 Lambda 作为整体进行测试,输入相应的查询的字符串后测试的响应标头及日志都会在下方显示出来。
测试通过之后,选择相应的部署阶段后,公共的 API 接口即可被调用。
在浏览器中输入刚才的 API 即可对其进行测试。
默认的 API Gateway 部署完之后都是公共的,也就是说任何人拿到 API 接口之后都可以进行访问。如果需要限制访问请求,可以点击授权方的按钮创建新的授权方。
S3 全称是 Amazon Simple Storage Service,是对象存储的服务,提供了行业领先的可拓展性、数据可用性、安全性和性能。S3 目前有 99.999999999%(11 个 9)的持久性,稳定性非常高。
接下来对 Amazon CloudFront 进行介绍。
Amazon CloudFront 是亚马逊的内容分发网络服务,也就是 CDN 服务。通过 CloudFront 用户可以安全的以低延时和高传输速度向全球的客户分发静态和动态内容。
目前 CloudFront 包含了超过 215 个边缘缓存节点,13 个区域缓存节点,包含 100GbE 的私有冗余网络,覆盖了 47 个国家和 90 个城市。
CloudFront 可以用于如下的场景:
首先是视频流,包含视频直播及视频点播。其次是 API 的动态加速,通过 aws 的主干网,可以让 API 能够更快地执行,Lambda 也可以被 CloudFront 触发。Lambda 可以运行在 CloudFront 的区域缓存节点上,最终赋予了 CloudFront 边缘计算的功能。
CloudFront 还可以用于大文件下载,例如游戏的升级包下载,最后 CloudFront 可以用于静态内容分发,例如 html、图片、GS 文件等,因为所有的分析都是基于日志的。
CloudFront 默认关闭所有的日志。如果需要打开实时日志,可以进到日志的页面,选择实时配置创建一个新的配置,如果日志请求不是特别大,可以按 100% 去进行采样,选择需要输出到日志中的字段进行分配,最后点击创建配置就可以了。
实时日志通过给流式的方式传输,将日志做自定义处理。例如将日志存储在 S3 桶上,或将日志进行分析,找到特定的字段进行分区等。
启用 CloudFront 日志之后,在配置的 S3 桶里面即可看到相应的日志文件。
下面针对 Serverless 赛题进行讲解。
根据无服务器赛题的任务描述可以知道,本次赛题的要求是做网络监控的 Dashboard,提供的表格里是 Dashboard 的各项需求描述及优先级。
其中 P0 是高优先级,P1 是中优先级,P2 是低优先级,按照优先级高低划分需求重要性。第一个需求是开发出获取各个指标的 API 接口,接口的格式是 JSON,有 6 个指标需要完成。
第一个指标是 CloudFront,也就是亚马逊的 cdn 服务,它在某一个时间段内的缓存命中率是多少。
第二个指标是 HTTP 请求的返回状态码,例如 200、400、503 等。
第三个指标是响应时长,需要对响应时长进行统计,例如在指定时间段内 P90 的时长是多少,P95 的时长是多少,以及最大延迟是多少。
第四个指标是流量带宽。
第五个指标是访问次数。
第六个指标是客户端 IP 请求数量的排名。可以按客户端 IP 请求数量由高到低进行排名。
这六个指标都可以通过分析 CloudFront 日志获得。
CloudFront 的日志包含两类:
第一类是访问日志,也就是 access log。访问日志的时效最多不超过 24 小时,一般情况下访问日志只需要 10 分钟左右就可以生成,极端情况下访问日志时效最多不会超过 24 小时。
第二种日志是实时日志。实时日志能把 CloudFront 的日志实时保存在 S3 桶中,需要分析访问日志还是实时日志由参赛者来决定。
第二个需求主要对时效进行限制。Dashboard 的时效不能超过 24 小时,也就是说 Cloud Front 的访问日志和实时日志都可以满足这个需求。
第三个需求是需要一个可视化的 Dashboard。可以使用目前通用的服务,例如 AWS 服务,open search Dashboard 等 。
第四个需求是支持一键部署。一键部署指用户可以通过执行命令,或是点击按钮能将整个的 Dashboard 及 API 用到的服务自动部署到指定的环境上。
AWS 用于部署的服务主要是 CDK。CDK 可以让用户通过写代码的方式去写部署脚本。
第五个需求是实现登录功能,游客不能查看 Dashboard。
第六个需求是用户可以点击忘记密码重置密码。
第五个、第六个都是关于健全的,可以使用开源的健全服务。
赛题提供了网站的部署模板,可以点击【前往部署入口】按钮,选择从北京区域或宁夏区域启动方案,输入管理员姓名邮箱,勾选复选框创建对战即可。
对战执行完成后压测网站会自动创建出来,这个网站用于获取监控数据。网站中会用到 CloudFront ,将 CloudFront 的日志保存在 S3 桶中,通过分析 CloudFront 的日志获得监控指标。达到堆栈执行完成后,进到输出的标签页就可以看到网站的 URL。
评论