54
2.6 Xây dựng bộ hướng dẫn sử dụng để vận hành, bảo trì và triển khai cluster cho hệ thống CSDL hệ thống CSDL
Mỗi hệ thống ln có bộ tài liệu hướng dẫn sử dụng đi kèm khi đưa vào sử dụng. Trong mục này cung cấp cho người phát triển năm được những thành phần, chức năng, cách triển khai và phát triển khi cần, nội dung tập trung vào: (1) triển khai cluster, (2) backup và restore dữ liệu online và offline.
2.6.1 Triển khai cluster
Cluster là một kiến trúc nhằm đảm bảo khả năng sẵn sàng cho hệ thống máy tính. Cluster còn là một hệ thống bao gồm nhiều máy chủ được kết nối với nhau theo dạng song song hay phân tán và được sử dụng như một tài nguyên thống nhất, và ở đây tôi sử dụng cluster cho hệ thống CSDL. Cách triển khai hệ thống chỉ bằng một server sẽ gặp nhiều vấn đề liên quan đến khả năng cung cấp và sử dụng dịch vụ trên toàn hệ thống. Giả sử xảy ra sự cố ở server cơ sở dữ liệu bị ngừng hoạt động dẫn đến toàn bộ hệ thống sập hoặc tê liệt. Hay việc yêu cầu mở rộng nghiệp vụ cho hệ thống, quá trình ghi cũng như đọc dữ liệu vẫn diễn ra bình thường và số lượng truy vấn xử lý dữ liệu rất lớn thì việc chỉ có một server CSDL đồ thị sẽ không đủ đáp ứng yêu cầu hệ thống.
Để toàn bộ hệ thống hoạt động một cách ổn định, chính xác và an tồn ta cần phải triển khai nhiều server CSDL đồ thị. Trong nền tảng cơng nghệ neo4j có hỗ trợ sẵn chế độ phân cụm Neo4j Causal Clustering bao gồm hai thành phần là Corer Server và Read Replica. Mỗi thành (instance) của Core Server cho phép các thao tác đọc – ghi và có trách nhiệm bảo vệ dữ liệu; các instance thực hiện nhiệm vụ bằng cách sao chép tất cả các giao dịch bằng phương thực Raft [8]. Raft đảm bảo rằng dữ liệu có độ bền an tồn trước khi xác nhận cam kết giao dịch với ứng dụng người dùng cuối. Nghĩa là khi một yêu cầu ghi dữ liệu được gửi đến một máy chủ Cluster, thì tất cả Core Server của các server sẽ được nhận yêu cầu ghi dữ liệu này [9]. Hành động thực hiện yêu cầu ghi này xảy ra, nếu hơn một nửa số server trong Core Server đồng ý với u cầu này, cịn khơng đủ số lượng Core Server đồng ý thì yêu cầu này sẽ không được thực hiện. Yêu cầu an toàn này có ảnh hưởng đến độ trễ ghi dữ liệu.
Read Replica là server chỉ có chức năng đọc dữ liệu; hỗ trợ khả năng nâng cấp, mở rộng khối lượng việc đọc dữ liệu. Việc lấy dữ liệu phục vụ thống kê, dự báo là những xử lý mất nhiều thời gian nhất. Lúc này việc đọc dữ liệu sẽ được Read Replica đảm nhiệm để hệ thống hoạt động xử lý u cầu nhanh chóng và trơi chảy.
Fault tolerance được nhắc đến là khả năng dung lỗi hay khả năng chịu lỗi của hệ thống máy tính, đặc biệt trong hệ thống lưu trữ dữ liệu trong bài luận này. Cụ thể Neo4j Cluster cung cấp cho hệ thống lưu trữ dữ liệu khả năng hoạt động liên tục mà không phải
55 dừng lại hay bị gián đoạn khi sự cố xảy ra ở một hoặc nhiều thành phần trong hệ thống. Hiểu cách khác là trong hệ thống khi có một server khơng hoạt động cũng khơng ảnh hưởng tới hệ thống chung – được gọi là dung một lỗi; trong hệ thống khi hai server dừng làm việc thì tồn bộ hệ thống chung vẫn làm việc – được gọi là dung hai lỗi. Điều này được tính theo cơng thức M = 2F + 1; trong đó M là số lượng các phiên bản Core cần thiết để chịu được lỗi F và F là số nguyên dương. Ví dụ: khi triển khai hệ thống phân cụm tối thiểu 3 core thì hệ thống có khả năng dung một lỗi, cịn cluster với 5 core thì hệ thống có khả năng dung được hai lỗi.
Cần chú ý Causal Cluster 11 có thể triển khai với 2 server. Nếu một trong hai server khơng hoạt động thì tồn hệ thống vẫn hoạt động và chỉ cịn khả năng đọc dữ liệu. Mô tả về kiến trúc Causal Clustering của neo4j ở Hình 2.36 bên dưới.