Vài suy nghĩ về vấn đề này (từ chối trách nhiệm: Tôi làm việc cho đất nung/ehcache ... để giữ cho rằng trong tâm trí ... nhưng vẫn cố tỏ ra không thiên vị ở đây):
1 - Có bất kỳ dữ liệu dư thừa trong mỗi phiên? Bất kỳ thứ gì có thể được chia sẻ qua các phiên? Nếu có, +1 cho ehcache để lưu trữ nội dung được chia sẻ (vì ehcache được tối ưu hóa cho tương tranh nặng)
2 - Các đối tượng phiên của bạn lớn đến mức nào? Và bạn đang mong đợi bao nhiêu người dùng đồng thời trên cơ sở trạng thái ổn định? (nói cách khác, bạn sẽ phải dành bao nhiêu bộ nhớ để lưu trữ phiên trên máy chủ ứng dụng của mình?)
Nếu dấu chân phiên không lớn và có thể vừa vặn trong đống của bạn mà không có vấn đề GC, thì sử dụng phiên nên là một giải pháp tốt.
Nhưng lớn hơn nó nhận được, lớn hơn đống java của bạn sẽ cần phải ... và bạn càng phải sử dụng thủ thuật voodoo để giữ bộ sưu tập rác và thời gian tạm dừng gc trong kiểm tra. Bằng cách sử dụng ehcache, bạn có thể lưu trữ một số đối tượng trung tâm mà nhiều phiên có thể truy cập ... do đó củng cố dấu chân bộ nhớ của bạn (giống như 1) Ngoài ra, bằng cách sử dụng phần mở rộng doanh nghiệp cho ehcache (BigMemory = http://terracotta.org/products/bigmemory), bạn có thể bỏ qua Heap hạn chế và lưu trữ dữ liệu của bạn off-heap (nhiều khi cần - 10s, 100s GB hoặc hơn). Với điều đó, kích thước của các đối tượng cần có trong bộ nhớ trở nên không liên quan (miễn là bạn có thể thêm RAM vào máy chủ của mình)
3 - Để sao chép phiên, máy chủ ứng dụng như JBOSS, Weblogic, hỗ trợ Websphere nó. Một lần nữa, đó là vấn đề của kích thước phiên một lần nữa (bao nhiêu dữ liệu sẽ cần phải được nhân rộng trên dây). Nếu các đối tượng phiên của bạn là lớn, và bạn có nhiều đối tượng trong số đó, sẽ có rất nhiều lưu lượng mạng trên cụm của bạn ... có thể hoặc không thể hoạt động tốt. Có đối tượng lõi trong lớp EhCache được phân phối tối ưu để lưu trữ dữ liệu, trong khi vẫn giữ phiên của bạn ở mức tối thiểu (tức là thông tin đăng nhập/xác thực) chắc chắn sẽ tăng cường cơ chế sao chép phiên đó theo ý kiến của tôi.
Hy vọng điều đó sẽ hữu ích.
Bạn có thể làm rõ ý của mình với "máy chủ ứng dụng" hay không. Nó có phải là một máy chủ đầy đủ, ví dụ như. JBoss, hoặc nó có thể là Tomcat không? – davidcyp