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