Zadejte hledaný výraz...

Jedna aplikace, dva servery a dvě databáze?

wizardd
verified
rating uzivatele
(1 hodnocení)
9. 10. 2015 08:38:53
Zdravím,
potřeboval bych poradit nebo postrčit správným směrem v následující situaci. Tvořím webovou aplikaci, která má dvě části:
První pracuje automaticky (cron), těží různá data z webů (jejich rss kanálů) a provádí s nimi různé operace, které jsou výkonově dosti náročné.
Druhá část aplikace pak zpracované výsledky prezentuje - nad připravenými daty to jsou již poměrně jednoduché selecty a jiné databázové operace.
Problém je ale v tom, že ta automatická část pracuje téměř nepřetržitě, na databázi pak míří obrovské množství dotazů a pro prezentační část nezbývá výkon. Potřeboval bych to tedy vyřešit tak, aby každá část aplikace měla "garantovaný" výkon a navzájem se co nejméně ovlivňovaly.
Moje aktuální myšlenka je rozdělit databázi na dvě samostatné, kdy se v jedné budou data připravovat do správné podoby a např. jednou za den si z této databáze data natáhne prezentační část. Použil bych tedy dva virtuální servery a dvě databáze se vzdáleným přístupem.
Má někdo s takovým řešením zkušenosti, případně vidíte nějakou jinou možnost?
Díky za názory.
9. 10. 2015 08:38:53
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145381
Václav Hodek
verified
rating uzivatele
(9 hodnocení)
9. 10. 2015 08:59:07
No neznám pozadí problému, ale nebylo by lepší udělat přípravu dat v paměti a potom je teprve řádově jednodušším dotazem třeba jen zapsat do produkční databáze? Případně, pokud se zpracování neobejde bez databáze, tak použít in-memory databázi?
9. 10. 2015 08:59:07
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145380
wizardd
verified
rating uzivatele
(1 hodnocení)
9. 10. 2015 09:11:25
Díky za názor, nicméně to zpracování dat probíhá na základě informací v databázi (např. řazení do kategorií, které v databázi existují, přiřazování k existujícím záznamům atd.) Navíc se jedná o dost velké množství dat - řádově desítky až stovky tisíc řádků jejichž insert bude určitou dobu trvat. Takže bych řekl že lepší než každých deset minut insertovat/updatovat 100 000 řádků do prezentační databáze je jednou za den (někdy v noci) provést synchronizaci všech předpočítaných dat.
9. 10. 2015 09:11:25
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145379
Kovboj
verified
rating uzivatele
(13 hodnocení)
9. 10. 2015 09:13:41
RSS čtečka ti nemusí běžet pořád, vždy zpracuj dávku a pak chvíli počkej než se pustíš do další. A do těch náročných skriptů dej občas usleep(), na chvíli to zastaví skript takže bude mít procesor čas i na něco jiného.
Ale hlavní základ je zkusit přepsat tu náročnou část tak, aby tak náročná nebyla :-)
9. 10. 2015 09:13:41
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145378
Samozřejmě, že musí být aplikační DB oddělena od robota, jinak to nebude svižné.
Ještě lépe, data z robota bych neukládal do DB (žere to hodně času), ale nějak si je předpřipravil a pak je hromadným INSERTEM nastrkal, jednou za den do aplikační DB.
Řešení existuje spousta, ale je pro každý případ jiné.
9. 10. 2015 09:13:49
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145377
Tom
verified
rating uzivatele
(7 hodnocení)
9. 10. 2015 09:22:47
Většinou aplikace zobrazují agregovaná data, takže bych to viděl na dvě "samostatné aplikace". RSS čtečka si ukládá data do své db a cron je jednou za čas agreguje a uloží do produkční db. Nevýhoda toho je, že máš data zpožděná oproti reálu - což ale u RSS nevadí.
Druhé, složitější řešení je použít repliky databáze. Master by se staral o zápis a produkční by si bral ze slave jen data čtením
9. 10. 2015 09:22:47
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145376
James_Scott
verified
rating uzivatele
(7 hodnocení)
9. 10. 2015 09:32:55
Taky bych to viděl na master / slave replikaci DB, ale tech moznosti je spousta.
9. 10. 2015 09:32:55
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145375
Volil bych cestu dvou serverů. Na prvním bych data v první databázi zpracovával a připravoval do druhé. Tu bych replikoval na druhý server a tam zobrazoval.
Aktuálně teď zkouším fungování mysql cluster s NDB, což by bylo ještě vhodnější, ale tam sem ztím nepokročil tak daleko, abych to mohl jakkoli komentovat.
9. 10. 2015 09:53:56
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145374
Jirka
verified
rating uzivatele
(6 hodnocení)
9. 10. 2015 14:03:48
Zkusenosti mam, takove mensi..... Deseti a mozna statisice zapisu za sekundu :) Ale samozrejme i s mensim mnozstvim.
Kdyz budes resit problem master slave replikaci, tak jak zajistis ten vyhrazeny vykon? Ona ta slave databaze taky musi zapisovat replikovana data. Kdyztak mi napis a probereme to.
9. 10. 2015 14:03:48
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145373
Gav
verified
rating uzivatele
9. 10. 2015 23:51:02
Je treba se vice rozepsat. Na jakem HW je to provozovano, jak presne vypada ten engine?
Tech moznosti je spousty....Partitioning DTB a cast in-memory, ruzne hratky s multimaster DTB, obcas muze byt zajimave pouzit nejakou NoSQL / Objcet DTB. Spoustu veci se da vyresit optimalizaci OS / tunningem DTB atp.
Obecne by bylo take chodne se zamyslet do budoucna. Budou data (zpracovani rss) rust? Mas vymyslene skalovani? Hodne dobre pise o cloud-native aplikacich Tom Kubica http://www.cloudsvet.cz/ pripadne z infrastrukturniho pohledu na cloud pak http://www.netsvet.cz/
9. 10. 2015 23:51:02
https://webtrh.cz/diskuse/jedna-aplikace-dva-servery-a-dve-databaze/#reply1145372
Pro odpověď se přihlašte.
Přihlásit