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 )
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
2.8.2 Truy vấn đọc
Đối với truy vấn đọc, có hai loại truy vấn đọc mà điều phối có thể gửi tới một bản
sao; một truy vấn đọc trực tiếp và một truy vấn sửa đọc nền. Số lượng bản sao được liên
hệ bởi một truy vấn đọc trực tiêp được xác định bởi mức độ nhất quán được đưa ra bởi
Client. Truy vấn sửa đọc nền được gửi tới bất cứ bản sao bổ sung nào mà không nhận truy
vấn trực tiếp. Truy vấn sửa đọc đảm bảo rằng hàng được truy vấn được thực hiện nhất
quán ở tất cả các bản ghi.
Do đó, trước tiên nút điều phối lên hệ với các bản sao được chỉ định bởi mức độ
nhất quán. Nút điều phối sẽ gửi những truy vấn tới bản sao mà đang phản hồi nhanh
chóng nhất. Những nút được liên hệ sẽ phản hồi với dữ liệu đã truy vấn; nếu nhiều nút
được liên hệ, thì các hàng ở mỗi bản sao được so sánh trong bộ nhớ để xem liệu chúng có
nhất quán. Nếu chúng không nhất quán, thì bản sao có dữ liệu gần dây nhất (dựa vào
khoảng thời gian) sẽ được nút điều phối sử dụng để chuyển tiếp kết quả về cho Client.
Để đảm bảo rằng tất cả các bản sao đều có phiên bản gần đây nhất của dữ liệu đọc
thường xuyên, thì nút điều phối cũng liên hệ và so sánh dữ liệu ở các bản sao mà không
được truy vấn đọc trực tiếp xem có nhất quán và không bị lỗi thời. Nếu bị lỗi thời thì sẽ
được cập nhật những giá trị được ghi gần đây nhất. Tến trình này đuợc gọi là sửa đọc. Sửa
đọc có thể được cấu hình đối với mỗi họ cột ( sử dụng read_repair_chance), và được cho
phép mặc định.
Ví dụ, trong một cụm với số lượng bản sao là 3, và mức độ nhất quán là
QUORUM, 2 trong 3 bản sao được liên hệ để thực hiện yêu cầu đọc trực tiếp. Giả định
rằng các bản sao được liên hệ có những phiên bản của các hàng khác nhau, thì bản sao có
phiên bản gần đây nhất sẽ trả lại dữ liệu được truy vấn. Bản sao thứ ba được kiểm tra tính
25
nhất quán so với hai bản sao trước, và nếu cần thiết, bản sao gần đây nhất sẽ sinh ra một
lệnh ghi để cập nhật những phiên bản lỗi thời.
2.9 Lập kế hoạch triển khai cụm Cassandra
Khi lập kế hoạch triển khai cụm Cassandra, cần có một ý tưởng tốt về khối lượng
ban đầu của dữ liệu mà chúng ta cần lưu trữ và ước lượng tốt khả năng tải của ứng dụng.
2.9.1 Lựa chọn phần cứng cho cài đặt doanh nghiệp
Với bất cứ ứng dụng nào, việc lựa chọn phần cứng thích hợp phục thuộc vào việc
lựa chọn cân bằng của những tài nguyên sau: bộ nhớ, CPU, ổ cứng, số lượng nút và mạng.
• Bộ nhớ:
Nút Cassandra có càng nhiều bộ nhớ thì hiệu năng đọc càng tốt. Nhiều RAM hơn cho
phép kích cỡ Cache lớn hơn và giảm truy nhập vào / ra ổ cứng đối với lệnh đọc. Nhiều
bộ nhớ RAM hơn cũng cho phép bảng bộ nhớ tổ chức nhiều dữ liệu ghi gần đây hơn.
Bảng bộ nhớ càng lớn thì càng ít số lượng bảng SS bị đẩy vào ổ cứng và ít file quyets
trong suốt quá trình đọc. Số lương RAM lý tưởng phụ thuộc vào kích thước dự đoán
trước được của dữ liệu nóng.
26
- Đối với phần cứng chuyên dụng, RAM có kích thước tối thiểu là 8GB là cần thiết.
DataStax được tư vấn từ 16GB-32GB.
- Khoảng trống heap JAVA nên được thiết lập tối đa là 8GB hoặc bằng ½ bộ nhớ
RAM, thậm chí thấp hơn.
- Đối với môi trường ảo sử dụng tối thiểu là 4GB, như Amazon EC2.
• CPU
Cassandra có tính đồng thời cao và sử dụng nhiều lõi CPU nhất có thể.
- Đối với phần cứng chuyên dụng, bộ vi xử lý 8 lõi là điểm tuyệt vời giữa hiệu năng và
giá
- Đối với những môi trường ảo, xem xét việc sử dụng một nhà cung cấp mà cho phép
CPU có cơ chế truyền loạt như Rackspace Cloud Servers.
• Ổ cứng
Cassandra ghi dữ liệu vào ổ cứng với 2 mục đích:
- Tất cả dữ liệu được ghi vào tệp lưu vết lâu dài
- Khi các ngưỡng được đạt tới, Cassandra đẩy cấu trúc dữ liệu trong bộ nhớ vào các
tệp dữ liệu SSTable để lưu trữ lâu dài.
Bản ghi cam kết nhận được tất cả các lệnh ghi đến một nút Cassandra, nhưng chỉ đọc
trong suốt thời gian nút khởi động. Bản ghi cam kết được giải phóng sau khi dữ liệu
tương ứng được đẩy vào. Nguợc lại, Các lệnh ghi SSTable (tập tin dữ liệu) được xảy
ra một cách không đồng bộ và được đọc trong suốt thời gian Client tìm kiếm. Ngoài
ra, SSTable định kỳ được gắn kết lại. Sự gắn kết lại cải thiện hiệu năng bằng việc nối
và ghi lại dữ liệu và bỏ qua dữ liệu cũ. Tuy nhiên, trong suốt quá trình gắn kết lại
(hoặc sửa nút) sự tận dụng đĩa và kích thước thư mục dữ liệu có thể tăng lên đáng kể.
Với lý do này, DataStax tư vấn để trống ra một số lượng khoảng trống đĩa rảnh rỗi cho
mỗi nút (50% [trường hợp xấu nhất] cho gắn kết lại từng cấp, 10% cho gắn kết lại san
lấp).
• Số lượng nút
Số lượng lớn dữ liệu trên mỗi đĩa trong mảng không quan trọng bằng kích thước
tổng mỗi nút. Việc sử dụng số lượng lớn của các nút nhỏ hơn tốt hơn việc sử dụng
ít các nút lớn hơn bởi vì sự cố thắt nút cổ chai trêncác nút lớn trong suốt quá trình
gắn kết.
• Mạng
Vì Cassandra là nơi lưu trữ dữ liệu phân tán, nên nó đặt tải trên mạng để xử lý các
truy vấn đọc/ghi và các bản sao dữ liệu qua các nút mạng. Cassandra phải chắc
27