Vert.x - JDD 2013

27
vert.x Bartek Zdanowski TouK

description

Prezentacja stanowiąca wstęp do platformy/frameworka vert.x (http://vertx.io) Prezentacja demonstrowana na JDD 2013 w Krakowie

Transcript of Vert.x - JDD 2013

Page 1: Vert.x - JDD 2013

vert.x

Bartek ZdanowskiTouK

Page 2: Vert.x - JDD 2013

vert.x

Bartek Zdanowski●developer @ TouK●co-organizator Confitura●członek Warszawa JUG●tata i mąż :)

@BartekZdanowski

Page 3: Vert.x - JDD 2013

czym jest vertx?

vert.x

Page 4: Vert.x - JDD 2013

vert.x

●w czym problem? rośnie liczba użytkowników mobilnych*

2,1 mld w 2012 7 mld w 2018

rośnie liczba urządzeń inteligentnych Internet of things - 30 mld do 2020!** IPv6 czeka na nich!

* http://mobithinking.com/mobile-marketing-tools/latest-mobile-stats/b

** http://en.wikipedia.org/wiki/Internet_of_Things

Page 5: Vert.x - JDD 2013

vert.x

●w czym problem? Tomcat - 200 wątków = 200 połączeń reszta połączeń czeka…

Page 6: Vert.x - JDD 2013

vert.x

●w czym problem?●1 wątek per zadanie

jeśli wątek czeka na wynik pracy, stoi cała kolejka zadań tradycyjne programowanie synchroniczne oczekiwanie na wynik (pętla!)

Page 7: Vert.x - JDD 2013

vert.x

●jak można inaczej? 1 zadanie = seria zdarzeń luźno powiązanych asynchronicznie Zostać poinformowanym o danych do przetworzenia oddać kontrolę do wątku, zamiast czekać na wynik

operacji

Page 8: Vert.x - JDD 2013

vert.x

●jak można inaczej?● trzeba czekać! ale może to robić 1 wątek!

zdarzenie

wątek

Page 9: Vert.x - JDD 2013

vert.x

●jak można inaczej?● trzeba czekać! ale może to robić 1 wątek!

zdarzenie

reactor

wątek

Page 10: Vert.x - JDD 2013

vert.x

●jak to robi vert.x? multi-reactor pattern pulą wątków równa ilości core’ów

Page 11: Vert.x - JDD 2013

vert.x

●jak to robi vert.x? od początku jest asynchroniczny sterowany zdarzeniowo rozproszony skalowalny bezpieczny wątkowo używa modelu aktora

Page 12: Vert.x - JDD 2013

vert.x

• demo

Page 13: Vert.x - JDD 2013

vert.x

●bezpieczna wielowątkowość?

class MyService {public synchronized Result doSomething(Data data) {

//do some critical stuff}}

Page 14: Vert.x - JDD 2013

vert.x

●bezpieczna wielowątkowość?

class MyService {public synchronized Result doSomething(Data data) {

//do some critical stuff}}

• 1 wątek!

Page 15: Vert.x - JDD 2013

vert.x

●bezpieczna wielowątkowość! dany verticle uruchmiony zawsze w tym samym wątku oddzielne classloadery event bus shared data: maps, sets

Page 16: Vert.x - JDD 2013

vert.x

Publisher

EventBus

Subscriber1 Subscriber2

Publisher - subcriberpublish() //broadcast

Page 17: Vert.x - JDD 2013

vert.x

Publisher

EventBus

Subscriber1 Subscriber2

Publisher - subcribersend() //point-to-point

Page 18: Vert.x - JDD 2013

vert.x

●EventBus publish - wszyscy send - jeden, round robin kolejkowanie brak potwierdzenia wiadomości tylko w pamięci - ulotne!

Page 19: Vert.x - JDD 2013

vert.x

●EventBus distributed - cluster sięga klienta przez SockJS

Page 20: Vert.x - JDD 2013

vert.x

Publisher

EventBus

Subscriber1 Subscriber2cluster!

Page 21: Vert.x - JDD 2013

vert.x

●Jak vert.x się skaluje wiele instancji jednego verticle’a cluster (automagicznie!) eventbus rozpina się pośród node’ów clustra wykorzystuje wszystkie core’y

Page 22: Vert.x - JDD 2013

vert.x

●Inne właściwości Polyglot

Java, JavaScript, CoffeeScript, Ruby, Python, Groovy + Scala, Clojure i...PHP

Moduły + publiczne repo Osadzanie vert.x w aplikacji Server Http + Sockety Filesystem API

Page 23: Vert.x - JDD 2013

vert.x

●Konkurencja?●node.js! really?!

http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/

Page 24: Vert.x - JDD 2013

vert.x

●Konkurencja?●node.js! really?!

http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/

Page 25: Vert.x - JDD 2013

vert.x

●Podsumowanie wysoce skalowalny bezpieczny i wielowątkowy rozproszony EventBus wielojęzyczny (polyglot) gotowy na 2020 - 30 mld urządzeń ;)

Page 26: Vert.x - JDD 2013

Demo

vert.x

Page 27: Vert.x - JDD 2013

Dziękuję!

vert.x