2015-06-03 17 views
5

(Tôi không thể tìm thấy một nguồn tốt giải thích điều này, vì vậy nếu nó có sẵn ở nơi khác, bạn chỉ có thể chỉ cho tôi với nó)Hazelcast: Các câu hỏi liên quan đến tính thống nhất đa nút

  1. Hazelcast sao chép dữ liệu trên tất cả các nút theo cụm. Vì vậy, nếu dữ liệu được thay đổi trong một trong các nút, thì nút có cập nhật bản sao của chính nó và sau đó truyền nó sang các nút khác không?

  2. Tôi đọc ở đâu đó rằng mỗi dữ liệu được sở hữu bởi một nút, Hazelcast xác định chủ sở hữu như thế nào? Chủ sở hữu có được xác định cho mỗi cơ sở dữ liệu hoặc mỗi khóa trong cơ sở dữ liệu không?

  3. Hazelcast có tuân theo nguyên tắc "cuối cùng nhất quán" không? (Khi dữ liệu được truyền qua các nút, có thể có một cửa sổ nhỏ trong đó dữ liệu có thể không nhất quán giữa các nút)

  4. Xung đột được xử lý như thế nào? (Hai nút cập nhật cùng một chìa khóa-giá trị cùng một lúc)

Trả lời

8
  1. Hazelcast không tái tạo (với ngoại lệ của ReplicatedMap, rõ ràng ;-)) nhưng dữ liệu phân vùng. Điều đó có nghĩa là bạn có một nút sở hữu một khóa đã cho. Tất cả các bản cập nhật cho khóa đó sẽ chuyển đến chủ sở hữu và anh ấy thông báo các bản cập nhật có thể có.

  2. Chủ sở hữu được xác định bởi hàm băm ổn định bằng cách sử dụng công thức sau:

partitionId = hash(serialize(key)) % partitionCount

  1. Kể từ khi chỉ có một chủ sở hữu cho mỗi khoá nó không phải là cuối cùng nhất quán nhưng nhất quán bất cứ khi nào các hoạt động đột biến được trả về. Tất cả các hoạt động đọc sau sẽ thấy giá trị mới. Trong hoàn cảnh hoạt động bình thường. Khi bất kỳ loại lỗi nào xảy ra (mạng, máy chủ, ...), chúng tôi chọn tính khả dụng trên tính nhất quán và có thể xảy ra sao lưu chưa được cập nhật được kích hoạt lại (đặc biệt nếu bạn sử dụng bản sao lưu không đồng bộ).

  2. Xung đột có thể xảy ra sau khi phân tách khi nhóm chia tách hợp nhất lại. Đối với trường hợp này, bạn phải cấu hình (hoặc sử dụng mặc định) MergePolicy để xác định hành vi về cách các phần tử xung đột được hợp nhất với nhau hoặc một trong hai thành phần nào thắng.

+1

Cảm ơn bạn đã phản hồi. Tôi có một câu hỏi tiếp theo. Giả sử, có một nút - nút A. 1. Bây giờ, một nút B khác kết hợp cụm và chèn bản đồ với một số khóa-giá trị. Tôi cho rằng B sở hữu bản đồ và các phím mà nó đã chèn vào. 2. Bây giờ B thoát khỏi cụm. Bây giờ Hazelcast sẽ sao chép các khóa trong A, là nút còn lại duy nhất. 3. Bây giờ C tham gia vào cụm và đọc các phím. Hazelcast truy xuất khóa-giá trị từ A. Điều này có đúng không? – gammay

+2

Vì bảng phân vùng thay đổi bất cứ khi nào một nút tham gia/rời khỏi dữ liệu sẽ được di chuyển lại giữa các nút cụm. Vì vậy, một nút không sở hữu các phím đặt của mình nhưng các khóa luôn được phân phối. – noctarius

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