Chúng tôi có một ứng dụng web JAVA sử dụng postgres (cơ sở dữ liệu đơn với một nô lệ) để lưu trữ tất cả các dữ liệu quan trọng.Redis, Mongo hoặc Hazelcast?
Chúng tôi hiện đang di chuyển từ một thiết lập máy chủ đơn lẻ sang các máy chủ khác nhau do đó tôi cần thực hiện một số thay đổi để giải quyết các yêu cầu mới.
1) Id phiên không dính cho cân bằng tải và dung sai phân vùng.
2) Bộ nhớ cache của dữ liệu đọc thường xuyên có thể truy cập từ tất cả các máy chủ web (Trong bộ nhớ/Memcache thay thế).
3) Hàng đợi (Email, SMS, Công việc để thực hiện trên cụm). Thông thường tất cả chúng phải được thực hiện trên một api xml hoặc cạo màn hình.
Tránh xử lý trùng lặp nhiệm vụ là quan trọng nhưng đôi khi nó có thể xảy ra :-)
4) Lưu trữ liên tục các yêu cầu API và phản hồi (nhiều XML, nhiều hàng nhưng số lượng cột nhỏ). (có thể lưu trữ bằng cách xóa các yêu cầu và phản hồi cũ để giữ cho tập dữ liệu nhỏ).
5) Đăng nhập vào một địa điểm chung. Bảng sẽ tiếp tục phát triển. Ngoài ra tôi sẽ cần một công cụ để truy cập các bản ghi của sản xuất mà không ngăn chặn chúng. Một số loại tìm kiếm nên có thể dựa trên thời gian và hoặc chuỗi tìm kiếm.
Tôi muốn một giải pháp duy nhất để giải quyết tất cả các yêu cầu này và xem xét redis, mongo và hazelcast (theo thứ tự sở thích cá nhân của tôi) là các lựa chọn thay thế có thể.
Các cân nhắc quan trọng khác: 1) Ít xâm nhập vào mã của chúng tôi. 2) Dễ dàng sao lưu/nhân rộng chiến lược. Ít nhất là Master Slave. 3) Khả năng quản lý, Cộng đồng và đã được thử nghiệm và kiểm tra (chạy trong sản xuất).
Điều gì sẽ có thể thực hiện tất cả hoặc hầu hết các tính năng và yêu cầu này?
EDIT - Những gì tôi đã làm
- Redis hỗ trợ quản lý phiên làm việc cho tomact.
- Redis cho bộ nhớ đệm
- Jesque (Phiên bản java của Respue) được hỗ trợ bởi redis.
- Postgres
- SLF4J được hỗ trợ bởi Log4j2
Hiện tại tôi không quan tâm đến cơ sở dữ liệu được phân phối. Mongo có vẻ giống như một đối thủ sau tương lai khi chúng ta cần phải mở rộng quy mô. – gladiator