Osa 1 valitsi laajuuden, vahvisti neljän kerroksen arkkitehtuurin ja suunnitteli kanonisen rataskeeman. Osa 2 rakentaa moottorin, joka muuttaa anturiraportit luotettaviksi radoiksi: adapterit, jotka tuovat lähteet sisään, korrelaatioalgoritmit, jotka päättävät mitkä raportit viittaavat samaan fyysiseen kohteeseen, elinkaaren hallinta, joka kertoo COP:lle milloin rata on vanhentunut, ja ratavarasto, joka ankkuroi kaiken. Osan 2 lopussa alusta tuottaa operatiivisesti hyödyllisiä ratoja; niille ei vain ole vielä näyttöpaikkaa.

Käsitteellinen viite kaikelle osan 2 sisällölle on Täydellinen opas puolustuksen datafuusioon, joka kartoittaa alan. Tässä teemme erityisiä päätöksiä juoksevalle esimerkkialustalle.

Vaihe 1: Adapterikuvio, toteutettuna tiukasti

Jokainen anturi tuottaa dataa omassa formaatissaan. Tutkat puhuvat ASTERIX:ia; UAV:t puhuvat STANAG 4586:ta; AIS-vastaanottajat lähettävät NMEA 0183:a; ATAK-asiakkaat puhuvat CoT:ia; siviilit ADS-B-syötteet lähettävät eri binääriprotokollaa; manuaalisesti raportoidut havainnot saapuvat verkkolomakkeen kautta. Adapterikerroksen tehtävä on kääntää kaikki nämä osan 1 kanoniseen rataskeemaan.

Sääntö on brutaali ja muistamisen arvoinen: yksikään anturikohtainen käsite ei vuoda adapterien ohi. Jos fuusiomoottorisi koodi viittaa ASTERIX-kategorioihin, sinulla on vuotava arkkitehtuuri. Jos ratavarастossasi on sarake AIS-viestityypeille, sinulla on vuotava arkkitehtuuri. Adapterit ovat yksisuuntaisia datamuuntimia tiukalla eristämisellä; ne paljastavat vain kanonisia ratoja ylöspäin.

Käytännön adapterirakenne kullekin lähteelle:

  • Siirto — yhteytin lГ¤hteeseen (UDP-pistoke, MQTT-tilaus, HTTP-webhook, tiedostontarkkailija). Joustava lГ¤hdepuolen vikaantumisessa: uudelleenyhdistГ¤miset, taaksepГ¤inotustus, pudotettujen viestien kirjanpito.
  • JГ¤sennin — kääntää johtimen formaatin vahvasti tyypitetyksi prosessinsisГ¤iseksi rakenteeksi. Vahvistaa formaattimäärittelyn mukaan. Hylkää virheellisen syГ¶tteen ääneen eikГ¤ hiljaa.
  • Normalisoija — kartoittaa lГ¤hdekohtaiset kentГ¤t kanonisiin kenttiin. KoordinaattijГ¤rjestelmГ¤n muunnos (tyypillisesti WGS84:ksi). Aikaleiman normalisointi (UTC, osan 1 kolmen aikaleiman kurinalaisuudella).
  • LГ¤hettГ¤jГ¤ — julkaisee kanonisen ratapГ¤ivityksen viestibussille. Tagaa lГ¤hdeen tunnistimella, lГ¤hteen luokittelulla, julkaistavuudella.

Jokainen adapteri on erillinen palvelu tai prosessi. Ne jakavat koodista generoidun asiakaskirjaston kanoniselle sokeemalle, mutta eivät muita koodipolkuja. Uuden anturityypin lisääminen tarkoittaa uuden adapterin kirjoittamista, ei muun komponentin koskemista. Yksityiskohtaiset integrointikuviot yleisille lähteille ovat artikkelissa AIS:n ja ADS-B:n integrointi sotilaskuvaan ja CoT-puoli artikkelissa Cursor on Target (CoT): XML-standardi taktisten tietoisuussovellusten taustalla.

Vaihe 2: Viestibussin kytkentä

Adapterit julkaisevat kestävään, järjestettyyn, ositettuun lokiin. Fuusiopalvelut kuluttavat siitä. Samoin tarkastuspalvelu, historiallinen toisto-palvelu ja kaikki alajuoksuanalytiikka. Viestibussi on alustan selkäydin.

Juoksevassa esimerkissä käytämme Kafkaa lähdetyyppikohtaisilla aiheilla ja lisäaiheilla fuusioulostuloja varten. Adapterit julkaisevat raw.lähdetyyppi-aiheisiin; fuusiokone kuluttaa niistä ja julkaisee tracks.updates- ja tracks.lifecycle-aiheisiin. Tarkastus tilaa kaiken. Bussikuvio, mukaan lukien suorituskyky- ja kestävyyskompromissit, on artikkelissa Viestijononot puolustuksen dataputouksiin.

Arkkitehtuuripäätös, joka kannattaa nostaa esiin: älä kutsu HTTP:tä fuusiokomponenttien välillä. Synkroninen pyyntö-vastaus-kytkentä tekee fuusioputkistosta hauraun. Anturiylisyöttö, joka pysäyttää yhden kuluttajan, ei saa pysäyttää jokaista ylävirtaista tuottajaa. Bussi takaisenpainetta vastaan on rakenteellinen ratkaisu; HTTP fuusiokomponenttien välillä on toistuva käyttökatkosten lähde.

Vaihe 3: Rata-rata-korrelaatio

Fuusiomoottorin ydin on algoritmi, joka päättää onko saapuva raportti päivitys olemassa olevaan rataan vai uuden syntyminen. Tee tämä väärin ja operaattori näkee ratasotkun (tuhat symbolia siellä missä pitäisi olla sata) tai haamuratoja (kopioita, joiden olisi pitänyt yhdistyä). Tee se oikein ja COP:ista tulee luotettava.

Käytännön kuvio käyttää kaksivaiheista suodatinta.

Vaihe 1: Sääntöpohjainen portitus. Laske jokaiselle saapuvalle raportille joukko ehdokkaana olevista olemassa olevista radoista kinemaattisen ulottuvuuden sisällä — sijaintiaikaportti, joka sanoo "rata, joka liikkuu enintään V m/s, olisi voinut matkustaa viimeisestä tunnetusta sijainnistaan tähän raportin sijaintiin tässä aikavälissä". Identiteettia priori suodattavat edelleen: "alus"-merkitty raportti ei voi täsmätä "ilma-alus"-rataan. Lähteen yhteensopivuus suodattaa: maatutkan raportti ei voi täsmätä vedenalaisen alustan ilmarataan. Sääntöpohjainen vaihe käsittelee 90% syötteistä halvasti ja yksiselitteisesti.

Vaihe 2: Todennäköisyyspohjainen assosiaatio. Kiistanalaisissa tapauksissa — useita ehdokkaita portin sisällä, epäselvä identiteetti, tiheät skenaariot ristikkäisillä trajektooreilla — käynnistä todennäköisyyspohjainen data-assosiaatio. Yhteinen todennäköisyyspohjainen data-assosiaatio (JPDA) kohtuulliselle tiheydelle; Monihypoteesiseuranta (MHT) vaikeimmille tapauksille. Molemmat laskevat todennäköisyyden, että saapuva raportti kuuluu kullekin ehdokasradalle, ja päivittävät ratoja sen todennäköisyyden painottamana.

Täydellinen teoreettinen malli insinöörillisine vaikutuksineen on artikkelissa JDL-datafuusiomalli: Käytännön insinöörillinen viite. Insinöörillinen vivahteet siitä, milloin kutakin tekniikkaa sovelletaan, ja vaadittava virittäminen ovat artikkelissa Sotilaallinen datafuusio selitettynä.

Huomionarvoinen erityinen sudenkuoppa: MHT tuottaa eksponentiaalisen määrän hypoteeseja ilman karsintaa. Karsintapolitiikka — kuinka monta hypoteesia säilytetään, milloin yhdistetään, milloin poistetaan — on tärkeämpi kuin ydinalgoritmit. Oletus on aggressiivinen karsinta; viritä ulospäin vain kun uhkakuva sitä vaatii.

Vaihe 4: Radan elinkaaren hallinta

Rata ei ole staattinen tietue. Se syntyy, vahvistuu, vanhenee, haalistuu ja kuolee. Fuusiokone hallitsee elinkaarta eksplisiittisesti; COP näyttää elinkaaritilan, jotta operaattorit tietävät mihin ratoihin luottaa.

Tilakone juoksevaa esimerkkiä varten:

  • Alustava — ensimmГ¤inen havainto; ei vielГ¤ nГ¤ytetГ¤ operatiivisessa COP:ssa ellei erikseen pyydetГ¤. Haalistuu poistetuksi, jos jatkoa ei tule määritettГ¤vissГ¤ olevassa ajassa.
  • Vahvistettu — kaksi tai useampi korreloitu raportti, kinemaattinen johdonmukaisuus pitää. Ylennetty alustavasta. TГ¤mГ¤ on oletustila nГ¤ytetyille radoille.
  • KypsГ¤ — vahvistettu ja pysyvГ¤ vГ¤hintään N minuuttia johdonmukaisilla pГ¤ivityksillГ¤. KГ¤ytetään alajuoksuanalytiikalla, joka tarvitsee vakaata identiteettiГ¤.
  • Haalistuva — ei pГ¤ivitystГ¤ odotetun tarkastusvГ¤lin sisГ¤llГ¤. NГ¤yttГ¶ merkitty vanhentuneeksi. Konfiguroitavissa lГ¤hdeluokittain (30 sekuntia vanha meritie on hyvГ¤ksyttГ¤vГ¤; 30 sekuntia vanha ilmarata on haalistuva).
  • Kadonnut — ei pГ¤ivitystГ¤ pitkään aikaan. Poistettu aktiivisesta nГ¤ytГ¶stГ¤, mutta sГ¤ilytetty ratavarастossa tarkastusta ja historiallista analyysiГ¤ varten.

Jokainen tilasiirtymä kirjataan. Tarkastuspalvelu kuluttaa siirtymävirran ja kirjoittaa muuttumattomia tietueita — artikkelin Tapahtumalähtöisyys puolustuksen tarkastushistorioissa aihe. Siirtymät paljastetaan myös bussilla, jotta COP voi renderöidä elinkaaritilan kyselemättä.

Keskeinen oivallus: Operaattorit sietävät puuttuvan radan. He eivät siedä luottavaisesti näytettyä vanhentunutta rataa. Elinkaaren hallinta on kerros, joka tekee eron. Rakenna se ennen kuin fuusioalgoritmi on täysin viritetty — se on halpa, ja se maksaa itsensä takaisin joka kerta, kun anturilinkki putoaa.

Vaihe 5: Auktoritatiivinen ratavarasto

Fuusio tuottaa virran ratapäivityksiä ja elinkaarisiirtymiä. Ratavarasto on materiaalistettu näkymä: jokaisen aktiivisen radan nykyinen tila, jota COP ja analytiikka voivat kysellä. Arkkitehtuuripäätös, joka kannattaa tehdä varhain: ratavarasto on luettava malli, ei auktoritatiivinen lähde. Auktoritatiivinen lähde on tapahtumaloki viestibussilla. Ratavarasto rakennetaan uudelleen lokista tarvittaessa.

Tällä kuviolla — tapahtumalähtöinen tila luettavilla malli-projektioilla — on kolme operatiivista hyötyä. Varasto voidaan pyyhkiä ja rakentaa uudelleen ilman datan menetystä. Useita luettavia malleja eri muodoilla voi olla rinnakkain (yksi COP:lle, yksi analytiikalle, yksi ulkoiselle API:lle). Aikamatkakyselyt tulevat triviaaleiksi: toista loki valittuun aikaan asti rekonstruoidaksesi mitä alusta silloin uskoi.

Varasto itsessään on PostgreSQL PostGIS:llä geospatiaaliseen indeksointiin. Kuumat radat elävät muistissa tai Redis-kerroksessa PostgreSQL:n edessä alle millisekuntin lukemisiin; relaatiotietokanta käsittelee pidempiä kyselyjä ja pysyvyystakuita. Yksityiskohtainen insinöörillinen näkymä on artikkelissa PostGIS puolustuksen geospatiaaliselle datalle.

Vastusta kiusausta lisätä graafitietokanta "suhteita varten". Ratojen väliset suhteet — saattojen havaitseminen, muodostelman tunnistaminen, kontaktiverkostot — ovat JDL-tason 2 fuusiota, erillinen huolenaihe tason 1 ratan ylläpidosta. Rakenna taso 1 ensin, aja se operaatioissa vuosi, sitten palaa tasoon 2 operatiiviset todisteet käsillä.

Vaihe 6: Testaa realistisilla syötteillä

Fuusiokone, jota testataan vain lelukorkeudella, läpäisee integrointitestin ja epäonnistuu operaatioissa. Kurinalaisuudet, jotka havaitsevat ongelmat ennen käyttöönottoa:

Toisto-testiympäristöt. Kaappaa todelliset anturijäljet kehityksessä ja toista ne täydellä nopeudella fuusiokonetta vastaan. Jäljet toimivat regressiotestipakettina: uuden algoritmin tai sokeemamuutoksen täytyy tuottaa vastaavia tai parempia tuloksia olemassa olevilla jäljillä, ei vain synteettisellä kuormituksella.

Vihamieliset syötteet. Väärennetyt AIS-viestit epäuskottavalla kinematiikalla. Virheellinen CoT XML. Tutkan pisteet, jotka rikkovat fysiikan (Mach 5 maajäljet). Fuusiomoottorin täytyy hylätä tai merkitä nämä, ei panikoida, ei kaatua, ei tuottaa varmoja-mutta-vääriä ratoja. Kurinalaisuus on sama kuin laajempi testauskurinalaisuus artikkelissa Mission-kriittisten C2-järjestelmien testaus.

Elämänkaavan havaitseminen. Kun perusfuusio toimii, lisää PoL-analytiikka — katso Elämänkaavananalyysi sotilastiedustelussa. PoL-palvelu kuluttaa samoja bussaiheita; se tuottaa rikastetut ratatilamerkinnat eikä kilpaile fuusiomoottorin kanssa.

Vaihe 7: Suorituskykytavoitteet ja -marginaali

Fuusioviive on operatiivisesti merkittävä. Tavoitteet juoksevalle esimerkkialustalle: 95. persentiili päästä päähän fuusioviive alle 500 ms (antuririaportin nieleminen ratapäivitysviestiksi bussilla); 99. persentiili alle 1,5 s; suorituskyky kestävänä 10 000 raporttia sekunnissa yksinumeroisella CPU-marginaalilla.

Nämä ovat taktisen prikaatin tavoitteita. Strategisilla alustoilla on löysemmät viiveansiat ja korkeammat suorituskykyjuoksuarvot. Tavoitteet ohjaavat arkkitehtuuripäätöksiä: vältä synkronisia palveluiden välisiä kutsuja kuumalla polulla; esilokoi kuumien ratojen tila; erätoimita vain siellä missä bussi sallii; instrumentoi jokainen putkinvaihe niin, että viiveregressiot nousevat esiin CI:ssä eikä operaatioissa.

Mitä seuraavaksi

Osa 2 on rakentanut moottorin. Anturiadapterit muuntavat kanonisiksi radoiksi; viestibussi kuljettaa tapahtumat; fuusiokone korreloi raportit radoiksi; elinkaaren hallinta pitää operaattorit rehellisesti tuoreudesta tietoisina; ratavarasto paljastaa nykyisen tilan. Alusta tuottaa nyt luotettavia ratadataa. Sillä ei vain ole operaattorille suunnattua pintaa.

Osa 3 rakentaa yhteisen operatiivisen kuvan — käyttöliittymän, joka muuttaa radat kartaksi, jota operaattori oikeasti käyttää. Symbologia, reaaliaikaiset päivitykset, roolipohjainen suodatus ja insinöörillisет päätökset, jotka määräävät otetaanko alusta käyttöön kentällä.