Gedistribueerde data flow - Distributed data flow
Gedistribueerde datastroom (ook afgekort als verdeelde stroming ) verwijst naar een reeks van gebeurtenissen in een gedistribueerde applicatie of protocol .
Gedistribueerde datastromen dienen een doel analoog aan variabelen of werkwijzeparameters in programmeertalen zoals Java , doordat zij kunnen stellen dat is opgeslagen of door een softwarelaag gecommuniceerd vertegenwoordigen. Unlike variabelen of parameters die een eenheid staat dat zich op een locatie representeren, verdeeld stromen dynamisch en verdeeld: zij gelijktijdig in meerdere locaties binnen het netwerk tegelijkertijd. Als zodanig verdeeld stromen een natuurlijkere modelleren van de semantiek en de interne werking van bepaalde klassen van gedistribueerde systemen. In het bijzonder heeft de verdeelde datastroom abstractie gebruikt als een geschikte manier om de high-level logische relaties tussen delen van gedistribueerde protocollen.
informele woningen
Een gedistribueerd gegevensstroom aan de volgende informele eigenschappen.
- Asynchronous , non-blocking , en one-way . Elk geval een enkele instantie van een niet-blokkerende , one-way, asynchrone methode aanroep of andere vorm van expliciete of impliciete doorgeven van berichten tussen twee lagen of softwarecomponenten. Zo kan elke gebeurtenis één verzoek te vertegenwoordigen multicast een pakket door een afgegeven applicatielaag een onderliggend multicast protocol . De eis dat gebeurtenissen terugslag en asynchrone belangrijk. Aanroepen van methoden die resultaten kunnen terugkeren gewoonlijk wordt gerepresenteerd als twee afzonderlijke stromen: een stroming die de verzoeken representeert, en een andere stroom die responsen voorstelt.
- Homogene , in één richting , en uniform . Alle gebeurtenissen in de verdeelde stroom hebben dezelfde functionele en logische doeleinden en zijn aan elkaar gerelateerd; algemeen vereisen we dat zij vertegenwoordigen methodeaanroepen of berichtenuitwisseling tussen exemplaren van dezelfde functionele lagen of instanties van dezelfde bestanddelen , maar misschien op verschillende knooppunten in een computernetwerk . Bovendien moeten alle gebeurtenissen stromen in dezelfde richting (dat wil zeggen, één type van een laag of component altijd produceert, en de andere consumeert steeds events) en hebben hetzelfde type van een nuttige lading . Bijvoorbeeld kan een reeks gebeurtenissen die alle multicast verzoeken van dezelfde applicatielaag verleend aan dezelfde multicast protocol bevat een verdeelde stroom. Anderzijds zou een reeks gebeurtenissen die multicast verzoeken van verschillende applicaties verschillende multicastprotocollen omvat niet als een verdeelde stroom, noch zou een reeks gebeurtenissen die multicast verzoeken en bevestigingen en foutmeldingen vertegenwoordigen.
- Gelijktijdige , continue en gedistribueerd . De stroom omvat gewoonlijk alle gebeurtenissen die stromen tussen de twee lagen van software, gelijktijdig op verschillende plaatsen en op een eindige of oneindige periode. Dus in het algemeen evenementen in een verdeelde stroom verdeeld zowel in de ruimte (ze plaatsvinden op verschillende knooppunten) en tijd (ze voorkomen op verschillende tijdstippen). Bijvoorbeeld, zou de stroom van multicastberichten verzoeken al dergelijke verzoeken van voorbeelden van de specifieke toepassing op verschillende knooppunten omvatten; normaal zouden dergelijke stroming omvatten gebeurtenissen die plaatsvinden op alle knooppunten die aan het bepaalde multicast protocol. Een stroomschema, waarin alle gebeurtenissen plaatsvinden op hetzelfde knooppunt worden beschouwd gedegenereerd.
formele vertegenwoordiging
Formeel elke gebeurtenis in een verdeelde stroom als een viervoudige van de vorm (x, t, k, v), waarbij wij vertegenwoordigen x is de locatie (bijvoorbeeld het netwerkadres van fysieke knooppunt) waarop de gebeurtenis plaatsvindt, t is het tijdstip waarop dit gebeurt, k is een versie, of een sequentie identificeert de gebeurtenis, en v is een waarde die de gebeurtenis payload vertegenwoordigt (bijvoorbeeld alle argumenten gepasseerd bij een werkwijze gesprek). Elke verdeelde stroming is een (mogelijk oneindige) verzameling van dergelijke verviervoudigd, dat voldoet aan de volgende drie formele eigenschappen.
- Voor elke eindige tijdstip t , kan er slechts een eindig aantal gebeurtenissen in de stroming die optreden op tijdstip t of eerder. Dit houdt in dat waarin stromen, men altijd naar het tijdstip waarop de stroming ontstaan. De stroom zelf kan oneindig zijn; in een dergelijk geval, op elk moment, eventueel een nieuwe gebeurtenis weergegeven in de stroom.
- Voor elk paar gebeurtenissen E_1 en E_2 die voorkomen op dezelfde plaats als E_1 treedt op een eerder tijdstip dan E_2 dan het versienummer in E_1 moet kleiner dan die van E_2 zijn.
- Voor elk paar gebeurtenissen E_1 en E_2 die voorkomen op dezelfde plaats als de twee gebeurtenissen hebben dezelfde versienummers, moeten ze ook dezelfde waarden.
Naast het bovenstaande kan stromen een aantal aanvullende eigenschappen.
- Consistentie . Een verdeelde stroming wordt gezegd dat verenigbaar indien gebeurtenissen met dezelfde versie altijd dezelfde waarde, zelfs als ze zich voordoen op verschillende locaties. Consistente stromen typisch vertegenwoordigen verschillende soorten globale beslissingen van het protocol of toepassing.
- Monotoniciteit . Een verdeelde stroming wordt gezegd dat zwak monotoon als voor elk paar gebeurtenissen E_1 en E_2 die voorkomen op dezelfde plaats als E_1 een kleinere versie dan E_2 dan E_1 moet een kleinere waarde dan E_2 dragen. Een verdeelde stroming wordt gezegd dat sterk monotone (of eenvoudig monotone ) of dit geldt zelfs voor paren gebeurtenissen E_1 en E_2 die liggen op verschillende locaties. Sterk monotone stromen zijn altijd consistent. Zij vertegenwoordigen doorgaans diverse soorten onomkeerbare beslissingen. Zwak monotone stromen kan wel of niet consistent zijn.