Gartner 最近的一份报告表明:到 2021 年,寰球将有 20% 的企业部署无服务器架构。无服务器架构不再只是一个热门话题,而是逐步地成为云计算畛域的重要技术方向,并且曾经在软件世界掀起一场反动。诸多大型科技企业(如亚马逊、微软和谷歌)曾经在无服务器架构畛域重资投入,追赶反动的浪潮。与其名字相同,无服务器架构实际上并没有把服务器去掉。那么,到底什么是无服务器架构?
9 月 24 日,biendata 邀请亚马逊云科技解决方案架构师吕宁,针对 2021 MAXP 无服务器赛题发展了一场线上直播解说。在本次直播中吕宁老师别离介绍了亚马逊云科技的 Serverless 服务:Lambda 和 S3;以及内容散发网络服务 Amazon CloudFront;最初具体解说了本次大赛无服务器赛题的解题技巧。本文为残缺直播内容的转写图文回顾,心愿可能帮忙各参赛团队宽阔思路,获得更好的问题。
直播视频回顾:https://www.bilibili.com/vide…
对于 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。