日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

aws s3仅允许cloudfront访问_初创公司如何用AWS搭建高扩展性架构

發(fā)布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aws s3仅允许cloudfront访问_初创公司如何用AWS搭建高扩展性架构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????

亞信云天的理解

? 初創(chuàng)公司需要快、多、好、省的技術(shù)架構(gòu)

o 快:針對業(yè)務(wù)需要可以快速獲得資源與服務(wù)

o 多:擁有豐富的云服務(wù)可供選擇,能不自己做就不自己做

o 好:強(qiáng)調(diào)擴(kuò)展性和高可用,既不要在一開始被"錢"束縛住,又需要良好的用戶體驗(yàn)(能用是最基本的用戶需求)

o 省:可以彈性伸縮,并按需付費(fèi)是最好的節(jié)省

??無論是初創(chuàng)公司還是傳統(tǒng)企業(yè),很多架構(gòu)思路是相通的:OS、前端、后端、數(shù)據(jù)庫、框架等,根據(jù)自身需要選擇。之后要做的就是在云中找到對應(yīng)的服務(wù)功能。

? 云應(yīng)用架構(gòu)的7大設(shè)計(jì)原則

o 設(shè)計(jì)時考慮任何系統(tǒng)都會失效

o 松耦合和無狀態(tài)設(shè)計(jì)(只有無狀態(tài)的應(yīng)用才能更好的快速伸縮)

o 設(shè)計(jì)可擴(kuò)展性和自動縮放

o 安全貫穿設(shè)計(jì)始終,體現(xiàn)在每層中

o 不要過多擔(dān)心約束和失敗(比如每次處理的能力還不夠多,要做到的是清晰的了解當(dāng)前的設(shè)計(jì)思路,因?yàn)樵剖菬o限擴(kuò)展的,所以干好一件事情后云中可以通過復(fù)制而擴(kuò)展能力)

o 多考慮平行分布式處理

o 充分使用各種不同的服務(wù)

? 初創(chuàng)公司可以按照如下方法漸進(jìn)式使用云服務(wù)

o 按業(yè)務(wù)生命周期方法:從測試開始熟悉操作,再到后續(xù)生產(chǎn)部署,逐步習(xí)慣云服務(wù)

o 按應(yīng)用規(guī)模變化方法:從一臺EC2實(shí)例開始,再根據(jù)業(yè)務(wù)發(fā)展引入靜態(tài)數(shù)據(jù)分離,關(guān)系數(shù)據(jù)庫擴(kuò)展,緩存等需求,逐步了解更多云服務(wù)

o 按業(yè)務(wù)需要方法:從基礎(chǔ)的計(jì)算/存儲/網(wǎng)絡(luò)等IaaS服務(wù)開始,在逐步根據(jù)業(yè)務(wù)將消息隊(duì)列、全文搜索、郵件發(fā)送等直接使用PaaS服務(wù),逐步將精力放入業(yè)務(wù)創(chuàng)新

初創(chuàng)公司的業(yè)務(wù)和技術(shù)要求

? 快速驗(yàn)證產(chǎn)品服務(wù)

? 為機(jī)會窗口而爭分奪秒(互聯(lián)網(wǎng)1年等于傳統(tǒng)7年)

? 小的技術(shù)團(tuán)隊(duì)沒有歷史包袱

? 關(guān)注于提供方案解決問題

? 避免工程大而全和返工

? 規(guī)避風(fēng)險(xiǎn)準(zhǔn)備迎接高速成長

初創(chuàng)公司的技術(shù)選型

一、常見技術(shù)堆棧

1. 操作系統(tǒng):linux:centos,redhat,suse,ubuntu

2. 移動端:IOS、Android;HTML5

3. 網(wǎng)站前端:PHP/ASP/JSP、HTML/CSS

4. 前端框架:Flex,jQuery,Sencha

5. 開發(fā)工具:Eclipse,SVN,SDK/IDE

6. 技術(shù)框架:Struts,Springs,Hibernate;Velocity;Ruby on Rails

7. 開發(fā)語言:Java,PHP,Python,Ruby,Net,Node.js,GO

8. 負(fù)載均衡:軟件:Nginx,Squid;硬件:F5,Citrix Netscaler

9. 數(shù)據(jù)庫:RDB:MySQL;NoSQL:MangoDB

10. 緩存:Memcached ,Redis

11. 內(nèi)容發(fā)布:CDN,DNS

12. 其他:Lucene(全文檢索工具)

二、架構(gòu)的考慮? 高性能? 高可用? 可擴(kuò)展性o 支持客戶、業(yè)務(wù)、訪問、和數(shù)據(jù)的高速成長o 難于規(guī)劃,成長無上限o 擴(kuò)展時性能不能受影響o 無縫:只需平滑的增加資源o 高效:維護(hù)每個用戶的低成本? 安全性? 便于管理? 成本可控? 快速交付三、AWS服務(wù)的解決方案? 敏捷、快速、靈活? 低啟動成本、隨用隨付費(fèi)? 不再需要猜測容量? 集中精力創(chuàng)新? 擺脫無差異化的體力活? 數(shù)分鐘就可以全球化部署? IT整體成本降低六天完成初創(chuàng)公司的技術(shù)架構(gòu)設(shè)計(jì)一、第1天,開發(fā)和私測首臺服務(wù)器(從云中啟動一個vm開始)? 通過云中的EC2實(shí)例來進(jìn)行測試(運(yùn)行諸如apache、mysql等)? 可以部署多臺來分角色,因?yàn)閯傞_張,先從1臺vm開始? 為服務(wù)器綁定IP地址,(限制:每個賬戶可以有5個Elastic IP地址)? 設(shè)置DNS域名來指向Elastic IP

二、第2天,推出和公測1、要測試了,當(dāng)初的vm不夠用,需要更大的服務(wù)? 加大塊存儲容量(EBS)? 使用正確的虛擬機(jī)類型(如cpu核多、內(nèi)存多、GPU卡、硬盤讀寫速度快等)? 按需改變虛擬機(jī)大小? 了解方案為長期永久,具有過渡性(目標(biāo)是了解AWS中的各種操作、限制和性能方案)? 還沒有容錯設(shè)計(jì)2、分開網(wǎng)站應(yīng)用和數(shù)據(jù)層? 更多容量? 每層分別擴(kuò)展? 細(xì)調(diào)每層的實(shí)例o 實(shí)例類型o 存儲? 注重安全o 使用防火墻o 數(shù)據(jù)庫至于VPC私有子網(wǎng)3、如何選擇數(shù)據(jù)庫?SQL or NoSQL?為什么通常使用關(guān)系型數(shù)據(jù)庫?? SQL非常成熟,功能豐富? 許多現(xiàn)成的代碼、工具和知識? 擴(kuò)展設(shè)計(jì)思路明確發(fā)發(fā)可行o 例如:對頻繁讀取的apps,采用讀寫分離? 現(xiàn)實(shí):未來將逐漸使用多種數(shù)據(jù)庫o 有些工作負(fù)載使用NoSQL更合適o 為每項(xiàng)工作選擇合適的工具4、經(jīng)驗(yàn)分享:關(guān)系型數(shù)據(jù)庫很復(fù)雜? 關(guān)系型數(shù)據(jù)庫要實(shí)現(xiàn)高可擴(kuò)展性,管理運(yùn)營起來往往很困難? 管理不善的關(guān)系型數(shù)據(jù)庫,會造成:數(shù)據(jù)不匹配和IT系統(tǒng)宕機(jī)下線的原因? 針對初創(chuàng)企業(yè)團(tuán)隊(duì)小,人員少在兼職,尤為如此AWS提供托管的關(guān)系型數(shù)據(jù)庫MySQL、Aurora、PostgreSQL、Oracle、SQL Server

5、如何進(jìn)一步提升效率?? 部署靜態(tài)內(nèi)容—Amazon S3o 高可用性、易擴(kuò)展的對象存儲o 任何格式的靜態(tài)文件(javascript,CSS,images,videos)o 用戶可以直接上傳o S3 URLs 可以從S3直接提供o 讓網(wǎng)站服務(wù)器集中處理動態(tài)內(nèi)容? 緩存這些靜態(tài)內(nèi)容—Amazon CloudFronto?全世界分布的邊緣站點(diǎn)o?在邊緣站點(diǎn)提供緩存 – 減少延遲 Reduce latency – 減輕原始服務(wù)器的負(fù)載 – 靜態(tài)和動態(tài)內(nèi)容o 更少的時間緩存大量熱點(diǎn)數(shù)據(jù)o 優(yōu)化連接 – 優(yōu)化連接路徑 – 重復(fù)使用連接 – 對不能緩存的內(nèi)容也有幫助(減輕負(fù)擔(dān))

? 數(shù)據(jù)庫緩存—Amazon Elastic Cacheo 從內(nèi)存讀取速度更快o 減少數(shù)據(jù)庫的工作負(fù)載o 部署簡單o 完全托管(自動替換失效節(jié)點(diǎn)、負(fù)責(zé)升級補(bǔ)丁管理)o 好的彈性擴(kuò)展o 兼容性(支持memcache,redis)

三、 第3天,客戶上線1、高可用性被擺上臺面? 第2天的情況是:動態(tài)內(nèi)容在EC2實(shí)例中,靜態(tài)放入S3,用CloudFront加速,用RDS托管數(shù)據(jù)庫,并且用ElasitcCache緩存? 今天,繼續(xù)在第2天的基礎(chǔ)上,在另一個AZ(可用區(qū))中創(chuàng)建EC2保存動態(tài)內(nèi)容,并且用ELB負(fù)載均衡來進(jìn)行跳轉(zhuǎn)o ELB是托管的負(fù)載均衡服務(wù)o 容錯o 健康檢查o 分布在多個可用區(qū)o 彈性-自動擴(kuò)展容量? 開啟RDS的muti-AZ,這樣RDS具備高可用了? 在另一個AZ(可用區(qū))再創(chuàng)建一個ElasticCache的實(shí)例

2、用戶訪問的User Session問題

? 問題:狀態(tài)通常存于本地磁盤(沒有共享)

? 簡單解決:ELB Session stickiness(session綁定)

? 更好方案:DynamoDB(將session狀態(tài)保存在NoSQL數(shù)據(jù)庫中)

? ? ? ?o DynamoDB是托管的文件和KEY-VALUE存儲

? ? ? ?o 易啟動,易擴(kuò)展

? ? ? ?o 到百萬IOPS

? ? ? ?o 讀和寫

? ? ? ?o 一致、快速的性能

? ? ? ?o 持久性:特別適合存儲session data

四、第4天,讓我們病毒式成長

1、目標(biāo):使用彈性IT代替猜測計(jì)算容量

2、使用自動縮放能力(三劍客:CW、AS、ELB)

3、微服務(wù)化/SOA化?

將應(yīng)用分解許多成小的、功能單一的、松耦合的、無狀態(tài)的構(gòu)建單元

? 只在實(shí)例存儲上保存暫時的數(shù)據(jù)

? 只要超過單一http調(diào)用的數(shù)據(jù)均需持久保存,然后存儲

? 這樣就可以做到按需進(jìn)行彈性伸縮了

? 這樣的結(jié)構(gòu)雖然簡單,但你仍需

? ? ? ?o 配置具體參數(shù)

? ? ? ?o 將代碼部署到多個實(shí)例

? ? ? ?o 管理開發(fā)測試生產(chǎn)多個環(huán)境(Dev,Test,Prod)

? ? ? ?o 維護(hù)應(yīng)用的多個版本

解決方案:使用Elastic Beanstalk

? 容易部署、監(jiān)控和擴(kuò)展的三層web、應(yīng)用、數(shù)據(jù)庫架構(gòu)

? 基礎(chǔ)架構(gòu)由Beanstalk管理和部署

? 客戶仍然掌控

? 預(yù)配置應(yīng)用容器

? 容易更改配置

? 支持下述平臺

5、如果系統(tǒng)更復(fù)雜一些,可以使用SQS實(shí)現(xiàn)松耦合

? 將任務(wù)部署到隊(duì)列服務(wù)

? SQS通過隊(duì)列為后端系統(tǒng)提供緩沖

? 異步處理-自己把握節(jié)奏

? 移除關(guān)鍵路徑的延遲

五、第5天,增加更多功能

1、AWS擁有更多的服務(wù),你可以根據(jù)需要選擇

2、AWS服務(wù)的關(guān)于高擴(kuò)展和高擴(kuò)展性的服務(wù)

本身可以擴(kuò)展和高可用

與合適的架構(gòu)配合實(shí)現(xiàn)可擴(kuò)展和高可用

ElasticLoadBalancing

EC2(本身不是高可用,而是在部署在多個AZ中后,可以實(shí)現(xiàn)一個高可用架構(gòu))

CloudFront

VPC

Route53

S3

SQS

SES

CloudSearch

Lambda

3、在擴(kuò)大團(tuán)隊(duì)時保持對創(chuàng)新的關(guān)注

六、第6天,繼續(xù)快速成長

數(shù)據(jù)太大了,需要擴(kuò)展關(guān)系型數(shù)據(jù)庫增強(qiáng)RDS實(shí)例

? 大的實(shí)例類型

? 更多存儲/更多IOPS

? 只讀副本read replca(主master—從slave)

o 擴(kuò)展到超度單一DB實(shí)例的計(jì)算容量

o 對RDS for MySQL、PostgreSQL 和 Aurora適用

o 【寫】=>主 master

o 復(fù)制有延遲

o 能容忍過期數(shù)據(jù)的【讀】=>只讀副本(從)read replca(slave)

o 高一致性的【讀】=>主master

如果需要經(jīng)常寫?

? 挑戰(zhàn):你遲早會達(dá)到主節(jié)點(diǎn)寫操作或存儲的極限

? 方案1:聯(lián)合Fedration(根據(jù)數(shù)據(jù)功能分到多個數(shù)據(jù)庫上)

o 將數(shù)據(jù)庫表分成多個小的自立的數(shù)據(jù)庫

o 跨功能函數(shù)查詢很困難

o 對于單一較大的函數(shù)、表的幫助不大

? 方案2:分片Sharding(將一組數(shù)據(jù)分道多臺主機(jī)上)

o 將行的子集存入數(shù)據(jù)庫分片(大數(shù)據(jù)領(lǐng)域很常用)

o 應(yīng)用層面更復(fù)雜

o 擴(kuò)展性實(shí)際上無上限

o 運(yùn)營的復(fù)雜性

另一種解決方案,NoSQL數(shù)據(jù)存儲—DynamoDB

? 犧牲關(guān)系數(shù)據(jù)庫的查詢和性能,以獲取

? ? ? o 更靈活的數(shù)據(jù)模型

? ? ? o 水平伸縮可以預(yù)測的性能

? 可以大規(guī)模無縫擴(kuò)展

? ? ? o 分布式系統(tǒng)可以對讀寫均實(shí)現(xiàn)擴(kuò)展

? ? ? o 切片 + 復(fù)制

? 自動分區(qū)

? ? ? o 數(shù)據(jù)大小增加

? ? ? o 增加預(yù)設(shè)容量

總結(jié)

1、無用戶數(shù)上限的架構(gòu)

? 應(yīng)用層面做了自動伸縮

? 數(shù)據(jù)層面做了多AZ部署

? 使用了緩存

? 使用了讀寫分離、跨區(qū)部署的關(guān)系數(shù)據(jù)庫

? 用S3存動態(tài)內(nèi)容

? 用DynamoDB存非結(jié)構(gòu)數(shù)據(jù)

? SNS、SQS、CloudSearch解決業(yè)務(wù)需要

? …

2、初創(chuàng)公司AWS架構(gòu)原則

? 保持簡潔和無狀態(tài)

? 多使用托管的自動縮放的服務(wù)

? 將EC2實(shí)例置于多可用區(qū)的自動縮放組內(nèi)

? 選擇合適的數(shù)據(jù)庫類型

? 在多個層次巧用緩存

? 使用管理工具自動化部署

?

總結(jié)

以上是生活随笔為你收集整理的aws s3仅允许cloudfront访问_初创公司如何用AWS搭建高扩展性架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。