NoSQL: Kiến trúc Cassandra - Các thao tác đọc và ghi trong The Ring (Ngày 2)

2022-06-02 08:48:35

Trong ngày hôm trước, tôi đã chia sẻ một số khái niệm chính cần thiết của Kiến trúc Cassandra.
Trong bài đăng này, tôi đang chia sẻ kiến trúc cơ bản của các hoạt động đọc và ghi của Cassandra.

Nhẫn Cassandra:

Cassandra đang sử dụng một thuật toán băm nhất quán để xử lý tất cả các nút của cụm như nhau.

Một cụm Cassandra được hình dung như một Vòng trong đó các nút khác nhau đang tham gia với cùng một tên. Nó có thể trao đổi thông tin trạng thái với tối đa ba nút khác.
Một phạm vi mã thông báo chỉ định cho mỗi nút xác định vị trí của nó trong cụm.

Cassandra đang sử dụng Gossip Protocol nên bất cứ khi nào bất kỳ nút nào khởi động, nó sẽ nhận được thông tin về các nút khác bằng cách trao đổi thông tin với nhau.

Người phân vùng chịu trách nhiệm chuẩn bị tập dữ liệu cho mỗi nút.
Cassandra có ba loại phân vùng khác nhau, Murmur3Partitioner (mặc định), RandomPartitioner và ByteOrderedPartitioner.

Mỗi nút đang thực hiện các bản sao của cơ sở dữ liệu trên chiến lược sao chép đã xác định. Về cơ bản có hai loại chiến lược sao chép, một là Chiến lược đơn giản và thứ hai là Chiến lược cấu trúc liên kết mạng.

Chiến lược đơn giản hoạt động theo chiều kim đồng hồ và Cấu trúc liên kết mạng hoạt động cho nhiều trung tâm dữ liệu.

How it executes Write Operations?

A Cassandra is Masterless distributed architecture, and there is no any Master and Slave mechanism like any other distributed system.

Tại bất kỳ thời điểm nhất định nào, máy khách có thể kết nối với bất kỳ nút nào và nút được kết nối đó được gọi là bộ điều phối.
Dựa trên khóa phân vùng và chiến lược sao chép, Điều phối viên chuyển tiếp và sao chép dữ liệu tới tất cả các nút hiện hành.

Mỗi nút xử lý yêu cầu riêng lẻ.
Mỗi nút đầu tiên ghi dữ liệu vào nhật ký cam kết và sau đó ghi vào bảng ghi nhớ.

Bản ghi cam kết đảm bảo độ bền vì bản ghi nhớ đang xử lý bộ nhớ nên bất cứ khi nào dữ liệu bị mất thì chúng ta có thể sử dụng bản ghi cam kết để khôi phục dữ liệu.
Bất cứ khi nào memtable bị xóa hoặc đầy, nó sẽ được ghi vào SSTable (Bảng chuỗi được sắp xếp) của đĩa.

Mỗi SSTable tạo ra ba tệp trên đĩa bao gồm một bộ lọc bloom, một chỉ mục khóa và một tệp dữ liệu. Trong một khoảng thời gian, một số SSTables được tạo.

Nó thực hiện các thao tác đọc như thế nào?

Vì Cassandra là kiến trúc Masterless nên máy khách có thể kết nối với bất kỳ nút nào của vòng cụm.
Giống như thao tác ghi, nút đã chọn được gọi là bộ điều phối và chịu trách nhiệm trả về dữ liệu được yêu cầu.

Một khóa hàng phải được cung cấp cho mọi thao tác đọc. Người điều phối sử dụng khóa hàng để xác định bản sao đầu tiên.

Nếu bản sao có phiên bản khác của dữ liệu, điều phối viên trả lại phiên bản mới nhất cho máy khách bằng cách đưa ra lệnh sửa chữa đọc với phiên bản cũ hơn của dữ liệu.

Mỗi yêu cầu đọc tìm nạp dữ liệu từ memtable và SSTables sau đó nó đã hợp nhất dữ liệu này và trả về điều phối viên.
Bên trong các SSTable đang sử dụng Bộ lọc Bloom để kiểm tra khóa hàng được yêu cầu xem nó có tồn tại trong SSTable hay không.

Xem thêm:


Chia sẻ: