PHP'de birkaç yıl büyük ölçekli oyun sunucusu geliştirdim. Bir yük dengeleyici, bir kümedeki bir sunucuya gelen istekleri temsil eder. Daha iyi performans adına, biz apc_store
ve apc_fetch
yoluyla doğrudan Apache paylaşılan hafızada, bu kümedeki her örnekleri üzerinde tüm statik verileri (aslında oyun dünyanın modeli nesneler) önbelleğe başladı.apc_store/apc_fetch gibi PHP, Apache paylaşımlı bellek mağazalara iyi Flask/Python/WSGI analog nedir?
Bazı nedenlerden dolayı, Flask mikro çerçevesini kullanarak Python'da benzer bir oyun çerçevesi geliştirmeye başlıyoruz. İlk bakışta, bu vakanın hafıza deposu doğrudan Python/Flask'a çevirmek için görünmeyen tek parçadır. Şu anda Memcached'i her bir örnekte yerel olarak çalıştırmayı düşünmekteyiz (ana Memcached kümesinden oldukça büyük model nesnelerin akışını önlemek için.)
Bunun yerine ne kullanabiliriz?
Ben kısa ömürlü anahtar/değer için benim gerçek veri deposu için merkezi MemBase ve merkezi Memcache'ı kullanın. Gönderide belirttiğim gibi, "ana Memcached kümelenmemizde oldukça büyük model objeleri telsizden korumaktan" söz ediyoruz. Bu değişikliği bir önceki oyunda yerel belleğe dönüştürmek bana büyük bir performans artışı sağladı. Bunun gibi bir oyun için ayarlanan tüm statik veriler 50mb'nin altında olduğundan, depolama/yükleme bir sorun değildir.Sonuçta, sonunda nihayetinde yerel belleğe çekmek zorunda kalacaksınız; Her şeyden önce orada saklanırsa daha iyisi :) –
Temel dayanak noktası, merkezileştirilmesi gereken verilerin merkezileştirilmesi ve uygulama sunucularına aktarılabilen verilerin (yani, vatansız ve tüm düğümlerde aynı olan statik/oyun dünyası verileri) olması gerektiğidir.) uygulama sunucularına aktarılmalıdır. –
Üzgünüm Bu cevabı, görevimin iki önemli noktasını göz ardı ettiği için kabul edemem: [1] Sadece statik verilerden bahsediyorum ve [2] zaten Merkezi Memcached kullanıyorum. –