SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
vert.x
                         Polyglot and Scalable Apps on the JVM


                              Álvaro Videla | VMware

Tuesday, October 9, 12
About Me
                     •   Developer Advocate for Cloud Foundry

                     •   Blog: http://videlalvaro.github.com/

                     •   Twitter: @old_sound




Tuesday, October 9, 12
About Me
                     •   Developer Advocate for Cloud Foundry

                     •   Blog: http://videlalvaro.github.com/

                     •   Twitter: @old_sound

                     •   I created gifsockets™




Tuesday, October 9, 12
About Me
                         Co-authored

                RabbitMQ in Action
               http://bit.ly/rabbitmq




Tuesday, October 9, 12
vert.x
Tuesday, October 9, 12
vert.x

                     • VMware sponsored OS project




Tuesday, October 9, 12
vert.x

                     • VMware sponsored OS project
                     • JVM Based




Tuesday, October 9, 12
vert.x

                     • VMware sponsored OS project
                     • JVM Based
                     • 1+ year



Tuesday, October 9, 12
vert.x

                     • VMware sponsored OS project
                     • JVM Based
                     • 1+ year
                     • By @timfox from HornetMQ fame


Tuesday, October 9, 12
vert.x

                          Framework to write
                                 polyglot,
                         highly concurrent apps.



Tuesday, October 9, 12
vert.x

                          Framework to write
                                polyglot,
                         highly concurrent apps.



Tuesday, October 9, 12
Javascript
             load('vertx.js')

             vertx.createHttpServer().requestHandler(function(req) {
                 var file = req.path === '/' ? 'index.html' : req.path;
                 req.response.sendFile('webroot/' + file);
             }).listen(8080)




Tuesday, October 9, 12
Javascript
             load('vertx.js')

             vertx.createHttpServer().requestHandler(function(req) {
                 var file = req.path === '/' ? 'index.html' : req.path;
                 req.response.sendFile('webroot/' + file);
             }).listen(8080)


                 $ vertx run server.js




Tuesday, October 9, 12
Javascript
             load('vertx.js')

             vertx.createHttpServer().requestHandler(function(req) {
                 var file = req.path === '/' ? 'index.html' : req.path;
                 req.response.sendFile('webroot/' + file);
             }).listen(8080)


                 $ vertx run server.js -instances 32




Tuesday, October 9, 12
Ruby
             require "vertx"

             Vertx::HttpServer.new.request_handler do |req|
                 file = req.uri == "/" ? "index.html" : req.uri
                 req.response.send_file "webroot/#{file}"
             end.listen(8080)



                 $ vertx run server.rb -instances 32




Tuesday, October 9, 12
Python
             import vertx

             server = vertx.create_http_server()

             @server.request_handler
             def request_handler(req):
                 file = "index.html" if req.uri == "/" else req.uri
                 req.response.send_file("webroot/%s"%file)
             server.listen(8080)


                $ vertx run server.py -instances 32




Tuesday, October 9, 12
Groovy

             vertx.createHttpServer().requestHandler { req ->
                 def file = req.uri == "/" ? "index.html" : req.uri
                 req.response.sendFile "webroot/$file"
             }.listen(8080)




                $ vertx run Server.groovy -instances 32




Tuesday, October 9, 12
Java
                import org.vertx.java.core.Handler;
                import org.vertx.java.core.http.HttpServerRequest;
                import org.vertx.java.deploy.Verticle;

                public class Server extends Verticle {
                    public void start() {
                        vertx.createHttpServer().requestHandler(new
                Handler<HttpServerRequest>() {
                            public void handle(HttpServerRequest req) {
                                String file = req.path.equals("/") ? "index.html" :
                req.path;
                                req.response.sendFile("webroot/" + file);
                            }
                        }).listen(8080);
                    }
                }


                 $ vertx run Server.java -instances 32



Tuesday, October 9, 12
vert.x
                          Framework to write
                               polyglot,
                         highly concurrent
                                apps.



Tuesday, October 9, 12
Core Concepts



Tuesday, October 9, 12
Core Concepts

                     • Verticle




Tuesday, October 9, 12
Core Concepts

                     • Verticle
                     • vert.x instances




Tuesday, October 9, 12
Core Concepts

                     • Verticle
                     • vert.x instances
                     • Event Bus



Tuesday, October 9, 12
Verticles run inside a
                             vert.x instance.
                         A single vert.x instance
                            runs inside its own
                              JVM instance.


Tuesday, October 9, 12
Tuesday, October 9, 12
vertx run server.js -instances 32




Tuesday, October 9, 12
Programming Model
                     • Event Based (similar to node.js)
                     • Event Handlers
                     • Small set of threads per vert.x instance
                     • Verticles are executed using the same
                         thread.
                     • Message Passing Communication

Tuesday, October 9, 12
vert.x core



Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers




Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers

                     •   HTTP/HTTPS Servers




Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers

                     •   HTTP/HTTPS Servers

                     •   Websockets and Sock.js




Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers

                     •   HTTP/HTTPS Servers

                     •   Websockets and Sock.js

                     •   Distributed Event Bus Access




Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers

                     •   HTTP/HTTPS Servers

                     •   Websockets and Sock.js

                     •   Distributed Event Bus Access

                     •   Shared Maps and Sets




Tuesday, October 9, 12
vert.x core
                     •   TCP/SSL Servers

                     •   HTTP/HTTPS Servers

                     •   Websockets and Sock.js

                     •   Distributed Event Bus Access

                     •   Shared Maps and Sets

                     •   Logging



Tuesday, October 9, 12
Event Bus



Tuesday, October 9, 12
Event Bus
                     •   Allows Verticles to talk to each other




Tuesday, October 9, 12
Event Bus
                     •   Allows Verticles to talk to each other

                     •   Works cross language




Tuesday, October 9, 12
Event Bus
                     •   Allows Verticles to talk to each other

                     •   Works cross language

                     •   Works across the cluster




Tuesday, October 9, 12
Event Bus
                     •   Allows Verticles to talk to each other

                     •   Works cross language

                     •   Works across the cluster

                     •   Spans from server to client side




Tuesday, October 9, 12
Event Bus - How
                     •   Register Handlers




Tuesday, October 9, 12
Event Bus - How
                     •   Register Handlers

                     •   Unregister Handlers




Tuesday, October 9, 12
Event Bus - How
                     •   Register Handlers

                     •   Unregister Handlers

                     •   Addresses




Tuesday, October 9, 12
Event Bus - How
                     •   Register Handlers

                     •   Unregister Handlers

                     •   Addresses

                     •   Messages (Transient)




Tuesday, October 9, 12
Register Handler

                         var eb = vertx.eventBus;

                         var myHandler = function(message)) {
                           log.info('I received a message ' + message);
                         }

                         eb.registerHandler('test.address', myHandler);




Tuesday, October 9, 12
Register Handler

                         var eb = vertx.eventBus;

                         var myHandler = function(message)) {
                           log.info('I received a message ' + message);
                         }

                         eb.registerHandler('test.address', myHandler);

                         eb.unregisterHandler('test.address', myHandler);




Tuesday, October 9, 12
Publish Subscribe

       eb.publish('test.address', 'hello world');




Tuesday, October 9, 12
Point to Point

       eb.send('test.address', 'hello world');




Tuesday, October 9, 12
RPC Server
                         var myHandler = function(message, replier) {
                           log.info('I received a message ' + message);

                             // Do some stuff

                             // Now reply to it

                             replier('This is a reply');
                         }

                         eb.registerHandler('test.address', myHandler);




Tuesday, October 9, 12
RPC Client

         eb.send('test.address', 'This is a message', function(reply) {
             log.info('I received a reply ' + reply);
         });




Tuesday, October 9, 12
Shared Data

                     •   Shared Maps




Tuesday, October 9, 12
Shared Data

                     •   Shared Maps

                     •   Shared Sets




Tuesday, October 9, 12
Shared Set Example
    load('vertx.js')

    var	
  conns	
  =	
  vertx.getSet('conns')

    var	
  server	
  =	
  vertx.createNetServer().connectHandler(function(socket)	
  {
    	
  	
  conns.add(socket.writeHandlerID)
    	
  	
  socket.dataHandler(function(data)	
  {
    	
  	
  	
  	
  var	
  aconns	
  =	
  conns.toArray();
    	
  	
  	
  	
  for	
  (var	
  i	
  =	
  0;	
  i	
  <	
  aconns.length;	
  i++)	
  {
    	
  	
  	
  	
  	
  	
  vertx.eventBus.send(aconns[i],	
  data)
    	
  	
  	
  	
  }
    	
  	
  });
    	
  	
  socket.closedHandler(function()	
  {	
  conns.remove(	
  socket.writeHandlerID)	
  });
    }).listen(1234)




Tuesday, October 9, 12
Benchmarks



Tuesday, October 9, 12
Benchmarks I




           http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/


Tuesday, October 9, 12
Benchmarks II




           http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/


Tuesday, October 9, 12
Internals



Tuesday, October 9, 12
Internals
                     • Netty for network IO
                     • JRuby for the Ruby Engine
                     • Groovy
                     • Mozilla Rhino for JS
                     • Jython for Python support
                     • Hazelcast for clustering
Tuesday, October 9, 12
http://vertx.io/

Tuesday, October 9, 12
Questions?



Tuesday, October 9, 12
Thanks!
                             http://twitter.com/old_sound
                            https://github.com/videlalvaro/
                         http://www.slideshare.net/old_sound



Tuesday, October 9, 12

Más contenido relacionado

La actualidad más candente

Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeApache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeSlim Baltagi
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Jérôme Petazzoni
 
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TShapeBlue
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootKashif Ali Siddiqui
 
19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQWoo Young Choi
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Jean-Paul Azar
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack ArchitectureMirantis
 
Re:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS IntegrationRe:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS Integrationaspyker
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency GotchasAlex Miller
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
 
Virtualization concept slideshare
Virtualization concept slideshareVirtualization concept slideshare
Virtualization concept slideshareYogesh Kumar
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes ArchitectureKnoldus Inc.
 
Using CloudStack With Clustered LVM
Using CloudStack With Clustered LVMUsing CloudStack With Clustered LVM
Using CloudStack With Clustered LVMMarcus L Sorensen
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요Jo Hoon
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Hitesh-Java
 

La actualidad más candente (20)

Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision TreeApache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
Apache Kafka vs RabbitMQ: Fit For Purpose / Decision Tree
 
Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?Docker and Go: why did we decide to write Docker in Go?
Docker and Go: why did we decide to write Docker in Go?
 
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&TCloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
CloudStack and GitOps at Enterprise Scale - Alex Dometrius, Rene Glover - AT&T
 
Understanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring BootUnderstanding MicroSERVICE Architecture with Java & Spring Boot
Understanding MicroSERVICE Architecture with Java & Spring Boot
 
19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ19 08-22 introduction to activeMQ
19 08-22 introduction to activeMQ
 
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)Kafka Tutorial - Introduction to Apache Kafka (Part 1)
Kafka Tutorial - Introduction to Apache Kafka (Part 1)
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack Architecture
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Re:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS IntegrationRe:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS Integration
 
Java Concurrency Gotchas
Java Concurrency GotchasJava Concurrency Gotchas
Java Concurrency Gotchas
 
Microservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring CloudMicroservices with Java, Spring Boot and Spring Cloud
Microservices with Java, Spring Boot and Spring Cloud
 
Virtualization concept slideshare
Virtualization concept slideshareVirtualization concept slideshare
Virtualization concept slideshare
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Kubernetes Architecture
 Kubernetes Architecture Kubernetes Architecture
Kubernetes Architecture
 
Using CloudStack With Clustered LVM
Using CloudStack With Clustered LVMUsing CloudStack With Clustered LVM
Using CloudStack With Clustered LVM
 
CloudStack Networking
CloudStack NetworkingCloudStack Networking
CloudStack Networking
 
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
[네전따] 네트워크 엔지니어에게 쿠버네티스는 어떤 의미일까요
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Jenkins
JenkinsJenkins
Jenkins
 
Service mesh
Service meshService mesh
Service mesh
 

Similar a Vertx

Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?glynnormington
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
Building A Scalable Open Source Storage Solution
Building A Scalable Open Source Storage SolutionBuilding A Scalable Open Source Storage Solution
Building A Scalable Open Source Storage SolutionPhil Cryer
 
How we scale DroneCi on demand
How we scale DroneCi on demandHow we scale DroneCi on demand
How we scale DroneCi on demandPatrick Jahns
 
Realtime Streaming using Autobahn Websockets
Realtime Streaming using Autobahn WebsocketsRealtime Streaming using Autobahn Websockets
Realtime Streaming using Autobahn WebsocketsTom Sheffler
 
Vert.x based microservices with vxms
Vert.x based microservices with vxmsVert.x based microservices with vxms
Vert.x based microservices with vxmsAndy Moncsek
 
Chris Ward - Understanding databases for distributed docker applications - No...
Chris Ward - Understanding databases for distributed docker applications - No...Chris Ward - Understanding databases for distributed docker applications - No...
Chris Ward - Understanding databases for distributed docker applications - No...NoSQLmatters
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?Ovidiu Dimulescu
 
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps dayAprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps dayPlain Concepts
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)Felix Geisendörfer
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Zabbix
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...NETWAYS
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationStuart (Pid) Williams
 
Hammock, a Good Place to Rest
Hammock, a Good Place to RestHammock, a Good Place to Rest
Hammock, a Good Place to RestStratoscale
 
Declarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformDeclarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformRadek Simko
 
Docker 1.9 Feature Overview
Docker 1.9 Feature OverviewDocker 1.9 Feature Overview
Docker 1.9 Feature OverviewSreenivas Makam
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemVan Phuc
 
Taking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetTaking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetPuppet
 

Similar a Vertx (20)

Is OSGi modularity always worth it?
Is OSGi modularity always worth it?Is OSGi modularity always worth it?
Is OSGi modularity always worth it?
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Building A Scalable Open Source Storage Solution
Building A Scalable Open Source Storage SolutionBuilding A Scalable Open Source Storage Solution
Building A Scalable Open Source Storage Solution
 
How we scale DroneCi on demand
How we scale DroneCi on demandHow we scale DroneCi on demand
How we scale DroneCi on demand
 
Realtime Streaming using Autobahn Websockets
Realtime Streaming using Autobahn WebsocketsRealtime Streaming using Autobahn Websockets
Realtime Streaming using Autobahn Websockets
 
Vert.x based microservices with vxms
Vert.x based microservices with vxmsVert.x based microservices with vxms
Vert.x based microservices with vxms
 
Chris Ward - Understanding databases for distributed docker applications - No...
Chris Ward - Understanding databases for distributed docker applications - No...Chris Ward - Understanding databases for distributed docker applications - No...
Chris Ward - Understanding databases for distributed docker applications - No...
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
 
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps dayAprovisionamiento multi-proveedor con Terraform  - Plain Concepts DevOps day
Aprovisionamiento multi-proveedor con Terraform - Plain Concepts DevOps day
 
Node.js - A practical introduction (v2)
Node.js  - A practical introduction (v2)Node.js  - A practical introduction (v2)
Node.js - A practical introduction (v2)
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
 
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
OSDC 2015: Mitchell Hashimoto | Automating the Modern Datacenter, Development...
 
Groovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentationGroovy & Grails eXchange 2012 vert.x presentation
Groovy & Grails eXchange 2012 vert.x presentation
 
Hammock, a Good Place to Rest
Hammock, a Good Place to RestHammock, a Good Place to Rest
Hammock, a Good Place to Rest
 
TIAD : Automating the modern datacenter
TIAD : Automating the modern datacenterTIAD : Automating the modern datacenter
TIAD : Automating the modern datacenter
 
XQuery Design Patterns
XQuery Design PatternsXQuery Design Patterns
XQuery Design Patterns
 
Declarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with TerraformDeclarative & workflow based infrastructure with Terraform
Declarative & workflow based infrastructure with Terraform
 
Docker 1.9 Feature Overview
Docker 1.9 Feature OverviewDocker 1.9 Feature Overview
Docker 1.9 Feature Overview
 
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker EcosystemDocker-Hanoi @DKT , Presentation about Docker Ecosystem
Docker-Hanoi @DKT , Presentation about Docker Ecosystem
 
Taking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and PuppetTaking Control of Chaos with Docker and Puppet
Taking Control of Chaos with Docker and Puppet
 

Más de Alvaro Videla

Improvements in RabbitMQ
Improvements in RabbitMQImprovements in RabbitMQ
Improvements in RabbitMQAlvaro Videla
 
Data Migration at Scale with RabbitMQ and Spring Integration
Data Migration at Scale with RabbitMQ and Spring IntegrationData Migration at Scale with RabbitMQ and Spring Integration
Data Migration at Scale with RabbitMQ and Spring IntegrationAlvaro Videla
 
RabbitMQ Data Ingestion at Craft Conf
RabbitMQ Data Ingestion at Craft ConfRabbitMQ Data Ingestion at Craft Conf
RabbitMQ Data Ingestion at Craft ConfAlvaro Videla
 
Scaling applications with RabbitMQ at SunshinePHP
Scaling applications with RabbitMQ   at SunshinePHPScaling applications with RabbitMQ   at SunshinePHP
Scaling applications with RabbitMQ at SunshinePHPAlvaro Videla
 
Unit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveUnit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveAlvaro Videla
 
RabbitMQ Data Ingestion
RabbitMQ Data IngestionRabbitMQ Data Ingestion
RabbitMQ Data IngestionAlvaro Videla
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureAlvaro Videla
 
Introduction to RabbitMQ | Meetup at Pivotal Labs
Introduction to RabbitMQ | Meetup at Pivotal LabsIntroduction to RabbitMQ | Meetup at Pivotal Labs
Introduction to RabbitMQ | Meetup at Pivotal LabsAlvaro Videla
 
Writing testable code
Writing testable codeWriting testable code
Writing testable codeAlvaro Videla
 
Rabbitmq Boot System
Rabbitmq Boot SystemRabbitmq Boot System
Rabbitmq Boot SystemAlvaro Videla
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry BootcampAlvaro Videla
 
Cloud Messaging With Cloud Foundry
Cloud Messaging With Cloud FoundryCloud Messaging With Cloud Foundry
Cloud Messaging With Cloud FoundryAlvaro Videla
 
Código Fácil De Testear
Código Fácil De TestearCódigo Fácil De Testear
Código Fácil De TestearAlvaro Videla
 
Desacoplando aplicaciones
Desacoplando aplicacionesDesacoplando aplicaciones
Desacoplando aplicacionesAlvaro Videla
 
Theres a rabbit on my symfony
Theres a rabbit on my symfonyTheres a rabbit on my symfony
Theres a rabbit on my symfonyAlvaro Videla
 
Scaling Web Apps With RabbitMQ - Erlang Factory Lite
Scaling Web Apps With RabbitMQ - Erlang Factory LiteScaling Web Apps With RabbitMQ - Erlang Factory Lite
Scaling Web Apps With RabbitMQ - Erlang Factory LiteAlvaro Videla
 
Integrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendconIntegrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendconAlvaro Videla
 

Más de Alvaro Videla (20)

Improvements in RabbitMQ
Improvements in RabbitMQImprovements in RabbitMQ
Improvements in RabbitMQ
 
Data Migration at Scale with RabbitMQ and Spring Integration
Data Migration at Scale with RabbitMQ and Spring IntegrationData Migration at Scale with RabbitMQ and Spring Integration
Data Migration at Scale with RabbitMQ and Spring Integration
 
RabbitMQ Data Ingestion at Craft Conf
RabbitMQ Data Ingestion at Craft ConfRabbitMQ Data Ingestion at Craft Conf
RabbitMQ Data Ingestion at Craft Conf
 
Scaling applications with RabbitMQ at SunshinePHP
Scaling applications with RabbitMQ   at SunshinePHPScaling applications with RabbitMQ   at SunshinePHP
Scaling applications with RabbitMQ at SunshinePHP
 
Unit Test + Functional Programming = Love
Unit Test + Functional Programming = LoveUnit Test + Functional Programming = Love
Unit Test + Functional Programming = Love
 
RabbitMQ Data Ingestion
RabbitMQ Data IngestionRabbitMQ Data Ingestion
RabbitMQ Data Ingestion
 
Dissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal ArchitectureDissecting the rabbit: RabbitMQ Internal Architecture
Dissecting the rabbit: RabbitMQ Internal Architecture
 
Introduction to RabbitMQ | Meetup at Pivotal Labs
Introduction to RabbitMQ | Meetup at Pivotal LabsIntroduction to RabbitMQ | Meetup at Pivotal Labs
Introduction to RabbitMQ | Meetup at Pivotal Labs
 
Writing testable code
Writing testable codeWriting testable code
Writing testable code
 
RabbitMQ Hands On
RabbitMQ Hands OnRabbitMQ Hands On
RabbitMQ Hands On
 
Rabbitmq Boot System
Rabbitmq Boot SystemRabbitmq Boot System
Rabbitmq Boot System
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
 
Cloud Messaging With Cloud Foundry
Cloud Messaging With Cloud FoundryCloud Messaging With Cloud Foundry
Cloud Messaging With Cloud Foundry
 
Taming the rabbit
Taming the rabbitTaming the rabbit
Taming the rabbit
 
Código Fácil De Testear
Código Fácil De TestearCódigo Fácil De Testear
Código Fácil De Testear
 
Desacoplando aplicaciones
Desacoplando aplicacionesDesacoplando aplicaciones
Desacoplando aplicaciones
 
Messaging patterns
Messaging patternsMessaging patterns
Messaging patterns
 
Theres a rabbit on my symfony
Theres a rabbit on my symfonyTheres a rabbit on my symfony
Theres a rabbit on my symfony
 
Scaling Web Apps With RabbitMQ - Erlang Factory Lite
Scaling Web Apps With RabbitMQ - Erlang Factory LiteScaling Web Apps With RabbitMQ - Erlang Factory Lite
Scaling Web Apps With RabbitMQ - Erlang Factory Lite
 
Integrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendconIntegrating php withrabbitmq_zendcon
Integrating php withrabbitmq_zendcon
 

Último

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 

Último (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 

Vertx

  • 1. vert.x Polyglot and Scalable Apps on the JVM Álvaro Videla | VMware Tuesday, October 9, 12
  • 2. About Me • Developer Advocate for Cloud Foundry • Blog: http://videlalvaro.github.com/ • Twitter: @old_sound Tuesday, October 9, 12
  • 3. About Me • Developer Advocate for Cloud Foundry • Blog: http://videlalvaro.github.com/ • Twitter: @old_sound • I created gifsockets™ Tuesday, October 9, 12
  • 4. About Me Co-authored RabbitMQ in Action http://bit.ly/rabbitmq Tuesday, October 9, 12
  • 6. vert.x • VMware sponsored OS project Tuesday, October 9, 12
  • 7. vert.x • VMware sponsored OS project • JVM Based Tuesday, October 9, 12
  • 8. vert.x • VMware sponsored OS project • JVM Based • 1+ year Tuesday, October 9, 12
  • 9. vert.x • VMware sponsored OS project • JVM Based • 1+ year • By @timfox from HornetMQ fame Tuesday, October 9, 12
  • 10. vert.x Framework to write polyglot, highly concurrent apps. Tuesday, October 9, 12
  • 11. vert.x Framework to write polyglot, highly concurrent apps. Tuesday, October 9, 12
  • 12. Javascript load('vertx.js') vertx.createHttpServer().requestHandler(function(req) { var file = req.path === '/' ? 'index.html' : req.path; req.response.sendFile('webroot/' + file); }).listen(8080) Tuesday, October 9, 12
  • 13. Javascript load('vertx.js') vertx.createHttpServer().requestHandler(function(req) { var file = req.path === '/' ? 'index.html' : req.path; req.response.sendFile('webroot/' + file); }).listen(8080) $ vertx run server.js Tuesday, October 9, 12
  • 14. Javascript load('vertx.js') vertx.createHttpServer().requestHandler(function(req) { var file = req.path === '/' ? 'index.html' : req.path; req.response.sendFile('webroot/' + file); }).listen(8080) $ vertx run server.js -instances 32 Tuesday, October 9, 12
  • 15. Ruby require "vertx" Vertx::HttpServer.new.request_handler do |req| file = req.uri == "/" ? "index.html" : req.uri req.response.send_file "webroot/#{file}" end.listen(8080) $ vertx run server.rb -instances 32 Tuesday, October 9, 12
  • 16. Python import vertx server = vertx.create_http_server() @server.request_handler def request_handler(req): file = "index.html" if req.uri == "/" else req.uri req.response.send_file("webroot/%s"%file) server.listen(8080) $ vertx run server.py -instances 32 Tuesday, October 9, 12
  • 17. Groovy vertx.createHttpServer().requestHandler { req -> def file = req.uri == "/" ? "index.html" : req.uri req.response.sendFile "webroot/$file" }.listen(8080) $ vertx run Server.groovy -instances 32 Tuesday, October 9, 12
  • 18. Java import org.vertx.java.core.Handler; import org.vertx.java.core.http.HttpServerRequest; import org.vertx.java.deploy.Verticle; public class Server extends Verticle { public void start() { vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() { public void handle(HttpServerRequest req) { String file = req.path.equals("/") ? "index.html" : req.path; req.response.sendFile("webroot/" + file); } }).listen(8080); } } $ vertx run Server.java -instances 32 Tuesday, October 9, 12
  • 19. vert.x Framework to write polyglot, highly concurrent apps. Tuesday, October 9, 12
  • 21. Core Concepts • Verticle Tuesday, October 9, 12
  • 22. Core Concepts • Verticle • vert.x instances Tuesday, October 9, 12
  • 23. Core Concepts • Verticle • vert.x instances • Event Bus Tuesday, October 9, 12
  • 24. Verticles run inside a vert.x instance. A single vert.x instance runs inside its own JVM instance. Tuesday, October 9, 12
  • 26. vertx run server.js -instances 32 Tuesday, October 9, 12
  • 27. Programming Model • Event Based (similar to node.js) • Event Handlers • Small set of threads per vert.x instance • Verticles are executed using the same thread. • Message Passing Communication Tuesday, October 9, 12
  • 29. vert.x core • TCP/SSL Servers Tuesday, October 9, 12
  • 30. vert.x core • TCP/SSL Servers • HTTP/HTTPS Servers Tuesday, October 9, 12
  • 31. vert.x core • TCP/SSL Servers • HTTP/HTTPS Servers • Websockets and Sock.js Tuesday, October 9, 12
  • 32. vert.x core • TCP/SSL Servers • HTTP/HTTPS Servers • Websockets and Sock.js • Distributed Event Bus Access Tuesday, October 9, 12
  • 33. vert.x core • TCP/SSL Servers • HTTP/HTTPS Servers • Websockets and Sock.js • Distributed Event Bus Access • Shared Maps and Sets Tuesday, October 9, 12
  • 34. vert.x core • TCP/SSL Servers • HTTP/HTTPS Servers • Websockets and Sock.js • Distributed Event Bus Access • Shared Maps and Sets • Logging Tuesday, October 9, 12
  • 36. Event Bus • Allows Verticles to talk to each other Tuesday, October 9, 12
  • 37. Event Bus • Allows Verticles to talk to each other • Works cross language Tuesday, October 9, 12
  • 38. Event Bus • Allows Verticles to talk to each other • Works cross language • Works across the cluster Tuesday, October 9, 12
  • 39. Event Bus • Allows Verticles to talk to each other • Works cross language • Works across the cluster • Spans from server to client side Tuesday, October 9, 12
  • 40. Event Bus - How • Register Handlers Tuesday, October 9, 12
  • 41. Event Bus - How • Register Handlers • Unregister Handlers Tuesday, October 9, 12
  • 42. Event Bus - How • Register Handlers • Unregister Handlers • Addresses Tuesday, October 9, 12
  • 43. Event Bus - How • Register Handlers • Unregister Handlers • Addresses • Messages (Transient) Tuesday, October 9, 12
  • 44. Register Handler var eb = vertx.eventBus; var myHandler = function(message)) { log.info('I received a message ' + message); } eb.registerHandler('test.address', myHandler); Tuesday, October 9, 12
  • 45. Register Handler var eb = vertx.eventBus; var myHandler = function(message)) { log.info('I received a message ' + message); } eb.registerHandler('test.address', myHandler); eb.unregisterHandler('test.address', myHandler); Tuesday, October 9, 12
  • 46. Publish Subscribe eb.publish('test.address', 'hello world'); Tuesday, October 9, 12
  • 47. Point to Point eb.send('test.address', 'hello world'); Tuesday, October 9, 12
  • 48. RPC Server var myHandler = function(message, replier) { log.info('I received a message ' + message); // Do some stuff // Now reply to it replier('This is a reply'); } eb.registerHandler('test.address', myHandler); Tuesday, October 9, 12
  • 49. RPC Client eb.send('test.address', 'This is a message', function(reply) { log.info('I received a reply ' + reply); }); Tuesday, October 9, 12
  • 50. Shared Data • Shared Maps Tuesday, October 9, 12
  • 51. Shared Data • Shared Maps • Shared Sets Tuesday, October 9, 12
  • 52. Shared Set Example load('vertx.js') var  conns  =  vertx.getSet('conns') var  server  =  vertx.createNetServer().connectHandler(function(socket)  {    conns.add(socket.writeHandlerID)    socket.dataHandler(function(data)  {        var  aconns  =  conns.toArray();        for  (var  i  =  0;  i  <  aconns.length;  i++)  {            vertx.eventBus.send(aconns[i],  data)        }    });    socket.closedHandler(function()  {  conns.remove(  socket.writeHandlerID)  }); }).listen(1234) Tuesday, October 9, 12
  • 54. Benchmarks I http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/ Tuesday, October 9, 12
  • 55. Benchmarks II http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/ Tuesday, October 9, 12
  • 57. Internals • Netty for network IO • JRuby for the Ruby Engine • Groovy • Mozilla Rhino for JS • Jython for Python support • Hazelcast for clustering Tuesday, October 9, 12
  • 60. Thanks! http://twitter.com/old_sound https://github.com/videlalvaro/ http://www.slideshare.net/old_sound Tuesday, October 9, 12