Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.52 MB, 50 trang )
Khi quyết định có bao nhiêu bản sao để cấu hình trong mỗi trung tâm dữ liệu, xem
xét chính là (1) đảm bảo dữ liệu được đọc tốt tại mỗi trung tâm dữ liệu, không có trễ, và
(2) kịch bản khi thất bại.
Hai cách phổ biến nhất để cấu hình các cụm trong nhiều trung tâm dữ liệu là:
Tạo hai bản sao trong mỗi trung tâm dữ liệu. Cấu hình này đảm bảo khi 1 nút đơn
lẻ trong 1 nhóm nhân bản bị lỗi vẫn cho phép đọc được dữ liệu (ở một mức độ nhất
quán ONE).
Tạo ba bản sao trong mỗi trung tâm dữ liệu. Cấu hình này sử dụng phục vụ các nhu
cầu truy cập thời gian thực.
Trong Cassandra khái niệm trung tâm dữ liệu và nhóm nhân bản là tương tự nhau, nhóm
nhân bản là nhóm các nút được cấu hình lại với nhau phục vụ cho việc nhân bản.
Với NetworkTopologyStrategy, vị trí bản sao được xác định độc lập trong mỗi trung tâm
dữ liệu (hoặc nhóm nhân bản). Bản sao đầu tiên tại mỗi trung tâm dữ liệu được đặt theo
các phân vùng (giống như với SimpleStrategy). Bản sao sau đó trong cùng một trung tâm
dữ liệu được xác định bằng cách tiến theo chiều kim đồng hồ cho đến khi một nút ở 1
rack khác từ nhân bản trước đó được tìm thấy. Nếu không có nút như vậy, bản sao bổ
sung sẽ được đặt trong cùng một rack. NetworkTopologyStrategy ưu tiên đặt các bản sao
lên các rack riêng biệt nếu có thể. Các nút trong cùng một rack (hoặc tương đương nhóm
vật lý) có thể dễ dàng lỗi cùng 1 thời gian do nguồn, lỗi phần cứng hoặc các vấn đề mạng.
Dưới đây là một ví dụ về cách NetworkTopologyStrategy đặt bản sao giữa hai trung tâm
dữ liệu với 4 nhân tố nhân bản (hai bản sao ở Trung tâm dữ liệu 1 và hai bản sao trong
Trung tâm dữ liệu 2):
18
19
2.7 Snitches
Snitch là một thành phần cấu hình của một cụm Cassandra được sử dụng để xác
định các nút được nhóm lại với nhau như thế nào trong cấu trúc liên kết mạng tổng thể
(rack và các nhóm trung tâm dữ liệu). Cassandra sử dụng thông tin này để định tuyến các
yêu cầu từ 1 nút một cách hiệu quả nhất có thể. Snitch không ảnh hưởng đến các yêu cầu
giữa các ứng dụng của khách hàng và Cassandra (Nó không kiểm soát client đang kết nối
đến nút nào).
Snitches được cấu hình cho một cụm Cassandra trong file cấu hình cassandra.yaml.
Tất cả các nút trong một cluster nên sử dụng cùng một cấu hình snitch. Khi gán thẻ bài,
gán chúng luân phiên (so le) cho các Rack, ví dụ: rack1, rack2, rack3, rack1, rack2,
rack3...
20
Các dạng Snitch
SimpleSnitch (Snitch đơn giản)
SimpleSnitch (mặc định) là thích hợp nếu bạn không có thông tin về rack hoặc
trung tâm thông tin dữ liệu có sẵn. Triển khai trung tâm dữ liệu duy nhất (hoặc một vùng
trong đám mây công cộng) thường rơi vào loại này. Nếu sử dụng snitch, dùng
replication_factor = <#> khi xác định phạm vi khóa của bạn. Snitch này không xác định
được thông tin về trung tâm dữ liệu hoặc rack.
DseSimpleSnitch
DseSimpleSnitch được sử dụng khi triển khai DataStax Enterprise (DSE). Nó phù
hợp với cấu hình Hadoop điều phối phân tích dữ liệu và các ứng dụng thời gian thực. Nó
có thể được sử dụng cho các cụm DSE hỗn hợp nằm trong một trung tâm dữ liệu vật lý.
Nó cũng có thể được sử dụng cho cụm DSE đa dữ liệu có chính xác 2 trung tâm dữ liệu,
với tất cả các nút phân tích trong cùng một trung tâm dữ liệu và tất cả các nút Cassandra
thời gian thực trong một trung tâm dữ liệu còn lại. Nếu sử dụng snitch, sử dụng Analytics
hoặc Cassandra là tên trung tâm dữ liệu mặc định khi định nghĩa khoảng không gian khóa.
21
RackInferringSnitch
RackInferringSnitch xác đinh cấu trúc liên kết của mạng bằng cách phân tích địa
chỉ IP của các nút. Snitch này giả định rằng các octet thứ hai xác định các trung tâm dữ
liệu chứa nút đó, và các octet thứ ba xác định các rack.
PropertyFileSnitch
PropertyFileSnitch xác định vị trí của các nút bằng cách sử dụng định nghĩa của
người dùng trong file: cassandra-topology.properties. Snitch này là tốt nhất khi IP của các
nút là không thống nhất hoặc bạn có yêu cầu nhân bản phức tạp. Xem Cấu hình
PropertyFileSnitch để biết thêm thông tin. Dùng Snitch này bạn có thể đặt tên trung tâm
dữ liệu của mình theo tên mong muốn được định nghĩa trong flie: cassandratopology.properties.
EC2Snitch
EC2Snitch dùng cho triển khai các cụm trên Amazon EC2, nơi mà tất cả các
cluster dàn trải trên nhiều vùng. Thay vì sử dụng địa chỉ IP của nút để suy ra vị trí nút,
Snitch này sử dụng API AWS để yêu cầu khu vực và phạm vi còn trống cho 1 nút. Khu
vực này được coi là trung tâm dữ liệu và các phạm vi còn trống chính là các rack trong
trung tâm dữ liệu. Ví dụ, nếu một nút ở trung tâm dữ liệu có tên us-east-1a, us-east thì vị
trí rack là 1a.
Dynamic Snitching (Snitching động)
Theo mặc định, tất cả snitches cũng sử dụng một lớp snitch động giám sát độ trễ
khi đọc, định tuyến các yêu từ client tránh xa các nút hiệu năng thấp. Snithc động được
kích hoạt theo mặc định, và được khuyến khích sử dụng trong tất cả các phạm vi.
Snitching động được cấu hình trong file cassandra.yaml cho mỗi nút.
22
2.8 Yêu cầu từ phía Client trong Cassandra
Các nút trong Cassandra là ngang hàng. 1 client đọc hay viết các yêu cầu có thể
làm việc với bất kỳ nút nào trong cụm. Khi một client kết nối đến một nút và đưa ra các
yêu cầu đọc hoặc viết, nút đóng vai trò là điều phối viên cho các hoạt động đó.
Điều phối viên hoạt động như một proxy giữa các ứng dụng khách hàng và các nút
(hoặc bản sao) chứa các dữ liệu được yêu cầu. Điều phối viên xác định nút nào trong vòng
sẽ nhận được các yêu cầu dựa trên cấu hình phân vùng cụm và chiến lược đặt vị trí bản
sao.
2.8.1 Yêu cầu ghi
Để ghi dữ liệu, điều phối viên gửi yêu cầu ghi cho tất cả các bản sao sở hữu hàng
đang được ghi. Miễn là tất cả các nút sao đang hoạt động và rảnh, chúng sẽ ghi dựa vào
consistency level trong yêu cầu của client. Mức độ nhất quán ghi xác định có bao nhiêu
nút nhân bản phải đáp ứng yêu cầu thì việc ghi mới được coi là thành công.
Ví dụ, trong một trung tâm dữ liệu của 1 cụm có 10 nút với nhân tố nhân bản là 3,
yêu cầu ghi sẽ đi đến tất cả 3 nút sở hữu hàng yêu cầu. Nếu mức độ thống nhất ghi theo
quy định của cliet là ONE, nút đầu tiên hoàn tất việc ghi sẽ báo về cho điều phối viên, sau
điều phối viên sẽ nhắn tin thành công lại cho client. Một mức độ nhất quán ONE có nghĩa
rằng nó có thể có 2 trong 3 bản sao có thể bỏ lỡ việc ghi nếu chúng đang down tại thời
điểm yêu cầu được đưa ra. Nếu 1 bản sao bỏ việc ghi, hàng dữa liệu đó sẽ được thực hiện
phù hợp sau đó thông qua một cơ chế tự sửa lỗi của Cassandra.
23
Truy vấn ghi tới trung tâm đa dữ liệu
Trong sự triển khai trung tâm đa dữ liệu, Cassandra tối ưu hiệu năng ghi bằng việc
chọn một nút điều phối trong mỗi trung tâm dữ liệu từ xa để xử lý những truy vấn tới các
bản sao trong trung tâm dữ liệu. Nút điều phối được liên hệ bởi ứng dụng Client chỉ yêu
cầu chuyển tiếp truy vấn ghi tới mỗi nút trong trung tâm dữ liệu từ xa.
Nếu sử dụng mức độ nhất quán là 1 hoặc LOCAL_QUORUM, thì chỉ những nút
trong cùng trung tâm dữ liệu với nút điều phối phải phản hồi lại truy vấn của Client là
truy vấn thành công. Theo cách này thì vị trí địa lý không ảnh hưởng tới thời gian phản
hồi truy vấn Client.
24