私はリモートデバイスから位置情報を受け取るMosquittoブローカーを持っています。IoTポジションデータのプライマリデータストアとしてNATS Streaming Serverを使用していますか?
私はこのデータを他のマイクロサービスで処理するためにどこかに保存する必要があります。
現在、ブローカにサブスクライブし、バッチでPostgresデータベースに書き込むNode.jsプロセスがあります。
Devices -> Mosquitto -> DB writer -> (source-of-truth) Postgres
(source-of-truth) -> Service A
-> Service B
しかし、私が見ている問題は、この位置データを処理する必要がある他のサービスが、Postgresデータベースを照会する必要があることです。
制約事項:これはオンプレミスな展開のため、できるだけ少なくすることが理想的です。データベースを持つ1つのVM、おそらく顧客が管理するデータベースへのリンクです。
センサデータの真実の源としてのデータベースの代わりに、カフカのようなイベントログ/イベントソーシング手法があります。次にブローカーに加入者が1人あり、すべてのマイクロサービスはそこから読み取って、どこに行けば中断したのか分かります。
オンプレミスなので、私はKafkaよりも軽いものを望んでおり、NATS Streaming Serverを見つけました。
NATSイベントログは、データストアを使用して設定することで永続化できます。現在のところ、単純なファイルストアとSQLストアをサポートしています。
SQLストアを使用した場合、生のメッセージをデータベースに保存し、データベースから読み込んでから再度保存し、パフォーマンスに悪い時間がかかるようです。 SQLストアインターフェイスには独自のバッチ処理も実装されています。私はファイルストアを真実の源としてどれだけ信頼しているかわからない。
これは実行可能なアプローチですか?
キャッシングの動作に関するSQLストアの実装に関する詳細はどこにありますか? – vaughan
ここにいくつかの情報がありますhttps://github.com/nats-io/nats-streaming-server mysqlとpostgres atm – Chadit
これを確認してください:https://github.com/nats-io/nats-streaming-server#sql -store-options。つまり、実装の詳細です。また、各操作をSQL文の実行に変換させたい場合は、コマンドラインから '-sql_no_caching = true'を使用してキャッシングを無効にすることができます(設定ファイルのSQL設定セクションの' no_caching':https://github.com/nats -io/nats-streaming-server#コンフィギュレーションファイル) –