Vert.x

  • 220 views
Uploaded on

Slidy mého lightning talku na jOpenSpace 2013

Slidy mého lightning talku na jOpenSpace 2013

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
220
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Vert.x Zdeněk Merta, jOpenSpace 2013
  • 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 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 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 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 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 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 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 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 Moduly • znovupoužitelné komponenty (mohou obsahovat více verticlů) • zip archiv obsahující kód, konfiguraci, závislosti • veřejný repozitář modulů
  • 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 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 Architektura
  • 14. 14 Nástroje • šablona pro Maven a Gradle • podpora testů (jUnit) • jednotkové • integrační • neexistuje podpora pro IDE
  • 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. Otázky?
  • 17. Díky za pozornost