搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用_第1頁(yè)
搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用_第2頁(yè)
搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用_第3頁(yè)
搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用_第4頁(yè)
搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、搭建無(wú)服務(wù)器架構(gòu)的移動(dòng)應(yīng)用技術(shù)創(chuàng)新 變革未來(lái)議程什么是無(wú)服務(wù)器 快速搭建移動(dòng)后臺(tái)利用 GraphQL 優(yōu)化架構(gòu) 移動(dòng)應(yīng)用開(kāi)發(fā)工具什么是無(wú)服務(wù)器應(yīng)用怎么處理硬件故障?怎么控制服務(wù)器的訪問(wèn)權(quán)限?When should I decide toscale out my servers?什么時(shí)候應(yīng)該擴(kuò)容服務(wù)器?預(yù)算有限我要選擇哪種服務(wù)器?服務(wù)器還剩下多大的容量 還能處理多大的流量?“服務(wù)器”有沒(méi)更好的架構(gòu)?無(wú)服務(wù)器架構(gòu)無(wú)需維護(hù) 服務(wù)器靈活自動(dòng)擴(kuò)展高可用沒(méi)有閑置的資源快速搭建無(wú)服務(wù)器應(yīng)用無(wú)服務(wù)器移動(dòng)后臺(tái)架構(gòu) 動(dòng)靜分離InternetMobile appsAWSAmazon API GatewayAWS L

2、ambdaOther AWS services動(dòng)態(tài)請(qǐng)求靜態(tài)資源Amazon S3無(wú)需維護(hù)基礎(chǔ)架構(gòu),只需要上傳代碼即可搭建無(wú)服務(wù)器Web應(yīng)用上傳圖片 想自動(dòng)壓縮?無(wú)服務(wù)器移動(dòng)后臺(tái)架構(gòu) 自動(dòng)觸發(fā)InternetMobile appsAWS LambdaAWSAmazon API GatewayOther AWS servicesAmazon S3動(dòng)態(tài)請(qǐng)求靜態(tài)資源上傳圖片到 Amazon S3,自動(dòng)觸發(fā) AWS Lambda 完成圖片壓縮AWS Lambda消息隊(duì)列的消費(fèi)?處理消息隊(duì)列的方式 傳統(tǒng)模式Amazon SQSDelete Message讀取Message應(yīng)用集群任務(wù)觸發(fā)監(jiān)控堆積的消息數(shù)量

3、 增減應(yīng)用服務(wù)器數(shù)量無(wú)服務(wù)器移動(dòng)后臺(tái)架構(gòu) 消息隊(duì)列消費(fèi)AWSLambda自動(dòng)觸發(fā) 并自動(dòng)完成: 讀取 MessageLambda函數(shù)只需 負(fù)責(zé)處理所收到 的 MessageLambda函數(shù) 正常結(jié)束自動(dòng)刪除SQS MessageAmazon SQSAWS Lambda 并發(fā)?AWS Lambda 并發(fā)AWS Lambda 根據(jù)增加的流量動(dòng)態(tài)擴(kuò)展容量突增流量,Lambda 將立即根據(jù)預(yù)定量增加您的并發(fā)執(zhí)行函數(shù)。500增加并發(fā)函數(shù)直到達(dá)到賬戶 的Soft LimitTHINK 并發(fā), NOT TPSAWS Lambda 并發(fā)控制設(shè)置針對(duì)單個(gè) AWS Lambda 函數(shù)預(yù)留封頂停用AWS Lambd

4、a 原理AWS Lambda 的啟動(dòng)引導(dǎo)runtime啟動(dòng)你的codeWarm start下載你的code啟動(dòng)新的containerAWS 優(yōu)化的部分你 優(yōu)化的部分Cold start利用 AWS Lambda 容器重用機(jī)制var AWS = require(aws-sdk); var uuid = require(node-uuid); var db;exports.myHandler = function(event, context, callback) if (!db | db.isConnected() db = setupConnection();/ Rest of logic容器

5、生成的時(shí)候執(zhí)行在容器重用,即Lambda Function第 二次調(diào)用時(shí)不再執(zhí)行Lambda Function 函數(shù)被調(diào) 用時(shí)執(zhí)行P99情況不會(huì)遇到冷啟動(dòng)如果經(jīng)測(cè)試,冷啟動(dòng)時(shí)間較長(zhǎng),影響用戶體驗(yàn),可以進(jìn)行定時(shí)預(yù)熱,特別是Java 和 C# 的應(yīng)用可以利用CloudWatch 定時(shí)觸發(fā)預(yù)熱的Lambda,利用諸如Node.js 的非阻塞機(jī)制進(jìn)行并發(fā)預(yù)熱容器優(yōu)化架構(gòu)設(shè)定一個(gè)簡(jiǎn)單場(chǎng)景一個(gè)活動(dòng) Event 發(fā)布和評(píng)論 Comment 的應(yīng)用可發(fā)布新活動(dòng)通知用戶可以進(jìn)行評(píng)論用戶可關(guān)注某個(gè)活動(dòng),實(shí)時(shí)收到更新的評(píng)論當(dāng)前基于 REST API 的應(yīng)用設(shè)計(jì)DataREST EndpointsPOST /even

6、t POST /comment GET /eventList GET /eventDetail GET /commentList GET /commentPOST /eventDelete碎片化的建鏈標(biāo)準(zhǔn) HTTP CallsAPI 關(guān)聯(lián)關(guān)系返回結(jié)果冗余信息多數(shù)據(jù)源支持排序和分頁(yè)訂閱實(shí)時(shí)通知 /commentListREST API 應(yīng)用架構(gòu)示例ElasticsearchDynamoDBPC 瀏覽器Web servers/event /eventList /commentAWS Lambda第三方服務(wù)stream移動(dòng)端PubSub serversWebSocket servers訂閱 /com

7、mentListREST API 應(yīng)用架構(gòu)示例ElasticsearchDynamoDBPC 瀏覽器AmazonAPI Gateway/event /eventList /commentAWS Lambda第三方服務(wù)stream移動(dòng)端PubSub serversWebSocket servers訂閱 /commentListREST API 應(yīng)用架構(gòu)示例ElasticsearchDynamoDBPC 瀏覽器移動(dòng)端AmazonAPI GatewayAWS IoT訂閱/event /eventList /commentAWS Lambda第三方服務(wù)streamREST API 應(yīng)用架構(gòu)示例Elas

8、ticsearchDynamoDBPC 瀏覽器移動(dòng)端訂閱/event /eventList /commentAWS Lambda第三方服務(wù) /commentListstream?一個(gè)接口?只讀取想要的數(shù)據(jù)?GraphQL為 API 而生的查詢語(yǔ)言非常適合客戶端 App 操作數(shù)據(jù)誰(shuí)在使用 GraphQL 語(yǔ)言Facebook 的移動(dòng)應(yīng)用從 2012 年就開(kāi)始使用 GraphQL。GraphQL 規(guī)范于 2015 年開(kāi)源,被各種體量的團(tuán)隊(duì)所使用。GraphQL-數(shù)據(jù)操作語(yǔ)言Query 讀數(shù)據(jù)Mutation 寫(xiě)數(shù)據(jù)然后讀數(shù)據(jù)Subscription 訂閱實(shí)時(shí)推送的數(shù)據(jù)GraphQL-工作方式id:

9、 1,name: Get Milk,priority: 1,id: 2,name: Go to gym,priority: 5,type Query getTodos: Todoquery getTodos id nameprioritytype Todo id: ID! name: Stringdescription: String priority: Int duedate: String定義數(shù)據(jù)schema查詢query獲得數(shù)據(jù)data一個(gè) GraphQL 請(qǐng)求就能準(zhǔn)確獲得你想要的數(shù)據(jù),不多不少。一個(gè)請(qǐng)求獲取多個(gè)資源,輕松應(yīng)對(duì)比較慢的移動(dòng)網(wǎng)絡(luò)API 演進(jìn)無(wú)需劃分版本使用 GraphQL

10、的架構(gòu)示例Alexa skillElasticsearch/graphql托管的 GraphQL AWS AppSyncPC 瀏覽器移動(dòng)端訂閱AWS Lambda其他服務(wù)第三方服務(wù) HTTP endpointstreamDynamoDBAWS AppSync 構(gòu)建強(qiáng)大的數(shù)據(jù)驅(qū)動(dòng)的APPS實(shí)時(shí), 協(xié)作Apps離線編程模型 同步機(jī)制只收取你需要的 數(shù)據(jù)訪問(wèn)多個(gè)數(shù)據(jù)源精細(xì)的權(quán)限控制AWS AppSync 演示AWS AppSyncx。APlsEvent Demo App SchemaQuer iesData Sour cesSett ingsCreate ResourcesUndo Editssav

11、e SchemaAWS AppSyncEvent Demo AppSchemaSchemaD邸, ign your sch ema using GrapliQL SDL, at ta cli r esolvers, an d quick ly d eploy AWS r esources., InfoSchema Export schema ,.1 . type Comment 23456Resolve1rs1 Filter types.Comment7 8 9 01# The i.d of the cOOlllents parent event. event i d: ID !# A uni

12、.que i.denti.fi.er for the cornnent.co 忭 譏 1entr d: Stri.ng!# The cOOlllents content . cont ent : S 七 r i. ngl# The clllllllent ti.mestamp. This field is i.ndexed to enabl cr eat edAt : St r i.ng!1112 type CommentConnection 13i.t erns: Comment Fieldeventld: ID!commentld: String!Resolver三三AWS AppSync

13、Event Demo AppQueries。QueriesWrite, valida te, an d test GraphQL que,rie.s. Infoi.t ems i.d name141516171819 20 I. 21-.- query ql 如 t a : getEvent : name : hell oevent , when : f r t day , wher e : offtce22-.-getEv 侖 nt ( t d : 0a79f950-e807-45f9-a6d0-8namewhenwhe尸e2627 Document ation Expl o:rerXQ,

14、Search Sch ema.A GraphQL schema provides a root type for each kind of operation.ROOT TYPESquery: Querymutation: Mutationsubscription: SubscrlptklnQUERY VAR I ABLESLOGSAWS AppSync 企業(yè)級(jí)安全性和精細(xì)訪問(wèn)控制AWS AppSync 認(rèn)證方式API KeyAWS IAM (Identity and Access Management) 使用角色來(lái)控制Amazon Cognito 用戶池,集成了多種社交服務(wù)提供商 (Face

15、book、Google+ 和 Login with Amazon),并支持使用 SAML 聯(lián)合身份。OpenID ConnectAWS AppSync 企業(yè)級(jí)安全性和精細(xì)訪問(wèn)控制 (續(xù))讀數(shù)據(jù)鑒權(quán)的示例數(shù)據(jù)Owner可讀多用戶可讀用戶組可讀過(guò)濾結(jié)果子集只允許特定訪問(wèn)基于GraphQL Resolver 實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)控制(例子:Owner可讀)參考文檔: /appsync/latest/devguide/security-authorization-use-cases.htmlAWS AppSync 可以構(gòu)建的 APP 示例協(xié)作類APP儀表盤排行榜白板-社交、聊天和 約會(huì)APP復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和

16、類型的APP基于地理位置的APPAWS AppSync 示例代碼與文檔資源 /appsync/resources/開(kāi)發(fā)工具AWS Amplify 開(kāi)發(fā)包針對(duì)前端和移動(dòng)端開(kāi)發(fā)的 JavaScript LibraryJavaScript (frameworks)React + React Native功能AuthenticationAnalytics,APP用戶行為分析API, 支持 AWS Signature Version 4GraphQL ClientStorage,管理 Amazon S3 存儲(chǔ)數(shù)據(jù)Push Notifications,Amazon PinpointInteractions

17、,Amazon LEXPubSubInternationalization,語(yǔ)言國(guó)際化方案Cache, LRU(Least Recently Used) CacheAWS Amplify 開(kāi)發(fā)包與 Apollo GraphQL Client 集成離線緩存 (/apollographql)https:/aws-amplify.github.io/AWS Amplify 前端訪問(wèn) GraphQL 示例代碼 from aws-amplify;import Amplify, API, graphqlOperation import aws_config from ./aws-exports; Amplify.configure(aws_config);const ListEvents = query ListEvents listEvents items id name;con

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論