2012-03-16 52 views
-2

我有一個非常基本的要求。客戶將發送/張貼一些信息(少於1KB)到我的網站。客戶端不需要確認從服務器收到的數據。服務器需要將這些信息保存到某種數據庫中以備將來使用。可伸縮網站的最佳設計(具體請求詳細說明)

我需要設計一個系統,可以擴大和接收客戶端發出的所有通知。我預計最高點擊量爲5-10百萬用戶(每日),最高負荷爲100k。這些數字有點高,但這些將繼續增加。

設計此類系統的最佳方法是什麼?還有什麼是堅持這種信息的最佳方式?我願意接受任何技術,但更喜歡java。

P.S.這是iOS Apple推送通知的一部分。

+0

我不介意-1問題,但請提及相同的原因,以便我可以改進未來的問題。 – Atul 2012-03-16 11:33:45

回答

3

從你所描述的,這個相當平凡的應用程序中唯一真正重要的部分是數據庫插入。運行在Tomcat或Jetty上的普通舊servlet應該足以滿足應用程序部分的需求,我不明白爲什麼一個體面的服務器(4核,4-6g內存)不應該能夠處理至少20k次/分鐘和100k併發會話,假設您有IO帶寬來支持這一點。

更重要的將是數據庫。我肯定會選擇一個專用的數據庫服務器,具有相當數量的RAM和CPU以及快速硬盤。

看到你如何使用廉價或免費的東西來設置大部分,我會建立一個原型驗證概念來測試性能。如果您沒有物理服務器,請設置幾個Amazon EC2實例,安裝tomcat和mysql,構建一個接收信息並插入數據庫的簡單servlet。用負載壓一下,看看會發生什麼。

+0

+1在EC2上的多臺機器上進行測試是一個好主意。您可以從微型實例和ESB驅動器開始,以便進行初始設置,然後僅在實際基準測試期間將該ESB切換爲功能更強大的實例。 – 2012-03-16 11:23:11

+0

完全寫完這個問題後,我也開始認爲瓶頸將在數據庫端。有時候編寫完整的需求有助於正確理解它。感謝您的投入。 – Atul 2012-03-16 11:32:26

1

在我看來,這句話在你的描述:

「客戶端將發送/發佈一些信息(小於1KB)到我的網站沒有要求客戶大約從服務器接收數據的確認。 「。

讓我想到Mongo DB作爲持久性機制。可以將Mongo DB配置爲不返回寫入確認的快速寫入。而且,配置Mongo人將數據庫和應用程序稱爲「碎片」的功能也很容易,可以將單個集合(大致相當於SQL Table)有效地分佈到不同機器上的多個mongo實例。