Tôi có một dịch vụ web CRUD và đã được giao nhiệm vụ cố gắng tìm ra cách để đảm bảo rằng chúng tôi không bị mất dữ liệu khi cơ sở dữ liệu bị hỏng. Mọi người đều biết rằng nếu cơ sở dữ liệu bị hỏng, chúng tôi sẽ không thể nhận được "lần đọc" nhưng đối với một tập con cụ thể của các hoạt động chúng tôi muốn đảm bảo rằng chúng tôi không bị mất dữ liệu.Có phải RabbitMQ, ZeroMQ, Nhà môi giới dịch vụ hay một cái gì đó tương tự như một giải pháp thích hợp để tạo một webservice cơ sở dữ liệu sẵn sàng cao?
Tôi đã có ấn tượng rằng đây là thứ được bao phủ bởi các dịch vụ như 0MQ, RabbitMQ hoặc một trong các dịch vụ Microsoft MQ. Mặc dù sau một vài ngày đọc và nghiên cứu, tôi thậm chí không chắc chắn rằng các thông điệp mà chúng ta đang nói đến trong các dịch vụ MQ bao gồm các hoạt động cơ sở dữ liệu. Tuy nhiên, tôi chắc chắn 100% rằng tôi có thể xếp hàng như nhiều thế giới chào hỏi như tôi có thể hy vọng.
Nếu tôi có thể sử dụng hàng đợi tin nhắn để thêm lớp bảo vệ vào cơ sở dữ liệu, tôi sẽ nghiêng về phía Thỏ (vì nó xuất hiện để tồn tại qua các sự cố). các giải pháp của họ (như SQL Service Broker, hoặc MSMQ) là phù hợp hơn.
Câu hỏi cơ bản thực sự mà tôi chưa chắc chắn là liệu tôi có đang chơi với đúng cỗ bài hay không (để nói).
Với mong muốn cho một dịch vụ web có tính sẵn sàng cao, tiếp tục hoạt động nếu cơ sở dữ liệu bị hỏng, có nghĩa là đặt một cá thể Thỏ MQ "giữa" webservice và cơ sở dữ liệu? Có lẽ liên kết phù hợp trong chuỗi là để RabbitMQ gửi tin nhắn đến máy chủ web?
Hoặc có giải pháp nào khác để đạt được điều này không? Có một số ý tưởng bị mất tại thời điểm tìm kiếm một cách để cuộn lên các nhật ký web trong trường hợp mất dữ liệu hoặc một cái gì đó ... nhưng chúng tôi vẫn còn ở giai đoạn đủ sớm (ít nhất là tôi) không có ý tưởng gì tôi ' m sẽ làm.
Hàng đợi có phải là giải pháp đúng không?
Không phải là vấn đề - cũng xem xét việc sử dụng xếp hàng sẽ không ngăn chặn tất cả mất dữ liệu, ví dụ, yêu cầu trình duyệt của khách hàng có thể bị giảm nếu IIS quá bận để gửi chúng. –
Dịch vụ môi giới có thể dễ dàng được sử dụng với EF hoặc ADO.Net. Thậm chí hoạt động tốt với async/await. –