2016-03-31 24 views
6

Ben anladığım kadarıyla bir deneyim tonku, ve bu phoenix ile daha az, bu aptalca bir soru olabilir ... ama emin olmak istiyorum iyi bir seçim yapmak için hosting üzerinde :)Heroku üzerinde Ölçekleme phoenix

Anladığım kadarıyla, anka kuşağından ölçekleme biçiminiz başka bir sunucu ekliyor, başka bir düğüm başlatıyor ve onları bağladıktan sonra, BEAM/OTP'nin iş yükü dengelemesini yürütmek için sihrini kullanmasına izin verin. Heroku'da dynos, yerel bir ağ üzerinden gerçekten konuşamaz, anladığım kadarıyla BEAM'ın kümelenmeyi gerektirdiği bir şeydir. Dynos eklemek, bağlantısız düğümler arasındaki bağlantıyı dengeleyen bir harici yük dengeleyiciye sahip olduğunuz ve db'nin paylaşılan durum olduğu daha "geleneksel" bir ölçekleme modeli ile sonuçlanır.

Buradaki sorum, bunun ne kadar büyük bir etkisi olacak? Daha ciddi bir yük/ölçek seviyesine geldiğinizde mi yoksa altyapıya daha fazla para harcamanız gerektiği anlamına mı geliyor?

cevap

7

Sen kümeleme destekleyen bir ana bilgisayarda en iyi performansı elde edersiniz, ancak Phoenix Heroku gibi dağıtımlar için tam bir PubSub adaptör sistemi vardır: https://github.com/phoenixframework/phoenix_pubsub

Bir satır yapılandırma değişikliği ve mix.exs 'girdiyi Deps ve Redis adaptörümüzü kullanarak heroku üzerinde çok kanallı kanallara sahip olacağım.

+0

- Phoenix 1.2'de PubSub için varsayılan olarak ayarlanmış bir PG2 adaptörü var; Kahraman'da geçerli varsayılanın üzerine Redis kullanmak için herhangi bir sebep? Teşekkürler! – Svilen

2

Bu çok açık bir sorudur, bu yüzden cevabımın kapsamlı olmayacağından eminim.

Sizin durumunuzda en önemli soru: Phoenix'in kanalları kullandığı mu?

Düz eski HTTP kullanırsanız, bu durum çoğunlukla vatansız olabilir. Çerezlerde oturumları depolamak gibi durum bilgisi olan bağlantıyı simüle etmek için birçok yöntem vardır. Günün sonunda, arka uç sunucularınızın birbiriyle bağlantılı olması fark etmez, çünkü her biri bağımsız hesaplamalar yapıyor. Yük dengeleyiciniz herhangi bir sunucuyu rastgele seçebilir ve her zaman çalışır. Http'un bu harika özelliği, bu protokolün çok iyi ölçeklenmesini sağlar. Bu senaryoda kesinlikle Heroku kullanabilir ve harika çalışır.

Phoenix kanallarını kullanırsanız, işler karmaşıklaşır. Yine de, herhangi bir sunucuya bağlanabilmek istiyorsanız, muhtemelen diğer kullanıcılara gerçek zamanlı mesaj gönderirsiniz ve diğer sunuculara bağlanabilirler. Phoenix bu sorunu sizin için BEAM kullanarak kümeleyerek çözüyor ve bu Heroku'da zor olacak. Ya da imkansız. Özet için: küçük ölçekli/büyük ölçekli bir soru değildir. Bu bir özellik sorusu. Ölçekleme kanalları kümelemeyi gerektirir, eski HTTP'yi ölçeklemez.

+0

Her dyno için bir Phoenix uygulamasının başlatılması büyük bir maliyet değildir (bu ne olur ne bassicaly)? Sadece düz bir eski HTTP için bile mi? –

+0

Bu büyük bir maliyet değil. Benzer Phoenix ve Rails uygulamalarını karşılaştırırsanız, Phoenix'in daha düşük bellek ve CPU ayak izi olması gerekir. Yani, bir dyno üzerinde kaynak tükeniyorsa, sadece başka bir tane döndürün. – tkowal

+0

Bence bu çok iyi bir soruya büyük bir cevap için teşekkürler: https://github.com/phoenixframework/phoenix_pubsub_redis teşekkürler :) –