ピザの配達店向けに、フォールト トレラントなソフト リアルタイム Web アプリケーションを構築したいと考えています。これは、ピザ店が顧客からの電話を受け付け、(CRM Web クライアントを介して) 注文としてシステムに入力し、ディスパッチャーが配達ドライバーを注文に割り当てるのに役立ちます。
これらの目標は特別なことではありませんが、サービスを 24 時間 365 日利用できるようにしたいと考えています。つまり、フォールト トレラントにすることです。さらに、私はそれを非常に速く動作させ、非常に反応が良いようにしたいと思っています.
以下は、そのようなアプリケーションの非常に単純なアーキテクチャ ビューです。
問題は、Erlang/OTP の優れた機能をすべて使用して、アプリケーションの応答性と耐障害性を高める方法がわからないことです。
ここに私の質問があります:
- フォールト トレランスを提供するために、どのシステム要素を複製する必要がありますか?また、その方法は? 各車両のステータス (座標、割り当てられた命令など) を複製された Mnesia データベースに保存できることを知っています。それは正しい方法ですか?
- 従来の SQL ベース (例: Boss_dbベース) にする必要があるデータ ストレージ サービスと、非常に高速な応答を提供するために Mnesia で実行する必要があるサービスはどれですか? 従来の SQL データベースを使用して、このようなフォールト トレラントで応答性の高いアプリケーションに顧客の記録と履歴を保存してもよいでしょうか?
- アプリケーションの応答性を高めるために、すべてのサービス (顧客、車両の状態など) のすべてのデータを RAM に保存する必要がありますか?
- 永続的な車両データ (ID、容量など) を従来の SQL データベースに保存し、リアルタイム データ (座標、割り当てられた注文、トランク内の注文など) を Mnesia データベースに保存して、アプリケーションをより多く作成する必要がありますか?リアルタイムレスポンシブ?