Panoramica
I've got 2 systems over a network. The 2nd system produces some results based on the current contents of system A. How can I efficiently produce results in system B if getting the contents of system A takes a long time?
Sitazione attuale
-
Ho un sistema, sistema A, che mantiene i clienti (dettagli personali, ecc.). L'utente può inserire manualmente gli hit in questo sistema.
-
Ho un altro sistema, sistema B, che esegue, ogni notte, alcuni controlli su ciascun cliente. Controlla se un cliente appare su una lista di persone con restrizioni producendo un resoconto di hit. Un utente controlla ogni mattina questo sistema e controlla manualmente i risultati prodotti. Se un hit viene approvato, viene inviato tramite POST per il salvataggio nel sistema A.
Il problema
L'utente potrebbe aver inserito un hit manuale nel Sistema A, che è stato trovato automaticamente anche nel Sistema B.
Soluzione A
Send a
GET
request to system A, every time I present system's B overnight results to the user, to get the existing hits and filter them out of hits produced by System B
Per migliorare questa discrepanza, ogni volta che presento i risultati del sistema B al mattino, posso inviare una richiesta GET per ottenere i risultati esistenti di un cliente nel Sistema A e quindi eseguire un confronto, filtrando i risultati che esiste nei successi di A e B.
Questo mi consente di mostrare solo i nuovi successi nel Sistema B. L'utente visualizza solo i nuovi hit trovati.
Un problema con questa soluzione
Non posso efficientemente sapere in anticipo quanti nuovi colpi effettivi esistono nel Sistema B. Ho bisogno di GET
50.000 clienti, dal Sistema A, ogni volta che voglio ottenere il numero di nuovi colpi.
Soluzione B
Send a
GET
request to system A, when a hit is produced by System B, overnight, to see if it's really a new hit that doesn't exist in System A.
Problema con questa soluzione
Poiché la richiesta GET viene inviata al momento quando viene prodotto un hit durante il controllo dell'elenco e non quando i risultati vengono presentati all'utente, potrebbe esserci una mancata corrispondenza. L'utente potrebbe non aver teso ai risultati di System B e andare avanti e inserire manualmente un hit nel sistema A. Il sistema B mostrerebbe comunque che il colpo inserito manualmente dal sistema A è un nuovo successo nei risultati mattutini del sistema B.
Esiste un modo standard per gestire tali problemi?
Dettagli
- I 2 sistemi sono basati su Node.js / Express framework. Ho costruito io stesso quei sistemi in modo da avere il pieno controllo su di essi.
- I sistemi possono comunicare tra loro utilizzando un'API REST.
- Mi piacerebbe mantenere i 2 sistemi disaccoppiati, onorando il principio di singola responsabilità - ovvero il sistema A tiene semplicemente dati, il sistema B esegue schermate automatiche ecc. In particolare vorrei evitare di intrecciare le funzionalità tra ogni sistema