2011-11-16 36 views
6

xem xét sau Cassandra thiết lập:Cassandra - tải phía khách hàng cân

  • vòng 6 nút: A, B, D, E, F, G
  • sao chép yếu tố: 3
  • phân vùng: RandomPartitioner
  • chiến lược
  • vị trí: SimpleStrategy

My Test-Cột được lưu trữ trên nút B và nhân rộng đến các hạch D và E.

012.

Bây giờ tôi có nhiều quy trình java đọc Test-Cột máng Hector API của tôi (tiết kiệm) với đọc CL.ONE

Có hai khả năng:

  1. Hector sẽ chuyển tiếp tất cả các cuộc gọi đến nút B, bởi vì B là dữ liệu chính
  2. Hector sẽ tải số dư đọc cuộc gọi máng nút B, D và E (chính và sao chép). Trong trường hợp này, cột thử nghiệm của tôi sẽ được tải vào bộ đệm trên mỗi cá thể Cassandra.

Cái nào là 1) hoặc 2)?

Trân trọng cảm ơn, Maciej

Trả lời

4

Tôi tin rằng nó là: 3) Cassandra chuyển tiếp tất cả các cuộc gọi đến nút gần nhất mà còn sống, trong đó "gần gũi" được xác định bởi Snitch hiện đang được sử dụng (được đặt trong cassandra. yaml).

  • SimpleSnitch chọn nút gần nhất trên vòng mã thông báo.
  • AbstractNetworkTopologyBắt đầu và tìm kiếm trước khi cố gắng chọn các nút trong cùng một giá, sau đó các nút trong cùng một trung tâm dữ liệu.

Nếu DynamicSnitch được bật, nó tự động điều chỉnh độ gần của nút được trả về bởi mấu chốt cơ bản, theo hiệu suất gần đây của nút.

Xem Cassandra ArchitectureInternals trong "Đọc đường dẫn" để biết thêm thông tin.

2

(Đã trả lời câu trả lời của Theodore vì câu trả lời đó). Một số chi tiết bổ sung:

Chúng tôi không làm gì ở phía hector để định tuyến lưu lượng truy cập đến một nút nhất định dựa trên khóa (chưa). Điều này được gọi là "lựa chọn trung gian của khách hàng" trong phần 6.2 của bài báo Amazon Dynamo. Nghiên cứu dường như chỉ ra rằng nó thực sự chỉ hữu ích cho các cụm rất lớn bằng cách cắt bỏ một hop mạng.

Nhược điểm sẽ là bản sao của tính toán băm và tìm kiếm phân vùng trên máy khách.

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