SlideShare a Scribd company logo
Vert.x:
                   This ain’t your Dad’s Node!




                                           Matt Stine
   Tim Fox
                   Enterprise Java/Cloud Consultant
Father of Vert.x
                               matt.stine@gmail.com
                                http://mattstine.com
                                     Twitter: @mstine
The

C10K
 Problem
SERVER
 PUSH
Ryan Dahl
Father of Node.js




  How?!?!
2008:

Thread Per Request/Response
http://www.xtranormal.com/watch/6995033/mongo-db-is-web-scale
Non-blocking UNIX sockets
But Node
has some
shortcomings...

 1. JavaScript!

 2. Vertical Scaling

 3. Interprocess
 Communication

 4. Event Loop
http://vertx.io
Problem #1:

                       JavaScript


   Brendan Eich
Father of JavaScript
WAT
https://www.destroyallsoftware.com/talks/wat
Solution #1:

                                   Polyglot
                                 Programming
           Neal Ford
Father of Polyglot Programming


    http://memeagora.blogspot.com/2006/12/polyglot-programming.html
Hello World
in every Vert.x language!
Java
Ruby
Python
JavaScript
FUTURE



Theoretically, any JVM language or language that compiles
to a supported language (e.g. ClojureScript ➔ JavaScript)
Problem #2:

    Vertical
    Scaling

Lars Bak
Father of V8
http://nodejs.org/about/
Node: Up and Running
Example 3-11: Using cluster to distribute work
Solution #2:

                 The
                 JVM
James Gosling
Father of Java
The Verticle


               - Unit of Deployment
Verticle

               - Script/Java Class
Vert.x Instance
  How it works it works it works it works
          How      How      How

                             Event loop Event loop Event loop Event loop
Event Loops
    App registers App registers App registers App registers trigger Events trigger Events trigger Events trigg
                                                     Events
      handlers      handlers      handlers      handlershandlers      handlers       handlers       handlers



  • Handlers executed synchronously executed synchronously
              • Handlers executed synchronously executed synchronously
                          • Handlers • Handlers
    – on a single threada single threada single threada single thread
                    – on           – on           – on
  • Use handlersUse handlersUse handlersUse handlers to pass messages
                 • to pass messages messages messages
                                • to pass • to pass
  • Inter/intra application comms
                 • Inter/intra application comms
                                • Inter/intra application comms
                                               • Inter/intra application comms
    – EventBus with EventBus with EventBus with EventBus with messages
                  – messages – messages – messages
    – Safe shared data structuresdata structuresdata structuresdata structures
                  – Safe shared – Safe shared – Safe shared
                             Verticle                                   9         9             9




Runtime.availableProcessors() == 4
Vert.x Instance
              How it works it works it works it works
                      How      How      How

                                         Event loop Event loop Event loop Event loop
         Event Loops
                App registers App registers App registers App registers trigger Events trigger Events trigger Events trigg
                                                                 Events
                  handlers      handlers      handlers      handlershandlers      handlers       handlers       handlers



              • Handlers executed synchronously executed synchronously
                          • Handlers executed synchronously executed synchronously
                                      • Handlers • Handlers
                – on a single threada single threada single threada single thread
                                – on           – on           – on
              • Use handlersUse handlersUse handlersUse handlers to pass messages
                             • to pass messages messages messages
                                            • to pass • to pass
 vertx run    • Inter/intra application comms
                             • Inter/intra application comms
                                            • Inter/intra application comms
                                                           • Inter/intra application comms
 HelloWorld with EventBus with EventBus with EventBus with messages
       – EventBus – messages – messages – messages
       – Safe shared data structuresdata structuresdata structuresdata structures
                     – Safe shared – Safe shared – Safe shared
-instances 4                    Verticle Verticle Verticle Verticle                 9         9             9




       Runtime.availableProcessors() == 4
Concurrency
• Verticle instance assigned thread/event loop.
• Verticle instance ALWAYS executes on
  assigned thread.

• Verticles have isolated classloaders and
  cannot share global state (static members,
  global variables, etc.)

• Can write all code assuming single
  threading.
Tony Hoare
        Father of CSP
        (http://dl.acm.org/citation.cfm?
        doid=359576.359585)




              Problem #3:

  Interprocess
Communication
Node.js Communication Options
• TCP/UDP/UNIX Sockets
• Redis Pub/Sub (http://redis.io/)
• ZeroMQ (http://www.zeromq.org/)
• Process Signaling/Cluster Module
• Eventing Frameworks: Hook.io (dead), JS-
  Signals, Bean, etc.

• Memcached
• Etc...
Solution #3.1:

                       The
                      Event
                       Bus
    Alan Kay
Father of Smalltalk
How it works it works it works it works
        How      How      How

                           Event loop Event loop Event loop Event loop

  App registers App registers App registers App registers trigger Events trigger Events trigger Events trigger
                                                   Events
    handlers      handlers      handlers      handlershandlers      handlers       handlers       handlers



• Handlers executed synchronously executed synchronously
            • Handlers executed synchronously executed synchronously
                        • Handlers • Handlers
  – on a single threada single threada single threada single thread
                  – on           – on           – on
• Use handlersUse handlersUse handlersUse handlers to pass messages
               • to pass messages messages messages
                              • to pass • to pass
• Inter/intra application comms
               • Inter/intra application comms
                              • Inter/intra application comms
                                             • Inter/intra application comms
  – EventBus with EventBus with EventBus with EventBus with messages
                – messages – messages – messages
  – Safe shared data structuresdata structuresdata structuresdata structures
                – Safe shared – Safe shared – Safe shared
                            Verticle       Verticle Verticle Verticle 9         9             9              9




                                           Event Bus
Addressing


• Simply a String
• Dot-style namespacing recommended
• e.g. “messages.inbound.A”
Handler Registration
                     Handler X




messages.inbound.A   Handler Y




                     Handler Z
Handler Registration
Pub/Sub
                              Handler X




Sender   messages.inbound.A   Handler Y




                              Handler Z
Pub/Sub
P2P
                              Handler X




Sender   messages.inbound.A   Handler Y




                              Handler Z
P2P
Sender:




Receiver:
Message Types

• String
• Primitives (int, long, short, float, double, ...)
• Boxed Primitives
• boolean/Boolean
• org.vertx.java.core.json.JsonObject
• org.vertx.java.core.buffer.Buffer
Distributed Vert.x
 orks it works it works it works
 How       How     How                                             How it works it works it works it works
                                                                           How       How     How                                                 How it works it works it works it works
                                                                                                                                                          How     How       How

               Event loop Event loop Event loop Event loop                                   Event loop Event loop Event loop Event loop                                   Event loop Event loop Event loop Event loop

rs App registers App registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger
                                       Events                    App registers App registers App                    Events                   App registers App registers App                    Events
     handlers      handlers      handlershandlers      handlers handlers
                                                                      handlers handlers
                                                                                     handlers handlers        handlershandlers      handlers handlers
                                                                                                                                                   handlers handlers
                                                                                                                                                                  handlers handlers        handlershandlers      handlers       handlers



executed synchronously executed synchronously
 • Handlers executed synchronously executed synchronously
             • Handlers • Handlers                  • Handlers executed synchronously executed synchronously
                                                                • Handlers executed synchronously executed synchronously
                                                                            • Handlers • Handlers                  • Handlers executed synchronously executed synchronously
                                                                                                                               • Handlers executed synchronously executed synchronously
                                                                                                                                           • Handlers • Handlers
le threada single threada single threada single thread
     – on           – on           – on                             – on a single threada single threada single threada single thread
                                                                                    – on           – on           – on                            – on a single threada single threada single threada single thread
                                                                                                                                                                  – on           – on           – on
ersUsepass messages messages messages messages handlersUsepass messages messages messages messages handlersUse handlersUsepass messages messages messages
 • to handlersUse handlersUsepass
                • to pass • to handlers to pass               • Use          • to handlersUse handlersUsepass
                                                                                            • to pass • to handlers to pass              • Use          • to pass messages
                                                                                                                                                                       • to handlersUse handlers to pass
                                                                                                                                                                                      • to pass
application comms
 • Inter/intra application comms
                • Inter/intra application comms
                               • Inter/intra application comms• Inter/intra application comms
                                                                             • Inter/intra application comms
                                                                                            • Inter/intra application comms
                                                                                                           • Inter/intra application comms Inter/intra application comms
                                                                                                                                         •              • Inter/intra application comms
                                                                                                                                                                       • Inter/intra application comms
                                                                                                                                                                                      • Inter/intra application comms
s with EventBus with EventBus with EventBus with messages
     – messages – messages – messages                               – EventBus with EventBus with EventBus with EventBus with messages
                                                                                  – messages – messages – messages                                – EventBus with EventBus with EventBus with EventBus with messages
                                                                                                                                                                – messages – messages – messages
red data structuresdata structuresdata structuresdata structures
     – Safe shared – Safe shared – Safe shared                      – Safe shared data structuresdata structuresdata structuresdata structures
                                                                                  – Safe shared – Safe shared – Safe shared                       – Safe shared data structuresdata structuresdata structuresdata structures
                                                                                                                                                                – Safe shared – Safe shared – Safe shared
                Verticle       Verticle      Verticle    9
                                                             Verticle9              9
                                                                                              Verticle
                                                                                                   9
                                                                                                             Verticle       Verticle    9
                                                                                                                                            Verticle
                                                                                                                                                   9              9
                                                                                                                                                                            Verticle
                                                                                                                                                                                 9
                                                                                                                                                                                           Verticle       Verticle    9
                                                                                                                                                                                                                          Verticle
                                                                                                                                                                                                                                 9         9




                                                                                                       Event Bus
Into the Browser!
 orks it works it works it works
 How       How     How                                             How it works it works it works it works
                                                                           How       How     How

               Event loop Event loop Event loop Event loop                                   Event loop Event loop Event loop Event loop

rs App registers App registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger Events trigger
                                       Events                    App registers App registers App                    Events
     handlers      handlers      handlershandlers      handlers handlers
                                                                      handlers handlers
                                                                                     handlers handlers        handlershandlers      handlers       handlers       handlers



executed synchronously executed synchronously
 • Handlers executed synchronously executed synchronously
             • Handlers • Handlers                  • Handlers executed synchronously executed synchronously
                                                                • Handlers executed synchronously executed synchronously
                                                                            • Handlers • Handlers
le threada single threada single threada single thread
     – on           – on           – on                             – on a single threada single threada single threada single thread
                                                                                    – on           – on           – on
ersUsepass messages messages messages messages handlersUsepass messages messages messages messages
 • to handlersUse handlersUsepass
                • to pass • to handlers to pass               • Use          • to handlersUse handlersUsepass
                                                                                            • to pass • to handlers to pass
application comms
 • Inter/intra application comms
                • Inter/intra application comms
                               • Inter/intra application comms• Inter/intra application comms
                                                                             • Inter/intra application comms
                                                                                            • Inter/intra application comms
                                                                                                           • Inter/intra application comms
s with EventBus with EventBus with EventBus with messages
     – messages – messages – messages                               – EventBus with EventBus with EventBus with EventBus with messages
                                                                                  – messages – messages – messages
red data structuresdata structuresdata structuresdata structures
     – Safe shared – Safe shared – Safe shared                      – Safe shared data structuresdata structuresdata structuresdata structures
                                                                                  – Safe shared – Safe shared – Safe shared
                Verticle       Verticle      Verticle    9
                                                             Verticle9              9
                                                                                              Verticle
                                                                                                   9
                                                                                                             Verticle       Verticle    9
                                                                                                                                            Verticle
                                                                                                                                                   9          9              9




                                                                                                                                                                             SockJS Bridge

                                                                                                       Event Bus
The Server
The Client
Demo
Solution #3.2:

                      Shared
                    Immutable
                       State
  Rich Hickey
Father of Clojure
e.g. In-memory Web
        Cache
MessageAI L
        Passing?
      F
Shared state only
dangerous if it is
   MUTABLE!
Vert.x Shared State
• SharedData Object (vertx.sharedData())
 • collection of
    java.util.concurrent.ConcurrentMap<K,V>

 • collection of java.util.Set<E> (backed by
    ConcurrentMap)

• Elements MUST be immutable values (well,
  sort of...)

• Currently only available within a Vertx.
  instance, not across a cluster.
Allowed Values
• Strings
• Boxed Primitives
•byte[]
                              R !
•org.vertx.java.core.buffer.Buffer
• Implementors of
                        G   E
 Shareable
                      AN
 org.vertx.java.core.shareddata.


                    D
Shared Map
Shared Set
Problem #4:

                                 The
                                Event
                                Loop
     Douglas Schmidt
Father of the Reactor Pattern
Reactor
w it works           Pattern Review

                     Event loop
   Application                     ...events
pp registers
   registers                          Events t
                                      trigger
 handlers                                 handl
   handlers...                    handlers.

                     Event Loop
andlers executed synchronously
on a single thread
se handlers to pass messages
Reactor Pattern Review


• Single thread / single event loop
• EVERYTHING runs on it
• You MUST NOT block the event loop
Reactor Pattern Problems

• Some work is naturally blocking:
 • Intensive data crunching
 • 3rd-party blocking API’s (e.g. JDBC)
• Pure reactor (e.g. Node.js) is not a good fit
  for this kind of work!
Solution #4:

                             Worker
                            Verticles
       Carl Hewitt
Father of the Actor Model
Worker Verticles
• Not assigned a Vert.x event loop thread
• Executes on background thread pool
• Never executed concurrently by more than
  one thread

• Not allowed to use TCP or HTTP clients/
  servers

• Communicate using the event bus
• Should be kept to a minimum
The “Multi-reactor”
How it works it works it works it works
        How       How     How

                           Event loop Event loop Event loop Event loop

                                                                                       BG            BG
  App registers App registers App registers App registers trigger Events trigger Events trigger Events trigger
                                                    Events
    handlers      handlers      handlers      handlershandlers      handlers
                                                                                      Pool
                                                                                   handlers
                                                                                                    Pool
                                                                                                  handlers



• Handlers executed synchronously executed synchronously
            • Handlers executed synchronously executed synchronously
                        • Handlers • Handlers
  – on a single threada single threada single threada single thread
                  – on           – on           – on
• Use handlersUse handlersUse handlersUse handlers to pass messages
               • to pass messages messages messages
                              • to pass • to pass
• Inter/intra application comms
               • Inter/intra application comms
                              • Inter/intra application comms
                                             • Inter/intra application comms
  – EventBus with EventBus with EventBus with EventBus with messages
                – messages – messages – messages
  – Safe shared data structuresdata structuresdata structuresdata structures
                – Safe shared – Safe shared – Safe shared
                                                                                     Worker        Worker
                            Verticle       Verticle       Verticle        Verticle
                                                                                     Verticle      Verticle
                                                                      9          9            9              9




                                                     Event Bus
Problem/Solution Summary


• Node.js compels the use of JavaScript
• Vert.x is Polyglot
• Node.js is inherently single-threaded
• Vert.x leverages the multi-threaded JVM
Problem/Solution Summary
• Node.js doesn’t help much w/ interprocess
  communication

• Vert.x features a distributed event bus which
  reaches all the way into the browser

• Node.js requires all code to run on the event
  loop

• Vert.x features background workers that
  allow blocking work to be done off of the
  event loops
Other Goodies
• Growing Module        • TCP/SSL servers/clients
  Repository            • HTTP/HTTPS servers/
                          clients
 •  web server

 • persistors (Mongo,   • WebSockets support
    JDBC, ...)          • SockJS support
 • work queue           • Timers
 • authentication       • Buffers
    manager
                        • Streams and Pumps
 • session manager      • Routing
 • Socket.IO            • Asynchronous File I/O
Case Study




https://github.com/mstine/twitx
Get Involved!
• Google Group: http://groups.google.com/
  group/vertx

• GitHub: https://github.com/vert-x/vert.x
• IRC: irc://freenode.net/vertx
• Needs:
 • language implementations
 • modules (esp. persistence, security, ...)
 • examples/blogs/documentation help
Vert.x:
                                     This ain’t your Dad’s Node!




                                                             Matt Stine
                                     Enterprise Java/Cloud Consultant
   Please fill out an evaluation:
                                                 matt.stine@gmail.com
                                                  http://mattstine.com
http://speakerrate.com/talks/16821
                                                       Twitter: @mstine
Image Credits
•   Tim Fox: https://twitter.com/timfox

•   BSOD Phone: http://www.flickr.com/photos/markhillary/3413357033

•   V8: http://www.flickr.com/photos/gorbould/3479298062

•   Ryan Dahl: http://www.flickr.com/photos/franksvalli/5163205409

•   Shortcomings: http://www.flickr.com/photos/hendricksphotos/3340896056

•   Brendan Eich: http://www.flickr.com/photos/equanimity/4055148344

•   Neal Ford: http://nealford.com/images/Neal-2012-headshot.jpg

•   Lars Bak: http://www.flickr.com/photos/niallkennedy/2822229099

•   James Gosling: http://www.flickr.com/photos/skrb/2499736195

•   Tony Hoare: http://www.flickr.com/photos/adewale_oshineye/3687557065

•   Alan Kay: http://www.flickr.com/photos/mwichary/3010026816

•   Rich Hickey: http://www.flickr.com/photos/hlship/3603090614

•   Douglas Schmidt: http://www.cs.wustl.edu/~schmidt/gifs/SchmidtD.jpg

•   Carl Hewitt: http://www.flickr.com/photos/jeanbaptisteparis/3098594954

More Related Content

What's hot

Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Amazon Web Services Korea
 
AWS Black Belt Online Seminar Elastic Load Balancing
AWS Black Belt Online Seminar Elastic Load BalancingAWS Black Belt Online Seminar Elastic Load Balancing
AWS Black Belt Online Seminar Elastic Load Balancing
Amazon Web Services Japan
 
DevOps in AWS with Kubernetes
DevOps in AWS with KubernetesDevOps in AWS with Kubernetes
DevOps in AWS with Kubernetes
Oleg Chunikhin
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
David Mitzenmacher
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture Patterns
Amazon Web Services
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
Amazon Web Services Korea
 
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
Simplilearn
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
Open Source Consulting
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
 
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
Uni Systems S.M.S.A.
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
Red Hat Developers
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
Edureka!
 
Vert.x Event Driven Non Blocking Reactive Toolkit
Vert.x Event Driven Non Blocking Reactive ToolkitVert.x Event Driven Non Blocking Reactive Toolkit
Vert.x Event Driven Non Blocking Reactive Toolkit
Brian S. Paskin
 
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the UglyKubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
smalltown
 
Introduction to Kafka with Spring Integration
Introduction to Kafka with Spring IntegrationIntroduction to Kafka with Spring Integration
Introduction to Kafka with Spring Integration
Borislav Markov
 
An overview of the Eventuate Platform
An overview of the Eventuate PlatformAn overview of the Eventuate Platform
An overview of the Eventuate Platform
Chris Richardson
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
Amazon Web Services Japan
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS
Amazon Web Services Japan
 
Spring Framework - Data Access
Spring Framework - Data AccessSpring Framework - Data Access
Spring Framework - Data Access
Dzmitry Naskou
 
Angular vs. React
Angular vs. ReactAngular vs. React
Angular vs. React
OPITZ CONSULTING Deutschland
 

What's hot (20)

Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
Kubernetes/ EKS - 김광영 (AWS 솔루션즈 아키텍트)
 
AWS Black Belt Online Seminar Elastic Load Balancing
AWS Black Belt Online Seminar Elastic Load BalancingAWS Black Belt Online Seminar Elastic Load Balancing
AWS Black Belt Online Seminar Elastic Load Balancing
 
DevOps in AWS with Kubernetes
DevOps in AWS with KubernetesDevOps in AWS with Kubernetes
DevOps in AWS with Kubernetes
 
7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications7 Stages of Scaling Web Applications
7 Stages of Scaling Web Applications
 
Serverless Architecture Patterns
Serverless Architecture PatternsServerless Architecture Patterns
Serverless Architecture Patterns
 
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
AWS Elastic Beanstalk기반 Docker 콘테이너 배포를 통한 마이크로서비스 구축
 
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
What Is Docker? | What Is Docker And How It Works? | Docker Tutorial For Begi...
 
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교  및 구축 방법
[오픈소스컨설팅] 쿠버네티스와 쿠버네티스 on 오픈스택 비교 및 구축 방법
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of QuarkusD. Andreadis, Red Hat: Concepts and technical overview of Quarkus
D. Andreadis, Red Hat: Concepts and technical overview of Quarkus
 
Quarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniquesQuarkus tips, tricks, and techniques
Quarkus tips, tricks, and techniques
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
Vert.x Event Driven Non Blocking Reactive Toolkit
Vert.x Event Driven Non Blocking Reactive ToolkitVert.x Event Driven Non Blocking Reactive Toolkit
Vert.x Event Driven Non Blocking Reactive Toolkit
 
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the UglyKubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
Kubernetes Summit 2021: Multi-Cluster - The Good, the Bad and the Ugly
 
Introduction to Kafka with Spring Integration
Introduction to Kafka with Spring IntegrationIntroduction to Kafka with Spring Integration
Introduction to Kafka with Spring Integration
 
An overview of the Eventuate Platform
An overview of the Eventuate PlatformAn overview of the Eventuate Platform
An overview of the Eventuate Platform
 
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)AWS Black Belt Techシリーズ  Elastic Load Balancing (ELB)
AWS Black Belt Techシリーズ Elastic Load Balancing (ELB)
 
20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS20190320 AWS Black Belt Online Seminar Amazon EBS
20190320 AWS Black Belt Online Seminar Amazon EBS
 
Spring Framework - Data Access
Spring Framework - Data AccessSpring Framework - Data Access
Spring Framework - Data Access
 
Angular vs. React
Angular vs. ReactAngular vs. React
Angular vs. React
 

Viewers also liked

Vert.x introduction
Vert.x introductionVert.x introduction
Vert.x introductionGR8Conf
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
Xavier MARIN
 
Vert.x devoxx london 2013
Vert.x devoxx london 2013Vert.x devoxx london 2013
Vert.x devoxx london 2013
Stuart (Pid) Williams
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data binding
Alex Derkach
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
Sages
 
Building microservices with vert.x 3.0
Building microservices with vert.x 3.0Building microservices with vert.x 3.0
Building microservices with vert.x 3.0
Agraj Mangal
 
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Red Hat Developers
 
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app... 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Anna Shymchenko
 
Vert.x
Vert.xVert.x
Vert.x
Xavier MARIN
 
Vert.x using Groovy - Simplifying non-blocking code
Vert.x using Groovy - Simplifying non-blocking codeVert.x using Groovy - Simplifying non-blocking code
Vert.x using Groovy - Simplifying non-blocking code
sascha_klein
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardMario Fusco
 
Production ready Vert.x
Production ready Vert.xProduction ready Vert.x
Production ready Vert.x
Sascha Möllering
 
No more loops with lambdaj
No more loops with lambdajNo more loops with lambdaj
No more loops with lambdajMario Fusco
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS IntroNgoc Dao
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
Erik Onnen
 
Pro Postgres 9
Pro Postgres 9Pro Postgres 9
Pro Postgres 9
Robert Treat
 
Development with Vert.x: an event-driven application framework for the JVM
Development with Vert.x: an event-driven application framework for the JVMDevelopment with Vert.x: an event-driven application framework for the JVM
Development with Vert.x: an event-driven application framework for the JVM
David Wu
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
Channy Yun
 
Introduction to Remote Procedure Call
Introduction to Remote Procedure CallIntroduction to Remote Procedure Call
Introduction to Remote Procedure CallAbdelrahman Al-Ogail
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
Ian Barber
 

Viewers also liked (20)

Vert.x introduction
Vert.x introductionVert.x introduction
Vert.x introduction
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
Vert.x devoxx london 2013
Vert.x devoxx london 2013Vert.x devoxx london 2013
Vert.x devoxx london 2013
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data binding
 
Vert.x v3 - high performance polyglot application toolkit
Vert.x v3 - high performance  polyglot application toolkitVert.x v3 - high performance  polyglot application toolkit
Vert.x v3 - high performance polyglot application toolkit
 
Building microservices with vert.x 3.0
Building microservices with vert.x 3.0Building microservices with vert.x 3.0
Building microservices with vert.x 3.0
 
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)Vert.X: Microservices Were Never So Easy (Clement Escoffier)
Vert.X: Microservices Were Never So Easy (Clement Escoffier)
 
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app... 	Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
Максим Сабарня и Иван Дрижирук “Vert.x – tool-kit for building reactive app...
 
Vert.x
Vert.xVert.x
Vert.x
 
Vert.x using Groovy - Simplifying non-blocking code
Vert.x using Groovy - Simplifying non-blocking codeVert.x using Groovy - Simplifying non-blocking code
Vert.x using Groovy - Simplifying non-blocking code
 
Java 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forwardJava 7, 8 & 9 - Moving the language forward
Java 7, 8 & 9 - Moving the language forward
 
Production ready Vert.x
Production ready Vert.xProduction ready Vert.x
Production ready Vert.x
 
No more loops with lambdaj
No more loops with lambdajNo more loops with lambdaj
No more loops with lambdaj
 
SockJS Intro
SockJS IntroSockJS Intro
SockJS Intro
 
High performance network programming on the jvm oscon 2012
High performance network programming on the jvm   oscon 2012 High performance network programming on the jvm   oscon 2012
High performance network programming on the jvm oscon 2012
 
Pro Postgres 9
Pro Postgres 9Pro Postgres 9
Pro Postgres 9
 
Development with Vert.x: an event-driven application framework for the JVM
Development with Vert.x: an event-driven application framework for the JVMDevelopment with Vert.x: an event-driven application framework for the JVM
Development with Vert.x: an event-driven application framework for the JVM
 
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
2013 빅데이터 및 API 기술 현황과 전망- 윤석찬
 
Introduction to Remote Procedure Call
Introduction to Remote Procedure CallIntroduction to Remote Procedure Call
Introduction to Remote Procedure Call
 
ZeroMQ Is The Answer
ZeroMQ Is The AnswerZeroMQ Is The Answer
ZeroMQ Is The Answer
 

Similar to Vert.x

Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQAlvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
Tanya Denisyuk
 
Open Cloud Interop Public
Open Cloud Interop PublicOpen Cloud Interop Public
Open Cloud Interop Publicrvanhoe
 
Rugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudzRugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudz
James Wickett
 
The influence of "Distributed platforms" on #devops
The influence of "Distributed platforms" on #devopsThe influence of "Distributed platforms" on #devops
The influence of "Distributed platforms" on #devops
Kris Buytaert
 
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps JargonYour Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Clinton Wolfe
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Clinton Wolfe
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Jonas Bonér
 
Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Tomas Doran
 
Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)
ClubHack
 
Spark Summit EU talk by Ruben Pulido and Behar Veliqi
Spark Summit EU talk by Ruben Pulido and Behar VeliqiSpark Summit EU talk by Ruben Pulido and Behar Veliqi
Spark Summit EU talk by Ruben Pulido and Behar Veliqi
Spark Summit
 
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
Behar Veliqi
 
Reactive applications and Akka intro used in the Madrid Scala Meetup
Reactive applications and Akka intro used in the Madrid Scala MeetupReactive applications and Akka intro used in the Madrid Scala Meetup
Reactive applications and Akka intro used in the Madrid Scala MeetupMiguel Pastor
 
Erlang at Nu Echo
Erlang at Nu EchoErlang at Nu Echo
Erlang at Nu Echo
Nu Echo Inc.
 
Spark Summit EU talk by Ruben Pulido Behar Veliqi
Spark Summit EU talk by Ruben Pulido Behar VeliqiSpark Summit EU talk by Ruben Pulido Behar Veliqi
Spark Summit EU talk by Ruben Pulido Behar Veliqi
Spark Summit
 
Erjang - A journey into Erlang-land
Erjang - A journey into Erlang-landErjang - A journey into Erlang-land
Erjang - A journey into Erlang-land
Kresten Krab Thorup
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with Docker
Giuseppe Piccolo
 
M251_Meeting 1(M251_Meeting 1_updated.pdf)
M251_Meeting 1(M251_Meeting 1_updated.pdf)M251_Meeting 1(M251_Meeting 1_updated.pdf)
M251_Meeting 1(M251_Meeting 1_updated.pdf)
hossamghareb681
 
Adventures in a Microservice world at REA Group
Adventures in a Microservice world at REA GroupAdventures in a Microservice world at REA Group
Adventures in a Microservice world at REA Group
evanbottcher
 
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
The Linux Foundation
 

Similar to Vert.x (20)

The bigrabbit
The bigrabbitThe bigrabbit
The bigrabbit
 
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQAlvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
Alvaro Videla, Building a Distributed Data Ingestion System with RabbitMQ
 
Open Cloud Interop Public
Open Cloud Interop PublicOpen Cloud Interop Public
Open Cloud Interop Public
 
Rugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudzRugged DevOps Will help you build ur cloudz
Rugged DevOps Will help you build ur cloudz
 
The influence of "Distributed platforms" on #devops
The influence of "Distributed platforms" on #devopsThe influence of "Distributed platforms" on #devops
The influence of "Distributed platforms" on #devops
 
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps JargonYour Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
Your Goat Anti-Fragiled My SnowFlake! Demystifying DevOps Jargon
 
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
Your Goat Anti-Fragiled My Snowflake! Demystifying DevOps Jargon (30 minute v...
 
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive SystemsGo Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
Go Reactive: Event-Driven, Scalable, Resilient & Responsive Systems
 
Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)Test driven infrastructure development (2 - puppetconf 2013 edition)
Test driven infrastructure development (2 - puppetconf 2013 edition)
 
Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)Metasploitation part-1 (murtuja)
Metasploitation part-1 (murtuja)
 
Spark Summit EU talk by Ruben Pulido and Behar Veliqi
Spark Summit EU talk by Ruben Pulido and Behar VeliqiSpark Summit EU talk by Ruben Pulido and Behar Veliqi
Spark Summit EU talk by Ruben Pulido and Behar Veliqi
 
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
Spark Summit - Watson Analytics for Social Media: From single tenant Hadoop t...
 
Reactive applications and Akka intro used in the Madrid Scala Meetup
Reactive applications and Akka intro used in the Madrid Scala MeetupReactive applications and Akka intro used in the Madrid Scala Meetup
Reactive applications and Akka intro used in the Madrid Scala Meetup
 
Erlang at Nu Echo
Erlang at Nu EchoErlang at Nu Echo
Erlang at Nu Echo
 
Spark Summit EU talk by Ruben Pulido Behar Veliqi
Spark Summit EU talk by Ruben Pulido Behar VeliqiSpark Summit EU talk by Ruben Pulido Behar Veliqi
Spark Summit EU talk by Ruben Pulido Behar Veliqi
 
Erjang - A journey into Erlang-land
Erjang - A journey into Erlang-landErjang - A journey into Erlang-land
Erjang - A journey into Erlang-land
 
Containing the world with Docker
Containing the world with DockerContaining the world with Docker
Containing the world with Docker
 
M251_Meeting 1(M251_Meeting 1_updated.pdf)
M251_Meeting 1(M251_Meeting 1_updated.pdf)M251_Meeting 1(M251_Meeting 1_updated.pdf)
M251_Meeting 1(M251_Meeting 1_updated.pdf)
 
Adventures in a Microservice world at REA Group
Adventures in a Microservice world at REA GroupAdventures in a Microservice world at REA Group
Adventures in a Microservice world at REA Group
 
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
Next Generation Cloud: Rise of the Unikernel V3 (UPDATED)
 

More from Matt Stine

Architectures That Bend but Don't Break
Architectures That Bend but Don't BreakArchitectures That Bend but Don't Break
Architectures That Bend but Don't Break
Matt Stine
 
Cloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns TutorialCloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns Tutorial
Matt Stine
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient Architecture
Matt Stine
 
Cloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run MicroservicesCloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run Microservices
Matt Stine
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJava
Matt Stine
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
Matt Stine
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
Matt Stine
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and Beyond
Matt Stine
 
Deploying Microservices to Cloud Foundry
Deploying Microservices to Cloud FoundryDeploying Microservices to Cloud Foundry
Deploying Microservices to Cloud Foundry
Matt Stine
 
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Matt Stine
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
Matt Stine
 
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web ServicesPivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Matt Stine
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
Matt Stine
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
Matt Stine
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Matt Stine
 
It's the End of the Cloud as We Know It
It's the End of the Cloud as We Know ItIt's the End of the Cloud as We Know It
It's the End of the Cloud as We Know It
Matt Stine
 
Functional solid
Functional solidFunctional solid
Functional solid
Matt Stine
 
The Seven Wastes of Software Development
The Seven Wastes of Software DevelopmentThe Seven Wastes of Software Development
The Seven Wastes of Software Development
Matt Stine
 
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Matt Stine
 
Achieve Your Goals
Achieve Your GoalsAchieve Your Goals
Achieve Your Goals
Matt Stine
 

More from Matt Stine (20)

Architectures That Bend but Don't Break
Architectures That Bend but Don't BreakArchitectures That Bend but Don't Break
Architectures That Bend but Don't Break
 
Cloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns TutorialCloud Native Architecture Patterns Tutorial
Cloud Native Architecture Patterns Tutorial
 
Resilient Architecture
Resilient ArchitectureResilient Architecture
Resilient Architecture
 
Cloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run MicroservicesCloud Foundry: The Best Place to Run Microservices
Cloud Foundry: The Best Place to Run Microservices
 
Reactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJavaReactive Fault Tolerant Programming with Hystrix and RxJava
Reactive Fault Tolerant Programming with Hystrix and RxJava
 
Lattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring ApplicationsLattice: A Cloud-Native Platform for Your Spring Applications
Lattice: A Cloud-Native Platform for Your Spring Applications
 
The Cloud Native Journey
The Cloud Native JourneyThe Cloud Native Journey
The Cloud Native Journey
 
To Microservices and Beyond
To Microservices and BeyondTo Microservices and Beyond
To Microservices and Beyond
 
Deploying Microservices to Cloud Foundry
Deploying Microservices to Cloud FoundryDeploying Microservices to Cloud Foundry
Deploying Microservices to Cloud Foundry
 
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for MicroservicesCloud Foundry Diego: Modular and Extensible Substructure for Microservices
Cloud Foundry Diego: Modular and Extensible Substructure for Microservices
 
Building Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring CloudBuilding Distributed Systems with Netflix OSS and Spring Cloud
Building Distributed Systems with Netflix OSS and Spring Cloud
 
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web ServicesPivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
Pivotal Cloud Platform Roadshow: Sign Up for Pivotal Web Services
 
A Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to GoA Recovering Java Developer Learns to Go
A Recovering Java Developer Learns to Go
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
 
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic RelationshipCloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
Cloud Foundry and Microservices: A Mutualistic Symbiotic Relationship
 
It's the End of the Cloud as We Know It
It's the End of the Cloud as We Know ItIt's the End of the Cloud as We Know It
It's the End of the Cloud as We Know It
 
Functional solid
Functional solidFunctional solid
Functional solid
 
The Seven Wastes of Software Development
The Seven Wastes of Software DevelopmentThe Seven Wastes of Software Development
The Seven Wastes of Software Development
 
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...Information Sciences Solutions to Core Facility Problems at St. Jude Children...
Information Sciences Solutions to Core Facility Problems at St. Jude Children...
 
Achieve Your Goals
Achieve Your GoalsAchieve Your Goals
Achieve Your Goals
 

Recently uploaded

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 

Recently uploaded (20)

To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 

Vert.x

  • 1. Vert.x: This ain’t your Dad’s Node! Matt Stine Tim Fox Enterprise Java/Cloud Consultant Father of Vert.x matt.stine@gmail.com http://mattstine.com Twitter: @mstine
  • 3.
  • 5. Ryan Dahl Father of Node.js How?!?!
  • 9.
  • 10.
  • 11.
  • 12. But Node has some shortcomings... 1. JavaScript! 2. Vertical Scaling 3. Interprocess Communication 4. Event Loop
  • 14. Problem #1: JavaScript Brendan Eich Father of JavaScript
  • 16. Solution #1: Polyglot Programming Neal Ford Father of Polyglot Programming http://memeagora.blogspot.com/2006/12/polyglot-programming.html
  • 17. Hello World in every Vert.x language!
  • 18. Java
  • 19.
  • 20. Ruby
  • 23.
  • 24. FUTURE Theoretically, any JVM language or language that compiles to a supported language (e.g. ClojureScript ➔ JavaScript)
  • 25. Problem #2: Vertical Scaling Lars Bak Father of V8
  • 27. Node: Up and Running Example 3-11: Using cluster to distribute work
  • 28. Solution #2: The JVM James Gosling Father of Java
  • 29. The Verticle - Unit of Deployment Verticle - Script/Java Class
  • 30. Vert.x Instance How it works it works it works it works How How How Event loop Event loop Event loop Event loop Event Loops App registers App registers App registers App registers trigger Events trigger Events trigger Events trigg Events handlers handlers handlers handlershandlers handlers handlers handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers – on a single threada single threada single threada single thread – on – on – on • Use handlersUse handlersUse handlersUse handlers to pass messages • to pass messages messages messages • to pass • to pass • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared Verticle 9 9 9 Runtime.availableProcessors() == 4
  • 31. Vert.x Instance How it works it works it works it works How How How Event loop Event loop Event loop Event loop Event Loops App registers App registers App registers App registers trigger Events trigger Events trigger Events trigg Events handlers handlers handlers handlershandlers handlers handlers handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers – on a single threada single threada single threada single thread – on – on – on • Use handlersUse handlersUse handlersUse handlers to pass messages • to pass messages messages messages • to pass • to pass vertx run • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms HelloWorld with EventBus with EventBus with EventBus with messages – EventBus – messages – messages – messages – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared -instances 4 Verticle Verticle Verticle Verticle 9 9 9 Runtime.availableProcessors() == 4
  • 32. Concurrency • Verticle instance assigned thread/event loop. • Verticle instance ALWAYS executes on assigned thread. • Verticles have isolated classloaders and cannot share global state (static members, global variables, etc.) • Can write all code assuming single threading.
  • 33. Tony Hoare Father of CSP (http://dl.acm.org/citation.cfm? doid=359576.359585) Problem #3: Interprocess Communication
  • 34. Node.js Communication Options • TCP/UDP/UNIX Sockets • Redis Pub/Sub (http://redis.io/) • ZeroMQ (http://www.zeromq.org/) • Process Signaling/Cluster Module • Eventing Frameworks: Hook.io (dead), JS- Signals, Bean, etc. • Memcached • Etc...
  • 35. Solution #3.1: The Event Bus Alan Kay Father of Smalltalk
  • 36. How it works it works it works it works How How How Event loop Event loop Event loop Event loop App registers App registers App registers App registers trigger Events trigger Events trigger Events trigger Events handlers handlers handlers handlershandlers handlers handlers handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers – on a single threada single threada single threada single thread – on – on – on • Use handlersUse handlersUse handlersUse handlers to pass messages • to pass messages messages messages • to pass • to pass • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared Verticle Verticle Verticle Verticle 9 9 9 9 Event Bus
  • 37. Addressing • Simply a String • Dot-style namespacing recommended • e.g. “messages.inbound.A”
  • 38. Handler Registration Handler X messages.inbound.A Handler Y Handler Z
  • 40. Pub/Sub Handler X Sender messages.inbound.A Handler Y Handler Z
  • 42. P2P Handler X Sender messages.inbound.A Handler Y Handler Z
  • 43. P2P
  • 45. Message Types • String • Primitives (int, long, short, float, double, ...) • Boxed Primitives • boolean/Boolean • org.vertx.java.core.json.JsonObject • org.vertx.java.core.buffer.Buffer
  • 46. Distributed Vert.x orks it works it works it works How How How How it works it works it works it works How How How How it works it works it works it works How How How Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop rs App registers App registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger Events App registers App registers App Events App registers App registers App Events handlers handlers handlershandlers handlers handlers handlers handlers handlers handlers handlershandlers handlers handlers handlers handlers handlers handlers handlershandlers handlers handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers le threada single threada single threada single thread – on – on – on – on a single threada single threada single threada single thread – on – on – on – on a single threada single threada single threada single thread – on – on – on ersUsepass messages messages messages messages handlersUsepass messages messages messages messages handlersUse handlersUsepass messages messages messages • to handlersUse handlersUsepass • to pass • to handlers to pass • Use • to handlersUse handlersUsepass • to pass • to handlers to pass • Use • to pass messages • to handlersUse handlers to pass • to pass application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms• Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms Inter/intra application comms • • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms s with EventBus with EventBus with EventBus with messages – messages – messages – messages – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages red data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared Verticle Verticle Verticle 9 Verticle9 9 Verticle 9 Verticle Verticle 9 Verticle 9 9 Verticle 9 Verticle Verticle 9 Verticle 9 9 Event Bus
  • 47. Into the Browser! orks it works it works it works How How How How it works it works it works it works How How How Event loop Event loop Event loop Event loop Event loop Event loop Event loop Event loop rs App registers App registers App registers trigger Events trigger Events trigger Events trigger registers App registers trigger Events trigger Events trigger Events trigger Events App registers App registers App Events handlers handlers handlershandlers handlers handlers handlers handlers handlers handlers handlershandlers handlers handlers handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers le threada single threada single threada single thread – on – on – on – on a single threada single threada single threada single thread – on – on – on ersUsepass messages messages messages messages handlersUsepass messages messages messages messages • to handlersUse handlersUsepass • to pass • to handlers to pass • Use • to handlersUse handlersUsepass • to pass • to handlers to pass application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms• Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms s with EventBus with EventBus with EventBus with messages – messages – messages – messages – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages red data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared Verticle Verticle Verticle 9 Verticle9 9 Verticle 9 Verticle Verticle 9 Verticle 9 9 9 SockJS Bridge Event Bus
  • 50. Demo
  • 51. Solution #3.2: Shared Immutable State Rich Hickey Father of Clojure
  • 53. MessageAI L Passing? F
  • 54. Shared state only dangerous if it is MUTABLE!
  • 55. Vert.x Shared State • SharedData Object (vertx.sharedData()) • collection of java.util.concurrent.ConcurrentMap<K,V> • collection of java.util.Set<E> (backed by ConcurrentMap) • Elements MUST be immutable values (well, sort of...) • Currently only available within a Vertx. instance, not across a cluster.
  • 56. Allowed Values • Strings • Boxed Primitives •byte[] R ! •org.vertx.java.core.buffer.Buffer • Implementors of G E Shareable AN org.vertx.java.core.shareddata. D
  • 59. Problem #4: The Event Loop Douglas Schmidt Father of the Reactor Pattern
  • 60. Reactor w it works Pattern Review Event loop Application ...events pp registers registers Events t trigger handlers handl handlers... handlers. Event Loop andlers executed synchronously on a single thread se handlers to pass messages
  • 61. Reactor Pattern Review • Single thread / single event loop • EVERYTHING runs on it • You MUST NOT block the event loop
  • 62. Reactor Pattern Problems • Some work is naturally blocking: • Intensive data crunching • 3rd-party blocking API’s (e.g. JDBC) • Pure reactor (e.g. Node.js) is not a good fit for this kind of work!
  • 63. Solution #4: Worker Verticles Carl Hewitt Father of the Actor Model
  • 64. Worker Verticles • Not assigned a Vert.x event loop thread • Executes on background thread pool • Never executed concurrently by more than one thread • Not allowed to use TCP or HTTP clients/ servers • Communicate using the event bus • Should be kept to a minimum
  • 65. The “Multi-reactor” How it works it works it works it works How How How Event loop Event loop Event loop Event loop BG BG App registers App registers App registers App registers trigger Events trigger Events trigger Events trigger Events handlers handlers handlers handlershandlers handlers Pool handlers Pool handlers • Handlers executed synchronously executed synchronously • Handlers executed synchronously executed synchronously • Handlers • Handlers – on a single threada single threada single threada single thread – on – on – on • Use handlersUse handlersUse handlersUse handlers to pass messages • to pass messages messages messages • to pass • to pass • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms • Inter/intra application comms – EventBus with EventBus with EventBus with EventBus with messages – messages – messages – messages – Safe shared data structuresdata structuresdata structuresdata structures – Safe shared – Safe shared – Safe shared Worker Worker Verticle Verticle Verticle Verticle Verticle Verticle 9 9 9 9 Event Bus
  • 66.
  • 67.
  • 68. Problem/Solution Summary • Node.js compels the use of JavaScript • Vert.x is Polyglot • Node.js is inherently single-threaded • Vert.x leverages the multi-threaded JVM
  • 69. Problem/Solution Summary • Node.js doesn’t help much w/ interprocess communication • Vert.x features a distributed event bus which reaches all the way into the browser • Node.js requires all code to run on the event loop • Vert.x features background workers that allow blocking work to be done off of the event loops
  • 70. Other Goodies • Growing Module • TCP/SSL servers/clients Repository • HTTP/HTTPS servers/ clients • web server • persistors (Mongo, • WebSockets support JDBC, ...) • SockJS support • work queue • Timers • authentication • Buffers manager • Streams and Pumps • session manager • Routing • Socket.IO • Asynchronous File I/O
  • 72. Get Involved! • Google Group: http://groups.google.com/ group/vertx • GitHub: https://github.com/vert-x/vert.x • IRC: irc://freenode.net/vertx • Needs: • language implementations • modules (esp. persistence, security, ...) • examples/blogs/documentation help
  • 73. Vert.x: This ain’t your Dad’s Node! Matt Stine Enterprise Java/Cloud Consultant Please fill out an evaluation: matt.stine@gmail.com http://mattstine.com http://speakerrate.com/talks/16821 Twitter: @mstine
  • 74. Image Credits • Tim Fox: https://twitter.com/timfox • BSOD Phone: http://www.flickr.com/photos/markhillary/3413357033 • V8: http://www.flickr.com/photos/gorbould/3479298062 • Ryan Dahl: http://www.flickr.com/photos/franksvalli/5163205409 • Shortcomings: http://www.flickr.com/photos/hendricksphotos/3340896056 • Brendan Eich: http://www.flickr.com/photos/equanimity/4055148344 • Neal Ford: http://nealford.com/images/Neal-2012-headshot.jpg • Lars Bak: http://www.flickr.com/photos/niallkennedy/2822229099 • James Gosling: http://www.flickr.com/photos/skrb/2499736195 • Tony Hoare: http://www.flickr.com/photos/adewale_oshineye/3687557065 • Alan Kay: http://www.flickr.com/photos/mwichary/3010026816 • Rich Hickey: http://www.flickr.com/photos/hlship/3603090614 • Douglas Schmidt: http://www.cs.wustl.edu/~schmidt/gifs/SchmidtD.jpg • Carl Hewitt: http://www.flickr.com/photos/jeanbaptisteparis/3098594954