2016-11-11 10 views
0

私は2つのgenserver実装を持っています。どちらもhttpリクエストでルックアップを実行し、両方とも同じ情報を返します。障害発生時に他のプロセスにフェイルオーバーするスーパーバイザのプロセス

最初のプロセスを実行する方法を理解したいと思います。失敗または検証に失敗すると、このプロセスは別のプロバイダを使用する2番目のgenserverにフェールオーバーします。

基本的に私が達成しようとしている何がある種のプロセスのフェイルオーバーです:プロセスAを試してみて、Aが失敗した場合に何を推薦することはエリクサーでこれをやって行くための最善の方法だろう

プロセスBを試します?

答えて

1

HTTPリクエストを受信する別のプロキシプロセス(マネージャ)を作成し、process_Aまたはprocess_Bがこの要求を処理するかどうかを決定し、フェイルオーバーの場合は他のプロセスにフェールオーバーできます。

つまり、フェールオーバーを処理するのはワーカープロセスの仕事ではないと思います。マネージャプロセスがそれを引き継ぐべきです。

+0

ありがとうございます&私は完全に同意します。プロキシプロセスマネージャをどのようにお勧めしますか? – Zac

+0

こちらのエリクシールガイドをご覧ください。http://elixir-lang.org/getting-started/mix-otp/genserver.html#the-need-for-monitoring、プロキシプロセスマネージャを起動することができますprocess_Aそして_Bを監視してそれらを監視する。 handle_callで達成するのは難しいかもしれません。私は似たような試みはしていません。 –

関連する問題