Distribuert datastrøm - Distributed data flow

Image
En illustrasjon av de grunnleggende konseptene som er involvert i definisjonen av en distribuert datastrøm.

Distribuert datastrøm (også forkortet som distribuert flyt ) refererer til et sett med hendelser i en distribuert applikasjon eller protokoll .

Distribuerte datastrømmer tjener et formål som er analogt med variabler eller metodeparametere i programmeringsspråk som Java , ved at de kan representere tilstand som er lagret eller kommunisert av et lag programvare. I motsetning til variabler eller parametere, som representerer en tilstandsenhet som er bosatt på et enkelt sted, er distribuerte strømmer dynamiske og distribuerte: de vises samtidig på flere steder i nettverket samtidig. Som sådan er distribuerte strømmer en mer naturlig måte å modellere semantikk og indre arbeid i visse klasser av distribuerte systemer. Spesielt har den distribuerte dataflytabstraksjonen blitt brukt som en praktisk måte å uttrykke logiske sammenhenger på høyt nivå mellom deler av distribuerte protokoller.

Uformelle egenskaper

En distribuert datastrøm tilfredsstiller følgende uformelle egenskaper.

  • Asynkron , ikke-blokkerende og enveis . Hver hendelse representerer en enkelt forekomst av en ikke-blokkerende , enveis, asynkron metode-innkalling eller annen form for eksplisitt eller implisitt melding som går mellom to lag eller programvarekomponenter. For eksempel kan hver hendelse representere en enkelt forespørsel om multicast en pakke , utstedt av et applikasjonslag til en underliggende multicast-protokoll . Kravet om at hendelser er enveis og asynkrone er viktig. Påkallinger av metoder som kan gi resultater, vil normalt bli representert som to separate strømmer: en strøm som representerer forespørslene, og en annen flyt som representerer svar.
  • Homogen , ensrettet og enhetlig . Alle hendelser i den distribuerte strømmen tjener samme funksjonelle og logiske formål, og er relatert til hverandre; generelt krever vi at de representerer metodeanrop eller meldingsutveksling mellom forekomster av de samme funksjonelle lagene , eller forekomster av de samme komponentene , men kanskje på forskjellige noder i et datanettverk . Videre må alle hendelser flyte i samme retning (dvs. at den ene typen lag eller komponent alltid produserer, og den andre alltid konsumerer hendelsene), og har samme type nyttelast . For eksempel er et sett med hendelser som inkluderer alle multicast-forespørsler utstedt av det samme applikasjonslaget til den samme multicast-protokollen, en distribuert flyt. På den annen side vil et sett med hendelser som inkluderer multicast-forespørsler fra forskjellige applikasjoner til forskjellige multicast-protokoller ikke betraktes som en distribuert flyt, og heller ikke et sett med hendelser som representerer multicast-forespørsler, så vel som kvitteringer og feilvarsler.
  • Samtidig , kontinuerlig og distribuert . Flyten inkluderer vanligvis alle hendelser som flyter mellom de to programvarelagene, samtidig på forskjellige steder, og over en begrenset eller uendelig lang periode. Dermed blir generelt hendelser i en distribuert flyt fordelt både i rommet (de forekommer i forskjellige noder) og i tid (de oppstår til forskjellige tider). For eksempel vil flyten av multicast-forespørsler omfatte alle slike forespørsler fremsatt av forekomster av den gitte applikasjonen på forskjellige noder; normalt vil slik flyt inkludere hendelser som oppstår på alle noder som deltar i den gitte multicast-protokollen. En flyt, der alle hendelser inntreffer i samme knutepunkt vil bli betraktet som degenerert.

Formell representasjon

Formelt utgjør vi hver hendelse i et distribuert strømning som en firedoble av formen (x, t, k, v), hvor x er den plassering (f.eks nettverksadressen for en fysisk node) ved hvilken hendelse inntreffer, t er tidspunktet dette skjer, k er en versjon, eller et sekvensnummer som identifiserer den spesifikke hendelsen, og v er en verdi som representerer hendelsens nyttelast (f.eks. alle argumentene som sendes i en metodeanrop). Hver distribuert strømning er et (muligens uendelig) sett med slike firedobler som tilfredsstiller følgende tre formelle egenskaper.

  • For ethvert begrenset tidspunkt i tid t , kan det bare være ganske mange hendelser i strømmen som oppstår på tidspunktet t eller tidligere. Dette innebærer at man i hvilken flyt alltid kan peke på tidspunktet hvor strømmen oppsto. Flyten i seg selv kan være uendelig; i et slikt tilfelle når som helst, til slutt vil en ny hendelse vises i strømmen.
  • For alle par hendelser e_1 og e_2 som oppstår på samme sted, hvis e_1 oppstår på et tidligere tidspunkt enn e_2, må versjonsnummeret i e_1 også være mindre enn e_2.
  • For alle hendelser par e_1 og e_2 som oppstår på samme sted, hvis de to hendelsene har samme versjonsnummer, må de også ha de samme verdiene.

I tillegg til det ovennevnte, kan strømmer ha et antall tilleggsegenskaper.

  • Konsekvens . En distribuert flyt sies å være konsistent hvis hendelser med samme versjon alltid har den samme verdien, selv om de oppstår på forskjellige steder. Konsistente strømmer representerer typisk forskjellige typer globale beslutninger som tas av protokollen eller applikasjonen.
  • Monotonicity . En distribuert flyt sies å være svakt monotonisk hvis for noen hendelsespar e_1 og e_2 som oppstår på samme sted, hvis e_1 har en mindre versjon enn e_2, så må e_1 ha en mindre verdi enn e_2. En distribuert flyt sies å være sterkt monoton (eller ganske enkelt monoton ) hvis dette er tilfelle selv for par av hendelser e_1 og e_2 som oppstår på forskjellige steder. Sterkt monotoniske strømmer er alltid konsistente. De representerer typisk forskjellige slags irreversible beslutninger. Svake monotoniske strømmer kan være eller ikke være konsistente.

referanser