Tôi đang làm việc trên một ứng dụng web, trong đó lịch sử được xây dựng trên một chồng PHP/MySQL.Việc sử dụng máy chủ web có trạng thái có ý nghĩa không?
Một trong số chúng hoạt động chính của ứng dụng phải thực hiện một số tính toán nặng cần lặp lại trên mỗi hàng của toàn bộ bảng DB. Không cần phải nói đây là một nút cổ chai nghiêm trọng. Vì vậy, một quyết định đã được thực hiện để viết lại toàn bộ quá trình trong Java.
Điều này đã cho chúng tôi hai lợi ích. Một là Java, như một ngôn ngữ, nhanh hơn nhiều so với một tiến trình PHP. Thứ hai là chúng ta có thể duy trì toàn bộ tập dữ liệu trong bộ nhớ máy chủ ứng dụng Java. Bây giờ chúng ta có thể thực hiện các phép tính nặng trong bộ nhớ, và mọi thứ diễn ra nhanh hơn nhiều.
Điều này làm việc một lúc, cho đến khi chúng tôi nhận ra rằng chúng tôi cần phải mở rộng quy mô, vì vậy hiện tại chúng tôi cần nhiều máy chủ web hơn.
Vấn đề là - theo thiết kế hiện tại, tất cả đều phải duy trì chính xác cùng một trạng thái. Tất cả họ đều truy vấn DB, xử lý dữ liệu và duy trì nó trong bộ nhớ. Nhưng điều gì xảy ra khi bạn cần thay đổi dữ liệu này? Làm thế nào để tất cả các máy chủ duy trì tính nhất quán?
Kiến trúc này có vẻ không đúng với tôi. Lợi ích hiệu suất từ việc giữ tất cả các dữ liệu trong bộ nhớ là hiển nhiên, nhưng điều này nghiêm trọng cản trở khả năng mở rộng.
Các tùy chọn từ đây là gì? Chuyển sang bộ nhớ trong, khóa-giá trị, lưu trữ dữ liệu? Chúng ta có nên từ bỏ trạng thái giữ bên trong các máy chủ web hoàn toàn không?
+1 cho hạt của sự thật. – duffymo