Co je dobré Baňka / Python / WSGI analog s PHP Apache sdílené paměti obchodech jako apc_store / apc_fetch?

hlasů
10

Udělal jsem několik let ve velkém měřítku vývoj herní server v PHP. Vyrovnávání zatížení přenese příchozí požadavky na jednom serveru v clusteru. Ve jménu lepší výkon, jsme začali cache všech statických dat (v podstatě herní svět model objekty) v každém z případů v tomto clusteru, nachází se přímo v Apache sdílené paměti pomocí apc_storea apc_fetch.

Pro řadu důvodů, jsme nyní začínají vyvíjet nějakou podobnou hru rámec v Pythonu pomocí baňky microframework. Na první pohled se tato instance store paměť je z jednoho kusu, který se neobjevuje překládat přímo do Python / baňky. Jsme v současné době zvažuje běží Memcached místně v každém případě (aby nedošlo k streaming poměrně velké modelové objekty over-the-drát z našeho hlavního Memcached clusteru.)

Co můžeme použít místo?

Položena 11/02/2011 v 03:06
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
5

Řekl bych, že ani v tomto případě budete chtít, aby zvážila možnost, že centralizovaný klíč / hodnota úložiště systém, spíše než řadu nezávislých ty na každém serveru. Pokud váš vyrovnávání zatížení vždy přesměruje stejné uživatele na stejném serveru byste mohli narazit na případ, kdy jsou požadavky na uživatele směrovány na různé servery pokaždé, takže každý uzel bude muset načíst stav herní místo přístupu k němu ze sdílené mezipaměti.

Také paměť kmen, který obchod s místní klíč / hodnota v každém systému by mohly vzniknout mohly zpomalit další funkce herní server je. Přesto, že do značné míry závisí na množství dat, která jsou v mezipaměti.

Obecně by nejlepším řešením bude provozovat některé měřítka vidět, jaký výkon byste si s Memcached clusteru a typů objektů jste ukládání vs místního úložiště.

V závislosti na tom, co ostatní funkce, které chtějí od vás klíč / hodnota úložiště můžete také chtít podívat do některé alternativy, jako MongoDB ( http://www.mongodb.org /).

Odpovězeno 15/02/2011 v 23:46
zdroj uživatelem

hlasů
2

[O pět měsíců později-]

Naše hra rámec je hotovo.

Na konci jsme se rozhodli pro uložení statických dat v plně inicializovat případech sqlalchemy modelu v každém serveru. Když je nově zavedený herní server zahřátí, tyto případy jsou nejprve postavena tím, že udeří sdíleného MySQL db.

Vzhledem k tomu, náš model továrny odložit na instanci bazénu instance modelu nemusí být postavena pouze jednou za nasazení na server - to je důležité, protože v našem měřítku, MySQL by plakat pod jakoukoli probíhající zátěže. Provedeno jsme náš cíl není streamování tato data přes drát zachováním definice bod co nejblíže k našemu kódu aplikace, jak je to možné: v kódu aplikace samotné.

Nyní si uvědomuji, že moje původní otázka byla naivní, protože na rozdíl od LAMP server baňky stále běží mezi žádostmi, paměť na server sám je „sdílené paměti“ - není třeba něco jako APC, aby to tak. Ve skutečnosti, něco mimo zpracování požadavku prostor za samozřejmé a baňka se THREADSAFE místním obchodě , lze považovat za „sdílené paměti“.

Odpovězeno 21/02/2011 v 08:59
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more