2

私は車両を追跡するためのアプリケーションに取り組んでいます。約10k以上の車両があります。それぞれが毎分最大 250 バイトを送信します。データには、GPS 位置と CAN バスからのすべてのデータが含まれます (車両コンピューターとダッシュボードから読み取ることができるすべてのデータ)。データは GSM/GPRS (UDP プロトコルを使用) によって送信されます。このデータの 1 日あたりの推定行数は、約 2000k です。

3 つのメイン ブロックが表示されます (ブロック -> メイン モジュールを意味します)。

1. マルチスレッド ソケット サーバー (MSS) - 持っています。MSS は、受信したデータを (NServiceBus を使用して) キューに格納します。

2. ルール プロセッサ サーバー (RPS) - これはこのシステムの中核です。このブロックは、受信したデータの解析、データベースへの保存、ルールの処理、Notifier Server へのメッセージの送信 (電子メール/SMS テキストの送信) を担当します。

ルール例。先に述べたように、受信バイトには現在の速度に関する情報があります。速度が 120 を超えると、指定したユーザーに対して Web アプリケーションでアラートを表示し、電子メールを送信し、SMS テキストを送信します。

(同じマシン上に RPS の複数のインスタンスが存在する可能性があります)。

3. Web アプリケーション - ユーザーによるルールのレポートと定義、アラートの監視などを可能にします。

RPS と Web アプリケーション間の通信を設計する方法についてアドバイスを求めています。

いくつかの質問:

  • Web アプリケーションと RPS はデータベースを分離する必要がありますか、それとも 1 つの中央データベースで十分でしょうか?

  • Web アプリケーションに 1 つのドメイン モデルがあります。中央データベースが 1 つある場合、RPS で同じモデル (オブジェクト) を使用できますか? では、変更されたルールを RPS に送信するにはどうすればよいでしょうか。

このブロックを可能な限り切り離すようにしています。クライアントごとに異なるアプリケーションのインスタンスを作成する予定です (各クライアントには別々のデータベースがあります)。あるクライアントは 10,000 台の車両を所有し、他のクライアントは 100 台しか所有しません。

4

3 に答える 3

3

ユーザーが構成できるマルチテナントSaaSシステムを構築しようとしています。このため、トップレベルのアーキテクチャピースとしてテクニカルブロックを使用することはお勧めしません。代わりに、よりビジネス指向のデカップリングのラインを探してください。これには、ドメイン内の時間の影響にさらに焦点を当てることが含まれる場合があります。

たとえば、ユーザーがルールを変更したときから、どのくらいの速さでルールを有効にする必要がありますか?

ルールが異なれば、効果が発揮されるまでの時間も異なります。

理由を明らかにする。ルールの1つのグループが5秒以内に有効になる必要がある理由(安全など)と、他のグループが月末に有効になる必要がある理由(請求など)の背後にあるビジネス上の理由を理解するようにしてください。

この情報は、今後多くのアーキテクチャの選択を促進します。

上記の技術コンポーネントをソリューションで使用する可能性がありますが、それらの構成方法、通信するデータベースなどはすべて、上記のさまざまなビジネスコンテキストによって決まります。

私の推奨事項は、先に進む前に、戻ってビジネスに関する洞察を深めることです。

于 2010-04-24T11:03:26.003 に答える
0

あなたが本当に欲しいのはCEP(Complex Event Processing)のようです。CEP システムは、一連のイベントを監視し、定義されたクエリを使用して特定の発生または一連の発生をキャプチャし、それらに反応します。

.Net のオープン ソース オプションはNEsperです。

于 2010-04-23T11:54:29.323 に答える
0

NSB を使用しているので、すでに行っている Bus.Send をサブスクライブできます。そこから、ハンドラーをつなぎ合わせてルール パイプラインを作成できます。最後のハンドラーは、処理の状態を DB に保存するハンドラーにすることができます。その処理を Web アプリで行われていることから切り離したい場合は、読み取り専用の Web アプリとレポートから別の DB を作成できます。処理の最後にイベントを発生させて、この他の DB を更新できます。Udi の Command Query Segregation に関する投稿を彼のブログで確認してください。

于 2010-04-22T02:23:32.357 に答える