SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
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

Mais conteúdo relacionado

Semelhante a Vert.x

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
mdevtalk
 
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
Premek Brada
 

Semelhante a 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)