Tôi cũng phỏng vấn khá nhiều và thấy khá nhiều công ty không sử dụng cũng như chưa tìm hiểu những cái hay ho từ Hazelcast, hôm nay chúng ta cùng tìm hiểu xem Hazelcast là gì và nó được ứng dụng trong thực tế như thế nào

Một vài đặc điểm của Hazelcast

Hazelcast-IMDG (viết tắt của Hazelcast in memory data grid) là một mạng lưu trữ dữ liệu trên RAM. Hazelcast đưa ra cài đặt của các interface trong java như: Map, Queue, Executor Service,…

Được xây dựng bằng java nên nó hỗ trợ java khá tiện lợi, tuy nhiên nó cũng hỗ trợ các loại ngôn ngữ khác như: C / C ++, C #, Python, …

Hazelcast sử dụng cơ chế mạng ngang hàng, không có master và slave, mỗi thành viên trong cụm được cấu hình để hoạt động giống nhau. Tất cả các node lưu trữ dữ liệu bằng nhau và xử lý như nhau.

Hazelcast lưu trữ mọi thứ trên Ram, nó được thiết kế để thực thi việc đọc và ghi một cách nhanh chóng nhất.

Hazelcast lưu các bản sao của các mảnh dữ liệu trên nhiều thành viên. Khi một node bị lỗi thì dữ liệu trên node đó sẽ được khôi phục lại từ bản backup và cụm Hazelcast vẫn hoạt động bình thường mà không bị downtime.

Một số usecase Hazelcast

  • Application Scaling (Mở rộng ứng dụng)
  • Cache-as-a-service (cache như một dịch vụ, tách biệt hẳn với ứng dụng)
  • Cross-JVM communication and shared storage
  • Distributed cache, often in front of a database (bộ nhớ cache phân tán, thường đặt ở phía trước tầng cơ sở dữ liệu)
  • In-memory processing and Analytics
  • In-memory computing
  • Internet of Things infrastructure (kiến trúc hệ thống IoT)
  • Key-value database (cơ sở dữ liệu dạng key-value)
  • Memcached alternative with a protocol compatible interface
  • Microservices infrastructure (kiến trúc microservices)
  • NoSQL data store (kho dữ liệu NoSql)
  • Spring Cache
  • Web Session clustering

Hazelcast sử dụng trong những trường hợp nào

Hazelcast phù hợp khi chúng ta cần:

  • ứng dụng yêu cầu xử lý dữ liệu lớn bằng cách phân vùng dữ liệu
  • dữ liệu được truy cập thường xuyên và được lưu trữ trong grid
  • xây dựng một bộ nhớ cache
  • xây dựng một kho lưu trữ dữ liệu chính cho các ứng dụng có yêu cầu về hiệu suất, khả năng mở rộng và hiệu suất cao
  • kho lưu trữ key-value NoSQL trong bộ nhớ
  • hệ thống pub-sub có tốc độ nhanh và khả năng mở rộng tốt
  • hệ thống message queue để giải quyết các vấn đề về bất đồng bộ
  • một hệ thống cache phân tán có khả dụng cao cho các ứng dụng

References: Hazelcast-IMDG

Một số bài viết nổi bật: