摘要:本期大綱隨著從到千萬用戶的業(yè)務(wù)增長,通過的不同服務(wù)輕松地實(shí)現(xiàn)高性能和高可用的基礎(chǔ)架構(gòu)。方坤老師本次的主題比較偏向?qū)嵺`的基礎(chǔ)部分,假設(shè)了一個(gè)應(yīng)用從小型到中型和大型的時(shí)候,可能需要用到的服務(wù),以及相關(guān)介紹和實(shí)踐建議。
極牛技術(shù)實(shí)踐分享活動
極牛技術(shù)實(shí)踐分享系列活動是極牛聯(lián)合頂級VC、技術(shù)專家,為企業(yè)、技術(shù)人提供的一種系統(tǒng)的線上技術(shù)分享活動。
每期不同的技術(shù)主題,和行業(yè)專家深度探討,專注解決技術(shù)實(shí)踐難點(diǎn),推動技術(shù)創(chuàng)新,每兩周的周三20點(diǎn)正式開課。歡迎各個(gè)機(jī)構(gòu)、企業(yè)、行業(yè)專家、技術(shù)人報(bào)名參加。
本期大綱
隨著從0到千萬用戶的業(yè)務(wù)增長,通過aws的不同服務(wù)輕松地實(shí)現(xiàn)高性能和高可用的基礎(chǔ)架構(gòu)。
嘉賓介紹
方坤,AWS解決方案架構(gòu)師,9年服務(wù)器開發(fā)和云計(jì)算領(lǐng)域解決方案經(jīng)驗(yàn)。曾任Intel亞太研發(fā)公司軟件開發(fā)工程師和UCloud云計(jì)算高級解決方案架構(gòu)師,熟悉互聯(lián)網(wǎng)領(lǐng)域多種應(yīng)用場景,有豐富的初創(chuàng)企業(yè)IT解決方案項(xiàng)目設(shè)計(jì)經(jīng)驗(yàn)。
方坤老師本次的主題比較偏向AWS實(shí)踐的基礎(chǔ)部分,假設(shè)了一個(gè)web應(yīng)用從小型到中型和大型的時(shí)候,可能需要用到的AWS服務(wù),以及相關(guān)介紹和實(shí)踐建議。
可能有的小伙伴沒太了解,所以幾個(gè)重要的基礎(chǔ)概念先說明下:
首先是區(qū)域(Region),它是一個(gè)物理的概念,數(shù)據(jù)中心的集合,可以覆蓋一個(gè)地區(qū)或國家。
比如說北京區(qū),就是覆蓋中國地區(qū),然后區(qū)域下面有可用區(qū)的概念,一個(gè)區(qū)域包括多個(gè)可用區(qū)。而可用區(qū)是若干物理數(shù)據(jù)中心(由高速光纖連接)邏輯上組成的,北京區(qū)有兩個(gè)可用區(qū),通俗來說可以理解為同城的多數(shù)據(jù)中心。
可用edge location,邊緣節(jié)點(diǎn)可以理解為CDN分發(fā)節(jié)點(diǎn),今天主要涉及到的服務(wù)會是計(jì)算、存儲、網(wǎng)絡(luò)三個(gè)部分。
為什么可用區(qū)的概念這么重要?是因?yàn)锳WS的很多服務(wù)都是天然跨可用區(qū)的,提供高可用或失效轉(zhuǎn)移的特性,這樣企業(yè)就不用花費(fèi)額外的工作量和成本來搭建。最初的時(shí)候,測試環(huán)境或者剛上線的時(shí)候,考慮到便利性,通??梢圆捎胊ll-in-one的結(jié)構(gòu)。
首先需要在AWS環(huán)境中創(chuàng)建一個(gè)VPC,VPC就像是為你提供了一個(gè)虛擬的私有云,一張大的二層網(wǎng)絡(luò)。再通過我們的控制臺工具,在里面劃分的子網(wǎng),配置路由。然后創(chuàng)建一臺EC2,就可以SSH登錄上,部署您的服務(wù)了,甚至可以把數(shù)據(jù)庫也搭建在上面。
配置好IP,綁定到這個(gè)EC2上,你的用戶就能通過DNS解析訪問到這臺EC2上的服務(wù)了。大體架構(gòu)如下圖:
Route 53是AWS提供的DNS服務(wù),他可以基于延遲、地區(qū)等規(guī)則來進(jìn)行路由。但是目前在中國區(qū)不可用,您需要用到國內(nèi)第三方的DNS服務(wù)。這是一個(gè)最簡單的架構(gòu),即使是只有一臺EC2,也是大有文章可做,因?yàn)镋C2本身的配置非常多樣。
它有不同的機(jī)型,比如內(nèi)存優(yōu)化型,適用于構(gòu)建基于內(nèi)存的數(shù)據(jù)庫、大數(shù)據(jù)處理引擎、高性能計(jì)算等應(yīng)用。還有GPU的機(jī)型,適用于3D圖形應(yīng)用等等,包括計(jì)算優(yōu)化和存儲優(yōu)化機(jī)型。
EC2磁盤的IOPS也是可以配置的,如果有對io要求很高的話,可以選擇存儲優(yōu)化,然后加上PIOPS配置,也就是預(yù)定義它的IOPS能力。
但是這樣一個(gè)小型的架構(gòu),會存在以下問題:
很有可能訪問會突增,那么勢必會扛不住
沒有失效轉(zhuǎn)移
數(shù)據(jù)也沒有冗余
所以,可以考慮先將web和DB拆開,DB的部分既可以選擇比較合適的EC2機(jī)型自建,也可以選擇AWS托管的數(shù)據(jù)庫服務(wù)。其實(shí)關(guān)系型數(shù)據(jù)庫服務(wù)為RDS,菲關(guān)系行數(shù)據(jù)庫服務(wù)為DynamoDB。
RDS會比較常用,它可以支持oracle,SQL Server、PstgreSQL,MysQL和MariaDB。
好處是維護(hù)簡單,因?yàn)榈讓佣际茿WS在維護(hù)??梢钥v向更改配置,而且有自動備份。它還會在另一個(gè)可用區(qū)配置一個(gè)同步復(fù)制的從庫,一旦主庫失效,就能failover過去,DynamoDB的話后面再詳細(xì)介紹。
于是,將DB拆出來后,架構(gòu)圖就會演變成這樣:
當(dāng)然,這個(gè)架構(gòu)還是在單個(gè)可用區(qū)部署的,所以隨著業(yè)務(wù)的繼續(xù)擴(kuò)展,后面需要考慮到負(fù)載均衡和多可用區(qū),我們會建議再演變成下圖:
ELB支持HTTP和HTTPS,而且會對后端做健康檢查,這樣一個(gè)原型,擴(kuò)展性很好了。
可以一直橫向的擴(kuò)展,當(dāng)然,最后的瓶頸勢必會出在DB上。這樣的擴(kuò)展還是存在一個(gè)問題,就是所有的事情都要人手動來做。
AWS提供了一個(gè)工具,叫auto scaling。讓企業(yè)結(jié)合監(jiān)控規(guī)則來自動擴(kuò)展,比方說,可以定義web server這一層的最小和最大數(shù)量,根據(jù)CPU的負(fù)載來決定是否要擴(kuò)容縮容,具體配置方法比較細(xì)節(jié),就不在這贅述了。
同時(shí),還要考慮動靜分離,將靜態(tài)資源分離出來,比如圖片、css、js、視頻等等,結(jié)合源站存儲和CDN來部署,源站可以使用S3服務(wù)。S3是對象存儲,自動擴(kuò)容,只需要把你的對象放進(jìn)來,通過控制臺或者命令行工具或者SDK來讀寫。
海外的話,AWS提供cloudfront服務(wù),也就是CDN加速;國內(nèi)的話,暫時(shí)需要用第三方的CDN服務(wù)。
S3的好處是持久性高,有11個(gè)9,每個(gè)對象最高達(dá)5TB。S3有兩種,除了通用的S3服務(wù)外,還可以選擇低冗余的類型,用來存儲不是那么敏感的數(shù)據(jù),這樣可以節(jié)省成本,這是靜態(tài)的內(nèi)容緩存。而動態(tài)的內(nèi)容緩存,基本上是用到內(nèi)存型存儲或者NoSQL。
有個(gè)服務(wù)叫ElastiCache可以提供memcache和redis服務(wù),可以把DB的熱點(diǎn)數(shù)據(jù)放在這里面,提供更高的IO性能。ElastiCache也是托管型服務(wù),好處是可以方便的分片或者構(gòu)建集群和副本集,像redis的話可以支持?jǐn)?shù)據(jù)持久化,多個(gè)可用區(qū)。
緩存也可以用DynamoDB來替代,它可以提供延遲低于10ms的數(shù)據(jù)存取,總之,架構(gòu)可以演變成下圖:
簡單起見,這里只顯示了一個(gè)可用區(qū)關(guān)于這兩個(gè)服務(wù)的更多細(xì)節(jié),所以基本上,一個(gè)中型的web服務(wù),在AWS上就可以這樣架構(gòu):
再之后的優(yōu)化,就是自動化了,一方面是auto scaling這個(gè)工具,另一方面AWS也提供了一些自動化運(yùn)維的工具。
像ElasticBeanstalk,你可以把你的應(yīng)用上傳過來,只需要簡單的配置,這個(gè)服務(wù)就會幫你配置好網(wǎng)絡(luò)、服務(wù)器和數(shù)據(jù)庫;像OpsWorks,它是一個(gè)托管型的chef服務(wù);還有Cloudformation,它可以幫助你把AWS上使用的服務(wù)通過一個(gè)JSON文件來管理,這樣不論是基礎(chǔ)架構(gòu)的版本管理還是自動部署,都會更加方便,一切都代碼化。
另外,監(jiān)控方面,需要用到CloudWatch服務(wù),它不僅基本的基礎(chǔ)架構(gòu)監(jiān)控,也可以讓你自定義應(yīng)用級別的監(jiān)控。后者需要用到我們的代理agent。然后,AWS也有工具和服務(wù)可以幫助你把架構(gòu)SOA化,把服務(wù)當(dāng)做獨(dú)立的單元對待,獨(dú)立地進(jìn)行擴(kuò)展,比如郵件服務(wù),消息通知服務(wù),消息隊(duì)列服務(wù)等等。
那消息隊(duì)列服務(wù)來說,AWS提供的SQS服務(wù),可以幫助架構(gòu)解耦合,通過簡單的API來首發(fā)消息,消息存儲在無限制容量的SQS里,然后可以對隊(duì)列做認(rèn)證和權(quán)限控制,而且這個(gè)消息隊(duì)列也是基于多個(gè)可用區(qū)存儲的,所以也提供高可用。
當(dāng)然,出于性能的高可用考慮,它無法百分百保證先進(jìn)先出,所以只需要在應(yīng)用里面加入對順序?qū)Φ目刂萍纯伞?/p>
還有一個(gè)lamdba服務(wù),它是一個(gè)函數(shù)的托管服務(wù),您可以把基于事件觸發(fā)的函數(shù)托管過來,不需要關(guān)心底層的擴(kuò)展,比如說你有一個(gè)用戶在S3上傳了圖片,可以觸發(fā)Lambda的函數(shù)來處理,并將通過SQS隊(duì)列來把任務(wù)發(fā)給EC2,處理完后又觸發(fā)Lambda函數(shù)把該圖片的元數(shù)據(jù)保存到數(shù)據(jù)庫里。
在各個(gè)AWS服務(wù)之間,都通過Lambda來粘合,讓你的應(yīng)用更輕量級,也不需要考慮其擴(kuò)展性和可用性,所以當(dāng)你的應(yīng)用到達(dá)大型之后,就可以考慮如下幾個(gè)方法了:
部署多可用區(qū)
用ELB負(fù)載均衡流量
用auto scaling自動擴(kuò)展
利用AWS的服務(wù)SOA化
利用S3和CDN動靜分離
緩存DB
把應(yīng)用盡量無狀態(tài)化,這一點(diǎn)可以通過SQS、lambda等服務(wù)來支持,參考下圖:
最后的話,就要解決DB的瓶頸了。如果您在使用關(guān)系行數(shù)據(jù)庫的話,只有兩個(gè)辦法。要么按業(yè)務(wù)和功能劃分?jǐn)?shù)據(jù)庫,這一點(diǎn)AWS能協(xié)助的是幫助你方便地搭建讀副本,但是更多的需要您從業(yè)務(wù)層面來梳理和劃分;要么就是做sharding,這一點(diǎn)來說,AWS RDS也只是能提供底層的支撐,更多的是應(yīng)用層面的分片。
然而,在NosQL這一部分,AWS的DynamoDB可以提供強(qiáng)大的幫助,所以您需要考慮哪些數(shù)據(jù)是可以上NoSQL的,這一點(diǎn)的擴(kuò)展性在AWS上是非常好的支持的。
DynamoDB是一個(gè)托管式的NoSQL數(shù)據(jù)庫,可以提供很高的性能,您可以更具實(shí)際的需求來配置讀寫性能。底層支持分布式和容錯(cuò),基于SSD的存儲,平均延遲低于10ms??梢蕴峁┳罱K一致性或強(qiáng)一致性。數(shù)據(jù)的副本基于多可用區(qū)分布是部署,您只需要管理你的表和項(xiàng)目,而至于底層的節(jié)點(diǎn),對您來說是透明的。
當(dāng)然,更重要的是從業(yè)務(wù)層面來梳理,再來歸納幾個(gè)重要的點(diǎn):
要使用多可用區(qū)部署
充分利用能自動擴(kuò)展的服務(wù),比如ELB,S3,SNS,SQS等等
充分考慮NoSQL的可行性
外部和內(nèi)部的緩存
盡可能的自動化,充分利用AWS的自動化工具,比如auto scaling、cloudformation等等
確保您充分利用了cloudwatch的監(jiān)控服務(wù)和日志工具
充分利用AWS的服務(wù)來進(jìn)行服務(wù)模塊化
別在AWS上重復(fù)造輪子
Q&A
Q1:如果業(yè)務(wù)既面向國內(nèi),也面向海外,是使用aws國內(nèi)版,還是海外版?互通性會不會不同地區(qū)用戶的體驗(yàn)問題?
A1: 首先不可避免的是海內(nèi)外網(wǎng)絡(luò)的穩(wěn)定性和性能問題,基于國情建議如下考慮:
如果主要的用戶來自國內(nèi),您可以部署在國內(nèi),然后海外部分通過將靜態(tài)內(nèi)容CDN加速來降低延遲、甚至是使用國際專線,我們也有合作伙伴來支持;反之國際亦然。
還有一個(gè)辦法,就是看能否分開部署,這個(gè)完全取決于您的業(yè)務(wù)和應(yīng)用能否支持了,這個(gè)主要還是網(wǎng)絡(luò)基礎(chǔ)設(shè)施層面的問題。
Q2:從國內(nèi)現(xiàn)有的云服務(wù),遷移到aws,有什么好的方式不?
A2:其實(shí)困難主要就是在于數(shù)據(jù)庫的遷移。我們有個(gè)工具叫DMS,國內(nèi)尚不可用,將來應(yīng)該會有。所以一般的方法就是先將全庫拷貝過來,然后再增量復(fù)制。因?yàn)椴煌瑪?shù)據(jù)庫特性不同,總的來說,就是AWS會幫助大家一起想出最佳的方案。
下期預(yù)告
時(shí)間:2016年11月23日 晚8點(diǎn)
方式:線上微信群
主題:直播中視頻編碼實(shí)踐經(jīng)驗(yàn)總結(jié)
報(bào)名請關(guān)注極牛公號(ji-niu)并回復(fù)技術(shù)分享。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/61827.html
摘要:主題大綱淺述采樣與端到端何為何為端到端何為采樣的做法與弊端嘉賓介紹高馳濤,官方開發(fā)組成員,作者,云智慧高級架構(gòu)師。 極牛技術(shù)實(shí)踐分享活動 極牛技術(shù)實(shí)踐分享系列活動是極牛聯(lián)合頂級VC、技術(shù)專家,為企業(yè)、技術(shù)人提供的一種系統(tǒng)的線上技術(shù)分享活動。 每期不同的技術(shù)主題,和行業(yè)專家深度探討,專注解決技術(shù)實(shí)踐難點(diǎn),推動技術(shù)創(chuàng)新,每兩周的周三20點(diǎn)正式開課。歡迎各個(gè)機(jī)構(gòu)、企業(yè)、行業(yè)專家、技術(shù)人...
摘要:以推出輕舟微服務(wù)平臺的網(wǎng)易云為代表,云計(jì)算公司正在微服務(wù)領(lǐng)域發(fā)力,促進(jìn)企業(yè)數(shù)字化創(chuàng)新。以網(wǎng)易云輕舟微服務(wù)平臺為例,該平臺已經(jīng)在物流工業(yè)和金融等領(lǐng)域得到了深度應(yīng)用。 所謂數(shù)字化轉(zhuǎn)型升級,就是以數(shù)字技術(shù)優(yōu)化傳統(tǒng)資源,企業(yè)需要謹(jǐn)慎地選擇合適的技術(shù)逐步完成自己的數(shù)字化戰(zhàn)略。以推出輕舟微服務(wù)平臺的網(wǎng)易云為代表,云計(jì)算公司正在微服務(wù)領(lǐng)域發(fā)力,促進(jìn)企業(yè)數(shù)字化創(chuàng)新。那么,微服務(wù)對數(shù)字化轉(zhuǎn)型意味著什么?...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報(bào)率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
摘要:亞馬遜人工智能語音助手技能超過萬個(gè),全球各主要硬件廠商紛紛搭載或兼容,使得其亞馬遜助手無處不在。物聯(lián)網(wǎng)設(shè)備透過云端實(shí)現(xiàn)跨行業(yè)和跨設(shè)備互聯(lián)互通,所收集數(shù)據(jù)除了在邊緣側(cè)處理,還需要上傳至云端,云端作為數(shù)據(jù)集散地,各種數(shù)據(jù)經(jīng)過云端AI處理后,對這些數(shù)據(jù)利用將會帶來新的商業(yè)模式。在物聯(lián)網(wǎng)資深專家楊劍勇看來,云計(jì)算是全球物聯(lián)網(wǎng)重要基礎(chǔ)設(shè)施,作為物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展基石,聚集了亞馬遜、微軟、谷歌和BAT等重量...
摘要:包括服務(wù)的自動化部署,以及鏈路監(jiān)控等并未細(xì)說提及。結(jié)語誠然,整個(gè)服務(wù)架構(gòu)可以輕松應(yīng)對千萬級并發(fā)。期望,整個(gè)服務(wù)架構(gòu)能伴隨公司繼續(xù)成長壯大。 背景介紹 回顧 ShareSDK,顧名思義,分享的SDK組件,公司基于互聯(lián)網(wǎng),早期主要以ShareSDK起家。今日思來,很幸運(yùn),能陪著ShareSDK一起成長。 showImg(https://segmentfault.com/img/bV0Wo5...
閱讀 1499·2021-09-03 10:29
閱讀 3522·2019-08-29 16:24
閱讀 2192·2019-08-29 11:03
閱讀 1497·2019-08-26 13:52
閱讀 3007·2019-08-26 11:36
閱讀 2860·2019-08-23 17:19
閱讀 614·2019-08-23 17:14
閱讀 868·2019-08-23 13:59