Vert.x introduction
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
7,659
On Slideshare
6,875
From Embeds
784
Number of Embeds
9

Actions

Shares
Downloads
144
Comments
0
Likes
7

Embeds 784

http://groovyflow.com 380
http://gr8conf.eu 327
http://gr8conf.org 24
http://feeds.feedburner.com 21
http://lanyrd.com 16
http://www.groovyflow.com 12
http://stg.lanyrd.org 2
http://webcache.googleusercontent.com 1
https://twitter.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Asynchronous IO with Vert.xPeter Ledbrook - SpringSource
  • 2. New kid on the block Javascript Non-blocking Single-threaded Reactor pattern 2
  • 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. Transloadit• “Flexible, fast and scalable file uploading and encoding”• Video/audio encoding on the fly – 500mb/s Transloadit VideoClient S3/Cloudfiles/... 4
  • 5. Voxer• Walkie-talkie for iOS and Android• Live audio• Large number of connections• Push notifications 5
  • 6. Javascript and nothing but Javascript 6
  • 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. 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. 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. 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. Example - Echo socket 11
  • 12. Example - Echo client 12
  • 13. Scaling App instance 13
  • 14. Scaling Vertx node Event bus App App App instance instance instance vertx run -instances 3 14
  • 15. Scaling Hazelcast Event bus Vertx Vertx Vertx node node node 15
  • 16. Extensibility via (Bus) Mods Work Web ... Mailer MongoDB queue server Event bus 16
  • 17. Mod structure• Core mods in $VERTX_HOME/mods• User mods in $VERTX_MODS 17
  • 18. A more complex example
  • 19. Realtime logging app Log messages App SockJS Browser 19
  • 20. Realtime logging app 20
  • 21. Realtime logging app 21
  • 22. Realtime logging app 22
  • 23. Demo
  • 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. 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. Thank you! Questions? 26