spolehlivost (delivery semantics)

Spolehlivost je jedna z garancí definovaných komunikační model distribuovaného systému. Definuje, jak moc se systém snaží doručit zprávu a jaké garance poskytuje.

Typy delivery semantics

at-most-once semantics

  • Princip: Garance, že se operace neprovede více než jednou (ale nemusí se provést vůbec).
  • Implementace: Deduplikace na straně serveru (např. request ID, sequence number).
  • Garance: Operace proběhla nanejvýš jednou; klient si nemusí být jistý, zda proběhla.
  • Použití: Operace, kde je horší provést akci dvakrát než ji neprovést vůbec.

    at-least-once semantics

  • Princip: Klient opakuje požadavek, dokud nedostane potvrzení.
  • Garance: Operace proběhla alespoň jednou, ale může proběhnout vícekrát.
  • Riziko: Zde je právě nutná idempotence. Pokud operace není idempotentní, systém je nekonzistentní. See idempotence v RPC.
  • Použití: Tam, kde je doručení důležité, ale opakování nevadí (čtení dat).

    exactly-once semantics

    Princip: Ideální (teoretická) garance, že se operace provede právě jednou:

  • ani se neztratí
  • ani se neprovede vícekrát

Klient i server se shodnou, že operace proběhla jednoznačně a přesně jednou. Image