2009-10-13 48 views
3

儘管以前在各種情況下都詢問過這個問題,但我無法找到專門針對面向非常大型受衆羣體的網站的任何信息 - 例如數十萬甚至數百萬用戶的規模。專門針對擁有龐大受衆羣體的網站是否有任何可擴展性最佳實踐?

在編寫針對較小受衆羣體的網站時(例如內聯網託管數據驅動的網站可處理幾個到幾千個用戶),我們往往會在我們項目預算/期限範圍內遵循最佳實踐 - 即開發人員成本,推出時間表和可維護性的影響遠遠大於我們經常喜歡的如何編碼事物。

由於局域網託管應用程序的性質往往意味着存在相對較少的財務成本(在一定範圍內),因此一些事情也可以忽略不計(例如交付時間,圖像壓縮/大小,帶寬)原因)我們不需要擔心太多。

然而,尋找到目標,例如更廣泛的觀衆的時候(希望)數百萬用戶的觀衆:

  • 是否有不再需要擔心任何的最佳做法(即變得更多忽略不計的更大全場)?
  • 是否有任何應該更嚴格遵守的做法?
  • 另外,有沒有什麼實踐只有真正發揮作用,因爲你的觀衆達到一定的臨界質量[以及這個臨界質量是什麼]?即採用人爲限制,不會開始關注你的專用網絡上

例子我已經遇到到目前爲止是:

  • 主機代碼庫如jQuery在谷歌,因爲它是從谷歌的交付CDN,並且可以比自己的服務器更快地提供服務。這也有助於降低您的網站傳輸帶寬成本。
  • 在CDN上託管圖像的原因與在其他地方託管您的JavaScript代碼的原因相同。

回答

3

我想這取決於在壓力「三角」上的目標:CAP(一致性,可用性&容差分區)。例如。當遇到導致「P」的網絡中斷時,只能有那麼多「C」。

現在看來,口音更重視提供「良好的用戶體驗」,這似乎取決於「結果時間」(例如,在用戶的桌面上具有完整的網頁):這轉化爲投資(除了別的以外)更多地在「A」和「P」兩側,然後是「C」一側。

更具體:花一些時間決定到例如執行數據彙總表示層給用戶我可以在更長的時間段內彙總此數據之前重新計算另一個視圖推送?

當然,我只是幾乎沒有抓住問題的表面。

+0

謝謝,我明白這一點。你有關於這個問題的推薦閱讀嗎? – BobTheBuilder 2009-10-13 18:17:59

+0

關於CAP的精彩演講:http://docs.google.com/fileview?id=0B1ja67dF2og9ZDVhMTQzMzMtOTUwYi00ZGM2LWIxMmYtZmUxMmM1MDUxYTk4&hl=zh_CN – jldupont 2009-10-13 18:46:26

+0

@ Jean-Lou Dupont:謝謝,我欣賞這個鏈接。我會在片刻後跟進。 – BobTheBuilder 2009-10-13 18:55:34

1

我會檢查出YSlow並按照他們的建議改善性能。

+0

由於在他們的網站上有一些有用的提示要考慮。 +1 – BobTheBuilder 2009-10-13 18:20:00

3

我認爲有三個大的事情要記住這裏:

一)你不會寫在未來的Twitter/YouTube的/ Facebook的/易趣/亞馬遜/不管。它不會經常發生,所以它是YAGNI的一個大案例。 b)如果你確實碰巧寫過其中一個,那麼很可能你有機會重寫這個應用程序超過幾次。

c)只有公開發表過關於這些應用程序的任何體系結構類型的對象課程都是水平縮放是一條路。垂直最大化,真正快速。

另外,我認爲流程改進在這些崇高的規模上變得更大。您將擁有衆多開發人員,嚴格的部署窗口和大量需要擔心的框。最好是真正的腳本,自動化和可重複的。

+1

對於C + 1,至於其他兩點,我敢肯定我會犯我自己的錯誤,沒有重複其他人的一路上......任何人都可以有一個想法,所以A是一點點太失敗了,我認真對待。 – BobTheBuilder 2009-10-13 18:16:45

0

@jldupont - 剛纔看了一下你已經鏈接到的演示文稿。我沒有得到的一件事是,當你失去可用性以獲得一致性和分區時,「分佈式數據庫」如何成爲一個示例場景。 我認爲分佈式數據庫會失去一致性。

相關問題