私の会社が販売するシステムは、マルチマシンソリューション用のソフトウェアです。場合によっては、マシンの1つにUIがあり、別のマシンにバックエンド/ APIがあります。これらのシステムは、さまざまな操作および記憶値のために通信し、それぞれが独自のクロックを使用します。あるマシンのWebサーバーUIがバックエンド/他のAPIと同期していない場合、どうすれば対処できますか?
UIのシステムクロックがバックエンドより30秒以上先行すると、UIのタイムスタンプがキー情報としてREST要求に送信されるため、クエリが誤動作するようになります。 「私が更新したもの」クエリが30秒ごとに発生し、非同期になると、タイミングウィンドウの外にあるので、更新されたデータが失われます。
ソフトウェアがインストールされているシステムを制御できないため、コード側で解決策が必要です。私は顧客に時計を同期させるよう強制することはできません。
- をUIがそれのシステム時刻のためのバックエンドを照会し、そのをキャッシュすることができます:私が考えた
可能な解決策。
- バックエンド/ APIは、アップデートを探す際に、さらに時間を遡ってアクセスできます。これにより、クロックに余裕を持たせることができますが、大きなデータセットを持つシステムでは、より重いクエリ負荷が発生します。
....この領域で多くの時間を費やすことなく、ログイン時にサーバ時間をキャッシュする必要がありますが、私の大きな疑問は「なぜ30秒ごとに?」です。オートセーブのようなことをしている場合は、「30秒、または最初に変更があったときのどちらか早いほうがよい」となります。しかし、一般的に言えば、UIクロックを無関係にしようとするべきです( "クライアントを信用しない"の一部 - _future_タイムスタンプが与えられた場合どうなりますか?)。さもなければ、私はこのシステムがどのように相互作用するかについてより詳細な情報が必要だと思います。 –
@ Clockwork-Muse - 私はこの分野では非常に新しいですが、クライアントによって行われた変更は、「このエントリーの所有者を変更する」または「状況を変更する」ようなイベントです。自動保存はまったくありません。ウェブUIは1〜50人で同時に使用できるように設計されているため、30秒のアップデートが重要です。しかし、30秒は本当に競争条件から保護するつもりはない...それは、現在の状態で「同期しているために最善を尽くしてみよう」のより多くのものである。 – Shadoninja
実際、私は周りを見回し、人々と話すほど、NTPサーバーで適切に構成されたマシンのネットワークがシステム管理者に期待されるようです。私はこのトピックに関する私の心配は少し誇張していると思う。私は人々が何を言わなければならないかを見るために1日か2日間質問を残し、それから私はそれを閉じます。 – Shadoninja