Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Jiří Koutný
Collabim
Co děláme v Collabimu
150 000 klíčových slov denně
Postahujeme 900 000 stránek z vyhledávačů
Vyparsujeme jednotlivé URL st...
E-shop má 10 000 obrázků produktů a potřebuje je
převést do různých velikostí.
Jak na to?
Praktický příklad:
1. Jak si uložím, co už jsem udělal a co ne?
2. Způsob spouštění převodního skriptu. Cron? Linux service?
3. Spolehlivé sp...
Tak šel čas...
MySQL fronty, cron
MySQL fronty, init skripty
RabbitMQ (+ MySQL),
init skripty
“RabbitMQ is a complex
beast”
“It’s flexible, powerful but also hard to entirely grasp and master.”
https://antoniogarrote...
exchange x routing key x queue
https://www.rabbitmq.com/tutorials/amqp-concepts.html
image-conversion
image-conversion-failed
on failureafter 10 minutes
image-conversion
image-conversion-failed
on failureafter 10 minutes
consumerproducer
exchange: amq.direct
routing key: ima...
Publish v PHP
s pomocí videlalvaro/php-amqplib
Publish v Symfony
s pomocí oldsound/rabbitmq-bundle
Consume
v Symfony
bin/console rabbitmq:consumer image_conversion
… pustím kolikrát chci
1. prefetch_count = 1 !!!!!!!
2. x-max-priority (0 - 255)
3. bin/console setup-fabric
4. batch publish
5. Jak zabránit umí...
1. AMQPLazyConnection extends AMQPStreamConnection extends
AbstractConnection extends AbstractChannel
2. Jedna fronta se k...
Jiří Koutný - RabbitMQ - spolehlivé zpracování dat na pozadí  (2. sraz přátel Symfony v Praze)
Jiří Koutný - RabbitMQ - spolehlivé zpracování dat na pozadí  (2. sraz přátel Symfony v Praze)
Jiří Koutný - RabbitMQ - spolehlivé zpracování dat na pozadí  (2. sraz přátel Symfony v Praze)
Prochain SlideShare
Chargement dans…5
×

Jiří Koutný - RabbitMQ - spolehlivé zpracování dat na pozadí (2. sraz přátel Symfony v Praze)

409 vues

Publié le

V Collabimu potřebujeme denně zpracovávat miliony záznamů na pozadí. Dříve jsme to dělali cronem, ale bylo to pomalé a nespolehlivé. Na přednášce vám ukážu, jak to s RabbitMQ dělat mnohem lépe.

Publié dans : Logiciels
  • Soyez le premier à commenter

Jiří Koutný - RabbitMQ - spolehlivé zpracování dat na pozadí (2. sraz přátel Symfony v Praze)

  1. 1. Jiří Koutný Collabim
  2. 2. Co děláme v Collabimu 150 000 klíčových slov denně Postahujeme 900 000 stránek z vyhledávačů Vyparsujeme jednotlivé URL stránek Hledáme v nich weby klientů
  3. 3. E-shop má 10 000 obrázků produktů a potřebuje je převést do různých velikostí. Jak na to? Praktický příklad:
  4. 4. 1. Jak si uložím, co už jsem udělal a co ne? 2. Způsob spouštění převodního skriptu. Cron? Linux service? 3. Spolehlivé spuštění více než jedné instance převodního skriptu 4. Ošetření, když některé konverze selže (dočasně/trvale) 5. Odložení znovuspuštění položek, které selhaly. 6. Jedna zaseknutá položka nesmí zaseknout celou frontu Co potřebujeme vyřešit (motivace)
  5. 5. Tak šel čas... MySQL fronty, cron MySQL fronty, init skripty RabbitMQ (+ MySQL), init skripty
  6. 6. “RabbitMQ is a complex beast” “It’s flexible, powerful but also hard to entirely grasp and master.” https://antoniogarrote.wordpress.com/2014/10/14/building-a-job-processing-system-for-jvm-apps-with-rabbitmq/
  7. 7. exchange x routing key x queue
  8. 8. https://www.rabbitmq.com/tutorials/amqp-concepts.html
  9. 9. image-conversion image-conversion-failed on failureafter 10 minutes
  10. 10. image-conversion image-conversion-failed on failureafter 10 minutes consumerproducer exchange: amq.direct routing key: image-conversion
  11. 11. Publish v PHP s pomocí videlalvaro/php-amqplib
  12. 12. Publish v Symfony s pomocí oldsound/rabbitmq-bundle
  13. 13. Consume v Symfony
  14. 14. bin/console rabbitmq:consumer image_conversion … pustím kolikrát chci
  15. 15. 1. prefetch_count = 1 !!!!!!! 2. x-max-priority (0 - 255) 3. bin/console setup-fabric 4. batch publish 5. Jak zabránit umírání MySQL spojení? 6. Jde consumovat více zpráv najednou? Co se může hodit
  16. 16. 1. AMQPLazyConnection extends AMQPStreamConnection extends AbstractConnection extends AbstractChannel 2. Jedna fronta se konfiguruje na 2 místech! 3. Chcete využívat Dependency Injection? Bude to bolet. 4. Budete to tak dlouho hackovat, až skoro napíšete vlastní bundle oldsound/rabbitmq-bundle sucks! Díky! Jiří Koutný

×