0
0
Lập trình
Admin Team
Admin Teamtechmely

Khám Phá Tính Năng Mở Rộng Theo Chiều Ngang Của Elasticsearch

Đăng vào 10 tháng trước

• 3 phút đọc

Chủ đề:

Elasticsearch

Khám Phá Tính Năng Mở Rộng Theo Chiều Ngang Của Elasticsearch

Trong nhiều năm qua, tôi đã gắn bó với Elasticsearch và muốn chia sẻ về một trong những tính năng quan trọng nhất giúp công nghệ này trở nên phổ biến trong thế giới hiện đại: tính năng mở rộng theo chiều ngang (horizontal scalability).

Tính Năng Mở Rộng Theo Chiều Ngang Là Gì?

Khi bắt đầu làm quen với Elasticsearch, ban đầu bạn có thể chỉ cần một node duy nhất để xử lý cơ bản dữ liệu hoặc phục vụ các yêu cầu tìm kiếm đơn giản. Tuy nhiên, khi ứng dụng của bạn phát triển, dữ liệu gia tăng đáng kể và các yêu cầu truy vấn trở nên phức tạp hơn, đây chính là lúc tính năng mở rộng theo chiều ngang của Elasticsearch tỏ ra vô cùng hữu ích.

Với Elasticsearch, khi gặp giới hạn tài nguyên, bạn chỉ cần thêm một node mới vào cluster của mình. Hệ thống sẽ tự động:

  • Phân bổ dữ liệu một cách hợp lý.
  • Tạo replica shard để tăng cường độ tin cậy và khả năng phục hồi.

Như mô tả từ Elastic:

“Khi bạn thêm nhiều node vào cluster, hệ thống sẽ tự động phân bổ shard và nâng cao khả năng sẵn có cho tương lai.”

Cấu hình và quản lý cluster có thể gặp nhiều thách thức, nhưng Elasticsearch đã thực sự giảm bớt những khó khăn này thông qua giao diện thân thiện và tài liệu hướng dẫn rõ ràng.

Cách Thêm Node Vào Cluster

Bước 1: Cấu Hình Cluster Ban Đầu

Giả sử bạn đang có một cluster đơn node với cấu hình cơ bản trong file elasticsearch.yml như sau:

yaml Copy
cluster.name: my_cluster
node.name: node-1
network.host: 0.0.0.0
discovery.seed_hosts: []
cluster.initial_master_nodes: ["node-1"]

Bước 2: Thêm Node Mới Vào Cluster

  1. Cài Đặt Elasticsearch Trên Máy Mới: Tải và cài đặt Elasticsearch theo hướng dẫn từ trang Elastic.

  2. Cấu Hình Node Mới: Trong file elasticsearch.yml của node mới:

yaml Copy
cluster.name: my_cluster
node.name: node-2
network.host: 0.0.0.0
discovery.seed_hosts: ["<địa_chỉ_node_1>"]
cluster.initial_master_nodes: []

Lưu ý thay <địa_chỉ_node_1> bằng IP hoặc hostname của node 1.

  1. Khởi Động Node Mới: Node 2 sẽ kết nối vào cluster hiện tại nhờ discovery seed hosts.

Bước 3: Kiểm Tra Cluster Với Node Mới

  1. Kiểm Tra Danh Sách Node: Sử dụng API:
bash Copy
GET _cat/nodes?v

Kết quả sẽ hiển thị tất cả các node trong cluster.

  1. Kiểm Tra Tình Trạng Cluster: Sử dụng API:
bash Copy
GET _cluster/health

Tình trạng cluster sẽ được trả về trạng thái chung (green, yellow, red).

Chú Thích: Không cần lo lắng khi vừa thêm node mới, nếu cluster chuyển sang trạng thái yellow hoặc red, bởi vì Elasticsearch đang xử lý các yêu cầu phân bổ và tối ưu hóa.

Những Hành Động Của Elasticsearch Khi Thêm Node Mới

  1. Phân Bổ Shard: Elasticsearch tự động phân chia dữ liệu (shard) giữa các node, đảm bảo không node nào bị quá tải.

  2. Tạo Replica Shard: Tăng cường khả năng chịu lỗi bằng cách sao lưu shard sang node mới.

  3. Tăng Hiệu Năng Truy Vấn: Truy vấn sẽ được chia nhỏ cho các node, giúp giảm độ trễ cho từng node.

Điều Gì Làm Nên Sự Đặc Biệt Của Elasticsearch?

Một trong những điều khiến tôi vô cùng ấn tượng về Elasticsearch là tính tự động của hệ thống. Khi bạn thêm node:

  • Elasticsearch không chỉ mở rộng dung lượng mà còn cải thiện khả năng chịu lỗi.
  • Điều này có ý nghĩa rất quan trọng trong việc đảm bảo hệ thống luôn hoạt động ổn định ngay cả khi dữ liệu tăng trưởng một cách đột ngột.

Tóm lại, Elasticsearch thực sự là một đối tác tin cậy cho các ứng dụng của bạn trong quá trình phát triển và mở rộng.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào