2011-01-17 38 views
8

Có cách nào để đồng bộ hóa ứng dụng bằng cách sử dụng chức năng được xây dựng trong Cassandra?Khóa loại trừ lẫn nhau Cassandra (đồng bộ)

Tôi cần thực hiện một số thao tác và các thao tác đó cần được đồng bộ hóa với tất cả các ứng dụng khách khác (loại trừ lẫn nhau).

Trong RDBMS tôi có thể khóa toàn bộ bảng hoặc chuẩn bị bảng đặc biệt cho mục đích đồng bộ hóa và sử dụng SELECT ... FOR UPDATE on it.

Tôi có thể đạt được điều này với Cassandra mà không có ứng dụng của bên thứ ba nào không? Nếu không phải là cách tốt nhất để làm điều đó là gì? Các ngôn ngữ thích hợp là Java và Python.

Trả lời

8

Không thể khóa toàn bộ (hoặc tập con của một) cột familiy mà không có thư viện của bên thứ ba như Apache ZooKeeper.

tôi có lẽ sẽ bắt đầu xem xét Domic Williams cages trước khi bắt đầu lăn riêng phân phối cơ chế khóa của tôi

+1

Tôi không cần khóa gia đình cột. SELECT FOR UPDATE tương đương sẽ là tốt nhất. Tôi sẽ kiểm tra ZooKeeper – Daimon

+3

Nó cũng khá có khả năng là bạn có thể tránh sự cần thiết cho điều này ở tất cả bằng cách điều chỉnh mô hình dữ liệu của bạn. Có lẽ điều đó sẽ tạo ra một câu hỏi SO tốt? –

+2

Không, tôi cần kiến ​​trúc xử lý phân tán và Cassandra làm lưu trữ dữ liệu. Tôi cần đồng bộ hóa một số thao tác để ngăn không cho cùng một dữ liệu được xử lý bởi nhiều máy. – Daimon

2

Nếu bạn đang cập nhật một hàng trong một gia đình cột, nó là nguyên tử. Nhưng nó sẽ không hoạt động như chọn để cập nhật. Bạn có lẽ nên xem lại mô hình dữ liệu của bạn với nhiều tiêu chuẩn hóa trong tâm trí, do đó bạn sẽ không cần phải lo lắng về việc đồng bộ hóa.

0

Tôi cũng đang tìm cách để thực hiện đồng bộ hóa với cassandra, nhưng theo như tôi biết, nó không cung cấp cơ chế để thực hiện mutexes.

Tuy nhiên, memcached có hoạt động cas nguyên tử (kiểm tra và đặt), có thể được sử dụng để triển khai mutex. Nó cũng có các trình khách python và java.

Vì vậy, bạn có thể sử dụng memcached để thực hiện mutexes cho syncronization và đọc/ghi dữ liệu với mức độ nhất quán đại biểu trong cassandra để đảm bảo rằng viết mới nhất luôn được trả về khi đọc.

Có ai có kinh nghiệm về việc triển khai mutex với memcached không?

+0

Điều này có thể là một chút không ổn định nếu một số mutex là đỏ bừng hoặc tai nạn máy chủ memcached mà sẽ phát hành khóa quá sớm. Tuy nhiên tôi không chắc chắn làm thế nào có thể xảy ra là khi khóa được thực hiện chỉ trong vài giây ở mức tối đa. Tính ổn định phụ thuộc rất nhiều ứng dụng, làm thế nào mutexes được sử dụng. –

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