2012-02-15 34 views
6

Tôi có một cụm máy chủ web mỗi một ứng dụng chạy cùng một ứng dụng web java. Tất cả các trường hợp ứng dụng web này chia sẻ cùng một cơ sở dữ liệu (để lưu trữ dữ liệu) và lưu trữ cùng một tệp mạng (nơi chúng giữ một số tệp được yêu cầu).Đồng bộ hóa các ứng dụng web trong một cụm

Tôi cần có thể đồng bộ hóa các phiên bản của ứng dụng web. Ví dụ, một trong các cá thể ứng dụng nhận được một yêu cầu nhất định từ máy khách, nó thực hiện một số tính toán lại và cập nhật bộ đệm trong của nó. Tại thời điểm này, tôi cần cập nhật bộ nhớ cache nội bộ cho tất cả các ứng dụng web khác trong một cụm sao cho mỗi một trong số chúng hoạt động trên cùng một tập dữ liệu.

Cách tốt nhất để đạt được chức năng như vậy là gì? Để chắc chắn tôi có thể triển khai một số thành phần tùy chỉnh sẽ định kỳ thăm dò tài nguyên được chia sẻ (gắn cờ trong bảng cơ sở dữ liệu hoặc tệp trên kho lưu trữ tệp) và bắt đầu xử lý bắt buộc khi điều kiện được đáp ứng. Nhưng có thể có một số thư viện/thành phần/ứng dụng đã tồn tại mà tôi có thể sử dụng?

+0

Bạn có cụ thể hơn không ?? –

+0

Cụ thể hơn: Tôi cần có khả năng gửi các sự kiện giữa các nút ứng dụng của mình. Như tôi đã nói tôi có một cơ sở dữ liệu và một kho lưu trữ tập tin được chia sẻ giữa các nút, vì vậy tôi muốn sử dụng một trong số đó như một bus sự kiện. –

+1

Hey andrew.z - nó sẽ là tốt nếu bạn có thể thêm những hạn chế cho câu hỏi của bạn. Nếu bạn biết về sự kết hợp bộ nhớ cache nhưng đã loại bỏ nó, hãy cho chúng tôi biết lý do; nếu bạn không muốn sử dụng UDP, hãy cho chúng tôi biết. Nó giúp mọi người trả lời câu hỏi của bạn với những ý tưởng không đáp ứng yêu cầu của bạn. –

Trả lời

3

Có rất nhiều thư viện và thành phần hiện có. Bạn có thể google về cache coherence. Có các giải pháp sẵn sàng sử dụng khác nhau, bộ nhớ đệm Jboss, sự kết hợp của Oracle, GridGain, v.v.

Nếu bạn muốn viết mã viết tay, có một số cách tiếp cận, cách thực hiện. Mỗi nút trong cụm của bạn nên biết về nút khác (trong trường hợp đơn giản nhất). Dữ liệu có thể được nhân rộng theo nhiều cách khác nhau.

Sao chép đồng bộ Ghi chỉ xảy ra trong bộ nhớ cache cục bộ khi ghi gửi tới các nút khác.

Sao chép không đồng bộ. Ghi chú xuất hiện trong nút cục bộ và sau đó sao chép trên các nút khác.

Vô hiệu hóa bộ nhớ cache. Khi dữ liệu được thay đổi, tất cả các nút nhận tín hiệu, làm mất hiệu lực dữ liệu của chúng và đọc lại nó từ cơ sở dữ liệu.

Nó có thể được bỏ khéo léo để thực hiện nó cho mình, bạn cần giao thức đặc biệt (bạn có thể sử dụng JGroups), mà các nút của bạn sẽ sử dụng để trao đổi dữ liệu. Tôi khuyên bạn nên tìm giải pháp sẵn sàng

+0

Cảm ơn bài đăng. Tôi biết về sự kết hợp bộ nhớ cache, nhưng tôi nghĩ rằng đó là một việc quá mức cần thiết cho những gì tôi cần để có thể làm. Tất cả những gì tôi cần chỉ là để có thể gửi các sự kiện giữa các nút ứng dụng của tôi, tốt hơn là sử dụng cơ sở dữ liệu hoặc fileshare như một bus. –

+0

Hãy thử nhóm jgroups. Nó có thể giúp bạn phát các sự kiện giữa các nút. Việc chia sẻ nguồn dữ liệu được chia sẻ không phải là giải pháp tốt nhất. Tùy thuộc vào nhu cầu của bạn tất nhiên – Anton

+0

Nếu jgroups có thể sử dụng tệp hoặc cơ sở dữ liệu thay vì UDP ... –

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