2010-06-04 35 views
7

Servisler arasında köprü olarak erlang kullanıyorum ve insanların bağlantıları reddettikleri için ne yaptıklarını merak ediyordum?Erlang Süpervizör Stratejisi Downed Host'lara Bağlantıları Yeniden Başlatmak İçin Strateji

Yerel dosyalardan girdi alıyorum ve bunları AMQP'ye aktarıyorum ve AMQP aracılarının aşağı inebileceği düşünülebilir. Bu durumda AMQP sunucusuna bağlanmak için tekrar denemek isterim fakat bu bağlantı girişimleri ile CPU'yu sabitlemek istemiyorum. Eğilimim, AMQP kodunun yeniden başlatılmasına bir uyku koymaktır. Bu 'hack' aslında hızlı bir şekilde başarısızlık ve erlang halledilmesine izin amacını atlatmak olmaz mıydı? Daha genel olarak, erlang süpervizörü davranışı downed bağlantıları ele almak için kullanılmalıdır?

cevap

3

Kendi semantiklerinizi, harici bir sunucuya bağlantıları ele almak için kodlamak mantıklıdır. Denetim otoriteleri, kendi süreç ağacınızda kilitli/kilitli/aksi halde sağlıksız süreçleri ele almak için en uygun yöntemlerdir.

AMQP aracısı ile aynı süreç ağacındaki yerel dosyaları dışa ya da ayrı bir hizmete tabi tutan işleminiz mi?

+0

Katılıyorum. Belki de denetçiler iş mantığına girmemeli, sadece ölü süreçleri ele almak ve işleri tutarlı tutmak için oradalar (bir, bir, bir, bir, bir, bir, vb.). Ve evet, dosya piper ve AMQP istemci işlemi ayrı süreçlerdir. Erlang-amqp-client her bağlantı için bir süreç oluşturur (ya da bu kanal mı?), Şimdi sadece ölmekle başa çıkmam gerekiyor. Öğrenmesi gereken çok şey var! – xrl