jiří koutný - collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

14
Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně Jiří Koutný

Upload: pehapkari

Post on 09-Jan-2017

155 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Jiří Koutný

Page 2: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Collabim a Serpo

700+klientů

6+let

6členů týmu

měření pozic ve vyhledávačích a sledování konkurence

Page 3: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Collabim

Page 4: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Serpo.cz

Page 5: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně
Page 6: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

● Denně 300 000 sledovaných frází● Denně 700 000 stránek vyhledávání (~70 GB)● 8 000 proxies● 170 GB MySQL● 40 GB ElasticSearch

Data

Page 7: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Desatero scrapování Google1. Public/shared proxies jsou k ničemu2. Lepší více proxies než Selenium/PhantomJS3. Ideálně 1 dotaz za 5 - 10 minut4. XPath v kombinaci s regulárními výrazy je mocná zbraň5. Vždycky si ukládejte původní HTML source6. 100% úspěšnost je zbytečná7. Spoléhejte se jen na sebe8. PHPčko je “good enough” a “fast enough”9. MultiCURL/guzzlephp

10. Doctrine2 je fajn na frontend, ale ne do workerů

Page 8: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

CollabimApp

MailQueueBilling

CollabimTracker

Serpo

Microservices!

Page 9: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Serpo: Jak ukládat historická data?

20 GB každých 14 dnů

jednou je uložíme a už se němění

nechceme je zálohovat pořád dokola

Page 10: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně
Page 11: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

CollabimTracker

Serpo

Page 12: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Hlavní bolest - ElasticSearch - Red is dead!● Verzi < 2.0 nedoporučuji, půlka věcí je jinak● Type nejde ani promazat ani celý smazat (jen index)● Žádné BATCH DELETE by condition● JSON query DSL ☠ !● Indexujete moc rychle? Spadne● Kill query neexistuje● Spadlý node se oživuje hodinu až dvě● Žádný EXPLAIN ani profiling● UPDATE zahodí celý původní dokument a vytvoří nový -> pomalé● Agregace jsou hodně omezené

Page 13: Jiří Koutný - Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně

Čím nahradit ElasticSearch?● Málo zápisů, hodně čtení● Hodně agregací, průniky množin, vztahy mezi weby● Non-blocking/batch query knihovna pro PHP● MongoDB?● PostgreSQL?● …?