Şu anda benzer bir sistem kuruyorum (profesyonel düzeyde) ve bu benim seçtiğim tasarım:
- İki Nginx yük dengeleyici (ikisi de aktif, diğeri için yük devretme, DNS round robin ile dengeli)
- Ana master çoğaltma modunda iki MySQL Veri Tabanı
- Tomcat kümesi olarak iki Tomcat örneği
- Tomcat kümesi için hem önbellekleme hem de oturum durumu paylaşımı için iki Memcached örneği
Bu, yedekli, yüksek kullanılabilirlikli, ölçeklenebilir bir çözüme ulaşacaktır.
Yük dengeleyicileri (iyi donanımda), her biri doymuş 1 gbit'lik bir çizgiyi kolayca yükler. Bu aynı zamanda SSL boşaltma için harika bir yerdir.
Oturum bilgilerinizi memcached'a kaydedebilirsiniz. Bir tomcat örneğinin başarısız olması durumunda, başka bir tomcat örneği ilgili oturum bilgilerini alabilir ve istemciler bir şey fark etmez. Bunu yapışkan oturumlarla da birleştirmeyi unutmayın. (Ağ trafiğini düşük tutmak için)
Tomcat kümeleme, memcached kullanmadan oturum bilgilerini gerçek zamanlı olarak küme arasında paylaşma seçeneğine de sahiptir. Performansı akıllıca bulsam da Memcached kullanmak daha iyi olacaktır.
Bu uygulamalardan herhangi birinde daha fazla güce ihtiyacınız varsa:
- Nginx: Daha fazla yük dengeleyici ekle, ancak bunun çok yakında darboğaz olacağını düşünmüyorum.
- Tomcat: Tomcat kümesinin boyutunu kolayca artırabilir veya daha fazla küme ekleyebilirsiniz
- Mysql: Bazı salt okunur slave'ler ekleyin veya küme boyutunu artırın (uygulamanıza bağlı olarak, ancak REST tabanlı bir uygulama yazdığınızdan bu sorun olmamalı)
- Memcached: Daha fazla düğüm ekleyin, Memcached ölçeklerinin oldukça iyi olduğuna inanıyorum.
Uygulamanızın nasıl oluşturulduğunu ve büyük kaynak domuzlarının ne olduğunu bilmiyorum, ancak yüksek bir veritabanı yükü görüyorsanız (yük testleriniz sırasında!), Uygulama ve veritabanı arasında bir önbellek eklemek kesinlikle performansı çok artırabilir. Ancak unutmayın, her şey önlenebilir değildir, sorgularınız her zaman farklıysa, önbellekleme yardımcı olmaz (çok)
Benim tavsiyem VMware Workbench'i (veya similair sanallaştırma yazılımını) indirmek ve basit bir kurulum oluşturmaya çalışmak olacaktır. Yük dengeleme veya kümeleme yok, sadece temel bilgiler ve oradan çalışır. Tek tek daha fazla özellik (dengeleme, önbellekleme, kümeleme vb.) Ekleyin ve her bir konuda biraz araştırma yaptığınızdan emin olun, böylece doğru seçimi yaptığınızı bileceksiniz.
Bu işlem sırasında aynı performans testlerini yapmaya devam ederseniz, X kullanmanın kurulumunuzda Y'yi kullanmaktan daha iyi olup olmadığını veya hangi etki önbelleğe almanın vb. Olacağını kendiniz görebilirsiniz .
Sonunda, böyle bir kurulum gerçekten uygulamanızın ve müşterilerinin gereksinimlerine bağlıdır, her şey çeşitli şekillerde yapılabilir, her birinin kendi güçlü ve zayıf yanları vardır.
Başka soru?
İyi şanslar!
Wesley