2010-08-26 14 views
5

Per un contratto governativo, proponiamo di costruire un'architettura di monitoraggio del traffico. Avremo i seguenti componenti:Quindi sto parlando di un SOA qui?

  • La videocamera è configurata intorno all'area di interesse. Le telecamere saranno a conoscenza della loro posizione, orientamento e parametri di visualizzazione.
  • Un server di mappe GIS che può essere interrogato per strade, edifici, ecc.
  • Un algoritmo che acquisisce le informazioni sul video e sulla posizione delle strade e fornisce le posizioni delle auto.
  • Un altro algoritmo rileva le posizioni delle auto e le informazioni stradali a livello molto basso e fornisce informazioni su quali automobili stanno guidando in modo anomalo.
  • Un altro database acquisisce informazioni sulle posizioni delle auto e sulle segnalazioni di anomalie nel tempo e può essere richiesto in seguito.
  • Un proxy (o forse più accuratamente una facciata) viene impostato sul database di archivio e sugli algoritmi in tempo reale al fine di fornire un'interfaccia unificata alle informazioni.
  • Un client si collega al proxy e al server di strada e dipinge varie rappresentazioni della situazione del traffico sullo schermo.

Sto solo imparando cos'è una SOA. È un candidato ideale per un'architettura orientata ai servizi SOA? Avevo sentito che i servizi SOA dovrebbero essere apolidi (o sono solo servizi RESTful?) Avevo anche sentito che era sconsigliabile convogliare un servizio al prossimo perché aumenta la complessità nascosta e che c'era qualcosa da fare rendere questa situazione migliore (una "orchestrazione"?). I servizi di cui sopra sembrano essere modulari e riutilizzabili. Ad esempio, ci saranno un sacco di telecamere, vari tipi di algoritmi di rilevamento e anomalie dei veicoli, database distribuiti e un sacco di clienti. Avrò bisogno di avere la capacità di gestire gli eventi: per esempio, se posso desiderare di registrarmi ad un servizio e ricevere una notifica ogni volta che un grosso camion supera questo punto.

Se questo non è idealmente implementato da una SOA, allora dovrei cercare altrove. Se questo è l'ideale per una SOA, allora dove dovrei iniziare quando si progetta questo? (E sto iniziando fondamentalmente dall'aver letto la pagina SOA di Wikipedia.) Ci sono dei buoni casi di studio da guardare qui?

risposta

5

Sì, SOA è l'ideale in questo caso (sistema complesso e distribuito con un ampio mix di tecnologie) ma dal suono di esso è necessario fare molto più ricerca per avere la testa intorno al concetto. Non è un concetto difficile da nessuna parte, è in realtà semplice, ma non esiste un modo prescritto per farlo. Suggerisco di andare oltre SOA case studies for similarly-sized projects, successi e fallimenti.

Si cita una facciata per uno dei sottosistemi. Estendi lo stesso concetto al resto dei tuoi componenti. Per esempio. ogni servizio è una facciata di un sottosistema complesso.

Inoltre, si consiglia di implementare un paio di servizi Web diversi nella scelta delle tecnologie e di astrarre sottosistemi arbitrari diversi (un database dovrebbe essere uno dei coponenti). Quindi scrivere un client che li utilizza. Fare così ti darà molta esperienza pratica e comprensione del concetto.

Ultimo pensiero: l'area in cui un'architettura SOA potrebbe inciampare è se devi spostare i dati video tra diversi servizi diversi. La natura statica e transazionale di SOA potrebbe introdurre problemi di prestazioni quando si spostano grandi quantità di dati o quando si eseguono transazioni di massa su insiemi di dati molto grandi. È necessario mantenere il video localizzato o implementare un sottosistema back-end (cheat) per evitare colli di bottiglia potenzialmente sgradevoli.

+0

Ottimo consiglio! Grazie. Un commento però, ci sono diversi servizi all'interno del mio framework che non possono essere apolidi (o altrimenti non capisco cosa significhi senza stato in questo caso). Ad esempio, il servizio di localizzazione del veicolo sarà un cliente del servizio video e terrà traccia della posizione delle auto (una sorta di stato) guardando continuamente ai nuovi fotogrammi del video. Forse l'importante è che ogni servizio non debba * mantenere * lo stato dei suoi clienti. Penso di potermene andare via da qui. – JnBrymn

+0

Cosa succede se voglio fare in modo che il servizio tenga traccia degli ascoltatori e li avvisa ogni volta che sono disponibili nuove informazioni. Ciò non rappresenterebbe lo stato di mantenimento del servizio dei suoi clienti, ma significherebbe che il servizio è stato mantenuto puntato ai suoi clienti. Fa male a qualcosa? – JnBrymn

+0

I client e il servizio hanno un accoppiamento più stretto. Un client può essere offline e devi decidere cosa dovrebbe fare il servizio in tale situazione, interrompere, ignorare, riprovare o notificare qualche altro sistema? – Kwebble

Problemi correlati