Progettazione e accoppiamento di sistemi distribuiti

0

Ho una domanda intorno alla quale è preferibile e vista come un approccio più corretto.

La soluzione di messaggistica aziendale di scelta è Kafka. Abbiamo un compito di creare un servizio che fornisca eventi in ambiente cloud via HTTP (nessuna apertura delle porte, ampiamente utilizzata - facile da ottenere i client integrati). Gli eventi provengono dai data center della società.

Ora le esigenze di performance sono ridotte, poiché distribuiremo circa 5000 eventi al giorno.

Per implementare ci sono poche opzioni:

1) Definisci la semplice API Rest che riteniamo essere il migliore, il meccanismo di messaggistica sottostante astratto in modo che altri team possano integrarsi senza dipendere dai dettagli dell'implementazione. Quindi possiamo iniziare ad esempio con un DB relazionale nel cloud per archiviare gli eventi.

Pro:

  • Altri servizi non sono al corrente della nostra implementazione
  • Possiamo scegliere come implementarlo e cambiare in seguito
  • API semplice - quanto basta per fornire ciò che è necessario
  • Non riutilizzando il cluster Kabka di Alredy build non abbiamo un singolo punto di errore all'interno di un team - se kafka fallisce per qualche motivo che è stato creato per un altro progetto - non ne risentiamo.

Contro:

  • Potrebbe essere (non sicuro al 100%) leggermente più lungo dell'opzione 2
  • Stiamo reimplementando la messaggistica

2) Riutilizzare già il cluster kafka compilato da altri sottoteam nel cloud e posizionare il proxy di riposo Kafka in cima ed esporre gli eventi. Ciò si traduce nei nostri consumatori che parlano in lingua Kafka.

Pro:

  • Forse sarà consegnato più velocemente
  • Abbiamo già un cluster Kafka

Contro:

  • Apprendimento di Kafka
  • Accoppiamento dei client ai nostri meccanismi interni
  • Kafka come singolo punto di errore

Ora la domanda è: cosa pensi che sia la cosa giusta da fare?

    
posta Eds 18.01.2018 - 22:11
fonte

0 risposte

Leggi altre domande sui tag