新聞中心
早在2006年,事務(wù)處理的開山鼻祖,數(shù)據(jù)庫領(lǐng)域圖領(lǐng)獎(jiǎng)得主Jim Gray與Werner Vogels 進(jìn)行了“第一次”對話。對話的主題是“向亞馬遜技術(shù)平臺學(xué)習(xí)”,而吊詭之處在于,Jim Gray所開創(chuàng)的事務(wù)處理是亞馬遜電子商務(wù)的技術(shù)基礎(chǔ)。

墨脫ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
最近,Akamai董事Tom Killalea與亞馬遜CTO Werner Vogels 進(jìn)行了一場“第二次”對話。對話的主題是大規(guī)模簡單存儲系統(tǒng)S3的進(jìn)化設(shè)計(jì)。而吊詭之處在于,而就在一個(gè)月前,一個(gè)可以對標(biāo)S3的最大區(qū)塊鏈存儲項(xiàng)目Filecoin剛剛升空。
“我認(rèn)為重要的是要首先意識到亞馬遜是一家技術(shù)公司”,在“第一次”對話中,Werner Vogels 反復(fù)對Jim Gray解釋稱,亞馬遜不應(yīng)該僅僅被視為一家在線書店,而應(yīng)該被視為一家科技公司。并且,就是在這次談話中,亞馬遜首次公開了S3,一個(gè)簡單存儲服務(wù)。
“Amazon.Com Books”,這個(gè)名字并不能反映我們的雄心壯志。Tom Killalea說到。當(dāng)Tom Killalea在1998年加入亞馬遜時(shí)(Tom Killalea于2018年3月加入Akamai,擔(dān)任董事),該公司只是一個(gè)銷售書籍的網(wǎng)站:一個(gè)簡單C應(yīng)用Obidos,一個(gè)部署在Berkeley DBs上的鍵值存儲,一個(gè)命名為“ACB”的關(guān)系數(shù)據(jù)庫(代指“Amazon.Com Books”),這些應(yīng)用部署在5臺服務(wù)器上。
不斷擴(kuò)大的客戶和訂單,讓亞馬遜放棄了單體架構(gòu),走向去中心化的服務(wù)化架構(gòu)。當(dāng)Jim Gray問及亞馬遜最大的經(jīng)驗(yàn)教訓(xùn)時(shí),Werner Vogels 說道:
- 第一個(gè)教訓(xùn),也是最重要的教訓(xùn),更是元教訓(xùn):服務(wù)意識。嚴(yán)格的面向服務(wù)是實(shí)現(xiàn)隔離的優(yōu)秀技術(shù),你會達(dá)到一個(gè)前所未見的擁有和控制的水平。通過使用服務(wù),不僅技術(shù)方面得到了改進(jìn),開發(fā)和業(yè)務(wù)進(jìn)程也大大受益于它。服務(wù)模型是創(chuàng)建以客戶為中心的快速創(chuàng)新團(tuán)隊(duì)的關(guān)鍵推動(dòng)。每個(gè)服務(wù)都有一個(gè)與之關(guān)聯(lián)的團(tuán)隊(duì),該團(tuán)隊(duì)完全負(fù)責(zé)服務(wù)——從確定功能范圍,到架構(gòu)、構(gòu)建和運(yùn)維。
- 第二個(gè)教訓(xùn)是,通過禁止客戶端直接訪問數(shù)據(jù)庫,可以在不涉及客戶端的情況下對服務(wù)狀態(tài)進(jìn)行可伸縮性和可靠性改進(jìn)。這些經(jīng)驗(yàn)教訓(xùn)與如何訪問服務(wù)有關(guān):如果你希望能夠輕松地聚合服務(wù),如果你希望插入高級基礎(chǔ)設(shè)施技術(shù),如分布式請求路由或分布式請求跟蹤,你需要一個(gè)統(tǒng)一的服務(wù)訪問機(jī)制。
- 第三個(gè)教訓(xùn):賦予開發(fā)人員運(yùn)維職責(zé)大大提高了服務(wù)的質(zhì)量,無論是從客戶的角度還是從技術(shù)的角度。傳統(tǒng)的模式是,將軟件放在分隔開發(fā)和運(yùn)維的墻上,然后將其拋諸腦后。在亞馬遜不是這樣,誰建立,誰運(yùn)行。這使開發(fā)人員接觸到軟件的日常運(yùn)維。這也讓開發(fā)人員每天都與客戶接觸。這種客戶反饋回路對提高服務(wù)質(zhì)量至關(guān)重要。
“如果不把技術(shù)用于服務(wù)客戶的更大利益上,技術(shù)就毫無用處。我們是一家強(qiáng)烈以客戶為導(dǎo)向的公司,我們經(jīng)常使用“從客戶逆向工作”的方法。這意味著,在你的思考過程中,從客戶開始,然后逆向工作,直到找到滿足新客戶需求所需的簡單而最小的技術(shù)。重要的是,來到亞馬遜工作的工程師要明白,我們不是為了技術(shù)而開發(fā)技術(shù),而是為了支持客戶?!?/p>
“面向服務(wù)的架構(gòu),我們的擴(kuò)展方式,我們服務(wù)客戶的方式——我認(rèn)為我們最大的成功是亞馬遜已經(jīng)成為一個(gè)其他企業(yè)可以從中受益的平臺?!?/p>
通過技術(shù)和業(yè)務(wù)的服務(wù)化,亞馬遜與用戶構(gòu)建了一個(gè)快速反饋周期,進(jìn)入一個(gè)飛速增長的飛輪之中。
2006年3月啟動(dòng)S3時(shí),S3只有8項(xiàng)服務(wù)。到2019年,S3已達(dá)到262種服務(wù)。在與Tom Killalea的談話中,Werner Vogels 說道:“我完全同意這是空前的規(guī)模。即使在今天,即使現(xiàn)在的互聯(lián)網(wǎng)服務(wù)已經(jīng)達(dá)到了令人難以置信的規(guī)模,我認(rèn)為S3仍然比它領(lǐng)先兩到三代?!?/p>
在2006年的S3發(fā)布公告中,亞馬遜采用了以下分布式系統(tǒng)設(shè)計(jì)十大原則來滿足Amazon S3的需求:
- 去中心化:使用完全去中心化的技術(shù)來消除伸縮瓶頸和單點(diǎn)故障。
- 異步:系統(tǒng)在任何情況下都能繼續(xù)工作。
- 自治:單個(gè)組件根據(jù)本地信息可以做出決策。
- 局部責(zé)任:每個(gè)組件負(fù)責(zé)實(shí)現(xiàn)其自身的一致性,這絕不是其他對等節(jié)點(diǎn)的責(zé)任。
- 受控并發(fā):操作被設(shè)計(jì)成不需要或有限的并發(fā)性控制。
- 容錯(cuò):組件故障被視為正常運(yùn)行模式,并且在沒有中斷或最小中斷的情況下繼續(xù)運(yùn)行。
- 受控并行:系統(tǒng)抽象具有這樣的粒度:使用并行來提高性能、恢復(fù)健壯性,或者引入新節(jié)點(diǎn)。
- 分解成小的、易于理解的構(gòu)建塊:不要試圖提供做所有事情的單一服務(wù),而是構(gòu)建可以用作其他服務(wù)構(gòu)建塊的小組件。
- 對稱性:系統(tǒng)中的節(jié)點(diǎn)在功能方面是相同的,并且不需要或最少需要特定配置才能運(yùn)行。
- 簡單性:系統(tǒng)應(yīng)該盡可能地簡單,而不是更簡單。
上面的十個(gè)原則,是亞馬遜構(gòu)建大規(guī)模分布式系統(tǒng)的方式。S3只是這些設(shè)計(jì)原則的例子。
原則是灰色的,而客戶的需求常青。在上面的原則基礎(chǔ)之上,Werner Vogels提出了演化架構(gòu)。
當(dāng)時(shí),大多數(shù)科技公司提供所有東西和“平臺”,他們會提供一本很厚的書和10個(gè)不同的合作伙伴,然后告訴客戶如何使用技術(shù)。而亞馬遜沒有將自己鎖定在自己的技術(shù)中,走上了另外一條道路。杰夫.貝佐斯多年前曾說過,那就是構(gòu)建工具,而不是構(gòu)建平臺,平臺是大型軟件平臺公司提供技術(shù)服務(wù)的老方式。
“在我們開始S3之前,我們開始意識到我們所做的可能會從根本上改變軟件構(gòu)建和服務(wù)使用的方式。但我們不知道這將如何發(fā)展,所以更重要的是構(gòu)建小型、靈活的工具,讓客戶可以在其上構(gòu)建(或者我們可以在自己的基礎(chǔ)上構(gòu)建),而不是在某個(gè)特定時(shí)刻準(zhǔn)備好所有東西和“平臺”。這不是時(shí)間問題,更重要的是,我們堅(jiān)信,無論我們向S3的接口添加什么,向S3的功能添加什么,都應(yīng)該由我們的客戶驅(qū)動(dòng)——以及下一代客戶將如何開始構(gòu)建他們的系統(tǒng)?!?/p>
“在過去的五到十年里,軟件發(fā)生了根本性的變化。我們需要構(gòu)建正確的工具,以支持發(fā)生根本性變化的速度。這樣,你就無法預(yù)測,你必須與你的客戶一起工作,等待他們?nèi)绾问褂媚愕墓ぞ摺貏e是如果這些工具是以前從未構(gòu)建過的——并觀察他們做了什么。然后我們坐下來問自己,最小集合是什么?!?/p>
“你必須有意識地小心設(shè)計(jì)API。API是長遠(yuǎn)的。一旦你把API放在那里,也許你可以提供新版本,但你不能把它從你的客戶那里拿走。在API設(shè)計(jì)中保持保守和最小化可以幫助你構(gòu)建基本工具,你可以在這些工具上添加更多的功能,或者合作伙伴可以在其之上構(gòu)建新的層次,或者你可以將不同的構(gòu)建塊組合在一起。這就是我們從一開始的理念:做到極簡主義,這樣我們就可以讓我們的客戶來推動(dòng)將要發(fā)生的事情,而不是我們坐在后面的房間里思考:這個(gè)世界應(yīng)該是什么樣子?!?/p>
這些設(shè)計(jì)決策在亞馬遜的數(shù)據(jù)湖中得到了體現(xiàn)?;跇?gòu)建塊和工具,S3的作用遠(yuǎn)遠(yuǎn)超過了數(shù)據(jù)湖:圍繞著數(shù)據(jù)庫,S3提供了龐大的工具箱(175種不同的服務(wù))。
在訪談中,S3的設(shè)計(jì)決策還包括:
- 持久性大于可用性
- 不變性大于分布式鎖
- 計(jì)算和存儲分離
不要將自己鎖定在自己的架構(gòu)中。Werner Vogels 在回顧S3的設(shè)計(jì)原則時(shí)候,這樣說道。一個(gè)有效的復(fù)雜系統(tǒng)總是從一個(gè)有效的簡單系統(tǒng)演化而來。一個(gè)從零開始設(shè)計(jì)的復(fù)雜系統(tǒng)永遠(yuǎn)不會工作,也不能通過修補(bǔ)使其工作。你必須從一個(gè)簡單可行的系統(tǒng)開始。
也許讀者不需要去閱讀兩篇訪談的原文,但需要記住和思考的是本文總結(jié)的幾點(diǎn):服務(wù)意識、分布式系統(tǒng)設(shè)計(jì)十大原則、構(gòu)建工具而不是平臺、不要將自己鎖定在自己的架構(gòu)中。
【本文是專欄作者石頭的原創(chuàng)文章,轉(zhuǎn)載請通過作者微信公眾號補(bǔ)天遺石(butianys)獲取授權(quán)】
分享題目:不要將自己鎖定在自己的架構(gòu)中
網(wǎng)站地址:http://m.5511xx.com/article/ccosdgd.html


咨詢
建站咨詢
