Distribueret datastrøm - Distributed data flow
Distribueret datastrøm (også forkortet som distribueret flow ) henviser til et sæt begivenheder i en distribueret applikation eller protokol .
Distribuerede datastrømme tjener et formål, der er analogt med variabler eller metodeparametre i programmeringssprog som Java , idet de kan repræsentere tilstand, der er gemt eller kommunikeret af et lag software. I modsætning til variabler eller parametre, der repræsenterer en tilstandsenhed, der er bosat på et enkelt sted, er distribuerede strømme dynamiske og distribuerede: de vises samtidig på flere placeringer i netværket på samme tid. Som sådan er distribuerede strømme en mere naturlig måde at modellere semantik og indre arbejde i visse klasser af distribuerede systemer. Især er den distribuerede dataflytabstraktion blevet brugt som en bekvem måde at udtrykke logiske forhold på højt niveau mellem dele af distribuerede protokoller.
Uformelle egenskaber
En distribueret datastrøm tilfredsstiller de følgende uformelle egenskaber.
- Asynkron , ikke-blokerende og envejs . Hver begivenhed repræsenterer en enkelt forekomst af en ikke-blokerende , envejs, asynkron metodeindkaldelse eller anden form for eksplicit eller implicit meddelelse, der passerer mellem to lag eller softwarekomponenter. For eksempel kan hver begivenhed repræsentere en enkelt anmodning om multicast en pakke , udstedt af et applikationslag til en underliggende multicast-protokol . Kravet om, at begivenheder er envejs og asynkrone, er vigtigt. Påkaldelser af metoder, der kan returnere resultater, vil normalt være repræsenteret som to separate strømme: en strøm, der repræsenterer anmodningerne, og en anden strøm, der repræsenterer svar.
- Homogen , ensrettet og ensartet . Alle begivenheder i den distribuerede strøm tjener det samme funktionelle og logiske formål og er forbundet med hinanden; generelt kræver vi, at de repræsenterer metodekald eller meddelelsesudveksling mellem forekomster af de samme funktionelle lag eller forekomster af de samme komponenter , men måske på forskellige noder i et computernetværk . Derudover skal alle begivenheder flyde i samme retning (dvs. at den ene type lag eller komponent altid producerer, og den anden fortærer altid begivenhederne) og bærer den samme type nyttelast . For eksempel er et sæt begivenheder, der inkluderer alle multicast-anmodninger udstedt af det samme applikationslag til den samme multicast-protokol, en distribueret flow. På den anden side vil et sæt begivenheder, der inkluderer multicast-anmodninger fra forskellige applikationer til forskellige multicast-protokoller, ikke betragtes som en distribueret strøm, og heller ikke et sæt begivenheder, der repræsenterer multicast-anmodninger samt anerkendelser og fejlmeddelelser.
- Samtidig , kontinuerlig og distribueret . Strømmen inkluderer normalt alle begivenheder, der flyder mellem de to lag af software, samtidigt på forskellige steder og over en endelig eller uendelig lang periode. Således er hændelser i en distribueret strøm generelt fordelt både i rummet (de forekommer i forskellige knudepunkter) og i tiden (de forekommer på forskellige tidspunkter). For eksempel vil strømmen af multicast-anmodninger omfatte alle sådanne anmodninger fremsat af forekomster af den givne applikation på forskellige noder; normalt vil en sådan strøm omfatte hændelser, der forekommer på alle noder, der deltager i den givne multicast-protokol. En strøm, hvor alle begivenheder forekommer i den samme knude, vil blive betragtet som degenereret.
Formel repræsentation
Formelt repræsenterer vi hver begivenhed i en distribueret strøm som en firedobler af formen (x, t, k, v), hvor x er placeringen (f.eks. Netværksadressen til en fysisk knude), hvor begivenheden finder sted, t er det tidspunkt, hvor dette sker, k er en version eller et sekvensnummer, der identificerer den bestemte begivenhed, og v er en værdi, der repræsenterer begivenhedens nyttelast (f.eks. alle argumenter, der er sendt i et metodekald). Hver distribueret strømning er et (muligvis uendeligt) sæt af sådanne firedobler, der tilfredsstiller de følgende tre formelle egenskaber.
- For et hvilket som helst tidspunkt i t , kan der kun være mange begivenheder i strømmen, der opstår på tidspunktet t eller tidligere. Dette indebærer, at i hvilken strømning, kan man altid pege på det tidspunkt, hvor strømmen opstod. Strømmen i sig selv kan være uendelig; i sådanne tilfælde til enhver tid vil en ny begivenhed vises i strømmen.
- For ethvert par begivenheder e_1 og e_2, der forekommer på samme sted, hvis e_1 finder sted på et tidligere tidspunkt end e_2, skal versionen i e_1 også være mindre end den for e_2.
- For alle par begivenheder e_1 og e_2, der forekommer på samme sted, hvis de to begivenheder har de samme versionnumre, skal de også have de samme værdier.
Ud over ovenstående kan strømme have et antal yderligere egenskaber.
- Konsistens . Det siges, at en distribueret strøm er konsistent, hvis begivenheder med den samme version altid har den samme værdi, selvom de forekommer forskellige steder. Konsistente strømme repræsenterer typisk forskellige slags globale beslutninger truffet af protokollen eller applikationen.
- Monotonicity . Det siges, at en distribueret strøm er svagt monotonisk, hvis for ethvert par begivenheder e_1 og e_2, der forekommer på samme sted, hvis e_1 har en mindre version end e_2, skal e_1 have en mindre værdi end e_2. Det siges, at en distribueret strøm er stærkt monotonisk (eller simpelthen monotonisk ), hvis dette er tilfældet, selv for par af begivenheder e_1 og e_2, der forekommer forskellige steder. Stærkt monotoniske strømme er altid ensartede. De repræsenterer typisk forskellige slags irreversible beslutninger. Svage monotoniske strømninger er muligvis ikke ensartede.