2008-12-24 18 views
7

Vấn đề: cách cung cấp dịch vụ phụ/quán rượu được phân phối, có thể mở rộng và chống thảm họa với WCF.WCF Pub/Sub với bộ nhớ đệm của người đăng ký

chi tiết:

Lưu ý rằng phương pháp này đang được xem xét trong Ngoài các giải pháp tin nhắn/middleware như Tibco EMS.

Tôi đã xem xét WCF, đặc biệt là cách nó có thể được sử dụng để cung cấp pub/sub. Về chủ đề này bài viết này là rất tốt: WCF pub-sub.

Trong bài viết, tác giả cố gắng giải quyết vấn đề về việc có nhiều nhà xuất bản (giống như một lớp dịch vụ được chia tỷ lệ trên nhiều hộp). Vấn đề là nếu khách hàng A đăng ký với Publisher A nhưng Publisher B muốn xuất bản sự kiện, nhà xuất bản B sẽ không biết về khách hàng A. tức là không ai nói với nhà xuất bản B rằng khách hàng A muốn được thông báo về các sự kiện. Tác giả đề xuất một quán rượu/dịch vụ phụ như một giải pháp. Quán rượu/dịch vụ phụ sẽ tập trung lưu trữ các đăng ký. Tuy nhiên, nếu tôi muốn làm cho các dịch vụ pub/sub thảm họa kháng bằng cách có một trung/kép pub/sub dịch vụ sau đó tôi có cùng một vấn đề ban đầu.

Vì vậy, tôi nghĩ rằng có một vài giải pháp cho vấn đề:

  1. chi tiết cửa hàng thuê bao trong một bộ nhớ cache phân phối (xem câu hỏi: q1q2).
  2. Lưu trữ chi tiết người đăng ký trong cơ sở dữ liệu/hệ thống tệp trung tâm.

Ai có thể nghĩ ra bất kỳ giải pháp nào khác (nghĩa là tôi đã không bỏ lỡ một số tính năng kỳ diệu tuyệt vời của WCF?) Mọi nhận xét được đánh giá cao.

Trả lời

3

Tôi gặp vấn đề tương tự và tôi đã nghiên cứu rất nhiều về vấn đề này. Vấn đề thực sự đơn giản. Bạn muốn giữ một số trạng thái tập trung, nhưng theo cách phân tán. Tôi thấy rằng cách tốt nhất để đạt được điều này là sử dụng bộ nhớ cache được phân phối. Nhìn vào vận tốc ví dụ. Không có giải pháp WCF gốc mà tôi biết có thể giải quyết vấn đề quản lý nhà nước. Tôi thậm chí đã nhìn vào các dịch vụ bền vững, nơi quản lý nhà nước được xử lý bởi WCF, tuy nhiên không thích hợp cho một quán rượu/dịch vụ phụ, bởi vì nhà nước cần phải được tập trung cho tất cả các kết nối khách hàng. Lưu trữ dữ liệu trong cơ sở dữ liệu cũng là một lựa chọn, nhưng chi phí là nhu cầu cho cơ sở dữ liệu, và thậm chí với cơ sở dữ liệu bạn có thể có một điểm thất bại nếu cơ sở dữ liệu không được tập hợp nhiều máy. Cuối cùng, tôi thấy nó thực sự là tốn kém để thực hiện một cái gì đó với số điểm không thất bại và nếu bạn quyết định đến đó sau đó hãy xem Azure, tương lai của lưu trữ là trên đám mây, Azure dịch vụ sẽ được hoàn toàn có thể mở rộng và phân phối, nhưng chúng tôi chưa có.

0

Tôi nghĩ WCF chưa đến đó. Những gì bạn cần là một nhà môi giới xử lý tất cả các chi tiết này cho bạn để bạn có thể thực hiện logic kinh doanh của bạn. Có một vài cái rất tốt ngoài đó như ActiveMQ. Nếu bạn cần dàn nhạc thì có lẽ bạn sẽ muốn sử dụng một chiếc xe buýt mà cũng có thể ngồi trên đầu trang của một nhà môi giới. Tôi nghĩ WCF là tuyệt vời nhưng để cố gắng và làm cho nó thành một cái gì đó mà không phải là, không phải là một ý tưởng tốt.