2012-12-11 15 views
4

我有一個JavaEE應用程序:1個使用EJB和SOAP的EAR;一些使用Servlets的WAR。目前,EAR部署在Glassfish 3.1.2(社區版)中,WAR部署在Tomcat中或Glassfish服務器上。將JavaEE應用程序擴展到1.000.000個併發用戶

該應用程序由MySQL數據庫支持,並且主要執行一些簡單的數據按摩和數據庫外按摩。幾乎沒有靜態內容。在當前的體系結構中,戰爭本身幾乎沒有任何請求可以回答,並且始終涉及EAR(可能會通過一些重新設計來改變它)。

這適用於20個併發用戶和某個中型服務器上最多200個併發用戶的一些http線程池的開箱即用。

我現在不得不擴展應用程序以應對1,000,000個用戶(這不是一個樂觀的猜測,而是對業務的現實需求;大多數'用戶'將是部署在該領域的設備。

如何擴展此應用程序以處理1.000.000個併發用戶?特別是:

  • 我應該能夠獲得超過200-500用戶服務的單個glassfish服務器(對於一個不太苛刻的Web應用程序)?如果是的話,我應該瞄準什麼?
  • glassfish集羣似乎是一種選擇,但這個規模有多大?即使那樣,運行1000-2000臺服務器(即使在雲端)也不會真正吸引我。
  • 如果tomcat/glassfish是錯誤的答案,有什麼選擇?
  • 目前瓶頸是webapp,但我認爲在某個階段,數據庫也可能成爲一個問題。 MySQL如何擴展到這樣的大小?
+0

問題1:每天1,000,000併發用戶? 問題2:您的數據更改頻率如何? 問題3:你有很多交易嗎? 提出這些問題的原因是,是否可以使用緩存(如ehcache)? 數據可以使用Hadoop或NoSQL數據庫在分佈式服務器上分片/分散嗎?等 –

+0

1)是的。智能電錶和其他傳感器等設備意義上的「用戶」。 2)每個設備每5到10分鐘報告一次。有些人可能更頻繁地詢問命令。 3)是,但微不足道的交易.i.e。少數必須一起成功的寫入。第一個問題似乎只是Glassfish或Tomcat處理這些連接數量。剛纔發佈的問題是,我們現在可以在事情發生故障之前,在長時間輪詢(Servlet 3 Async)上同時執行15.000個連接。 DB依然沒有出汗。 – Carsten

回答

相關問題