jiří koutný - collabim: jak scrapujeme 700 000 stránek vyhledávačů denně
TRANSCRIPT
Collabim: jak scrapujeme 700 000 stránek vyhledávačů denně
Jiří Koutný
Collabim a Serpo
700+klientů
6+let
6členů týmu
měření pozic ve vyhledávačích a sledování konkurence
Collabim
Serpo.cz
● 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
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ů
CollabimApp
MailQueueBilling
CollabimTracker
Serpo
Microservices!
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
CollabimTracker
Serpo
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é
Čí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?● …?