【ナッツ】

NATS とは?

最終更新:
💡 サービスを、名前付きのメッセージでつなぐ

subjectという名前でメッセージを送受信する、軽量なオープンソースのメッセージングシステム。Pub/SubやRequest/Reply、Queue Groupを利用でき、JetStreamで保存・再配信も扱える。

📌 このページのポイント
NATS:メッセージの配り方 Pub/Sub:購読者へ配る 送信者 NATS サーバー 購読者A 購読者B Request/Reply:要求と返信 要求側 NATS サーバー 応答側 要求 要求 返信 返信 Queue Group:グループ内の1人へ 送信者 NATS サーバー 同じグループ 担当A 担当B Core NATS:保存・後からの再生なし
通常の購読は各購読者へ、Queue Groupは各メッセージをグループ内の1人へ配る(下段はAが選ばれた例)。保存や再配信はJetStreamで別途設定する。
ひよこ ひよこ
NATSってどんなメッセージングシステムなの?
ペンギン先生 ペンギン先生
アプリケーションがNATSサーバーにつながり、subjectという名前を指定して通信する仕組みだよ。サーバーは単一のバイナリで動く。通知やサービス間の呼び出し、IoTのデータ収集などに使えるけれど、速さは構成や負荷によるんだ
ひよこ ひよこ
Pub/Subって何なの?
ペンギン先生 ペンギン先生
送る側がsubjectにメッセージを発行し、そのsubjectを購読している受信者に配る方式だよ。Core NATSでは、その時点で接続している購読者が対象。保存しないので、接続していなかった人が後から受け取れるわけではないんだ
ひよこ ひよこ
Request/Replyはどう動くの?
ペンギン先生 ペンギン先生
要求を送るときに、返信用のsubjectも付けるんだ。応答側はそこへ返事を送り、要求側が受け取る。相手のアドレスを直接指定せずに呼び出せるけれど、応答側がいなければ成功するわけではないので、タイムアウトなども扱うよ
ひよこ ひよこ
Queue Groupって、全員に配るのとは違うの?
ペンギン先生 ペンギン先生
同じsubjectを同じグループ名で購読すると、各メッセージはグループ内の1人に配られるよ。通常の購読は各購読者に配るので、ここが違う。Core NATSのグループで分担するだけでは、保存や再配信の保証は追加されないんだ
ひよこ ひよこ
JetStreamを使えば、保存もできるの?
ペンギン先生 ペンギン先生
有効にしてストリームやコンシューマーを設定すると、対象メッセージの保存や再生、ACKによる処理の確認と再配信を扱えるよ。保存先や保持期間も設定する。少なくとも1回の配信では重複する場合があるので、処理側でも重複をどう扱うか考えよう
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NATS」って出てきたら「サービス同士をsubjectでつなぐ軽量メッセージングシステム」と思えばだいたいOK!
📖 おまけ:英語の意味
「NATS」 = メッセージングシステムの名称
💬 「ナッツ」と読むよ。subjectという名前で通信し、サービス同士を直接結び付けずにメッセージをやり取りする仕組みなんだ

参考資料

← 用語集にもどる