Dev Study
← コンピュータの基礎

分散メッセージングとストリーム

6 カテゴリ・60

メッセージングI(キューとログの二つのモデル)

10

メッセージブローカーには「消費したら消える従来型キュー(RabbitMQ型)」と「追記専用ログに残し続けるログ型(Kafka型)」という根本的に異なる二つのストレージモデルがあります。誰が読み取り位置を管理するのか、なぜログ型だけが複数の独立コンシューマによる再生を許すのか、シーケンシャル書き込みが速い理由やコンパクションの仕組みまで、ブローカーが保証を「どう」実現するかに踏み込んで理解します。

メッセージングII(パーティションと順序保証)

10

ログを分割するパーティションは、並列で処理量を稼ぐための仕組みですが、その代償として「全体の順序」を手放します。順序がどこまで保証され、どこで崩れるのか、キーやコンシューマグループがそれをどう制御するのかを、パーティションという1つの機構に絞って理解します。スケールと順序が本質的にトレードオフになる理由を、土台から押さえます。

メッセージングIII(ackと再配送・DLQの実装)

10

配送保証は概念でなく「機構」で決まります。コンシューマのackがいつ返るか、可視性タイムアウトやinflightで処理中をどう隠すか、失敗をDLQでどう退避するか、そしてプロデューサ側のackと冪等プロデューサが再送重複をどう消すかを、ブローカーの内部動作から理解します。

メッセージングIV(pub/subとトポロジ)

10

1つのメッセージを「1人が処理する」のか「全員に配る」のか、という配り方の設計を扱います。AMQPのexchangeによるルーティング、相関IDを使ったリクエスト/リプライ、fan-in/fan-out、ブローカー型とブローカーレスの違いまで、ブローカーが購読トポロジをどう実現するかを土台から確認します。

メッセージングV(バックプレッシャとフロー制御)

10

プロデューサとコンシューマの処理速度に差があると、メッセージは溜まる一方になります。この差をブローカーがどう吸収し、下流が「もう受け取れない」をどう上流へ伝えて流量を落とすのか。プル型とプッシュ型の違い、prefetch/クレジットによる未ack制限、キューを緩衝に使う負荷平準化、そして無限にキューが伸びる危険とコンシューマラグの監視まで、各基盤の公式ドキュメントに沿って仕組みから理解します。

メッセージングVI(Outbox・Sagaと信頼できる統合)

10

DBの更新とメッセージ送信を安全に繋ぐための統合パターンを学びます。二重書き込み問題・Outbox・Saga・スキーマ進化を、配送保証の概念そのものではなく「ブローカーやDBを使ってどう機構として実現するか」の観点で問います。