Vert.x - jOpenSpace

Transkript

Vert.x - jOpenSpace
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ý, asynchronní model
• škálovatelnost - JVM přes dostupná jádra, cluster
• vysoká dostupnost
• polyglot - Java, JavaScript, Ruby, Python, Groovy, ...
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
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
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
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
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
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
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
Moduly
• znovupoužitelné komponenty (mohou obsahovat více verticlů)
• zip archiv obsahující kód, konfiguraci, závislosti
• veřejný repozitář modulů
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
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
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řehledný kód v Javě (vnitřní třídy)
Otázky?
Díky za pozornost

Podobné dokumenty

Název zboží ISBN Prodejní cena s DPH novinka Angličtina 6 pro ZŠ

Název zboží ISBN Prodejní cena s DPH novinka Angličtina 6 pro ZŠ Angličtina 6 pro ZŠ a VG Way to Win CD /1ks/ pro ţáka Angličtina 6 pro ZŠ a VG Way to Win CD /2ks/ - pro učitele Angličtina 6 pro ZŠ a VG Way to Win MC /2 ks/ Angličtina 6 pro ZŠ a VG Way to Win PS...

Více

Číslo 2/2013

Číslo 2/2013 význam interoperability elektronického zdravotního záznamu (EHR) jako schopnosti dvou a více subjektů dosahovat společného cíle, resp. vzájemnou synergickou kooperací dosahovat vlastních cílů. Pro ...

Více

Referenční projekty

Referenční projekty Následující řádky jsou příklady projektů, na jejichž realizaci se členové našeho týmu v minulosti podíleli:

Více