art Williams)
r Bio
lting Architect at SpringSource / Pivotal
Slide 4
Slide 4 text
project
Lead
ox
ters
er
Slide 5
Slide 5 text
s vert.x?
al purpose application platform
cially similar to Node.js – but not a clone!
ronous APIs
t – mix and match Java, JavaScript/CoffeeScript, Ruby, Gro
(others to follow).
but not Simplistic
the new breed of application platforms
Slide 6
Slide 6 text
eatures
eactor
Container
clients and servers
TPS clients and servers – including WebSockets
m
nchronous
Slide 7
Slide 7 text
imple HTTP server
files by matching request path
ample for each language
Slide 8
Slide 8 text
cript – Mozilla Rhino
tx.js’)
reateHttpServer().requestHandler(function(req) {
e = req.path === '/' ? 'index.html' : req.path;
sponse.sendFile('webroot/' + file);
8080)
Slide 9
Slide 9 text
n – www.jython.org
ertx
vertx.create_http_server()
.request_handler
est_handler(req):
"index.html" if req.uri == "/" else req.uri
sponse.send_file("webroot/%s"%file)
ten(8080)
anguages?
nvokeDynamic
ative to Rhino for JavaScript
js Compatibility for vert.x
?
guage support do you want see?
Slide 15
Slide 15 text
d Pools
ocking Event Loops
Loop
tors
ng
er Pool
Slide 16
Slide 16 text
ding Model
implements the Multi-Reactor Pattern
nt loop is an OS thread
s events for many handlers
has multiple event loops. Typically one per core.
block the event loop!
Slide 17
Slide 17 text
Threading Model
rce everything to run on an event loop
verticles can block
nicate with other verticles by message passing.
us to leverage the huge ecosystem of blocking Java libs
Slide 18
Slide 18 text
onents
& Client
bSocket
JS
Bus
to-point, publish-subscribe
parent clustering
Slide 19
Slide 19 text
Bus
ous system of Vert.x
communicate using the event bus.
mple API.
point. Publish/Subscribe. Request/Response.
ple strings, numbers or other primitive types.
essages are preferred for structured data.
ent clustering
Bus – Extended to Browser
us extends to client side JavaScript too
e same API on the client
ul distributed event space spanning both client and se
r modern “real-time” web applications
Slide 22
Slide 22 text
es
cation Manager
pload
rsistor
ersistor
Manager
■ Web Server
■ Work Queue
■ AMQP
■ More…
osition
ode using code
are unit of composed code
modules using a verticle
de multiple verticles inside a module
er: verticles communicate using the Event Bus.
Slide 25
Slide 25 text
ecture
on of concerns
if required
I/O verticles
Event
Slide 26
Slide 26 text
ple
Slide 27
Slide 27 text
st Data
me Analytics Dashboards & APIs
ocket
t Integration
nguage independent format like JSON, XML for data
nge messages using event bus
Slide 28
Slide 28 text
ata – RabbitMQ
message broker
queuing, routing messages and WAN clustering
Slide 29
Slide 29 text
st Data – Redis
ructure Server”
e store
messaging
aching verticle data, broadcasting to verticles
Slide 30
Slide 30 text
st Data – GemFire
e Grid / Distributed Cache
ble Key-Value store
arge partitioned caches, high performance compute,
a to vert.x using CacheListeners, subscriptions, Asyn
Slide 31
Slide 31 text
ata – Hadoop
course!
ries via JDBC worker verticle
pattern via event bus
d-hoc queries on large datasets
Slide 32
Slide 32 text
ata – MQTT
T is a machine-to-machine (M2M) / "Internet of Thing
ctivity protocol.
mely lightweight publish/subscribe messaging transpor
eful for connections with remote locations where a
int is required and/or network bandwidth is at a pre
e Paho
oon!
Slide 33
Slide 33 text
ata – Intravert (@zznate - apigee)
ors, filters and procedures allow you perform arbitrary pro
mations on the server side before the results are returned
procedures and join like logic in a single RPC request elim
rips
e transport and JSON API that runs over HTTP allows clie
rom JSON, JSON compressed by smile, & even big fat sex
EST interface (ever thought about what would a Cassandr
PI look like?)
with simple familiar objects like String or Integer instead of
Slide 34
Slide 34 text
Features
ClassLoader
4.0
ages as modules
e Module repositories, including Maven
ement
Slide 35
Slide 35 text
Developer experience
e template project
archetype and plugins
setup IDE debugging
setup IDE testing
Tools project
Slide 36
Slide 36 text
gement
ment Agent
hes metrics on Event Bus in JSON format
ment GUI
mo
Slide 37
Slide 37 text
Deployment
vides a JSON RPC API:
er.js
RpcServer.groovy
ration.groovy – worker
ring Integration message flow to RabbitMQ
Slide 38
Slide 38 text
Deployment
/O verticles
Slide 39
Slide 39 text
ary
ps as set of loosely coupled components that live any
– use the language(s) you want
oncurrency – wave goodbye to most race conditions
existing Java library ecosystem
ystem – empower the community
e.js apps too
ve Vert.x is the platform for the new generation of p
nd enterprise applications