2013-01-02 24 views
5

Tôi đang tìm một cách hiệu quả để đăng ký các sự kiện trong riak từ nút. Tôi muốn có thể được thông báo về những thay đổi trên một mục từ riak.Nhận thông báo về thay đổi cơ sở dữ liệu: có thể xem các mục nhập trong riak không?

Ví dụ khi một máy chủ node.js cập nhật mục nhập, một máy chủ khác sử dụng và xem mục nhập đó sẽ nhận được mục cập nhật hoặc thông báo về cập nhật của nó tự động.

Nếu điều này là không thể, có một hệ thống nhắn tin hiệu quả có thể được sử dụng hiệu quả trên các máy chủ node.js không?

Trả lời

5

Riak thực hiện những gì được gọi là Pre and Post commit hooks. Sau cam kết, sẽ được kích hoạt khi ghi thành công xảy ra (và có lẽ là những gì bạn muốn) chỉ có thể được viết bằng mã Erlang và Riak cần được cấu hình để kích hoạt hàm Erlang tùy chỉnh của bạn, làm thuộc tính trên nhóm thích hợp.

Tùy thuộc vào nhu cầu và quy mô ứng dụng của bạn, có thể có một số tùy chọn để thiết lập Erlang của bạn thông báo cho (các) máy chủ Node.js của bạn. Nó sẽ tương đối dễ dàng để viết một hàm Erlang có thể gửi một yêu cầu HTTP tới máy chủ Node.js của bạn, nhưng nó mang khá nhiều chi phí, có thể rất không phù hợp với ứng dụng của bạn. Tốt hơn nhiều, nhưng hơi phức tạp hơn, sẽ sử dụng hệ thống pub/sub như được cung cấp bởi Redis hoặc ZeroMQ (chỉ để đặt tên cho một cặp vợ chồng), được thử nghiệm và chứng minh để hoạt động rất tốt dưới tải nặng. Nếu bạn muốn đi với ZeroMQ, hãy xem this guide về cách triển khai pub/sub rất đáng tin cậy.

Cả hai công cụ nhắn tin này, cũng như nhiều công cụ khác, có thể thông báo cho bản cập nhật Node.js của bạn về các mục được theo dõi từ Riak hoặc Node.js có hiệu quả sửa đổi dữ liệu. Tùy chọn thứ hai (Node.js to Node.js) có thể đơn giản hơn vì nó không yêu cầu bạn phải học Erlang nếu bạn không quen với nó. Cả hai công cụ đều có thư viện Node.js được rất tốt thử nghiệm:

Và nếu bạn đã sử dụng chúng để gửi đi các thông báo từ bên trong Riak như hậu cam kết móc, đây là những trình điều khiển erlang tương ứng:

+0

Tôi nghĩ ZeroMQ trên các phiên bản node.js không phải là cách để đi cho tôi. Ít nhất là không cho dự án hiện tại. Tôi sẽ xem xét các móc gắn trước/sau và nó có thể có ích ở đó. Cảm ơn! – Coyote

+0

Nếu câu trả lời đó là những gì bạn đang tìm kiếm, bạn nên đánh dấu nó như vậy! – matehat

+0

Tôi sẽ, tôi đang chờ đợi để thử điều này trên một quy mô lớn hơn hiện đang dự án đang bị giữ. – Coyote

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