Tak pokud jsi četl celý článek, tak víš, že to nebylo cílem, cílem bylo jen přesunout kritické indexy co nejblíže k aplikačním serverům. Jiný přístup, který se běžně používá a který samozřejmě znám, je replikace main databáze na aplikační servery, takže ty si chodí pro indexy právě tam. Replikace není nic jiného než rozesílání updatů z hlavní databáze do těch replik, což je přesně to co se tady dělo. Mimochodem, naslouchání updatů z main db tam bylo od začátku, v zásadě to byl hlavní mechanismu jak se rozesílaly herní stavy mezi jednotlivé uzly. Takže zase tolik práce v tom nebylo, stačilo jen na místo, kam přicházela tahle data strčit nějakou mapu.
Využívalo se toho, že hráč, který hraje hru, si bude chodit pro zadání jednotlivých úkolů na server v řádově několika sekund až minut, takže v paměti byla cache pro všechny aktuálně hrající hráči, takže ve výsledku aplikační servery nechodily na databázi skoro vůbec, jen když se stalo, že některý stav vypadl z cache. Do databáze se posílaly jen updaty herních stavů.
Další možnou refaktorizací by pak už byl jen clusterizace hračů, jako že hra nepotřebovala kombinovat stavy mezi hráči - ne na realtime úrovni. Kromě finále, kde se tedy hrálo hromadně a kde byla potřeba jakási interakce mezi hrajícími a kde zase nehrálo tolik hráčů. Clusterizace by znamenala, že by vzniklo víc "datacenter", a každý hráč by měl přidělený vlastní centrum, kde by hrál, což by ale přineslo komplikace na non-realtime interakci, třeba vyhodnocování pořadí ve hře, statistiky a rozdávání cen a bodů.
Všechno to bylo backlogu, kdyby to televize v Covidové době nezrušila.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 50 233×
Přečteno 23 535×
Přečteno 22 525×
Přečteno 20 434×
Přečteno 17 495×