2012-05-02 41 views
18

Tôi hơi bối rối về các nút hạt Cassandra và cách khách hàng có nghĩa là kết nối với cụm sao. Tôi dường như không thể tìm thấy thông tin này trong tài liệu.Các nút hạt Cassandra và các máy khách kết nối với các nút

Khách hàng chỉ chứa danh sách nút hạt giống và mỗi nút đại biểu cho một máy chủ mới để khách hàng kết nối với? Các nút hạt giống chỉ thực sự cho khám phá nút đến nút chứ không phải là nút đặc biệt cho các máy khách?

Mỗi khách hàng có nên sử dụng một mẫu nhỏ các nút ngẫu nhiên trong DC để kết nối không?

Hoặc, mỗi khách hàng có nên sử dụng tất cả các nút trong DC không?

Trả lời

32

Trả lời câu hỏi của riêng tôi:

Hạt

Từ FAQ:

Hạt giống được sử dụng trong quá trình khởi động để khám phá cluster.

Cũng từ DataStax documentation trên "Gossip":

Hạt giống nút chỉ định không có mục đích nào khác hơn bootstrapping quá trình ngồi lê đôi mách cho các nút mới gia nhập nhóm. Các nút hạt giống không phải là một điểm duy nhất của lỗi, cũng không có bất kỳ mục đích đặc biệt nào khác trong các hoạt động cụm ngoài việc khởi động các nút.

Từ những chi tiết này có vẻ như hạt giống không có gì đặc biệt cho khách hàng.

Clients

Từ DataStax documentation trên yêu cầu khách hàng:

Tất cả các nút trong Cassandra là đồng nghiệp. Một khách hàng đọc hoặc viết yêu cầu có thể đi đến bất kỳ nút nào trong cụm. Khi khách hàng kết nối với một nút và đưa ra yêu cầu đọc hoặc viết, nút đó đóng vai trò là điều phối viên cho hoạt động khách hàng cụ thể đó.

Công việc của điều phối viên là hoạt động như một proxy giữa ứng dụng khách và các nút (hoặc bản sao) sở hữu dữ liệu được yêu cầu . Điều phối viên xác định các nút nào trong vòng phải nhận yêu cầu dựa trên phân vùng được định cấu hình cụm và chiến lược vị trí sao chép.

Tôi thu thập rằng nhóm các nút mà khách hàng kết nối với chỉ có thể là một số ít các nút (ngẫu nhiên?) Trong DC để cho phép các lỗi tiềm ẩn.

+0

FYI, liên kết FAQ trong câu trả lời được chấp nhận hiện nay thay thế bởi http://cassandra.apache.org/doc/latest/faq/index.html # hạt giống là gì. – swifthorseman

8

Câu trả lời của bạn là đúng. Điều duy nhất tôi sẽ thêm vào là bạn nên sử dụng cùng một danh sách hạt giống (ví dụ: trong cassandra.yaml) của bạn trên cụm, như một loại "thực hành tốt nhất". Giúp lan truyền thông tin tuyên truyền ở mức giá tốt đẹp, thường xuyên, vì hạt giống được xử lý (rất tối thiểu) khác nhau theo mã tin đồn (xem http://wiki.apache.org/cassandra/ArchitectureGossip).

+0

Cảm ơn lời khuyên, paul :) –

12

nút hạt phục vụ hai mục đích.

  1. chúng hoạt động như một nơi để các nút mới tự thông báo cho một cụm. do đó, mà không có ít nhất một nút hạt giống trực tiếp, không có nút mới nào có thể tham gia cụm vì chúng không biết cách liên hệ với các nút không phải hạt để nhận trạng thái cụm.
  2. nút hạt giống đóng vai trò là điểm nóng tin đồn. kể từ khi các nút gossip thường xuyên hơn với hạt giống hơn không hạt giống, các hạt giống có xu hướng có thêm thông tin hiện tại, và do đó toàn bộ cụm có thông tin hiện tại hơn. đây là lý do bạn nên không làm cho tất cả các nút hạt là. tương tự, đây cũng là lý do tại sao tất cả các nút trong một trung tâm dữ liệu nhất định phải có cùng một danh sách các nút hạt trong tệp cassandra.yaml của chúng. thông thường, 3 nút hạt trên mỗi trung tâm dữ liệu là lý tưởng.

các điểm tiếp xúc khách hàng cassandra chỉ đơn giản cung cấp cấu trúc liên kết cụm cho khách hàng, sau đó khách hàng có thể kết nối với bất kỳ nút nào trong cụm. như vậy, chúng tương tự như các nút hạt giống và việc sử dụng các nút giống nhau cho cả hạt và địa chỉ liên hệ của khách hàng là hợp lý. tuy nhiên, bạn có thể định cấu hình một cách an toàn bao nhiêu điểm tiếp xúc khách hàng của cassandra như bạn thích. sự cân nhắc duy nhất khác là nút đầu tiên mà một liên hệ khách hàng đặt mối quan hệ trung tâm dữ liệu của nó, vì vậy bạn có thể đặt hàng các điểm liên lạc của mình để thích một trung tâm dữ liệu nhất định.

để biết thêm chi tiết về các điểm tiếp xúc thấy câu hỏi này: Cassandra Java driver: how many contact points is reasonable?

+0

Bạn đã viết: "hạt giống có xu hướng có thêm thông tin hiện tại, và do đó toàn bộ cụm có thông tin hiện tại hơn. Đây là lý do bạn không nên tạo tất cả các hạt nút." Nó không phải là hoàn toàn rõ ràng, tại sao một người không nên làm cho tất cả các nút hạt giống nút sau đó? Hoặc nó nên được đọc như thế này: "nút gossip thường xuyên hơn với hạt giống hơn không hạt ... đây là lý do bạn không nên làm cho tất cả các hạt nút."? Trong trường hợp đó, lý do có tăng lưu lượng giữa các nút không? – Richlv

+1

đây là một ví dụ quá đơn giản để làm cho toán dễ dàng. giả sử bạn có một cụm gồm 10 nút và mỗi nút đồng bộ với 2 nút khác mỗi phút. 1 đồng bộ là với một nút hạt giống và 1 với bất kỳ nút nào. Bây giờ, hãy tưởng tượng một trong các nút không phải hạt giống có bản cập nhật để chia sẻ với cụm. nếu bạn có 1 nút hạt giống, sau đó nó sẽ được cập nhật phút này và mọi người khác sẽ được cập nhật vào phút tiếp theo. nếu bạn có 9 nút hạt giống, chỉ có hai nút sẽ được cập nhật trong phút này và chỉ tối đa 8 nút sẽ có bản cập nhật vào phút tiếp theo. một nút được đảm bảo không được cập nhật. –

+0

Ah, có vẻ như đi cùng với liên kết @ the-paul được chia sẻ trong câu trả lời khác - https://wiki.apache.org/cassandra/ArchitectureGossip#Gossiper_implementation. Rephrasing một chút: "Nếu nút gossiped đầu tiên không phải là hạt giống, tin đồn đến hạt giống ngẫu nhiên". Cảm ơn :) – Richlv

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