admin2020/05/21Tweetシェアこんにちは。開発G、開発研究チームのサーバサイドエンジニアです。最近のマイクロサービスのサンプルを作成しながら、様々な技術の中で、メッセージングについて紹介してみます。bravenewgeek.com/dissecting-message-queues)NATSの主要な機能/特徴は、以下の通りです。Streamingも動かしてみます最後に参考NATSとはNATSはオープンソース、軽量の高性能クラウドネイティブメッセージングシステムです。高レベルの拡張性を備えたpub-subメッセージングシステムです。bravenewgeek.com/dissecting-message-queues)NATSの主要な機能/特徴は、以下の通りです。GroupsNATSを動かしてみる以下は、NATSサーバーをダウンロードするためのさまざまなディストリビューションです。https://nats.io/download/nats-io/nats-server/様々なクライアント言語提供しているので、ここで確認することができます。Go言語クライアントを使用してNATSサーバーをインストールすることもできます。ip=2400:2410:b0a3:e900:2c27:9d00:5ac3:汎用的なexamplesクライアントとして、メッセージングモデル毎に動作を見てみます。github.com/nats-io/nats.goPub/SubまずはPub/Subを確認するため、以下の準備しておきます。nats-pubとnats-subクライアントビルドします。channel.*起動しておきます。[channel.*]pubクライアントでメッセージを送ってみます。channle.*)でメッセージを受信することがわかります。reply確認する、以下の準備しておきます。nats-reqとnats-rplyクライアントビルドします。channel.1というsubscribeクライアントを起動します。[channel.1]channel.1にreplyするクライアント起動します。1'準備ができたらRequestを送ってみると、リクエストに対して結果メッセージを受け取っていることがわかります。msg1'SubとReplyはPub/Sub時と同様にメッセージを受け取っていることがわかります。groups確認する、以下の準備しておきます。nats-qsubクライアントビルドします。bPubクライアントからメッセージを送ってみます。7"メッセージ送った際のそれぞれのQueue-Subクライアントの出力は以下になります。7'同じグループ内ではどれか1つのサブスクライバーにメッセージを投げていることがわかります。メッセージングの基本はここまです。・NATSサーバー認証、権限、セキュリティ、ロギング、モニタリング、クラスタの設定などは、CLIまたは設定ファイルで行うことができます。参考:https://docs.nats.io/developing-with-nats/security・NATSの全体的な統計データは、別のツール(nats-top)を使用して監視することができます。subメカニズムに基づく高性能なnativeのメッセージングシステムであり、メッセージの永続性はありません。Streamingは、NATSを利用したデータストリーミングシステムで、Golangで作成して、メッセージ永続化機能が追加されました。readynats-streamingサーバーはデフォルトでメモリーにデータを保存するので、起動する時storeタイプとdir指定必要です。http://127.0.0.1:8222/汎用的なexamplesクライアントとして、動作確認します。stan-subPubでメッセージ送ってみます。+20'メッセージを受信できることがわかります。'ファイルで永続化保存しているものを確認します。server.dat最後に簡単に基本的な機能について試してみました。Streamingの詳細やクラスタリングの動作を掘り下げていったり、Goクライアントの紹介や実際にNATSを使用したサンプルアプリケーションの実装なんかも試してみたいところです。