我將胖客戶端代碼移植到具有精簡客戶端的服務器體系結構中。多個JVM與併發任務
服務器需要爲每個客戶端運行一個代碼實例。代碼是多線程的,運行很長時間(幾周),但只與客戶端偶爾交互。客戶數量將達到數千人。每個客戶端需要〜20MB的堆。
我現在有兩個選擇,讓所有請求,並計算在共享空間完成每個客戶端(如在
- 在服務器上啓動一個單獨的JVM爲每個客戶端
- 修改我的代碼網絡應用程序)
我可以看到每個優點和缺點。對於多個JVM:
優點:
- 進程是分開的,如果一個掛起只是殺死它,然後重新啓動。所有其他人都不會在意。
- 資源是有限的,這樣一個客戶端不能吃了所有的CPU /內存
- 在幾臺機器
缺點容易分佈:
- 完整的JRE類庫被加載多次
- 不是Java EE的服務方式
- 每個客戶端都需要通過一個單獨的端口進行通信嗎?
是否有您推薦的最佳實踐?
你知道關於這個主題的任何好的參考書/文章嗎?
是否有一個框架只使用一個JVM,但運行代碼的幾個副本就好像它是單獨的進程空間(資源有限等)?