Cassandra ArchiYếu tố kiến trúc & nhân rộng
⚡ Tóm tắt thông minh
Cassandra Kiến trúc này phân phối dữ liệu trên các nút ngang hàng mà không có điểm lỗi duy nhất, sử dụng thuật toán giao tiếp lan truyền (gossip) để phối hợp và sao chép dữ liệu để đảm bảo tính bền vững. Trang này bao gồm mọi thành phần, cả chiến lược sao chép, mức độ nhất quán và các đường dẫn ghi và đọc nội bộ.

Cassandra được thiết kế để xử lý Dữ Liệu Lớn.. CassandraTính năng chính của nó là lưu trữ dữ liệu trên nhiều nút mà không có điểm lỗi nào.
Nguyên nhân của loại này CassandraKiến trúc của 's là lỗi phần cứng có thể xảy ra bất cứ lúc nào. Bất kỳ nút nào cũng có thể ngừng hoạt động. Trong trường hợp lỗi, dữ liệu được lưu trữ trong nút khác có thể được sử dụng. Do đó, Cassandra được thiết kế theo kiến trúc phân tán.
Cassandra lưu trữ dữ liệu trên các nút khác nhau với kiến trúc phân tán ngang hàng.
Tất cả các nút trao đổi thông tin với nhau bằng cách sử dụng Giao thức tin đồn. Chuyện phiếm là một giao thức trong Cassandra qua đó các nút có thể giao tiếp với nhau.
Các thành phần của Cassandra Archikiến trúc
Có các thành phần sau trong Cassandra Archikiến trúc:

Sơ đồ trên thể hiện sự lồng ghép các thành phần: các nút nằm bên trong một trung tâm dữ liệu, các trung tâm dữ liệu nằm bên trong một cụm máy chủ, và nhật ký cam kết, bảng bộ nhớ và bảng SSTable nằm bên trong mỗi nút riêng lẻ.
Node
Nút là nơi lưu trữ dữ liệu. Nó là thành phần cơ bản của Cassandra.
Trung tâm dữ liệu
Một tập hợp các nút được gọi là trung tâm dữ liệu. Nhiều nút được phân loại là trung tâm dữ liệu.
Cluster
Cụm là tập hợp của nhiều trung tâm dữ liệu.
Nhật ký cam kết
Mọi thao tác ghi đều được ghi vào Nhật ký cam kết. Nhật ký cam kết được sử dụng để khôi phục sự cố.
bảng ghi nhớ
Sau khi dữ liệu được ghi vào Nhật ký cam kết, dữ liệu được ghi vào bảng Mem. Dữ liệu được ghi tạm thời vào bảng Mem.
SSBảng
Khi Mem-table đạt đến một ngưỡng nhất định, dữ liệu sẽ được ghi vào một tập tin SSTable trên đĩa. SSTable là bất biến, vì vậy một bản cập nhật sẽ ghi một phiên bản mới thay vì chỉnh sửa phiên bản cũ, và một quy trình nền gọi là nén (compaction) sau đó sẽ hợp nhất các phiên bản đó và loại bỏ các hàng bị thay thế.
Sao chép dữ liệu trong Cassandra
Vì sự cố phần cứng có thể xảy ra hoặc liên kết có thể ngừng hoạt động bất kỳ lúc nào trong quá trình xử lý dữ liệu nên cần có giải pháp để cung cấp bản sao lưu khi sự cố xảy ra. Vì vậy, dữ liệu được sao chép để đảm bảo không có điểm lỗi nào.
Cassandra đặt bản sao dữ liệu trên các nút khác nhau dựa trên hai yếu tố này.
- Nơi đặt bản sao tiếp theo được xác định bởi Chiến lược nhân rộng.
- Trong khi tổng số bản sao được đặt trên các nút khác nhau được xác định bởi Yếu tố sao chép.
Một yếu tố sao chép có nghĩa là chỉ có một bản sao dữ liệu duy nhất trong khi ba yếu tố sao chép có nghĩa là có ba bản sao dữ liệu trên ba nút khác nhau.
Để đảm bảo không có điểm thất bại duy nhất, hệ số nhân rộng phải là ba.
Có hai loại chiến lược sao chép trong Cassandra.
Chiến lược đơn giản trong Cassandra
Chiến lược đơn giản được sử dụng khi bạn chỉ có một trung tâm dữ liệu. SimpleStrategy đặt bản sao đầu tiên vào nút được phân vùng chọn. Sau đó, các bản sao còn lại được đặt theo chiều kim đồng hồ trong vòng Node.
Đây là hình ảnh minh họa của SimpleStrategy:

MạngTopologyChiến lược trong Cassandra
MạngTopologyChiến lược được sử dụng khi bạn có nhiều hơn hai trung tâm dữ liệu. Trong NetworkTopologyStrategy, các bản sao được thiết lập riêng cho từng trung tâm dữ liệu. NetworkTopologyStrategy đặt các bản sao theo chiều kim đồng hồ trong vòng cho đến khi đạt đến nút đầu tiên trong giá đỡ khác. Chiến lược này cố gắng đặt các bản sao trên các giá đỡ khác nhau trong cùng một trung tâm dữ liệu.
Điều này là do đôi khi có thể xảy ra lỗi hoặc sự cố ở giá đỡ. Sau đó, bản sao trên các nút khác có thể cung cấp dữ liệu.
Dưới đây là hình ảnh minh họa của chiến lược cấu trúc liên kết Mạng:

Hệ số sao chép quyết định số lượng bản sao tồn tại. Số lượng bản sao cần đáp ứng một yêu cầu nhất định là một thiết lập riêng biệt, được mô tả ở phần tiếp theo.
Mức độ nhất quán trong Cassandra
Mức độ nhất quán được thiết lập cho mỗi truy vấn chứ không phải cho mỗi cụm, đó là điều làm cho nó trở nên đặc biệt. Cassandra Có thể điều chỉnh. Nó quy định số lượng bản sao phải xác nhận thao tác ghi hoặc phản hồi thao tác đọc trước khi bộ điều phối trả lời máy khách. Mức độ thấp trả về nhanh hơn; mức độ cao trả về dữ liệu chắc chắn là cập nhật hơn.
| Cấp | Hành vi | Sử dụng điển hình |
|---|---|---|
| ONE | Một bản sao phải phản hồi. | Ghi nhật ký tốc độ cao, trong đó việc thỉnh thoảng có dữ liệu cũ được chấp nhận. |
| ĐẶC BIỆT | Đa số tất cả các bản sao phải phản hồi, được tính bằng (RF / 2) + 1. | Lựa chọn đa năng, cân bằng giữa tính nhất quán và khả năng cung cấp. |
| ĐỘI_HẠ_QUORUM | Đa số các bản sao trong trung tâm dữ liệu cục bộ phải phản hồi. | Các cụm máy chủ đa trung tâm dữ liệu, vì nó tránh được độ trễ giữa các khu vực. |
| TẤT CẢ CÁC | Mỗi bản sao đều phải phản hồi. | Hiếm khi xảy ra. Chỉ cần một nút bị lỗi là yêu cầu sẽ hoàn toàn thất bại. |
| BẤT CỨ (chỉ viết) | Một sự chuyển giao được gợi ý vẫn được coi là thành công ngay cả khi không thể tạo ra bản sao nào. | Khả năng ghi tối đa trong trường hợp độ bền có thể được nới lỏng. |
Tính nhất quán cao được đảm bảo khi tổng số lần đọc và số lần ghi vượt quá hệ số sao chép. Với hệ số sao chép là ba, việc ghi ở mức QUORUM và đọc ở mức QUORUM thỏa mãn quy tắc này, vì hai cộng hai lớn hơn ba. Việc ghi ở mức ONE và đọc ở mức ONE thì không, và do đó, thao tác đọc có thể trả về giá trị cũ hơn.
Khi không thể truy cập bản sao, bộ điều phối sẽ lưu trữ một bản sao. dấu và phát lại nó một lần nữa khi nút quay trở lại, đó là cách hoạt động của cấp độ ANY và phần lớn các cấp độ khác. CassandraCông việc về hành vi tự chữa lành của anh ấy.
Viết Operaquan tâm đến Cassandra
Điều phối viên gửi yêu cầu ghi tới bản sao. Nếu tất cả các bản sao đều hoạt động, chúng sẽ nhận được yêu cầu ghi bất kể mức độ nhất quán của chúng như thế nào.
Mức độ nhất quán xác định có bao nhiêu nút sẽ phản hồi lại với xác nhận thành công.
Nút sẽ phản hồi lại với xác nhận thành công nếu dữ liệu được ghi thành công vào nhật ký cam kết và memTable.
Ví dụ: trong một trung tâm dữ liệu có hệ số sao chép bằng ba, ba bản sao sẽ nhận được yêu cầu ghi. Nếu mức độ nhất quán là một thì chỉ có một bản sao sẽ phản hồi lại với xác nhận thành công và hai bản sao còn lại sẽ không hoạt động.
Giả sử nếu hai bản sao còn lại bị mất dữ liệu do nút bị hỏng hoặc một số vấn đề khác, Cassandra sẽ làm cho hàng ổn định nhờ cơ chế sửa chữa tích hợp sẵn trong Cassandra.
Ở đây nó được giải thích, quá trình ghi diễn ra như thế nào trong Cassandra,
- Khi yêu cầu ghi đến nút, trước hết, nó sẽ ghi vào nhật ký cam kết.
- Sau đó Cassandra ghi dữ liệu vào bảng mem. Dữ liệu được ghi trong bảng ghi nhớ trên mỗi yêu cầu ghi cũng được ghi riêng vào nhật ký cam kết. Bảng ghi nhớ là dữ liệu được lưu trữ tạm thời trong bộ nhớ trong khi Nhật ký cam kết ghi lại các bản ghi giao dịch cho mục đích sao lưu.
- Khi bảng mem đầy, dữ liệu sẽ được chuyển vào tệp dữ liệu SSTable.

Vì SSTable không bao giờ được chỉnh sửa trực tiếp, thao tác xóa không loại bỏ hàng ngay lập tức. Thay vào đó, một dấu hiệu được gọi là bia mộ Dữ liệu được ghi vào, và hàng đó chỉ biến mất khi quá trình nén dữ liệu chạy sau khoảng thời gian ân hạn. Đây là lý do tại sao khối lượng công việc xóa lớn làm chậm quá trình đọc cho đến khi quá trình nén dữ liệu bắt kịp.
Đọc Operaquan tâm đến Cassandra
Có ba loại yêu cầu đọc mà điều phối viên gửi đến bản sao.
- Yêu cầu trực tiếp
- Yêu cầu thông báo
- Đọc yêu cầu sửa chữa
Điều phối viên gửi yêu cầu trực tiếp đến một trong các bản sao. Sau đó, điều phối viên gửi yêu cầu tổng hợp tới số lượng bản sao được chỉ định bởi mức độ nhất quán và kiểm tra xem dữ liệu trả về có phải là dữ liệu cập nhật hay không.
Sau đó, điều phối viên gửi yêu cầu thông báo tới tất cả các bản sao còn lại. Nếu bất kỳ nút nào cung cấp giá trị lỗi thời, yêu cầu sửa chữa đọc nền sẽ cập nhật dữ liệu đó. Quá trình này được gọi là cơ chế sửa chữa đọc.
Bên trong bản sao nhận yêu cầu trực tiếp, thứ tự tra cứu được thiết kế để tránh truy cập vào ổ đĩa bất cứ khi nào có thể.
- bảng nhớ Nó được kiểm tra trước tiên, vì các thao tác ghi mới nhất chưa được xử lý xong.
- bộ nhớ đệm hàngNếu được kích hoạt, nó có thể trả lời toàn bộ yêu cầu mà không cần thực hiện thêm thao tác nào.
- A bộ lọc nở Thông tin này được tham khảo cho từng SSTable. Nó trả lời "chắc chắn không có" hoặc "có thể có", cho phép bỏ qua hầu hết các SSTable mà không cần đọc nội dung của chúng.
- chỉ mục phân vùng và phần tóm tắt của nó xác định chính xác vị trí byte bên trong bất kỳ SSTable nào vượt qua kiểm tra bộ lọc Bloom.
- Các đoạn dữ liệu trùng khớp từ nhiều SSTable được hợp nhất, trong đó dấu thời gian gần nhất sẽ được ưu tiên cho mỗi cột.
Bộ lọc Bloom là bước giúp duy trì tốc độ đọc nhanh khi dữ liệu tăng lên, vì nó loại bỏ hầu hết các SSTable khỏi quá trình xem xét trước khi bất kỳ thao tác tìm kiếm nào trên đĩa diễn ra. Việc áp dụng các cơ chế này trên nhiều máy được đề cập trong phần tiếp theo. Cassandra cụm hướng dẫn.
