在這對夫妻的想法(聲明:我兵馬俑/ ehcache的工作...所以記住這一點......但還是想在這裏是偏):
1 - 是否有任何冗餘數據每個會話?任何可以在會話中共享的東西?如果是的話,+1用於ehcache來存儲共享的東西(因爲ehcache針對併發性進行了優化)
2 - 會話對象有多大?你有多少併發用戶在穩定狀態下期待? (換句話說,你需要爲你的應用服務器上的會話存儲專門分配多少內存?)
如果會話佔用量不是很大,並且可以很好地適合堆放在沒有GC問題的堆上,那麼使用會話應該是一個好的解決方案。
但是它越大,你的java堆就會越大......越需要使用voodoo技巧來檢查垃圾回收和gc暫停時間。 通過使用ehcache,您可以集中存儲多個會話可以訪問的一些對象...因此整合您的內存佔用空間(與1相同) 此外,通過使用ehcache的企業擴展(BigMemory = http://terracotta.org/products/bigmemory),您可以繞過堆限制和存儲您的數據堆外(儘可能多的 - 10 GB,100 GB或更多)。因此,需要在內存中的對象的大小變得無關緊要(只要您可以將RAM添加到您的服務器當然)
3 - 對於會話複製,應用程序服務器,如JBOSS,Weblogic,Websphere支持它。同樣,這又是會話大小的問題(需要在整個線路上覆制多少數據)。如果會話對象很大,並且你有很多會話對象,那麼羣集中會有很多網絡流量......可能或不能很好地工作。 將核心對象放在分佈式EhCache層中,以優化數據存儲,同時將會話保持在最低限度(即登錄/認證信息),在我看來,這肯定會增強會話複製機制。
希望有所幫助。
你能澄清你的意思是「應用服務器」嗎?它是一個完全成熟的服務器,例如。 JBoss,或者它也可以是Tomcat? – davidcyp