Bu, ne yapmaya çalıştığınıza bağlı birçok olası yanıtı olan açık uçlu bir sorudur. Yine de cevap olarak birkaç şey ekleyeceğim, çünkü bir yorum yeterince büyük olmayacak.
Hizmet bir veritabanı bağlantı havuzu gibi davranır (bir veritabanında 2000 + bağlantıları sorunlara neden olacağını düşünüyorum);
Evet bu iyi bir fikir. Daha az sayıda bağlantıyı açık tutarsınız ve istekler hizmete ulaştıkça bunları yeniden kullanırsınız. Ancak, isteklerin ne kadar hızlı sunulacağını ve her isteğin veritabanını ne kadar kullandığını bilmeniz gerekir, aksi takdirde küçük bir havuz kolayca tükenebilir ve bir veritabanı bağlantısının serbest bırakılmasını beklerken diğer istekler engellenir.
Önbellekleme, zaten getirilmiş verileri döndürmek için yardımcı olabilir (dediğim gibi, ne yapmaya çalıştığınıza bağlıdır - sorgular benzersizse çok fazla önbellek kullanamazsınız).
Ayrıca, havuz boyutunun yerine koyduğunuz hizmet sayısıyla çarpılacağını unutmayın. Birkaç hizmet ve büyük veritabanı havuzu boyutları kullanabilirsiniz; Genel olarak veritabanına aynı sayıda bağlantıya sahip olmanız için havuz boyutunu azaltmanız gerekir.
Bazı sorguları sunmak için diğer salt okunur veritabanına günlük gönderimi ile bir veritabanı olması mümkündür;
Veritabanı kolayca darboğaz olabilir. Çok fazla bağlantı ve / veya çok fazla sorgu var ve onu kesebilirsiniz. Bu noktada, hizmetlerinizi herhangi bir sayıya yatay olarak ölçeklendirmeniz önemli değildir. Tüm istekler sonunda aynı veritabanına ulaşacaktır.
Bunu korumanın çeşitli yolları vardır: daha önce bahsettiğim önbellekleme (kullanım durumunuza bağlı olarak), belirttiğiniz gibi bazı sorgular sunmak için diğer sunucularda bazı bilgileri çoğaltın, CQRS (kullanım durumunuza bağlıdır), ilişkisel ve ilişkisel olmayan (tekrar kullanım durumunuza bağlıdır), vb.
Bununla birlikte, böyle bir veri dağıttığınızda CAP teoreminin uygulanmaya başladığını unutmayın. Tutarlılık ve kullanılabilirlik arasında uzlaşmanız gerekebileceğinden bunun farkında olun.
REST hizmetlerini çalıştırmak için daha fazla makine ekleyebileceğimiz için daha iyi ölçeklenir;
Evet, REST hizmeti ölçeklendirilecektir, ancak yukarıda belirttiğim gibi, veritabanını korumazsanız, bu kolayca bir darboğaz haline gelebilir.
Güvenlik ve bant genişliği tasarrufu için HTTPS'yi sıkıştırma ile kullanmak mümkündür;
Evet, diğer şeylerin yanı sıra ... belki daha sonra kimlik doğrulama / yetkilendirme vb.
2000'den fazla makineyi yeniden konuşlandırmadan ticari işletmeler üzerinde bazı merkezi değişiklikler yapmak mümkündür;
Evet, ancak belli bir dereceye kadar ve her türlü değişiklik değil. Bir değişiklik yaparsanız, istemcileri de güncellemeniz gerekir. Bu nedenle, istemcileri en son sürüme güncellemek için bir strateji düşünün veya eski istemcilerin uygulamayı çalışmasına ve kullanmasına izin veriyorsanız.
Diğer sistemlerle daha iyi bütünleşir (sadece REST servisine yönlendirin).
Evet, ancak bu hizmetiniz için kontrol edemeyeceğiniz istemciler anlamına gelir.
Eğer bir değişiklik yaparsanız ve 2000+ JavaFX istemcilerinizi güncellemek için iyi bir stratejiniz varsa sorun olmaz. Ancak diğer istemciler varsa ve bunlar üzerinde denetiminiz yoksa, REST hizmetinde sürüm oluşturmanız ve herkes en son sürüme güncelleyene kadar birden fazla sürümü desteklemeniz gerekebilir.
Dediğim gibi, ne yapmaya çalıştığınıza bağlı. Genel olarak, seninki iyi bir fikir. Ancak, bir veritabanının önüne bir REST hizmeti yapıştırmanız nedeniyle işlerin ücretsiz gelmeyeceğini unutmayın.
Sadece 2 sentim!