次のように設計された IOT アプリケーションがあります。
独自のデバイス セットを持つプラントがあります。
現在、パイプライン全体が、次のユニットで構成される kubernetes にデプロイされています。
- x 秒ごとに起動し、すべてのプラントからデータを読み取り、そのデータを mqtt ブローカーにプッシュするジョブ。
- MQTT ブローカー。
- すべてのプラントからデータを受信し、時系列データベースにプッシュするサブスクライバー サービス。
- ジョブは 5 分、15 分、1 時間、4 時間、1 日間隔で実行され、すべてのプロジェクトのデータに対してダウンサンプリングを実行し、それをダウンサンプリングされたテーブルにプッシュします。
- 毎日実行されるジョブは、データに穴/ギャップがあるかどうかを確認し、可能であればそれを埋めようとします。
現在、これは少数の Plant では問題なく機能しますが、Plant の数が増えると、単一のサービス/ジョブを使用してデータの取得、プッシュ、ダウンサンプリングを実行することが難しくなります。一時的な修正として、垂直方向にスケーリングすると問題はある程度修正されますが、その場合、垂直方向にスケーリングしている単一のマシンにすべてのポッドを配置する必要があり、複数のノードを垂直方向にスケーリングすると非常にコストがかかります。したがって、水平方向にスケーリングできるようにシステムを分解することを計画しており、これを達成できる方法の提案を探しています。