ピザの配送店にフォールトトレラントなソフトリアルタイムWebアプリケーションを構築したいと考えています。それは、ピザ屋が顧客からの電話を受け取り、注文としてシステムに(CRMウェブクライアントを介して)入れ、ディスパッチャが注文に配送ドライバを割り当てるのを助けるべきである。Erlang/OTPによるフォールトトレラントなソフトリアルタイムWebアプリケーションの構築
これらの目標は珍しいことではありませんが、サービスを24時間いつでも利用できるようにしたい、つまりフォールトトレラントにすることです。さらに、私はそれを非常に速く働かせ、非常に敏感であるようにしたいと思います。
以下は、このようなアプリケーションの非常に単純なアーキテクチャビューです。
問題
は、私は、アプリケーションが非常に即応性と耐障害性にするのErlang/OTPの良さのすべてを使用する方法がわからないということです。ここで私の質問は以下のとおりです。システム要素は、フォールトトレランスとどのように私はそれを行う必要がありますを提供するために、複製されるべき
- ?私は複製されたMnesiaデータベースに各車両のステータス(座標、割り当てられた注文など)を保存できることを知っています。それは正しい方法ですか?
- 従来のSQLベース(たとえばboss_dbに基づく)であり、非常に高速な応答を提供するためにMnesiaで実行する必要があるデータストレージサービスはどれですか?このようなフォールト・トレラントで高い応答性のアプリケーションに顧客の記録と履歴を保管するために従来のSQLデータベースを使用するのは問題ありませんか?
- アプリケーションに高い応答性を持たせるために、すべてのサービス(顧客、車両ステータスなど)のすべてのデータをRAMに保存する必要がありますか?
- 永続的な車両データ(ID、容量など)を従来のSQLデータベースに保存し、リアルタイムデータ(座標、割り当てられた注文、トランク内の注文など)をMnesiaデータベースに保存してアプリケーションはよりリアルタイムに反応しますか?
すべてのアプリケーションのロジックとデータを複製しない場合、たとえば24時間いつでもサービスを24時間365日に行うことができます。 ) –
ロジックを扱うノードが2つ以上あるErlang/OTPシステムでデータを複製する方法についてのリファレンスを提供できますか? – skanatek
プロセスグループ、すべてに送信、競合解決、または単にriak/couchdbを使用してください。それとも、世話に目を向けるのか。しかし、あなた自身でこれを行うことは、本当に難しい作業です。 –