【伯樂(lè)在線導(dǎo)讀】:通常當(dāng)我們對(duì)擴(kuò)展性感興趣時(shí),我們東尋西找鏈接、書(shū)籍和參考資料。這篇短文是 Leandro 精心挑選出的參考資料,并給出了學(xué)習(xí)路徑,他希望對(duì)你的學(xué)習(xí)之旅有所幫助。
01359D07-774C-4DEA-98AF-476A7AE83E4E
聲明:你不需要有 N 臺(tái)機(jī)器來(lái)搭建一個(gè)高擴(kuò)展性系統(tǒng),你只要使用 Vagrant 就能很容易模擬成 N 臺(tái)機(jī)器。
學(xué)習(xí)參考資料:
既然你可以通過(guò)虛擬服務(wù)器來(lái)武裝自己了,那你不僅要讀這些文章,而且還要?jiǎng)邮謱?shí)踐。
首先,看看《使用 Nodejs +Nginx + 靜態(tài)緩存應(yīng)用 + 負(fù)載均衡器 + 測(cè)試教程》來(lái)預(yù)熱一下,只需要 7 分鐘。
把這些單詞放入你的詞匯表 scalability(擴(kuò)展性)、failover(災(zāi)備)、 single point of failure (SPOF)(單點(diǎn)故障)、 sharding(分區(qū))、 replication(復(fù)制) 和 load balancing(負(fù)載均衡) 。即使你根本不理解它們,也不要緊。
為了對(duì)擴(kuò)展性系統(tǒng)有總體概念和更好地了解來(lái)龍去脈,我強(qiáng)烈推薦你閱讀《Scalable Web Architecture and Distributed Systems(擴(kuò)展性web架構(gòu)和分布式系統(tǒng))》。這是一篇非常棒的導(dǎo)論。
在對(duì)概念有清晰了解以后,你現(xiàn)在可以開(kāi)始學(xué)習(xí)如何使用 load balancer(負(fù)載均衡器) 和處理一些你將要面對(duì)的決策問(wèn)題。你可以嘗試運(yùn)行haproxy,并且避免它產(chǎn)生single point of failure too(單點(diǎn)故障)。
通過(guò) 實(shí)現(xiàn)300萬(wàn)個(gè)請(qǐng)求/秒的服務(wù) 挑戰(zhàn)你自己,完成這項(xiàng)任務(wù)你可能需要 生成300萬(wàn)個(gè)請(qǐng)求,調(diào)優(yōu)Web服務(wù)器 和 規(guī)模化并測(cè)試。
你的應(yīng)用已經(jīng)可以擴(kuò)展了,現(xiàn)在你輪到數(shù)據(jù)庫(kù)了。它是你應(yīng)用中非常重要的一部分,在這里我推薦你至少要閱讀,MongoDB 是如何通過(guò) sharding 和 replication 來(lái)擴(kuò)展數(shù)據(jù)庫(kù),還有Cassandra 是如何通過(guò) linear scalability(線性擴(kuò)展)和 adding nodes to the cluster(在集群中添加節(jié)點(diǎn)) 來(lái)擴(kuò)展。
你的應(yīng)用和數(shù)據(jù)庫(kù)現(xiàn)在有很好的擴(kuò)展性和容錯(cuò)能力。有利于節(jié)省服務(wù)器不必要的工作負(fù)載,然后會(huì)有更快的用戶(hù)響應(yīng)。
假定我們已經(jīng)在一個(gè)單獨(dú)的數(shù)據(jù)中心部署了這套系統(tǒng),現(xiàn)在我們有另一個(gè)SPOF。所有的服務(wù)器都在同一個(gè)地方,可能會(huì)有自然災(zāi)害,或者僅僅是斷電。好消息,Cassandra可以非常方便地支持多個(gè)數(shù)據(jù)中心, 看看 Google 是如何處理的。如果你的用戶(hù)在巴西,不要讓他訪問(wèn)時(shí)間過(guò)長(zhǎng)。記住,即使在最好的情況下, 我們?nèi)匀粫?huì)有延遲。
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄