Vert.x introduction

8,443 views
8,019 views

Published on

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

No Downloads
Views
Total views
8,443
On SlideShare
0
From Embeds
0
Number of Embeds
792
Actions
Shares
0
Downloads
164
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

×