siamo una piccola impresa di IOT con sede in Germania. Abbiamo circa 1000 installazioni del nostro pacchetto di sensori con 1-4 sensori ciascuna. Le misurazioni di questi sensori vengono inoltrate al nostro server e le analizziamo con Drools, un motore di regole per Java. Ogni installazione produce non più di 1 misurazioni ogni 10 secondi, quindi abbiamo 100 misurazioni / secondo max. Speriamo di estenderlo a 2000 installazioni nel prossimo anno.
Architettura corrente
Al momento molte applicazioni di piccole dimensioni accettano le misurazioni in vari formati di messaggistica e le mettono su un server redis come coda temporanea. Poi un altro processo li prende e li inoltra al nostro server di drools.
Obiettivo
Vogliamo migliorare l'architettura per rendere il nostro sistema più stabile, ad es. tutto dovrebbe essere bilanciato e replicato. Stiamo eseguendo il nostro ambiente di test in Google Cloud e siamo disposti a utilizzare tutti i servizi cloud necessari, se il prezzo è accettabile
È molto importante che le misurazioni non vengano perse, ad es. durante l'implementazione e mantenere il loro ordine.
Idee e Thoguth
Quindi pensiamo che avrebbe senso avere una memoria persistente per le nostre misurazioni e tirarle (basandosi sull'ultimo ID elaborato) invece di premerle. Per la nostra comprensione, kafka dovrebbe andare bene, ma il processo di installazione è un po 'spaventoso e non abbiamo esperienza con kafka e siamo preoccupati di cosa succede quando qualcosa va storto.
Quindi un'altra soluzione potrebbe essere solo memorizzarli in un database, ad es. MySQL o BigQuery ospitati e nuove misurazioni ogni 500ms circa. Le misure sono molto piccole e potremmo interrogare migliaia di misurazioni con questo approccio, penso.
Hai qualche consiglio?