Vert.x
Zdeněk Merta, jOpenSpace 2013
2

Co je Vert.x?
• aplikační platforma postavená nad JVM (Java 7+)
• vysoký výkon - neblokující, udástně řízený, asynchron...
3

Motivace
• moderní real-time aplikace
• komunikační nástroje (sociální sítě, chat, ...)
• kolaborační nástroje (Google ...
4

Reactor pattern
• aplikace je řízena událostmi
• na události se registrují handlery
• vlákno zpracovává události a spou...
5

Blokující operace
• některé operace jsou přirozeně blokující
• volání tradičních API (např. JDBC)
• dlouhotrvající oper...
6

Hybridní model vláken
1. event loop
• Multi Reactor Pattern
• počet vláken standardně podle počtu procesorů
• vykonává ...
7

Core API (100% asynchronní)
• TCP/SSL server/klient
• HTTP/HTTPS server/klient
• Websockets server/klient, SockJS
• Eve...
8

Verticle
• nejmenší spustitelná jednotka - třída/skript
• vykonává neblokující operace
• spouští se v event loop (vždy ...
9

Worker verticle
• vykonává blokující operace
• spouští se ve vlákně z worker poolu
• vlákno může být pokaždé jiné
• vyj...
10

Moduly
• znovupoužitelné komponenty (mohou obsahovat více verticlů)
• zip archiv obsahující kód, konfiguraci, závislos...
11

Instance Vert.x
• běží ve vlastním JVM
• umožňuje spouštět verticly
• může běžet v clusteru
• event loops, background ...
12

Komunikace mezi verticly
1. Event bus
• zprávy
• jednoduché adresování
• publish/subscribe, P2P, request/response
• di...
13

Architektura
14

Nástroje
• šablona pro Maven a Gradle
• podpora testů (jUnit)
• jednotkové
• integrační
• neexistuje podpora pro IDE
15

Nevýhody
• poměrně mladá platforma (necelé dva roky vývoje)
• menší komunita
• malý počet veřejných modulů
• nepřehled...
Otázky?
Díky za pozornost
Upcoming SlideShare
Loading in …5
×

Vert.x

530 views

Published on

Slidy mého lightning talku na jOpenSpace 2013

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
530
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Vert.x

  1. 1. Vert.x Zdeněk Merta, jOpenSpace 2013
  2. 2. 2 Co je Vert.x? • aplikační platforma postavená nad JVM (Java 7+) • vysoký výkon - neblokující, udástně řízený, asynchronní model • škálovatelnost - JVM přes dostupná jádra, cluster • vysoká dostupnost • polyglot - Java, JavaScript, Ruby, Python, Groovy, ...
  3. 3. 3 Motivace • moderní real-time aplikace • komunikační nástroje (sociální sítě, chat, ...) • kolaborační nástroje (Google Docs, ...) • online hry • C10K problém • mnoho klientů 10 000+ • mnoho dlouhotrvajících spojení
  4. 4. 4 Reactor pattern • aplikace je řízena událostmi • na události se registrují handlery • vlákno zpracovává události a spouští registrované handlery • vlákno nesmí být blokováno!!!
  5. 5. 5 Blokující operace • některé operace jsou přirozeně blokující • volání tradičních API (např. JDBC) • dlouhotrvající operace (výpočty, generování, ...)
  6. 6. 6 Hybridní model vláken 1. event loop • Multi Reactor Pattern • počet vláken standardně podle počtu procesorů • vykonává neblokující operace 2. background worker pool • pool vláken • vykonává blokující nebo dlouhotrvající operace
  7. 7. 7 Core API (100% asynchronní) • TCP/SSL server/klient • HTTP/HTTPS server/klient • Websockets server/klient, SockJS • Event Bus / sdílená data • časovače • souborový systém • konfigurace • logování
  8. 8. 8 Verticle • nejmenší spustitelná jednotka - třída/skript • vykonává neblokující operace • spouští se v event loop (vždy ve stejném) • Konkurence - single-threaded • běží vždy pouze v jednom vlákně (odpadá synchronizace, zámky, ...) • izolace (vlastní classloader) • přístup ke Core API, registrace handlerů • deploy dalších verticlů
  9. 9. 9 Worker verticle • vykonává blokující operace • spouští se ve vlákně z worker poolu • vlákno může být pokaždé jiné • vyjímečně může běžet ve více vláknech (multi-threaded)
  10. 10. 10 Moduly • znovupoužitelné komponenty (mohou obsahovat více verticlů) • zip archiv obsahující kód, konfiguraci, závislosti • veřejný repozitář modulů
  11. 11. 11 Instance Vert.x • běží ve vlastním JVM • umožňuje spouštět verticly • může běžet v clusteru • event loops, background worker pool
  12. 12. 12 Komunikace mezi verticly 1. Event bus • zprávy • jednoduché adresování • publish/subscribe, P2P, request/response • distribuovaná, zasahuje i do browseru 2. sdílená data • immutable objekty ukládané do sdílené mapy nebo množiny • pouze v rámci jedné instance (zatím?)
  13. 13. 13 Architektura
  14. 14. 14 Nástroje • šablona pro Maven a Gradle • podpora testů (jUnit) • jednotkové • integrační • neexistuje podpora pro IDE
  15. 15. 15 Nevýhody • poměrně mladá platforma (necelé dva roky vývoje) • menší komunita • malý počet veřejných modulů • nepřehledný kód v Javě (vnitřní třídy)
  16. 16. Otázky?
  17. 17. Díky za pozornost

×