2016-04-11 41 views
0

Farklı sitelerin API'lerinden işlem çiftleri (usd/eur vb.) Üzerinde gerçek zamanlı çekim verileri toplamak zorundayım. Veriler genellikle ~ 10 sayıya sahip küçük bir JSON nesnesidir. Saf strateji, bu sitelerin her birinin güncel bilgi verilerini almak için her 5 saniyede bir talepte bulunmaktır. Bazıları olsa da, bir değişiklik meydana geldiğinde doğrudan bana bildirmelerini sağlayan bir websocket seçeneği sunuyor ve inanıyorum ki, daha verimli. Sorun, söz konusu sitelerin bu seçeneği sunmadığı bir konu olduğundan, tüm siteler için aynı yöntemi (yani, http istekleri) kullanırsam genel kodun organize edilmesi ve okunması daha kolay olacaktır. Ayrıca, verilerin bu seçimi haklı çıkaracak kadar ağır olduğundan emin değilim.Birden çok apis'ten veri toplarken daha hızlı olması beklenen: websockets veya http istekleri?

Benzer durumlarla ilgilenen uzmanlardan, bu durum, uygun olduğunda, zamanlanmış http istekleri yerine soket kullanmak yerine, ilgili bir performans geliştirmesinin beklendiği bir durumdur?

cevap

1

Duruma göre: Bunları çoğu zaman açık tutmak eğer

  • WebSockets tek mantıklı. Bunun yerine, yeni verilere sahip olmak istediğiniz her seferde yeni bir WebSocket bağlantısı açarsanız, yükü basit bir HTTP isteğiyle karşılaştırıldığında daha büyüktür. Bu bant genişliği kadar değil (ama bu da) ama her şeyi daha yavaş yapan verilerinizi almak için daha fazla turlara ihtiyacınız var.
  • WebSockets, her açık WebSocket bağlantısı için bir TCP bağlantısını açık tutmanız gerektiğinden, sonunda daha fazla kaynak alır. Eğer çok az sayıda site varsa bunu sormanız gerekmez, eğer bir sürü varsa önemli olacaktır. Normal HTTP bağlantılarını canlı tutmak için bir avantaj (daha az gecikme) olsa da, daha az kaynağa sahipseniz bunları kapatabilirsiniz.
  • Çoğu zaman aldığınız veriler aynıysa, WebSockets daha verimli olabilir, çünkü yalnızca yeni verileri gerçekte değiştirdiğinde gönderirsiniz.
  • En kısa zamanda yeni verilerden haberdar olmak isterseniz, WebSockets daha iyi performans gösterir. Eğer sadece 5 saniyelik bir hassaslığa ihtiyacınız varsa, bu çok önemli değil.