Your SlideShare is downloading. ×
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
High Performance Reactive Applications with Vert.x
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

High Performance Reactive Applications with Vert.x

977

Published on

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1v4TPM6. …

Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/1v4TPM6.

Tim Fox discusses the design principles and motivation behind Vert.x and why the future is reactive. Filmed at qconlondon.com.

Tim Fox has been doing software engineering for almost 18 years, and has spent the last 8 years exclusively working in open source. Tim is employed by Red Hat where he is the creator and project lead for Vert.x - the reactive, polyglot application platform.

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
977
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
8
Embeds 0
No embeds

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. @timfox High performance reactive applications with Vert.x Tim Fox Red Hat
  • 2. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /performance-reactive-vertx InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month
  • 3. Presented at QCon London www.qconlondon.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 4. @timfox Bio • Employed By Red Hat to lead the Vert.x project • Worked in open source exclusively for the past 9 years • Some projects I've been involved with: Vert.x (creator), RabbitMQ, HornetQ (creator), JBoss AS, Mobicents...
  • 5. @timfox Overview • Lightweight, reactive, application platform • Superficially similar to Node.js - but not a clone! • Inspired also from Erlang/OTP • Polyglot • High performance (see latest TechEmpower benchmarks!) • Simple but not simplistic
  • 6. @timfox Polyglot Full implementation: Almost there:
  • 7. @timfox Core Asychronous APIs • Core is small and static • TCP/SSL clients and servers • HTTP/HTTPS clients and servers • Websockets, SockJS • File system • Event bus • DNS (new) • UDP (new) • etc
  • 8. Why Asynchronous? • Modern servers need to handle high levels of concurrency – web servers, @timfox websockets, IoT etc • OS threads are still a precious resource • Need to service many connections with small number of threads • Blocked OS threads means they can't do other work
  • 9. @timfox Verticle • Execution unit of Vert.x • Can be written in any language • Single threaded – less scope for race conditions • Verticles communicate by message passing • Hmmm.. sounds like the Actor Model?
  • 10. Demo @timfox
  • 11. @timfox Event Bus • The nervous system of Vert.x • Verticles send messages over the event bus • Point to point. Publish/Subscribe. Request/Response • Pass strings, buffers, primitive types or JSON • JSON messages are preferred for structured data
  • 12. Clustered Event Bus • Lightweight peer-to-peer messaging system • Connects multiple Vert.x JVM instances • Applications are loosely coupled components distributed across your @timfox network • No monolithic “application server” • Cluster manager is pluggable, default is Hazelcast
  • 13. Event bus in the Browser • Event bus extends to client side JavaScript too • Uses the same API on the client • Powerful distributed event space spanning both client and server nodes • Ideal for modern “real-time” web applications • Use whatever client side toolkit you prefer @timfox
  • 14. Demo @timfox
  • 15. @timfox Modules • Modules encapsulate code and resources • One or more modules per application • Must include a mod.json descriptor file • Modules contain zero or more verticles • Can be runnable or non runnable • Module class-loaders provide isolation
  • 16. Demo @timfox
  • 17. @timfox An ecosystem of modules • Sharing modules encourages reuse • Modules can be pushed to any Maven or Bintray repository • Vert.x can resolve modules at build time or run time • Encourage an ecosystem of modules • Register your modules in the registry • Modules are the lego bricks to create your application
  • 18. @timfox It's all about the modules MongoDB Redis MySQL/PostgreSQL SMTP JDBC Jersey Promises Guice Spring Vertigo Metrics Facebook Yoke Kafka BSON work-queue NoDyn GCM SocketIO Sessions Via RxJava
  • 19. @timfox Fat jars • Build module into self contained "fat" executable jar • Convenient for devops • Fairly small overhead ~ 4.7 MB
  • 20. Demo @timfox
  • 21. @timfox High Availability • Automatic failover of deployed modules • Nodes can be logically grouped • Network partition detection (quorum)
  • 22. Demo @timfox
  • 23. @timfox Developing with Vert.x • Vert.x is IDE and build system agnostic • Can just use a text editor if you like • Maven archetype • Gradle template • Debug and test in IDE • Module auto-redeploy during development
  • 24. Demo @timfox
  • 25. Summary • Write apps as set of loosely coupled components that live anywhere @timfox where you want • Polyglot – use the language(s) you want • Simple concurrency – wave goodbye to most race conditions • Modules – a library of lego bricks to build apps with • High availability • Ease of development
  • 26. @timfox Project Info • Independent Community Project • The main project is an Eclipse Foundation project • All code is on GitHub • 100% open source (ASL 2.0 + Creative Commons) • One of the most popular Java projects on GitHub
  • 27. @timfox Get involved! • Loads more to do • Very active and growing community • Find us on GitHub • Google group: vertx • IRC channel: #vertx on freenode.net
  • 28. @timfox Q & A
  • 29. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/performance -reactive-vertx

×