Ho un servizio web CRUD, e ho il compito di cercare di capire un modo per garantire che non perdiamo dati quando il database va giù. Tutti sanno che se il database non funziona, non saremo in grado di ottenere "letture", ma per un sottoinsieme specifico delle operazioni vogliamo assicurarci di non perdere i dati.RabbitMQ, ZeroMQ, Service Broker o qualcosa di simile sono una soluzione appropriata per la creazione di un servizio web di database ad alta disponibilità?
Mi è stata data l'impressione che si tratti di servizi come 0MQ, RabbitMQ o uno dei servizi Microsoft MQ. Sebbene dopo alcuni giorni di lettura e ricerca, non sono nemmeno sicuro che i messaggi di cui stiamo parlando nei servizi MQ includano le operazioni di database. Sono comunque sicuro al 100% di poter accodare quanti più mondi ciao come potrei mai sperare.
Se riesco a utilizzare una coda di messaggi per aggiungere un livello di protezione al database, mi rivolgo a Rabbit (perché sembra persistere attraverso arresti anomali) ma poiché l'obiettivo è un database Microsoft SQL server, forse uno di le loro soluzioni (come SQL Service Broker o MSMQ) sono più appropriate.
La vera domanda fondamentale di cui non sono ancora sicuro è se sto addirittura giocando con il mazzo di carte giusto (per così dire).
Con il desiderio di un servizio web ad alta disponibilità, che continua a funzionare se il database va giù, ha senso mettere un'istanza di Rabbit MQ "tra" il webservice e il database? Forse il link giusto nella catena è avere RabbitMQ per inviare messaggi al server web?
Oppure c'è qualche altra soluzione per raggiungere questo? Ci sono un certo numero di idee perdute al momento di trovare un modo per fare il rollup dei blog in caso di interruzione del database o qualcosa del genere ... ma siamo ancora agli stadi precoci che (almeno io) non ho idea di cosa sia sto andando a fare.
Il messaggio è la coda della soluzione giusta?
Nessun problema: considera anche che l'utilizzo della coda non impedirà comunque la perdita di tutti i dati, ad esempio le richieste del browser client potrebbero essere interrotte se IIS è troppo occupato per inviarle. –
Service Broker può essere facilmente utilizzato con EF o ADO.Net. Funziona alla grande anche con async/await. –