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ộ.

  • 🕸️ Thiết kế ngang hàng (Peer-to-Peer): Mọi nút đều bình đẳng và trao đổi trạng thái thông qua giao thức gossip, vì vậy không có nút chủ nào có thể bị lỗi.
  • 🧱 Các thành phần lưu trữ: Một thao tác ghi sẽ được ghi vào nhật ký cam kết và memtable, sau đó được ghi vào một SSTable bất biến trên đĩa.
  • 🔁 Chiến lược nhân rộng: SimpleStrategy phù hợp với một trung tâm dữ liệu duy nhất, trong khi NetworkTopologyStrategy phân bổ các bản sao cho mỗi trung tâm dữ liệu và mỗi rack.
  • 🔢 Yếu tố sao chép: Ba bản sao trên ba nút là cấu hình tiêu chuẩn để loại bỏ mọi điểm lỗi đơn lẻ.
  • ⚖️ Mức độ nhất quán: Mức độ được chọn cho mỗi truy vấn sẽ quyết định số lượng bản sao phải xác nhận trước khi máy khách nhận được phản hồi.
  • 🔍 Đọc đường dẫn: Các yêu cầu sửa chữa trực tiếp, tóm tắt và đọc kết hợp với nhau để trả về dữ liệu hiện tại và âm thầm sửa chữa các bản sao lỗi thời.

Cassandra ArchiSao chép kết cấu

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:

Cassandra Archikiến trúc
Cassandra Archisơ đồ kiế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:

Chiến lược đơn giản trong Cassandra
Chiến lược đơn giản trong Cassandra

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:

MạngTopologyChiến lược trong Cassandra
MạngTopologyChiến lược trong Cassandra

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,

  1. Khi yêu cầu ghi đến nút, trước hết, nó sẽ ghi vào nhật ký cam kết.
  2. 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.
  3. Khi bảng mem đầy, dữ liệu sẽ được chuyển vào tệp dữ liệu SSTable.
Viết Operaquan tâm đến Cassandra
Viết Operaquan tâm đến Cassandra

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.

  1. Yêu cầu trực tiếp
  2. Yêu cầu thông báo
  3. Đọ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ể.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

Câu Hỏi Thường Gặp

Mỗi nút liên hệ với một vài nút khác mỗi giây và chia sẻ trạng thái về chính nó và tất cả các nút mà nó biết: trạng thái hoạt động, tải, phiên bản lược đồ và phạm vi mã thông báo. Đây là cách một cụm duy trì sự phối hợp mà không cần nút chính.

Quá trình nén hợp nhất nhiều SSTable thành một, giữ cho...ping Phiên bản mới nhất của mỗi cột và loại bỏ các hàng đã bị xóa. Nếu không có thao tác này, việc đọc dữ liệu sẽ cần phải truy cập ngày càng nhiều tập tin hơn.

Các nút ảo chia phần token ring được phân bổ cho mỗi máy vật lý thành nhiều vùng nhỏ. Điều này giúp phân tán dữ liệu đồng đều hơn và cho phép thêm hoặc thay thế một nút nhanh hơn nhiều so với việc gán token thủ công.

Trí tuệ nhân tạo (AI) có thể áp dụng quy tắc đọc cộng ghi lớn hơn hệ số sao chép và đề xuất một cặp, nhưng độ lỗi thời chấp nhận được cho mỗi truy vấn là một quyết định kinh doanh cần được cung cấp trước.

AI đọc tốt đầu ra và số liệu của nodetool, vì vậy nó hiệu quả trong việc phát hiện các phân vùng bị chiếm dụng nhiều, sự tích tụ các bản ghi xóa (tombstone build-up) và các tồn đọng trong quá trình nén dữ liệu. Bất kỳ thay đổi cấu hình nào mà nó đề xuất vẫn nên được kiểm tra trên một cụm máy chủ thử nghiệm.

Tóm tắt bài viết này với: