2009-02-05 83 views

回答

3

不幸的是,你的問題有很多方面將取決於上下文。根據您的要求和應用,可伸縮性可能意味着不同的事情。需要回答,你拿出你的架構(不管您正在使用的技術)的問題包括:

  • 例如你想支持用戶數據量非常大的工作或你只需支持每個用相對適中的數據量的大量用戶?
  • 您的應用程序是否執行更多的讀取操作而不是寫入操作,因爲讀取操作非常便宜,而且寫入操作比較昂貴,讀取較重的應用程序比寫入較重的應用程序可以更容易擴展。
  • 應用程序中的數據是否始終保持一致或最終一致性是否足夠?認爲向社交網站發佈消息與從銀行賬戶中提取資金)。
  • 您的應用程序需要具備哪些功能?嚴格的高可用性要求可能會要求您在一臺服務器崩潰時順利地將故障轉移到其他服務器。

在正確討論應用程序體系結構之前,還有許多其他問題需要回答關於您的特定應用程序。

但是,我不僅僅給你留下問題,而且這裏沒有一個答案是我認爲設計Web應用程序以實現可伸縮性時要考慮的最重要的事情:減少(如果可能,降低到零)應用程序中共享會話狀態的數量(全局應用程序計數器,緩存的主鍵塊等)。在羣集中複製共享狀態的成本非常高,當您嘗試按比例擴大時

0

跨越this解釋的MySpace如何擴大規模,真的很有趣,正是那種我正在尋找的信息剛剛來到。然而,沒有關於用於創建分區或高速緩存等等...

1

也許有這麼多的選擇的技術討論,我不知道任何人要考慮所有的選項全部。通常情況下,語言的選擇是第一位的,然後你決定如何實現你想要的結果。

我的猜測是你必須在幾乎所有主要的通用語言不錯的選擇。 這是10年前的問題,但今天恕我直言。

在Java中使用開源技術的一個很好的比較http://java-sources.org/當你鑽到每個類別中,你可以看到這是相當廣泛的,它甚至考慮商業產品或C#

對於任何可擴展的系統,你還需要考慮硬件解決方案,例如網絡組件。

我對轉向低容量應用到高容量的一個建議,就是開始擺在首位的東西相當高的量,並希望你去重新設計它。

你在談論什麼類型的卷?每個人都有不同的高低成交量預期。例如如果谷歌的平均交易量低於整個數據中心的交換量以節省電量。 ;)

0

簡短的答案 - 這取決於。涉及的業務目標是什麼(如果有的話)?什麼是項目預算和時間表?哪個行業(受監管)?