云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务_第1页
云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务_第2页
云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务_第3页
云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务_第4页
云架构设计实战 课件 单元 11 无服务器架构、消息队列、消息通知服务_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

云计算技术

单元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代码并点击“Depoly”按钮进行部署importboto3importuuidimportosfromurllib.parseimportunquote_pluss3_client=boto3.client('s3')defsave_capitalized_text(source_path,dest_path):withopen(source_path)assource_file,open(dest_path,"w+")asdest_file:forlineinsource_file:dest_file.write(line.upper())deflambda_handler(event,context):forrecordinevent['Records']:key=unquote_plus(record['s3']['object']['key'])tmp_key=key.replace('/','')fname_source=f'/tmp/{uuid.uuid4()}{key}'s3_client.download_file("text-uploaded-XXXXX",key,fname_source)fname_dest=f'/tmp/capitalized-{tmp_key}'save_capitalized_text(fname_source,fname_dest)s3_client.upload_file(fname_dest,f'text-capitalized-XXXXX',key)os.remove(fname_source)os.remove(fname_dest)return任务3测试Lambda函数项目1使用AmazonLambda服务(1)打开测试一栏,在模版中选择“s3-put”,名称填写“fileUpload”项目1使用AmazonLambda服务(2)将测试JSON中的arn改为S3存储桶的arn,name改为“text-uploaded-XXXXX”,key改为“test.txt”,完成后点击保存更改项目1使用AmazonLambda服务(3)新建一个文本文件,命名为“test.txt”,文件内容为“testawslambda”,并上传到S3存储桶text-uploaded-XXXXX(4)回到代码页面,点击“Test”进行测试。可以看到测试成功项目1使用AmazonLambda服务(5)打开S3存储桶text-capitalized-XXXXX,可以看到lambda已经将文本大写后存储到了test.txt中项目1使用AmazonLambda服务(6)在以上测试步骤中,我们使用测试功能手动触发事件,验证了Lambda函数可以正常运行。现在模拟真实环境中用户上传文件触发事件,进而触发Lambda函数执行。打开text-uploaded-XXXXX存储桶上传页面,上传一个包含英文小写字符串“helloworld!”的文件hello.txt项目1使用AmazonLambda服务(7)和步骤(5)

类似,查看text-capitalized-XXXXX存储桶,可以看到大写转换后的文本文件已经生成项目1使用AmazonLambda服务(8)在Lambda函数的监控页面,可以看到Lambda函数执行的时间、时长、错误率等信息项目2使用AmazonSQS和AmazonSNS服务项目描述本实验通过创建和测试AmazonSQS标准队列和AmazonSQS主题并设置订阅,对消息收发和订阅收取进行了解和测试项目2使用AmazonSQS和AmazonSNS服务任务1知识预备与方案设计1.解耦基础设施云架构中,各种基础设施常常相互依赖,如图,Web服务器需要依赖应用程序服务器完成它的功能图左侧,Web服务器和应用程序服务器为紧耦合关系,当应用程序服务器增加、减少,则需要在Web服务器进行相应的更改,灵活性和拓展性收到很大限制。图右侧,Web服务器和应用程序服务器间增加了负载均衡器组件,Web服务器通过负载均衡器访问应用程序服务器,即使应用程序服务器有增减,负载均衡器会自动把流量转发到正常服务器上,不需要对Web服务器进行更改项目2使用AmazonSQS和AmazonSNS服务2.简单消息服务(SQS)介绍AmazonSQS(SimpleQueueService)是一种完全托管的消息队列服务,可以帮助我们分离和扩展微服务、分布式系统和无服务器应用程序SQS消除了与管理和运营消息型中间件相关的复杂性和开销,并使开发人员能够专注于重要工作借助SQS可以在各组件之间发送、存储和接收任何规模的消息,而不会丢失消息,并且无需其他服务即可保持高可用使用AmazonWebServices控制台、命令行界面或SDK和三个简单的命令,在几分钟内即可开始使用SQS。SQS提供两种消息队列类型。标准队列提供最高吞吐量、最大努力排序和至少一次传送。FIFO队列则确保按照消息的发送顺序对消息进行严格一次处理项目2使用AmazonSQS和AmazonSNS服务3.简单消息服务(SNS)介绍AmazonSNS(SimpleNotificationService)是一项用于应用与应用之间(A2A)以及应用与人之间(A2P)通信的完全托管型消息收发服务A2A发布/订阅功能为分布式系统、微服务和事件驱动型无服务器应用程序之间的高吞吐量、基于推送的多对多消息传递提供主题借助AmazonSNS主题,发布系统可以向大量订阅系统(包括AmazonSQS队列、AmazonLambda函数和HTTP/S终端节点)扇出消息,从而实现并行处理,以及将消息发送到AmazonKinesisDataFirehose。使用A2P功能,可以通过短信、移动推送和电子邮件将消息大规模发送给用户项目2使用AmazonSQS和AmazonSNS服务4.方案设计首先创建AmazonSQS标准队列,并通过控制台提供的工具测试消息收发功能然后创建AmazonSNS主题,并使用创建好的SQS进行订阅,通过控制台提供的工具测试消息发布和接收功能项目2使用AmazonSQS和AmazonSNS服务任务2创建队列(1)在AmazonWebServices控制台中找到SQS服务,点击“创建队列”按钮,对待创建的队列进行配置。类型选择“标准”;队列名称填“lab-queue”,其他配置保持默认即可。单击“创建队列”项目2使用AmazonSQS和AmazonSNS服务(2)创建完成后会跳转至队列详情,可以看到SQS队列已经创建成功项目2使用AmazonSQS和AmazonSNS服务(3)成功创建队列后,可以直接在页面上测试队列。单击“发送和接收消息”按钮,会跳转到发送和接收消息页面。在消息正文填入“testmessage”并点击“发送消息”按钮,一条消息即发送到了队列lab-queue中项目2使用AmazonSQS和AmazonSNS服务(4)此时队列中有一条消息,现在可以接收这一条消息。在接收消息一栏,点击“轮询消息”按钮,成功接收消息后可以看到接收消息界面出现了一条消息。点击消息ID,会弹出消息内容,和上一步发送消息填写的内容一致项目2使用AmazonSQS和AmazonSNS服务任务3创建SNS主题(1)在AmazonWebServices控制台找到Ama

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论