Generování real-time statistik aneb jak jsme se zbavili cronu

Generování podrobných statistik kampaní tak, aby je bylo možné jednoduše a rychle filtrovat dle požadavků uživatele, nebylo ani pro náš systém vždy snadné. V dnešním příspěvku vás necháme nahlédnout pod pokličku technického řešení, jak jsme si s tímto problémem poradili my.

Adam
13.09.2017
blog picture

Znáte to především z globálních sítí – málokdo má real time statistiky pohromadě s ostatními. Na dnešní detailní výsledky se tak musíte podívat jinam než na zbytek. Po technické stránce je to s velkým objemem dat totiž celkem oříšek! V dnešním příspěvku vás necháme nahlédnout pod pokličku technického řešení, jak jsme si s tímto problémem poradili my.

Generování podrobných statistik kampaní tak, aby je bylo možné jednoduše a rychle filtrovat dle požadavků uživatele, nebylo ani pro náš systém vždy snadné. Jak bývá pro tento úkol zvykem, používali jsme skript spouštěný tzv. „cronem“. Čím více jsme však měli dat, tím více náročné na strojový výkon generování bylo. Naše stroje dostávaly dost zabrat a museli jsme najít jinou cestu.

Největší nevýhodou generování statistik cronem bylo, že jsme nemohli nabídnout aktuální čísla v reálném čase. Skript se spouštěl každých 5 minut, aby aktualizoval dnešní statistiky. Opravy statistik za předchozí dny probíhaly jen jednou denně během noci. Dat bylo tolik, že generování nešlo spustit přes den při normální zátěži.

Při hledání nové cesty jsme tedy chtěli vyřešit dva problémy:

1. Co nejvíce snížit zátěž na naše stroje

2. Zákazníkům nabídnout statistiky v reálném čase

Přemýšleli jsme o různých nových technologiích, ale nakonec jsme finální řešení postavili na technologiích, které už máme a známe.

MySQL replikace budiž záchranou

Většinu dat máme uloženou v databázi MySQL. Již před časem jsme byli kvůli rychlosti nuceni přidat databázi druhou, tzv. „slave“. Mezi hlavní databází a slave databází pak probíhá tzv. „replikace“ dat. Hlavní databáze data ukládá ve speciálním binárním formátu a slave databáze si je v reálném čase stahuje, aby měla stejná data jako hlavní databáze.

Jak tento již zavedený proces využít? Vytvořili jsme prototyp aplikace pomocí knihovny python-mysql-replication, která se umí stejně jako slave databáze připojit na hlavní databázi a v reálném čase tak přijímat veškeré změny, které v databázi proběhnou. Ty pak propisuje již agregované do speciální tabulky v hlavní databázi, která je určena pro zobrazení statistik v systému.

Prototyp se osvědčil

Po prvních lapsech, kdy nám čísla v některých případech neseděla, a důkladném testování nyní pomocí tohoto „agregátoru“ generujeme veškeré statistiky. Agregátor reaguje na aktuální změny v databázi, zátěž oproti dávkovému zpracování je jen mírná a jsme schopni vám poskytnout statistiky v reálném čase.

Agregátor nyní zvládne propagovat do tabulky statistik i tisíce změn za vteřinu bez významného vytížení našich serverů. Jsme tak perfektně připraveni na téměř jakoukoliv zátěž.

Adam Hájek
Affiliate Manager

Další články

blog picture
24.06.2025 Rubrika
Jak podpořit affiliate program v mimosezóně?
Máte affiliate program pro svůj e-shop nebo službu a máte v období mimo hlavní sezónu méně objednávek? Tento článek pro vás shrne, co můžete dělat, aby i v takové době mohl být affiliate pro váš business přínosným zdrojem objednávek.
blog picture
24.06.2025 Rubrika
Jak má influencer oslovit značku a kolik si říct za spolupráci?
Chtěli byste vstoupit do mocného světa influencer marketingu? Nečekejte, až si vás nějaká značka sama najde – oslovte ji sami! Aktivní přístup je dnes nejen běžný, ale i vítaný.
blog picture
26.05.2025 Rubrika
Vliv Google update na partnery
Google pravidelně aktualizuje své algoritmy a tyto změny mohou affiliate projekty rychle poslat ke dnu – nebo naopak katapultovat vzhůru. V článku se dozvíte, jak updaty fungují, proč jsou tak zásadní pro organickou návštěvnost a jak na ně reagovat.

Chcete něco podobného?

Zaregistrujte se.