【イグザクトリーワンスはいしん】

Exactly Once配信 とは?

💡 重複も消失もゼロ、完璧な「一度きり」を約束する特急便
📌 このページのポイント
Exactly Once配信:厳密に1回だけ届く 配信セマンティクスの比較 At Most Once 0回または1回 消失あり・重複なし ⚠ 失う可能性 At Least Once 1回以上 消失なし・重複あり ⚠ 重複の可能性 Exactly Once 厳密に1回 消失なし・重複なし ✓ 最も強い保証 Exactly Onceの実現(Kafkaの例) べき等な送信 (送信ID管理) トランザクション (Atomic書き込み) Exactly Once 実現
Exactly Once配信:3段階の配信保証の比較と実現方法
ひよこ ひよこ

Exactly Once配信って、ぴったり1回だけ届くってこと?

ペンギン先生 ペンギン先生

そうだよ。重複して届くこともなく、消えることもなく、必ずちょうど1回だけ届けることを保証するんだ。配信セマンティクスの中で一番強い保証レベルだよ。

ひよこ ひよこ

それって難しいの?

ペンギン先生 ペンギン先生

かなり難しいんだよ。ネットワーク障害や再送が起きたときに「届いたのか届いていないのか」を正確に判断して、重複を防ぎながら欠落もなくする仕組みが必要だからね。

ひよこ ひよこ

どうやって実現するの?

ペンギン先生 ペンギン先生

Kafkaではプロデューサーにトランザクション機能とべき等な送信設定を組み合わせることで実現しているよ。送信IDを使って重複メッセージを検出して捨てる仕組みなんだ。

ひよこ ひよこ

At Least Onceとどう使い分けるの?

ペンギン先生 ペンギン先生

銀行の送金や在庫引き当てなど、同じ処理が2回走ると困る場面ではExactly Onceが必要だよ。ログ収集やメトリクスのように多少の重複が許容できる場面ならAt Least Onceで十分で、パフォーマンスも高くなるんだ。

ひよこ ひよこ

コストが高いってどういう意味なの?

ペンギン先生 ペンギン先生

処理の速度や複雑さのコストだよ。Exactly Onceを実現するにはトランザクション管理や状態の保持が必要で、スループットが下がったり実装が複雑になったりするんだ。使う場面をよく見極めることが大切だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Exactly Once」って出てきたら「重複も欠落もない厳密な1回配信保証」と思えればだいたいOK!
📖 おまけ:英語の意味
「Exactly Once Delivery」 = 厳密に1回の配信
💬 「正確に(exactly)1回(once)」届けるという意味で、重複も消失もない理想的な配信を指すんだよ。ただし「分散システムでExactly Onceは理論的に不可能」という議論もあり、実際には『重複を除去した結果としてExactly Onceに見える』実装が多いんだ。
← 用語集にもどる