Utilizzo del bus di servizio in un motore Pub-Sub

3

In uno dei nostri progetti, abbiamo creato un motore di sottoscrizione editore su Oracle Service Bus. La funzionalità essendo una serie di eventi vengono pubblicati e gli abbonati (code JMS) li ricevono ogni volta che viene pubblicato un nuovo evento.

Ora stiamo affrontando alcuni problemi tecnici, dal punto di vista delle prestazioni e quindi è in corso una revisione architettonica.

Ora per le mie domande:

Architettonicamente l'ESB deve pubblicare eventi in un DB e leggere dal DB quali utenti desiderano essere avvisati, quindi spingere l'evento sulle loro rispettive code.

C'è una grande quantità di interazione con il DB e la domanda è se ESB dovrebbe avere una tale quantità di interazione con il DB in primo luogo ? O dovrebbe esserci stata qualche componente alternativa responsabile di questo.

In alternativa esiste un approccio non DB in cui possiamo archiviare gli eventi e gli abbonati ? In quale altro luogo possono essere contenuti i dati di questa applicazione all'interno del contesto ESB?

    
posta JoseK 17.11.2011 - 09:33
fonte

2 risposte

3

Hai considerato sistemi basati sugli eventi, come Elaborazione eventi complessi ? Questi sono strumenti progettati per gestire eventi di streaming ad alto volume. Alcuni supportano l'integrazione con un database per la correlazione cronologica e l'archiviazione dei dati.

Un primo esempio di motore CEP open source è Esper , anche se credo che l'integrazione del database sia parte della soluzione commerciale di Esper Enterprise . Non ho usato questo particolare strumento prima, ma ho ricercato e sviluppato con applicazioni simili. Non sono sicuro di quale sia l'impatto sulle prestazioni dell'aggiunta del database, ma sono progettati per situazioni in cui molti eventi vengono elaborati rapidamente e mantengono un elevato throughput di eventi.

Per lo meno, forse i modelli architettonici basati sugli eventi potrebbero essere qualcosa che puoi guardare e adattare, se necessario, al tuo particolare problema.

    
risposta data 17.11.2011 - 16:48
fonte
1

È possibile memorizzare gli eventi e gli abbonati in redis link

Poiché Redis è un server di strutture dati. È possibile utilizzare la struttura dati Hash per tenere traccia di ogni istanza del sottoscrittore creando una chiave come nome dell'abbonato e memorizzando altre informazioni importanti come ID, trasporto ed e.t.c in formato json. Lo stesso può essere fatto anche per gli eventi.

Il vantaggio dell'utilizzo dell'hash è che puoi recuperare le tue informazioni di sottoscrizione secondo necessità in O (1). Puoi anche utilizzare la struttura hash per collegare gli abbonati a un argomento specifico

    
risposta data 17.11.2011 - 16:33
fonte

Leggi altre domande sui tag