Apache Kafka
Apache Kafka is een open-source platform dat stromen van events opslaat en doorgeeft: producenten schrijven berichten naar een topic, afneme...
Lees meerAt-most-once delivery betekent dat elk bericht hoogstens één keer aankomt: nul of één keer. Het kan verloren gaan, maar komt nooit dubbel toe. Fire and forget, zonder nieuwe poging. Lees wanneer die keuze slim is (metingen, sensoren) en wanneer ze absoluut niet kan (betalingen, bestellingen).
At-most-once delivery betekent dat elk bericht hoogstens één keer aankomt: nul of één keer. Het kan verloren gaan, maar komt nooit dubbel toe. De verzender stuurt zijn bericht en kijkt niet meer om: geen bevestiging afwachten, geen nieuwe poging als het misloopt.
In MQTT, het protocol achter veel sensoren, heet die aanpak fire and forget: afvuren en vergeten. Het is de tegenpool van at-least-once delivery, waar de verzender blijft herproberen en zo soms hetzelfde bericht twee keer aflevert. At-most-once ruilt die zekerheid in voor snelheid: de simpelste garantie, met de minste overhead.
Het mechanisme is bewust kaal. De verzender wacht niet op een ack (ontvangstbevestiging) en houdt geen kopie bij om opnieuw te sturen. Gaat het bericht onderweg verloren of crasht de ontvanger net voor hij het verwerkt, dan is het weg en komt er niks in de plaats.
Aan de leeskant zie je hetzelfde. Een consumer die at-most-once wil, markeert een event als verwerkt voordat hij het behandelt. In Apache Kafka commit je daarvoor de offset (je positie in de stroom) voor je aan de slag gaat. Crasht de consumer tussen die twee stappen, dan begint hij bij de herstart een event verder. Dat ene is overgeslagen: nooit dubbel, soms gemist.
At-most-once is er één van drie. Het verschil zit volledig in wat er gebeurt bij een fout.
At-most-once: nul of één keer. Een bericht kan verloren gaan, maar komt nooit dubbel. Snelst en eenvoudigst, want er is geen herhaling en geen dedup nodig.
At-least-once: één of meer keer. Een bericht gaat nooit verloren, maar kan dubbel aankomen na een retry. Daarom verwerk je zulke berichten idempotent: twee keer verwerken geeft hetzelfde resultaat als één keer.
Exactly-once: precies één keer. Niks verloren, niks dubbel. De sterkste garantie, maar ze vraagt coördinatie tussen verzender en ontvanger en is daardoor het traagst en duurst.
De meeste message brokers leveren standaard at-least-once: een verloren bericht is meestal erger dan een dubbel. At-most-once kies je bewust, waar dat net omgekeerd ligt.
Kies at-most-once als een verloren bericht je niks kost en snelheid en eenvoud wel iets opleveren. Bij hoog volume telt dat dubbel: elke ack en retry is werk dat je hier overslaat.
Waar het past:
Sensormetingen. Een toestel dat elke seconde de temperatuur doorstuurt. Mis je er één, dan is de volgende er een seconde later en blijft de trend kloppen.
Telemetrie in groten getale. Prestatiecijfers van servers, app-gebeurtenissen, klikstromen. Je kijkt naar het geheel: één datapunt op miljoenen verschuift de cijfers niet.
Log sampling. Wie geen volledige logs bewaart maar een steekproef, heeft aan at-most-once genoeg: die steekproef is toch al onvolledig.
Waar het niet kan: betalingen, bestellingen en voorraadmutaties. Daar is elk verloren bericht een fout die je achteraf niet terugvindt en die een klant of je boekhouding raakt. Voor die stromen gebruik je at-least-once met idempotente verwerking, of exactly-once. De testvraag: als net dit bericht verdwijnt, merkt iemand het dan en kost het geld? Zo ja, dan valt at-most-once af.
Apache Kafka is een open-source platform dat stromen van events opslaat en doorgeeft: producenten schrijven berichten naar een topic, afneme...
Lees meerAPI-automatisering laat systemen via gedocumenteerde programmeerinterfaces gegevens en opdrachten uitwisselen. De automatisering gebruikt re...
Lees meerAt-least-once delivery is de garantie dat elk bericht minstens één keer aankomt. Verloren gaat het niet, maar door een retry na een gemiste ...
Lees meerEen automated cloud flow start automatisch door een gebeurtenis in een gekoppelde dienst, zoals een nieuwe Dataverse-rij, ontvangen e-mail o...
Lees meerEen backfill is het opnieuw of alsnog verwerken van historische data door een pijplijn die normaal alleen nieuwe of gewijzigde data oppakt. ...
Lees meer