2012-07-18 15 views
5

TLDR: Bazen başarısız olan bir TCP sunucusuna otomatik olarak yeniden bağlanmak için yeniden kullanılabilir kod var mı?Bir TCP ana bilgisayarına otomatik olarak yeniden bağlanma


Bir sunucu uygulaması yazıyorum - o hal call - aynı zamanda diğer sunuculara bir TCP bağlantılarını açar - Bunların xbmc arasında. xbmc başarısız olduğunda, xbmc erlang işleminin durması ve daha sonra denetim otoritesi tarafından yeniden başlatılması için orijinal olarak yazmıştım.

Görünüşe göre, bu erlang içinde kalıcı TCP bağlantıları yapmak için iyi bir yol değil. Her şeyden önce, gerçekten işe yaramıyor: xbmc başarısız olduğunda, süreçler çok hızlı bir şekilde yeniden başlayacak ve denetim otoritesi tüm hal programını kapatacaktı. İkincisi, görünüşte bu amiri kullanmam gerekiyordu: Erlang Supervisor Strategy For Restarting Connections to Downed Hosts (Okuduğum gibi, bu bağlantılı soru sadece cevaplar "süpervizör bunu çözüyor mu?" Ve sorgunun kopyası değil)

Bunun mantıklı bir yaygın kullanım örneği gibi göründüğünü düşünmek, TCP bağlantısının olabildiğince ve şimdi ve sonra aşağı inen bir sunucuyla olabildiğince bağlı kalmasını sağlamaktır. Bunu başarmak için kullanmam gereken bir miktar OTP veya başka bir kütüphane kodu var mı?

cevap

3

Hayır, OTP'de bunu sizin için yapacak hiçbir şey yok.

Bunu kendime yazdığım defa verilen iyi bir bağlantı yönetimi kitaplığının yazılması için yüksek zaman olduğunu söyleyebilirim. Özellikle yakın geçmişte bağlantı girişimi ve sonuçlarına bakıldığında, bir uç nokta adresi (ana makine adı ve bağlantı noktası) verilebilir ve birden fazla hedefe sahip uç noktalar için hızlı yük devretme gerçekleştirmek üzere ana makine adı aramasından dönen birden fazla adres kullanılabilir.

+0

Teşekkürler. Bir sonraki açık kaynak projeniz için, bu bağlantı yöneticisini yapmayı öneriyorum: D –

+0

Olduğu gibi, şimdi az ya da çok yazıyorum. Serbest bırakıldığında/yanıtı güncellerim. – archaelus

İlgili konular