云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务.pptx
云计算技术
单元11无服务器架构、消息队列、消息通知服务
单元概述
无服务器架构(Serverless)也称为FaaS(FunctionasaService,函数即服务),这些Function运行在独立的容器里,基于事件驱动,并由第三方厂商托管,由于无需维护服务器因此无服务器架构进一步降低了使用云服务的成本大型的应用常常采用分层架构,例如Web层、应用层、数据库层等,层与层相互依赖之间,一层的变化容易引起其他层的变化解耦是指使用一些服务或者组件打断层与层之间的直接依赖,可以使用负载均衡器、消息队列、消息通知等服务实现解耦
学习目标知识点:无服务器架构AmazonLambda服务AmazonSQSAmazonSNS技能点:AmazonLambda函数的创建和测试AmazonSQS的使用AmazonSNS的使用
项目1使用AmazonLambda服务项目描述本实验通过AmazonLambda实现对用户上传到S3存储桶(text-uploaded-XXXXX)的文本自动生成大写文本并放到S3存储桶(text-capitalized-XXXXX)
任务1知识预备与方案设计项目1使用AmazonLambda服务1.无服务器架构无服务器(Serverless)架构是云服务提供商动态管理服务器资源分配的云计算技术。无服务器架构允许开发人员运行后端代码,而无需管理自己的服务器系统或服务器端应用程序。当某个条件或事件触发时,业务进程会被隔离运行。开发人员可以将他们自己的代码与其他最佳的服务相结合,创建应用程序,以便他们可以通过用户测试,进行快速发布和迭代。而运行业务进程需要的资源通常会由云服务商管理。通过将多样的触发器与第三方云服务、客户端逻辑和调用云服务的能力集成起来,无服务器架构可交付通常我们称为“函数即服务(FaaS)”
项目1使用AmazonLambda服务2.AmazonLambda介绍AmazonLambda是一项无服务器计算服务,可以运行用户提供的代码来响应事件并自动管理计算资源,无需用户手动部署和管理代码运行环境,从而可以让开发人员轻松构建快速响应新信息的应用程序。无服务器架构的好处不考虑基础设施可以减轻开发人员运行的应用程序的运行复杂性横向扩展是完全自动化和具有弹性的减少封装和部署复杂性使开发人员能够快速迭代随着计算单位缩小到一个功能(与云主机或容器相反),资源利用水平是前所未有的,允许用户为按照使用量准确付费AmazonLambda可在事件发生后几毫秒内运行设计好的代码,如图像上传、应用内活动、网站点击或联网设备的输出。我们还可以使用AmazonLambda来创建新的后端服务,其中的计算资源会根据自定义的请求被自动触发
项目1使用AmazonLambda服务3.方案设计用户将文本文件上传到AmazonS3中的存储桶(text-uploaded-XXXXX)中,产生对象创建事件。AmazonS3调用AmazonLambda并将事件数据作为参数进行传递。AmazonLambda执行设计好的函数代码,该函数会通过事件数据中包含的信息从上传存储桶中读取用户上传的文本,并将大写后的文本存储到目标桶(text-capitalized-XXXXX)中
任务2创建Lambda函数项目1使用AmazonLambda服务(1)创建S3存储桶,桶的名称分别为text-uploaded-XXXXX和text-capitalized-XXXXX,将XXXXX替换为随机数避免名称冲突,具体步骤参考单元6(2)在AmazonWebServices服务控制台,在“服务”一栏搜索Lambda并点击进入,点击“创建函数”按钮
项目1使用AmazonLambda服务(3)进入创建函数页面,选择“从头开始创作”。函数名称填入“s3-text-capitalize”,运行时选择“Python3.8”,执行角色选择“使用现有角色”,并选择“lambda-s3-execution-role”角色,点击“创建函数”
项目1使用AmazonLambda服务(4)在“函数概述”面板中点击“+添加触发器”按钮
项目1使用AmazonLambda服务(5)在弹出的触发器配置中的搜索框中,输入“S3”并选择“S3”。存储桶选择之前创建的“text-uploaded-XXXXX”,事件类型选择“所有对象创建事件”,勾选“递归调用”提示框中的提示,最后点击“添加”按钮完成触发器的添加
项目1使用AmazonLambda服务(6)在代码框中粘贴以下Python代码并点击