ݺߣ

ݺߣShare a Scribd company logo
RabbitMQ a ElasticSearch
v Previu
Příklad - uložení rezervace
● uložení do DB
● záznam uživatelských změn (log)
○ stav objektu před uložením a po uložení
● distribuce dat (channel manager)
○ API
Problémy
Celý proces v jednom běhu skriptu
- dlouhá transakce, timeouty
- rozsáhlá DB
- komplikované rozšíření funkčnosti
Řešení
● oddělení běhu a logiky pomocí RabbitMQ
○ nástroj pro práci s frontami zpráv
○ zpráva, fronta, producer, consumer
● změna úložiště dat na ElasticSearch (ES)
○ JSON dokumentová DB
○ index, dokument
- opensource
- stabilní a podporované
RabbitMQ a ElasticSearch v Previu
Výhody a nevýhody RabbitMQ
+ zrychlení základního procesu ukládání rezervace
+ jedno místo pro odeslání, více míst pro příjem
+ možnost rozdělení procesu na více serverů
+ snadné rozšíření funkcionality
- složitá kontrola zpracování v původním skriptu
- potřeba nástroje na spouštění a kontrolu běhu consumerů
- MySQL transakce vs. zpracování v RabbitMQ
- zpracování v RabbitMQ může předběhnout velkou SQL transakci
Nasazení RabbitMQ v Previu
● Zpráva obsahuje obraz modelu
○ před uložením a po uložení
● Zpožděné doručování v případě chyby
○ fronty s rostoucím TTL až do max. počtu pokusů
● Rozšíření
○ přidání consumer skriptu
● Supervisord
○ nekonečně bežící php skripty
Výhody a nevýhody ElasticSearch
+ zmenšení velikosti DB při zvýšení výkonu
+ rozšíření možností vyhledávání
+ vhodnější struktura dat (tabulky vs indexy)
- více plánování (nasazení změn struktury 31.12. v 23:59)
- konflikt verzí dokumentu při rychlých operacích
Nasazení ElasticSearch v Previu
● Migrace 270GB v MySQL do ES
○ skript na 16 dní
● Time-based indexy
○ indexy s příponou časového období
○ snadné mazání starých dat
● Striktní mapování
○ potřeba hlídat přidání nového pole v kódu
✓ splněná očekávání
✓ zajímavé technologie
✓ další možnosti využití
Ad

Recommended

Projekt Bitcoinová burza Coinmate
Projekt Bitcoinová burza Coinmate
Profinit
Šárka Hálečková a Tomáš Burda - Řešení pro dlouhodobou archivaci v Národní kn...
Šárka Hálečková a Tomáš Burda - Řešení pro dlouhodobou archivaci v Národní kn...
LTP-portal-cz
Vlastimil Krejčíř - Systémový pohled na software Archivematica
Vlastimil Krejčíř - Systémový pohled na software Archivematica
LTP-portal-cz
Ruby on rails
Ruby on rails
Keyup
Větší data v klasickém webstacku - BARCAMP České Budějovice 02/2018
Větší data v klasickém webstacku - BARCAMP České Budějovice 02/2018
Collabim
Lotus Notes 7
Lotus Notes 7
Martin Humpolec
Czech Sun Training Day 2008 - Java Enterprise System
Czech Sun Training Day 2008 - Java Enterprise System
Martin Cerveny
Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
MarketingArrowECS_CZ
Dynamicke scannery webovych aplikaci v cloudu
Dynamicke scannery webovych aplikaci v cloudu
Jan Horalík
Výkonnost webových aplikací
Výkonnost webových aplikací
Taste Medio
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
WebScience1
RabbitMQ v PHP webových aplikacích | Adam Král
RabbitMQ v PHP webových aplikacích | Adam Král
Jakub Englický
Veeam v10 jak na to
Veeam v10 jak na to
Vladan Laxa
Architektura databáze Oracle
Architektura databáze Oracle
Tomas Solar
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
Martin Humpolec
BI Forum 2009 - Exadata
BI Forum 2009 - Exadata
OKsystem
Principy cachování ve WordPressu
Principy cachování ve WordPressu
David Biňovec
Microservices - morning talk
Microservices - morning talk
Jindřich Kubát
Andrea Miranda - Archivematica a standardy
Andrea Miranda - Archivematica a standardy
LTP-portal-cz
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Martin Cerveny
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Ctvrtkoncz
Veeam Granulární obnova
Veeam Granulární obnova
MarketingArrowECS_CZ
Red Hat Storage Server presentation
Red Hat Storage Server presentation
Elos Technologies s.r.o.
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
Martin Ptáček
Závěrečný úkol KPI
Závěrečný úkol KPI
Jan Lysý
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Martin Hansgut
Bezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNET
CESNET
Startup vs korporace vs Previo
Startup vs korporace vs Previo
éá첹ř
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
éá첹ř

More Related Content

Similar to RabbitMQ a ElasticSearch v Previu (20)

Dynamicke scannery webovych aplikaci v cloudu
Dynamicke scannery webovych aplikaci v cloudu
Jan Horalík
Výkonnost webových aplikací
Výkonnost webových aplikací
Taste Medio
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
WebScience1
RabbitMQ v PHP webových aplikacích | Adam Král
RabbitMQ v PHP webových aplikacích | Adam Král
Jakub Englický
Veeam v10 jak na to
Veeam v10 jak na to
Vladan Laxa
Architektura databáze Oracle
Architektura databáze Oracle
Tomas Solar
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
Martin Humpolec
BI Forum 2009 - Exadata
BI Forum 2009 - Exadata
OKsystem
Principy cachování ve WordPressu
Principy cachování ve WordPressu
David Biňovec
Microservices - morning talk
Microservices - morning talk
Jindřich Kubát
Andrea Miranda - Archivematica a standardy
Andrea Miranda - Archivematica a standardy
LTP-portal-cz
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Martin Cerveny
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Ctvrtkoncz
Veeam Granulární obnova
Veeam Granulární obnova
MarketingArrowECS_CZ
Red Hat Storage Server presentation
Red Hat Storage Server presentation
Elos Technologies s.r.o.
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
Martin Ptáček
Závěrečný úkol KPI
Závěrečný úkol KPI
Jan Lysý
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Martin Hansgut
Bezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNET
CESNET
Dynamicke scannery webovych aplikaci v cloudu
Dynamicke scannery webovych aplikaci v cloudu
Jan Horalík
Výkonnost webových aplikací
Výkonnost webových aplikací
Taste Medio
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
WebScience1
RabbitMQ v PHP webových aplikacích | Adam Král
RabbitMQ v PHP webových aplikacích | Adam Král
Jakub Englický
Architektura databáze Oracle
Architektura databáze Oracle
Tomas Solar
České Lotus Notes 7 jsou zde!
České Lotus Notes 7 jsou zde!
Martin Humpolec
BI Forum 2009 - Exadata
BI Forum 2009 - Exadata
OKsystem
Principy cachování ve WordPressu
Principy cachování ve WordPressu
David Biňovec
Andrea Miranda - Archivematica a standardy
Andrea Miranda - Archivematica a standardy
LTP-portal-cz
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Martin Cerveny
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Ctvrtkoncz
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
Martin Ptáček
Závěrečný úkol KPI
Závěrečný úkol KPI
Jan Lysý
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Symposium 2022 - Proc upgradovat ma Domino 1201.pdf
Martin Hansgut
Bezpečnost síťové části e-Infrastruktury CESNET
Bezpečnost síťové části e-Infrastruktury CESNET
CESNET

More from éá첹ř (20)

Startup vs korporace vs Previo
Startup vs korporace vs Previo
éá첹ř
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
éá첹ř
Čtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán Zikmund
éá첹ř
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
éá첹ř
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
éá첹ř
PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]
éá첹ř
PHP Evening #1 - Propel ORM [Martin Sojka]
PHP Evening #1 - Propel ORM [Martin Sojka]
éá첹ř
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
éá첹ř
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
éá첹ř
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
éá첹ř
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
éá첹ř
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
éá첹ř
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
éá첹ř
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
éá첹ř
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
éá첹ř
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
éá첹ř
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
éá첹ř
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
éá첹ř
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
éá첹ř
Karel Škopek - WordPress + Laravel = <3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = <3 (4. sraz přátel Symfony v Praze)
éá첹ř
Startup vs korporace vs Previo
Startup vs korporace vs Previo
éá첹ř
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
éá첹ř
Čtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán Zikmund
éá첹ř
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
éá첹ř
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
éá첹ř
PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]
éá첹ř
PHP Evening #1 - Propel ORM [Martin Sojka]
PHP Evening #1 - Propel ORM [Martin Sojka]
éá첹ř
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
éá첹ř
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
éá첹ř
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
éá첹ř
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
éá첹ř
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
éá첹ř
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
éá첹ř
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
éá첹ř
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
éá첹ř
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
éá첹ř
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
éá첹ř
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
éá첹ř
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
éá첹ř
Karel Škopek - WordPress + Laravel = <3 (4. sraz přátel Symfony v Praze)
Karel Škopek - WordPress + Laravel = <3 (4. sraz přátel Symfony v Praze)
éá첹ř
Ad

RabbitMQ a ElasticSearch v Previu

  • 2. Příklad - uložení rezervace ● uložení do DB ● záznam uživatelských změn (log) ○ stav objektu před uložením a po uložení ● distribuce dat (channel manager) ○ API
  • 3. Problémy Celý proces v jednom běhu skriptu - dlouhá transakce, timeouty - rozsáhlá DB - komplikované rozšíření funkčnosti
  • 4. Řešení ● oddělení běhu a logiky pomocí RabbitMQ ○ nástroj pro práci s frontami zpráv ○ zpráva, fronta, producer, consumer ● změna úložiště dat na ElasticSearch (ES) ○ JSON dokumentová DB ○ index, dokument - opensource - stabilní a podporované
  • 6. Výhody a nevýhody RabbitMQ + zrychlení základního procesu ukládání rezervace + jedno místo pro odeslání, více míst pro příjem + možnost rozdělení procesu na více serverů + snadné rozšíření funkcionality - složitá kontrola zpracování v původním skriptu - potřeba nástroje na spouštění a kontrolu běhu consumerů - MySQL transakce vs. zpracování v RabbitMQ - zpracování v RabbitMQ může předběhnout velkou SQL transakci
  • 7. Nasazení RabbitMQ v Previu ● Zpráva obsahuje obraz modelu ○ před uložením a po uložení ● Zpožděné doručování v případě chyby ○ fronty s rostoucím TTL až do max. počtu pokusů ● Rozšíření ○ přidání consumer skriptu ● Supervisord ○ nekonečně bežící php skripty
  • 8. Výhody a nevýhody ElasticSearch + zmenšení velikosti DB při zvýšení výkonu + rozšíření možností vyhledávání + vhodnější struktura dat (tabulky vs indexy) - více plánování (nasazení změn struktury 31.12. v 23:59) - konflikt verzí dokumentu při rychlých operacích
  • 9. Nasazení ElasticSearch v Previu ● Migrace 270GB v MySQL do ES ○ skript na 16 dní ● Time-based indexy ○ indexy s příponou časového období ○ snadné mazání starých dat ● Striktní mapování ○ potřeba hlídat přidání nového pole v kódu
  • 10. ✓ splněná očekávání ✓ zajímavé technologie ✓ další možnosti využití