2012-02-06 42 views
5

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:

  1. 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)

  2. 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.

  3. 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à:

  1. 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.
  2. 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.
  3. 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').
  4. 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

+0

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

Trả lời

1

nếu bạn sử dụng ngăn xếp GF 3, bạn sẽ nhận thấy rằng sản phẩm này đã được refactored để có lợi ích từ việc kiến ​​trúc OSGi .. Vì vậy, bây giờ bạn có thể triển khai bó hoặc thậm chí các file .wab (bó ứng dụng web) trong kiến ​​trúc GF3.This sẽ cho phép bạn:

  • quản lý các phiên bản của các mô-đun khác nhau
  • để dừng/khởi động lại ứng dụng một cách độc lập
  • để cung cấp gói chung cho các ứng dụng của bạn tránh một sự lãng phí không gian perm gen ...

Nhưng trong câu hỏi của bạn tôi không thể hiểu làm thế nào để mô hình hóa các quá trình khác nhau với một Java Virtual Machine đơn .... Một Máy ảo nghĩa là 1 quy trình (ở cấp hệ điều hành) và bạn không thể làm bất cứ điều gì chống lại điều đó ..

Nền tảng OSGi mang lại cho bạn nhiều lợi ích liên quan đến yêu cầu SLA cho ứng dụng của bạn và cho phần mềm mô-đun ... HTH Jerome

+0

Câu hỏi là cho dù có thể đạt được kiến ​​trúc đa cá thể trong GF hay không. AFAIK OSGi cũng không hỗ trợ điều đó. Có vẻ như sau đó, kiến ​​trúc đa nhiệm tự nhiên hơn ở đây (http://en.wikipedia.org/wiki/Multitenancy). – rsc

Các vấn đề liên quan