Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Architektura Asynchroniczna w praktyce na przyk...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
fnxnet
April 10, 2016
Programming
0
160
Architektura Asynchroniczna w praktyce na przykładzie BlaBlaCar
Prezentacja z 4Developers 2016
fnxnet
April 10, 2016
Tweet
Share
Other Decks in Programming
See All in Programming
AI Agent の開発と運用を支える Durable Execution #AgentsInProd
izumin5210
7
2.3k
CSC307 Lecture 03
javiergs
PRO
1
490
CSC307 Lecture 02
javiergs
PRO
1
780
組織で育むオブザーバビリティ
ryota_hnk
0
180
FOSDEM 2026: STUNMESH-go: Building P2P WireGuard Mesh Without Self-Hosted Infrastructure
tjjh89017
0
180
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
コントリビューターによるDenoのすゝめ / Deno Recommendations by a Contributor
petamoriken
0
210
CSC307 Lecture 10
javiergs
PRO
1
660
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
470
今から始めるClaude Code超入門
448jp
8
9.1k
CSC307 Lecture 09
javiergs
PRO
1
840
Raku Raku Notion 20260128
hareyakayuruyaka
0
370
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
106
230k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
110
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Optimizing for Happiness
mojombo
379
71k
Code Review Best Practice
trishagee
74
20k
Navigating Team Friction
lara
192
16k
Exploring anti-patterns in Rails
aemeredith
2
250
Git: the NoSQL Database
bkeepers
PRO
432
66k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Designing for humans not robots
tammielis
254
26k
Transcript
Asynchroniczna architektura w praktyce (na przykładzie BlaBlaCar) Mirosław Karczmarczyk
Tytułem wstępu
Tytułem wstępu Connecting people
BlaBlaCar w liczbach 30mln użytkowników 20 Instancji Frontu 87 Programistów
i architektow 11 Nodów bazy danych 200 Serwerów Mobilnych użytkowników 18mln
Co się dzieje po rezerwacji miejsca? Czas Wysyłamy maila do
rezerwującego Wysyłamy SMS’a do kierowcy Indeksujemy Zapisujemy w bazie Zbieramy statystyki Odpowiedź
Efekt ?
A gdyby tak… Czas Wysyłamy SMS’a do kierowcy Wysyłamy maila
Indeksujemy Zapisujemy w bazie Zbieramy statystyki Klik…
None
Asynchroniczność… Mikroserwisy!!!
• łatwość wdrożenia zmian • niezależność • osobne repozytoria •
skalowalność Cechy mikroserwisu
Skalowalność aplikacji
Komunikacja pomiędzy mikroserwisami Synchroniczna Asynchroniczna Kolejkowanie wiadomości Publisher - Subscriber
REST API
MAILER Serwis A MAILER Serwis B Workery FRONT Front Load
balancer Monitoring / Logi Baza Danych Indekser Cache API Load balancer Serwer kolejkowania wiadomości
None
Konsumer Konsumer Kolejka Publisher Konsumer
Fanout Exchange konsumer A konsumer A konsumer B konsumer C
Exchange Publisher Kolejka 1 Kolejka 2 Kolejka 3
Fanout Exchange
Routing keys Publisher konsumer A konsumer A konsumer B konsumer
C Exchange Kolejka 1 Kolejka 2 Kolejka 3 route_1 route_2 route_3 route_1 route_2
Routing keys
Konsumer / worker
Konsumer / worker c.d.
Konsumer / worker c.d.
Pimple - Dependency Injection
Pimple - Dependency Injection c.d.
Pimple - Dependency Injection c.d.
Symfony 2 - RabbitMQBundle
Symfony 2 - RabbitMQBundle c.d.
Symfony 2 - RabbitMQBundle c.d.
Symfony 2 - RabbitMQBundle c.d. $ ./app/console rabbitmq:consumer -m 50
-w testConsumer
A co jeśli… …masz 100 (1000 instancji) workerów? … przetwarzasz
2500 do 7500 wiadomości na sekundę w Rabbicie?
None
Długo działające procesy!!!
None
Swarrot - consume them all!!
Swarrot - consume them all!!
Swarrot - consume them all!!
Potrzebujemy czegoś więcej… Swarrot - consume them all!!
Swarrot - consume them all!! Enkapsulacja
Swarrot - consume them all!!
Swarrot - consume them all!!
Stack technologiczny BlaBlaCar
BlaBlaCar.com/dreamjobs @BlaBlaCarTech Backend Engineers Frontend Engineers iOS Engineers Android Engineers
WARSZAWA PARYŻ
None
Źródła: • http://queues.io/ • https://www.rabbitmq.com Przydatne pakiety: • swarrot/swarrot •
pimple/pimple • silex/silex • php-amqplib/RabbitMqBundle Podziękowania dla Olivier’a Dolbeau :)
None