SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Vert.x

Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconVojta Svoboda
 
Testování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíTestování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíMichal Aichinger
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyLukáš Petrlík
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on railsKeyup
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesCtvrtkoncz
 
CRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APICRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APIPremek Brada
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisOracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisMartin Cerveny
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop pythonVladan Laxa
 
Czech Sun Training Day 2009 - Solaris
Czech Sun Training Day 2009 - SolarisCzech Sun Training Day 2009 - Solaris
Czech Sun Training Day 2009 - SolarisMartin Cerveny
 
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022PeckaDesign.cz
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup Jaroslav Jacjuk
 
Veeam v10 jak na to
Veeam v10 jak na toVeeam v10 jak na to
Veeam v10 jak na toVladan Laxa
 

Similaire à Vert.x (20)

TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
Symfony vs Nette vs Phalcon
Symfony vs Nette vs PhalconSymfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
 
Testování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíTestování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikací
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache Derby
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & MicrosevicesČtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
Čtvrtkon #71 - Jan Kaštánek - Java & Docker & Microsevices
 
CRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná APICRCE - přehled datového modelu a vybraná API
CRCE - přehled datového modelu a vybraná API
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS SolarisOracle Solaris Day 2013 - Oracle DB and OS Solaris
Oracle Solaris Day 2013 - Oracle DB and OS Solaris
 
vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop python
 
Czech Sun Training Day 2009 - Solaris
Czech Sun Training Day 2009 - SolarisCzech Sun Training Day 2009 - Solaris
Czech Sun Training Day 2009 - Solaris
 
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
Péhápkaři v Pecce: Naše cesta k read-modelu – Vojtěch Buba –18. 5. 2022
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup
 
Infrastruktura památníku českého webu a zkušenosti s Heritrixem
Infrastruktura památníku českého webu a zkušenosti s HeritrixemInfrastruktura památníku českého webu a zkušenosti s Heritrixem
Infrastruktura památníku českého webu a zkušenosti s Heritrixem
 
Red Hat Storage Server presentation
Red Hat Storage Server presentationRed Hat Storage Server presentation
Red Hat Storage Server presentation
 
TNPW2-2016-03
TNPW2-2016-03TNPW2-2016-03
TNPW2-2016-03
 
Veeam v10 jak na to
Veeam v10 jak na toVeeam v10 jak na to
Veeam v10 jak na to
 

Vert.x

  • 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?)
  • 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)