Asynchronous IO with Vert.xPeter Ledbrook - SpringSource
New kid on the block    Javascript   Non-blocking   Single-threaded                       Reactor pattern                 ...
What’s it about?• C10K Problem  – How do you handle 10,000+ concurrent connections?  – Without grinding to a halt?• Why?  ...
Transloadit• “Flexible, fast and scalable file uploading and encoding”• Video/audio encoding on the fly  – 500mb/s        ...
Voxer•   Walkie-talkie for iOS and Android•   Live audio•   Large number of connections•   Push notifications             ...
Javascript and nothing but Javascript                                        6
What if?•   Language neutral framework•   On the JVM•   Polyglot APIs•   Easy horizontal scalability•   Do non-eventy stuf...
Vert.x• Written in Java• Built on Netty and NIO 2  – Java 7 only!• Multiple language bindings  – JRuby  – Groovy  – Javasc...
How it works                          Event loop App registers                         Events trigger   handlers          ...
Features•   Non-blocking stdio•   TCP/IP and HTTP servers and clients•   Web Socket support•   (Non-blocking) Redis & Mong...
Example - Echo socket                        11
Example - Echo client                        12
Scaling            App          instance                     13
Scaling                     Vertx node                      Event bus            App          App            App          ...
Scaling                  Hazelcast                  Event bus          Vertx     Vertx     Vertx          node      node  ...
Extensibility via (Bus) Mods                       Work      Web     ... Mailer   MongoDB                       queue    s...
Mod structure• Core mods in $VERTX_HOME/mods• User mods in $VERTX_MODS                                  17
A more complex example
Realtime logging app  Log messages                    App           SockJS     Browser                          19
Realtime logging app                       20
Realtime logging app                       21
Realtime logging app                       22
Demo
Summary• Event-driven framework for the JVM  – Low overhead  – Handle large number of connections  – Great for working wit...
More info• w:   https://github.com/purplefox/vert.x       http://purplefox.github.com/vert.x/• f:   http://groups.google.c...
Thank you! Questions?              26
Upcoming SlideShare
Loading in...5
×

Vert.x introduction

7,160

Published on

Published in: Technology, Education
0 Comments
9 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,160
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
152
Comments
0
Likes
9
Embeds 0
No embeds

No notes for slide

Vert.x introduction

  1. 1. Asynchronous IO with Vert.xPeter Ledbrook - SpringSource
  2. 2. New kid on the block Javascript Non-blocking Single-threaded Reactor pattern 2
  3. 3. What’s it about?• C10K Problem – How do you handle 10,000+ concurrent connections? – Without grinding to a halt?• Why? – All those mobile devices! – Rise of long-lived connections Real-time chat Instant messaging Twitter Voice and video 3
  4. 4. Transloadit• “Flexible, fast and scalable file uploading and encoding”• Video/audio encoding on the fly – 500mb/s Transloadit VideoClient S3/Cloudfiles/... 4
  5. 5. Voxer• Walkie-talkie for iOS and Android• Live audio• Large number of connections• Push notifications 5
  6. 6. Javascript and nothing but Javascript 6
  7. 7. What if?• Language neutral framework• On the JVM• Polyglot APIs• Easy horizontal scalability• Do non-eventy stuff in a non-eventy way Vert.x! 7
  8. 8. Vert.x• Written in Java• Built on Netty and NIO 2 – Java 7 only!• Multiple language bindings – JRuby – Groovy – Javascript – Python/Clojure/Scala planned• Based on the Reactor pattern 8
  9. 9. How it works Event loop App registers Events trigger handlers handlers• Handlers executed synchronously – on a single thread• Use handlers to pass messages• Inter/intra application comms – EventBus with messages – Safe shared data structures 9
  10. 10. Features• Non-blocking stdio• TCP/IP and HTTP servers and clients• Web Socket support• (Non-blocking) Redis & Mongo modules (busmods)• Asynchronous file system access and stream handling Pump ReadStream WriteStream e.g. HTTP Request AsyncFile 10
  11. 11. Example - Echo socket 11
  12. 12. Example - Echo client 12
  13. 13. Scaling App instance 13
  14. 14. Scaling Vertx node Event bus App App App instance instance instance vertx run -instances 3 14
  15. 15. Scaling Hazelcast Event bus Vertx Vertx Vertx node node node 15
  16. 16. Extensibility via (Bus) Mods Work Web ... Mailer MongoDB queue server Event bus 16
  17. 17. Mod structure• Core mods in $VERTX_HOME/mods• User mods in $VERTX_MODS 17
  18. 18. A more complex example
  19. 19. Realtime logging app Log messages App SockJS Browser 19
  20. 20. Realtime logging app 20
  21. 21. Realtime logging app 21
  22. 22. Realtime logging app 22
  23. 23. Demo
  24. 24. Summary• Event-driven framework for the JVM – Low overhead – Handle large number of connections – Great for working with streams• Pick your own language! – Which will of course be Groovy ;)• Published release: 1.0.1 – Still early days – Get involved now! 24
  25. 25. More info• w: https://github.com/purplefox/vert.x http://purplefox.github.com/vert.x/• f: http://groups.google.com/group/vertx• t: pledbrook• b: http://blog.springsource.com/author/peter-ledbrook/ 25
  26. 26. Thank you! Questions? 26
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×