Tôi cần thiết lập môi trường lưu trữ cho khoảng 100 khách hàng trên một máy chủ GlassFish (v 3.1). Mỗi khách hàng cần ứng dụng được cấu hình tùy chỉnh có thể chạy độc lập với nhau. (JDBC, JMS, khả năng khởi động lại ứng dụng đơn lẻ) Chạy máy ảo đơn lẻ sẽ được ưu tiên, khi khởi chạy 100 JVM mỗi bộ nhớ sử dụng 750MB RAM không giống như ý tưởng hay.Kiến trúc và triển khai ứng dụng đa năng trong máy chủ ứng dụng GlassFish
Cho đến nay tôi đã thử nghiệm các giải pháp sau, nhưng không may, không ai trong số những đã đáp ứng được yêu cầu của tôi:
Triển khai ứng dụng trên tên miền riêng biệt. Giải pháp này không đủ do sử dụng JVM Ram và sự phức tạp của việc chạy nhiều bảng điều khiển quản lý trên nhiều cổng (chúng tôi không cần quá nhiều sự tách biệt)
Triển khai ứng dụng trên nhiều phiên bản (có tên trên mục tiêu trên Glassfish) trên cùng một tên miền. Giải pháp này là không đủ vì nó tạo ra quá trình JVM riêng biệt cho mỗi cá thể và tiêu thụ quá nhiều RAM (vài trăm MB cho mỗi trường hợp). Nếu không nó là gần nhất với những gì chúng ta cần.
Triển khai ứng dụng trên nhiều máy chủ ảo trên cùng một phiên bản. Giải pháp này là không thể chấp nhận được vì trong Glassfish mỗi máy chủ ảo không có cấu hình riêng biệt.
Bất kỳ ai có thể đề xuất thực tiễn/đề xuất tốt nhất để sử dụng GlassFish để lưu trữ nhiều phiên bản ứng dụng? Có phải chúng ta “phải chịu” để dự trữ 1GB ram cho mỗi khách hàng? Đến từ môi trường IIS, chúng tôi đã có các Hồ bơi ứng dụng riêng biệt sử dụng 3-5MB RAM khi khởi động.
CẬP NHẬT
Về sự phụ thuộc và chia sẻ của tôi trong ứng dụng của tôi: Trong ý tưởng tôi muốn thực hiện trên máy chủ Glassfisf, mỗi ứng dụng cần nguồn riêng biệt (JMS và JDBC). Đây không phải là vấn đề, tôi có thể tùy biến nó cho mỗi ứng dụng ngay cả khi máy chủ ảo được kích hoạt trên một cá thể (tôi có thể nhận ra máy chủ ảo bằng cách lấy tên máy chủ từ Http Request và chuẩn bị các tài nguyên và tệp cấu hình riêng biệt trong thư mục ví dụ để áp dụng cấu hình này máy chủ ảo).
'requrements độc lập tự chủ' của tôi là:
- tôi chỉ cần để có thể triển khai nhiều ứng dụng trên một ví dụ Glassfish và có thể chạy chúng trong quá trình Java riêng biệt nhưng dưới cùng một máy ảo Java.
- Tôi cần có thể bắt đầu/dừng từng ứng dụng một cách độc lập với nhau.
- Tôi cần có khả năng tải lại một ứng dụng và ứng dụng còn lại trong khi các ứng dụng othe vẫn hoạt động (dưới IIS tùy chọn này được gọi là 'tái sử dụng nhóm').
- Trong trường hợp lỗi trong một ứng dụng, nó sẽ không ảnh hưởng đến các ứng dụng khách hàng khác trên cùng một máy chủ/cá thể. Các ứng dụng khác shoud vẫn hoạt động (tất nhiên khi lỗi này không làm hỏng toàn bộ java vm).
Ý tưởng này có thể được thực hiện trên một cá thể Glassfish với hàng trăm ứng dụng được triển khai (được bật trên máy chủ cá thể/ảo) không? Có lẽ việc triển khai các ứng dụng dưới các tên khác nhau (như mô tả ở đây: home.java.net/node/676678) có thể là một giải pháp tốt trong trường hợp của tôi?Có ai có kinh nghiệm trong việc triển khai một trăm lần cùng một ứng dụng với các cấu hình khác nhau theo cách đó không?
Cảm ơn,
Olgierd
nếu ai đó quan tâm đến cuộc thảo luận về câu hỏi này , nó đã được đăng thành công hơn ở đây: http://www.java.net/forum/topic/glassfish/glassfish/multiinstance-appliciation-architecture-and-deployment-glassfish-app-server?force=691 – rsc