Mám otázku pro mé kolegy serveraře:
Virtuální tabule @Collboard.com nám žere čím dál tím víc prostředků na serveru a stálé navyšování CPU a RAM je dlouhodobě a pro další znásobení uživatelů neudržitelná. Nastavuju tam cluster s více běžícími node vlákny, avšak narazil jsem na otázku, jakým způsobem řešit rootování v rámci load-balancingu.
—
Naše aplikace je v tomhle smyslu trochu specifická – představte si, že každá tabule je něco jako chatovací místnost. Jednu tabuli tak zatím nedokáží obsluhovat dva servery – do databáze by se vše zapsalo, ovšem real-time změny by se mezi dvěma skupinami uživatelů obsluhovanými dvěma servery nepropagovali v reálném čase.
—
Nemám s tímto typem problému úplně zkušenosti, proto se ptám na optimální strategii řešení:
1/ Změnit kód aplikace tak, aby nebyla závislá na stavu paměti v Node, ale aby se všechny změny propagovali do in-memory tabulky v MySQL databázi případně jiné realtime databáze.
—
2/ Jednotlivé instance Node propojit mezi sebou napřímo a pokud bude potřeba, posílat informace mezi nimi.
—
3/ V Loadbalanceru nastavit to, aby routoval podle URL a stejná tabule bude obsluhovaná vždy jednou instancí Node.
(Tohle řešení by asi nebylo úplně robustní, pokud by existovala nějaká naprosto gigantická tabule s mnoha tisíci uživateli (předpokládám, že to bude hlavní důvod, proč má většina sdílecích appek limit maximálního počtu uživatelů v rámci jednoho dokumentu))
—
4/ Rootováná do konkrétního API si klient vybere sám. Ty pak mohou běžet na separátních subdoménách api1.collboard.com, api2.collboard.com,…
—
Možná se ptám trochu hloupě a ani jedna z těch možností není to ono, mám s loadbalancováním zkušenosti pouze v případě jednodušších aplikací, kdy je vytvoření clusteru naprosto instantní a jednoduché.
Moc mě zajímají i širší odpovědi se širším pohledem na věc; případně články videa úplně cokoliv, kde bych mohl hlouběji proniknout do návrhu tohoto problému.
Díky moc za za rady!
https://www.facebook.com/299034274199076/posts/873912420044589/
https://twitter.com/pavolhejny/status/1349744433114329091
https://m.facebook.com/story.php?story_fbid=10219390500899338&id=1416254989