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í Google
1. Public/shared proxies jsou k ničemu
2. Lepší více proxies než Selenium/PhantomJS
3. Ideálně 1 dotaz za 5 - 10 minut
4. XPath v kombinaci s regulárními výrazy je mocná zbraň
5. Vždycky si ukládejte původní HTML source
6. 100% úspěšnost je zbytečná
7. Spoléhejte se jen na sebe
8. 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?
● …?
Díky! Jiří Koutný
koutny@serpo.cz

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

  • 1.
    Collabim: jak scrapujeme700 000 stránek vyhledávačů denně Jiří Koutný
  • 2.
    Collabim a Serpo 700+ klientů 6+ let 6 členůtýmu měření pozic ve vyhledávačích a sledování konkurence
  • 3.
  • 4.
  • 6.
    ● Denně 300000 sledovaných frází ● Denně 700 000 stránek vyhledávání (~70 GB) ● 8 000 proxies ● 170 GB MySQL ● 40 GB ElasticSearch Data
  • 7.
    Desatero scrapování Google 1.Public/shared proxies jsou k ničemu 2. Lepší více proxies než Selenium/PhantomJS 3. Ideálně 1 dotaz za 5 - 10 minut 4. XPath v kombinaci s regulárními výrazy je mocná zbraň 5. Vždycky si ukládejte původní HTML source 6. 100% úspěšnost je zbytečná 7. Spoléhejte se jen na sebe 8. PHPčko je “good enough” a “fast enough” 9. MultiCURL/guzzlephp 10. Doctrine2 je fajn na frontend, ale ne do workerů
  • 8.
  • 9.
    Serpo: Jak ukládathistorická 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
  • 11.
  • 12.
    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é
  • 13.
    Čí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? ● …?
  • 14.