您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > T5-S5-P1-毛郸榕
移动&物联网应用后端的新型架构毛郸榕亚马逊AWS助理解决方案架构师danrongm@amazon.comBuildScalable,ServerlessMobile&IoTBackEndswithAWSLambda首选,让我们了解一下AmazonLambda关于AWSLambda-事件驱动的代码计算服务事件驱动只关心你的代码不需要考虑服务器代码只在需要运行的时候运行AWSLambda-优势事件驱动的自动扩展无服务器次秒级收费AWSLambda-能力自带你的代码计算“能力级别”自选灵活的调用路径细粒度的权限控制AWSLambda-如何工作部署审计日志&监控无状态可以与多种AmazonAWS服务集成AWSCloudFormation定制化资源IoT后台AmazonSWF任务AmazonSNS定制化消息AmazonCognito事件触发AmazonS3事件触发AmazonDynamoDB事件触发AmazonKinesis处理器APIGateway微服务…当然,这个列表还会继续增长!什么样的服务器最容易管理?由其他人操心的服务器是最好的选择!为什么那么容易?平台提供者•不用任何主机•不用任何license•不用管理能力•不用运行web服务•低时延同步调用•“触发并忘记”的事件应用开发者•低成本•永远免费节点•没有基础设施•没有代码“模版”•可以选择语言•没有库的限制AWSLambda五个应用场景无服务器模式的微服务Amazon服务的功能扩展平台的扩展可扩展的移动应用和IoT后台实时的流数据分析实现的需求•不用操心扩展能力/无需配置•内置的部署功能•默认的高可用•BYOC*:使用自己的代码•无需为闲置付费一个可扩展的移动应用后台不需要敲代码的移动应用后台移动后端的需求列表Whatitdoes用户管理内容存储推送通知分析用户行为自定义应用程序的逻辑Howitbehaves按使用量付费Minimalundifferentiatedheavylifting迭代式开发缩短市场投放的时间瞬间扩展可靠和安全基于AWS的移动后端架构AmazonCognito身份认证&同步AmazonMobileAnalytics分析用户行为AWSLambda运行业务逻辑AmazonS3AmazonDynamoDB存储内容存储数据AmazonSNSmobilepushnotifications发送推送通知MobileSDKAmazonAPIGateway互动一下!现在你就是一名游戏架构师!简单移动端应用:“Find-a-Like”•假设:创建一个自定义用户喜好的账户,当周围有“志趣相投”的伙伴时自动发送通知•功能:•创建账户,自定义用户喜好,点击提交•持续定位跟踪•当附近有“志趣相投”的伙伴时,自动发送通知•记录和分析应用程序的使用情况重要的事情分三步创建账户,上传内容,追踪使用情况追踪定位和用户喜好实时匹配,发送通知App-centric“You”Activity-centric“Whatyoudo”Userbase-centric“Them&me”123创建账户,上传用户喜好内容,追踪使用情况1第一步CognitoMobileAnalyticsSNSMobilePushKinesisRecorderDynamoDBMapperS3TransferManagerSQSClientAWS全球基础设施(区域、可用区、边缘站点)核心服务连接移动设备您的移动应用AWSMobileSDK(iOS,Android,Unity,Xamarin)计算存储网络分析数据库集成的SDKLambdaAWSMobileSDKsAWSAPI调用的安全模型移动客户端IAM权限AWS安全认证服务(SecurityTokenService)发出认证请求拿到AWS临时证书用临时的证书发出请求API的信号AWSserviceAPIs调用AWS相关的服务1234验证用户:AmazonCognito•生成一个临时的证书并设置有效时间•通过第三方验证提供者验证用户•唯一的用户横跨多个终端设备和身份提供者•允许签名的用户访问•通过IAM角色使用安全最佳实践上代码:使用Cognito进行iOS身份验证//创建和验证配置文件AWSCognitoCredentialsProvider*credentialsP=[AWSCognitoCredentialsProvidercredentialsWithRegionType:AWSRegionUSEast1accountId:@0123456789”identityPoolId:@”us-east-1:beeeeeef-beef-beef-beef-beef”unauthRoleArn:@arn:aws:iam::0123456789:role/Unauth”authRoleArn:@arn:aws:iam::0123456789:role/Auth];//为所有AWS服务的访问设置默认的验证AWSServiceConfiguration*configuration=[AWSServiceConfigurationconfigurationWithRegion:AWSRegionUSEast1credentialsProvider:credentialsP];[AWSServiceManagerdefaultServiceManager].defaultServiceConfiguration=configuration;•创建你应用的账户,并保存在Cognito数据存储的本地•Cognito会在多个终端用户设备之间同步数据•Cognito的数据集是键值对(key/value)AWSCognito*syncClient=[AWSCognitodefaultCognito];AWSCognitoDataset*subs=[syncClientopenOrCreateDataset:@”UserProfile];[datasetsetString:”OliforKey:@”name];[datasetsetString:”50kmforKey:@”interestRadius];[datasetsynchronize];创建账户:Cognito同步上传头像:使用S3传输工具(S3TransferUtility)•AmazonS3存储并直接在移动设备端共享用户信息•S3传输提供:•当你的应用没有运行的时候,可以在后台继续传输数据•可以上传二进制文件,而不需要在设备上必须作为文件先保存下来AmazonS3S3TransferUtility:iOS代码NSData*dataToUpload=//要上传的数据AWSS3TransferUtility*transferUtility=[AWSS3TransferUtilitydefaultS3TransferUtility];[[transferUtilityuploadData:dataToUploadbucket:@YourBucketNamekey:@YourObjectKeyNamecontentType:@text/plainexpression:expressioncompletionHander:completionHandler]continueWithBlock:^id(AWSTask*task){if(task.result){AWSS3TransferUtilityUploadTask*uploadTask=task.result;//处理上传任务}}•可以收集、可视化、掌握你手机端应用的使用情况•每天可以无缝扩展到数十亿的事件•你拥有这些数据的完全控制权,并可自己决定怎么处理AmazonMobileAnalyticsAWSMobileAnalytics*analytics=[AWSMobileAnalyticsmobileAnalyticsForAppId:@yourAppId”identityPoolId:@cognitoId];追踪你应用的使用情况:AmazonMobileAnalytics能达到什么样的结果?第二步App-centric“You”Activity-centric“Whatyoudo”Userbase-centric“Them&me”创建账户,上传内容,追踪使用情况追踪定位和用户喜好实时匹配,发送通知123定位追踪、用户喜好2如何收集地理位置和用户喜好?后端逻辑数据库移动端微服务架构-“定位追踪”和“用户喜好”AmazonLambdaAmazonAPIGatewayAmazonDynamoDB•/location•/interests•reportLocation()•likeInterest()•createInterest()•listInterest()微服务•location-table•interest-table简介:GeohashGeoHash是一种地址编码,将整个地图或者某个分割所得的区域进行一次划分。可以是数字类型的(e.g.6093522776912656819)将地球分成六个模块(A,B,C,D,E,F),就像立方体中的六个面。将每个模块划分为几个小的子模块,将子模块划分为更小的子模块,最终的红点锁定大致目标。集成DynamoDB!如何工作的?Geo库与AmazonDynamoDB集成•Java库可以在DynamoDB中轻松创建并查询地理空间的数据。GeoPointpoint=newGeoPoint(47.62,-122.34);//findplaces250mofSeattle’sSpaceNeedleQueryRadiusRequestrequest=newQueryRadiusRequest(point,250);QueryRadiusResultresult=geoDataManager.queryRadius(request);集成Lambda!AmazonAPIGateway•全托管、可扩展的RESTfulAPI网关服务•通过AWS在全球的53个边缘站点Poweredthroughourcontentdeliverynetworkviaour53globaledgelocations•提供DDoS保护和节流功能•自定义多个API阶段(比如开发、测试、生产)AWSLambdaAmazonAPIGatewayAmazonEC2AWSAPI本地服务器无服务器的微服务一个全新的全托管架构模型ManagedInternetMobile应用AWSLambda函数AWSAPIGateway缓存AmazonEC2上的端点其他任何公共访问的端点AmazonCloudWatchAmazonCloudFrontAPIGatewayAPIGateway其他AWS服务AWSLambda函数这种模式的关键点•AWSLambda+AmazonAPIGateway意味着不需要管理任何基础架构:AWS替你扩展•安全很重要,也很复杂:AWSIAM帮你负责•Swagger导入并生成客户端的SDK-AWS自动做大部分事情使用APIGateway还是直接使用SDK?•AmazonAPIGateway在移动端用户和addsanadditionallayerbetweenyourmobileusersandyourlogicanddatastoresinorderto:•允许后端逻辑相互交互,而不需要修改移动端应用修改代码•Abilitytothrottleindividualusersorrequests•抗DDoS攻击,包括伪造请求(7层)和SYN攻击(3层)•为所有API调用提供缓存层(cachinglayer)第三步App-centric“You”Activity-centric“Whatyoudo”Userbase-centric“Them&me”创建账户,上传内容,追踪使用情况追踪定位和用户喜好实时
本文标题:T5-S5-P1-毛郸榕
链接地址:https://www.777doc.com/doc-5586449 .html