Vert.x is a general purpose application platform for building asynchronous and reactive applications. It uses an event-driven architecture with non-blocking APIs to build distributed applications that can be composed of components written in different programming languages. Vert.x provides tools like an event bus for communication between components, as well as HTTP/TCP clients and servers that allow building reactive web and microservices applications. It aims to simplify concurrency while leveraging existing Java libraries and allowing applications to scale across multiple machines.
Development with Vert.x: an event-driven application framework for the JVMDavid Wu
For a long time JVM developers have been sitting out watching web developers write agile and performant applications with frameworks such as node.js. Fortunately this is no longer the case. Vert.x is a powerful, bleeding edge event-driven application framework for the JVM. It features native support for non-blocking I/O and concurrency. It has a distributed event bus that that allows real-time communication between client and server. In addition to including out-of-the-box modules for easy development, vert.x has a module system that enables code reuse. To be even more cool, vert.x is polyglot, supporting components written in different languages such as Javascript, Ruby, and Python. In this speech I will give an overview of the vert.x framework and some of the caveats that you should be aware of.
Development with Vert.x: an event-driven application framework for the JVMDavid Wu
For a long time JVM developers have been sitting out watching web developers write agile and performant applications with frameworks such as node.js. Fortunately this is no longer the case. Vert.x is a powerful, bleeding edge event-driven application framework for the JVM. It features native support for non-blocking I/O and concurrency. It has a distributed event bus that that allows real-time communication between client and server. In addition to including out-of-the-box modules for easy development, vert.x has a module system that enables code reuse. To be even more cool, vert.x is polyglot, supporting components written in different languages such as Javascript, Ruby, and Python. In this speech I will give an overview of the vert.x framework and some of the caveats that you should be aware of.
Vert.x is a toolkit or platform for implementing reactive applications on the JVM.
Vert.x is an open-source project at the Eclipse Foundation. Vert.x was initiated in 2012 by Tim Fox.
General Purpose Application Framework, Polyglot (Java, Groovy, Scala, Kotlin, JavaScript, Ruby and Ceylon), Event Driven, non-blocking, Lightweight & fast, Reusable modules.
How to handle 10000+ parallel connections? Our digital world changes - more devices, smaller requests. Whereas multithreading was a cure some years ago, even thread context switching seems to be too much overhead now.
My Node.js workshop from Sela's Developer Conference 2015.
In the Workshop we covered The basics Node.js api's and the express web application framework.
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
Presented at JAX London 2013
Vert.x is a lightweight, high performance, application platform for the JVM that's designed for modern mobile, web, and enterprise applications. The recent Vert.x 2.0 release marks a coming of age for Vert.x, as it progresses to a fully independent project. We'll dive into the Vert.x 2.0 release and show how the powerful new module system enables a Vert.x ecosystem by allowing modules to be re-used via Maven and Bintray repositories. You'll also learn about how better build tool and IDE integration makes developing applications with Vert.x a breeze.
Spicing up JMX with Jolokia (Devoxx 2014)roland.huss
Slides for my "Tools-in-Action" Talk @ Devoxx 2014
The source code for the demos can be found at http://ro14nd.de/talks/2014/devoxx/jolokia-devoxx-2014-demo.tgz
The evolution of the Java Management Extensions (JMX) has stalled. Its fossilisation started some years ago but although JMX's future is more than unclear, it is still present in every JVM out there. However, JMX is not without severe issues in a polyglot world with regard to remote access. Jolokia is an open source project which provides an easy HTTP access to JMX not only for Java clients.
Originally intended as backbone for lightweight Nagios monitoring, Jolokia is nowadays used as a general purpose management API adopted by platforms such as ActiveMQ or Spring XD and used by HTML5 consoles like hawt.io.
This talk gives a detailed overview of Jolokia and its architecture. Jolokia uses an agent based approach where multiple variants with support for many platforms are available. In addition to standard JMX operations, Jolokia provides unique features like bulk requests or policy based security.
The live coding part in this presentation demonstrates how easily a custom browser based JMX-JavaScript client can be developed.
A live sneak preview of the forthcoming Jolokia 2.0 release finally completes this session.
Introduction to node js - From "hello world" to deploying on azureColin Mackay
Slide deck from my talk on Node.js.
More information is available here: http://colinmackay.scot/2014/11/29/dunddd-2014-introduction-to-node-jsfrom-hello-world-to-deploying-on-azure/
Troubleshooting Java applications has the reputation of a dark art and is often compared to finding the needle in a haystack. Using tools bundled with the JDK and the OS, a few open source packages and lightweight approaches can help you zero in on a some common scenarios. We will explore working with local and remote JVMs, the myriad of startup flags, analyzing and correlating thread dumps with cpu consumption, system vs application level instrumentation, considerations for multi-tenant JVMs, getting around in an unfamiliar production environment and if we don’t forget, memory games.
If you could use more visibility into your Java application during development and production runs this talk is filled with practical tips, from the high level to the gritty details.
KubeFuse - A File-System for KubernetesBart Spaans
A presentation on KubeFuse: the file-system view for Kubernetes.
For the introductory blog post see: https://opencredo.com/introducing-kubefuse-file-system-kubernetes/
Vert.x – The problem of real-time data bindingAlex Derkach
As the popularity of any event-driven application increases, the number of concurrent connections may increase. Applications that employ thread-per-client architecture, frustrate scalability by exhausting a server’s memory with excessive allocations and by exhausting a server’s CPU with excessive context-switching. One of obvious solutions, is exorcising blocking operations from such applications. Vert.x is event driven and non blocking toolkit, which may help you to achive this goal. In this talk, we are going to cover it’s core features and develop a primitive application using WebSockets, RxJava and Vert.x.
ABB Semiconductors, a leading supplier of power modules for the traction, heavy industry, and power transmission industries, presents the 2014 first quarter newsletter.
Vert.x is a toolkit or platform for implementing reactive applications on the JVM.
Vert.x is an open-source project at the Eclipse Foundation. Vert.x was initiated in 2012 by Tim Fox.
General Purpose Application Framework, Polyglot (Java, Groovy, Scala, Kotlin, JavaScript, Ruby and Ceylon), Event Driven, non-blocking, Lightweight & fast, Reusable modules.
How to handle 10000+ parallel connections? Our digital world changes - more devices, smaller requests. Whereas multithreading was a cure some years ago, even thread context switching seems to be too much overhead now.
My Node.js workshop from Sela's Developer Conference 2015.
In the Workshop we covered The basics Node.js api's and the express web application framework.
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
Presented at JAX London 2013
Vert.x is a lightweight, high performance, application platform for the JVM that's designed for modern mobile, web, and enterprise applications. The recent Vert.x 2.0 release marks a coming of age for Vert.x, as it progresses to a fully independent project. We'll dive into the Vert.x 2.0 release and show how the powerful new module system enables a Vert.x ecosystem by allowing modules to be re-used via Maven and Bintray repositories. You'll also learn about how better build tool and IDE integration makes developing applications with Vert.x a breeze.
Spicing up JMX with Jolokia (Devoxx 2014)roland.huss
Slides for my "Tools-in-Action" Talk @ Devoxx 2014
The source code for the demos can be found at http://ro14nd.de/talks/2014/devoxx/jolokia-devoxx-2014-demo.tgz
The evolution of the Java Management Extensions (JMX) has stalled. Its fossilisation started some years ago but although JMX's future is more than unclear, it is still present in every JVM out there. However, JMX is not without severe issues in a polyglot world with regard to remote access. Jolokia is an open source project which provides an easy HTTP access to JMX not only for Java clients.
Originally intended as backbone for lightweight Nagios monitoring, Jolokia is nowadays used as a general purpose management API adopted by platforms such as ActiveMQ or Spring XD and used by HTML5 consoles like hawt.io.
This talk gives a detailed overview of Jolokia and its architecture. Jolokia uses an agent based approach where multiple variants with support for many platforms are available. In addition to standard JMX operations, Jolokia provides unique features like bulk requests or policy based security.
The live coding part in this presentation demonstrates how easily a custom browser based JMX-JavaScript client can be developed.
A live sneak preview of the forthcoming Jolokia 2.0 release finally completes this session.
Introduction to node js - From "hello world" to deploying on azureColin Mackay
Slide deck from my talk on Node.js.
More information is available here: http://colinmackay.scot/2014/11/29/dunddd-2014-introduction-to-node-jsfrom-hello-world-to-deploying-on-azure/
Troubleshooting Java applications has the reputation of a dark art and is often compared to finding the needle in a haystack. Using tools bundled with the JDK and the OS, a few open source packages and lightweight approaches can help you zero in on a some common scenarios. We will explore working with local and remote JVMs, the myriad of startup flags, analyzing and correlating thread dumps with cpu consumption, system vs application level instrumentation, considerations for multi-tenant JVMs, getting around in an unfamiliar production environment and if we don’t forget, memory games.
If you could use more visibility into your Java application during development and production runs this talk is filled with practical tips, from the high level to the gritty details.
KubeFuse - A File-System for KubernetesBart Spaans
A presentation on KubeFuse: the file-system view for Kubernetes.
For the introductory blog post see: https://opencredo.com/introducing-kubefuse-file-system-kubernetes/
Vert.x – The problem of real-time data bindingAlex Derkach
As the popularity of any event-driven application increases, the number of concurrent connections may increase. Applications that employ thread-per-client architecture, frustrate scalability by exhausting a server’s memory with excessive allocations and by exhausting a server’s CPU with excessive context-switching. One of obvious solutions, is exorcising blocking operations from such applications. Vert.x is event driven and non blocking toolkit, which may help you to achive this goal. In this talk, we are going to cover it’s core features and develop a primitive application using WebSockets, RxJava and Vert.x.
ABB Semiconductors, a leading supplier of power modules for the traction, heavy industry, and power transmission industries, presents the 2014 first quarter newsletter.
Vert.x using Groovy - Simplifying non-blocking codesascha_klein
The possibilities and advantages of non-blocking IO are great.
But as you have to hassle with callbacks all over the place you have to think differently.
Sometimes simple constructs we are used to are getting ugly or really hard to realize.
A little bit of Groovy-magic can help out to simplify life and make your code more look like you are used to.
This session wants to show experiences creating a vert.x-based application and the solutions we used to smooth up our code.
A summary of three case studies where universities used Kindle DX ereaders in a course/courses, as well as two case studies where universities used iPad media tablets in a course/courses.
Building microservices with vert.x 3.0Agraj Mangal
Building Microservices is considered fad these days & with Vert.x 3.0 toolkit, it has never been simpler to build a Microservice in your favorite language
OpenSource API Server based on Node.js API framework built on supported Node.js platform with Tooling and DevOps. Use cases are Omni-channel API Server, Mobile Backend as a Service (mBaaS) or Next Generation Enterprise Service Bus. Key functionality include built in enterprise connectors, ORM, Offline Sync, Mobile and JS SDKs, Isomorphic JavaScript and Graphical API creation tool.
BKK16-409 VOSY Switch Port to ARMv8 Platforms and ODP IntegrationLinaro
Virtual Open Systems has developed VOSYSwitch, a high-performance user space networking virtual switch solution enabling NFV, based on the open source packet processing framework SnabbSwitch. In this talk, the experience of porting VOSYSwitch from x86 to ARMv8 will be shared, along with the integration of ODP as a driver layer for the available hardware resources. In addition to this presentation, a live demonstration will showcase chained VNFs connected through VOSYSwitch, where an OpenFastPath web server is implemented behind an ODP enabled packet filtering firewall. The targeted platforms are Freescale (NXP) LS2085A and Cavium's ThunderX.
OSMC 2023 | IGNITE: Serving Server-Side WASM with Web Awareness with NGINX Un...NETWAYS
WebAssembly (Wasm) promises to change the nature of web applications. However, we should take a look at the needs of the apps decoupled from the browser.
Enter open source NGINX Unit. Unit is an application runtime for web apps and APIs. It handles the HTTP(S) front end, request routing and serving of assets, including the hand-off of dynamic requests. In short, Unit decouples the HTTP server from the application process. And it’s an excellent fit for Wasm’s sandboxed execution and linear memory byte streams.
That’s one small step for IT, one giant leap for business agility
Give to your business the moon as in this REX of micro-services solution used in the Airbus flight tests department to rebuild a large and complex systems. This medium size on-going project took some technical decisions and finally managed to bring the Micro-Services philosophy in a huge legacy IT system.
Reactive Microservices with Spring 5: WebFlux Trayan Iliev
On November 27 Trayan Iliev from IPT presented “Reactive microservices with Spring 5: WebFlux” @Dev.bg in Betahaus Sofia. IPT – Intellectual Products & Technologies has been organizing Java & JavaScript trainings since 2003.
Spring 5 introduces a new model for end-to-end functional and reactive web service programming with Spring 5 WebFlow, Spring Data & Spring Boot. The main topics include:
– Introduction to reactive programming, Reactive Streams specification, and project Reactor (as WebFlux infrastructure)
– REST services with WebFlux – comparison between annotation-based and functional reactive programming approaches for building.
– Router, handler and filter functions
– Using reactive repositories and reactive database access with Spring Data. Building end-to-end non-blocking reactive web services using Netty-based web runtime
– Reactive WebClients and integration testing. Reactive WebSocket support
– Realtime event streaming to WebClients using JSON Streams, and to JS client using SSE.
Building Hopsworks, a cloud-native managed feature store for machine learning Jim Dowling
Cloud Native London talk about the control layer of Hopsworks.ai and our choice of cloud native services. We built our own multi-tenant services as cloud native services, for the most part.
Covers how we built a set of high-speed reactive microservices and maximized cloud/hardware costs while meeting objectives in resilience and scalability. Talks about Akka, Kafka, QBit, in-memory computing, from a practitioners point of view. Based on the talks delivered by Geoff Chandler, Jason Daniel, and Rick Hightower at JavaOne 2016 and SF Fintech at Scale 2017, but updated.
IBM BP Session - Multiple CLoud Paks and Cloud Paks Foundational Services.pptxGeorg Ember
Diese Präsentation beinhaltet Erfahrungen, Empfehlungen und Planungs-Gedanken, die man beachten sollte, wenn man multiple IBM Cloud Paks auf der Container Platform OpenShift installieren / deployen möchte. Es beschreibt die Grundlagen zu "common services", auch "foundational services" genannt, die als Basis-Services die Lauffähigkeit dieser Cloud Paks auf OpenShift erläutert und wie man Cloud Paks auch logisch trennen kann auf OpenShift worker nodes über taints und node selectors.
Cloud Native Night, April 2018, Mainz: Workshop led by Jörg Schad (@joerg_schad, Technical Community Lead / Developer at Mesosphere)
Join our Meetup: https://www.meetup.com/de-DE/Cloud-Native-Night/
PLEASE NOTE:
During this workshop, Jörg showed many demos and the audience could participate on their laptops. Unfortunately, we can't provide these demos. Nevertheless, Jörg's slides give a deep dive into the topic.
DETAILS ABOUT THE WORKSHOP:
Kubernetes has been one of the topics in 2017 and will probably remain so in 2018. In this hands-on technical workshop you will learn how best to deploy, operate and scale Kubernetes clusters from one to hundreds of nodes using DC/OS. You will learn how to integrate and run Kubernetes alongside traditional applications and fast data services of your choice (e.g. Apache Cassandra, Apache Kafka, Apache Spark, TensorFlow and more) on any infrastructure.
This workshop best suits operators focussed on keeping their apps and services up and running in production and developers focussed on quickly delivering internal and customer facing apps into production.
You will learn how to:
- Introduction to Kubernetes and DC/OS (including the differences between both)
- Deploy Kubernetes on DC/OS in a secure, highly available, and fault-tolerant manner
- Solve operational challenges of running a large/multiple Kubernetes cluster
- One-click deploy big data stateful and stateless services alongside a Kubernetes cluster
Quick introduction to Apache OpenWhisk, an open source, distributed Serverless platform that executes functions (fx) in response to events at any scale. OpenWhisk manages the infrastructure, servers and scaling using Docker containers so you can focus on building amazing and efficient applications.
Scaling Security on 100s of Millions of Mobile Devices Using Apache Kafka® an...confluent
Watch this talk here: https://www.confluent.io/online-talks/scaling-security-on-100s-of-millions-of-mobile-devices-using-kafka-and-scylla-on-demand
Join mobile cybersecurity leader Lookout as they talk through their data ingestion journey.
Lookout enables enterprises to protect their data by evaluating threats and risks at post-perimeter endpoint devices and providing access to corporate data after conditional security scans. Their continuous assessment of device health creates a massive amount of telemetry data, forcing new approaches to data ingestion. Learn how Lookout changed its approach in order to grow from 1.5 million devices to 100 million devices and beyond, by implementing Confluent Platform and switching to Scylla.
nuclio is iguazio's open source serverless project. nuclio is 100x faster, brings significant new functionality and works with data and event sources to accelerate performance and development.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
5. What is vert.x?
General purpose application platform
Superficially similar to Node.js – but not a clone!
Asynchronous APIs
Polyglot – mix and match Java, JavaScript/CoffeeScript, Ruby, Groovy
and Python (others to follow).
Simple but not Simplistic
Part of the new breed of application platforms
5
6. Key Features
Hybrid Reactor
Polyglot Container
TCP/SSL clients and servers
HTTP/HTTPS clients and servers – including WebSockets
File system
Event bus
100% asynchronous
6
7. Code!
Super simple HTTP server
Serves files by matching request path
One example for each language
7
14. More languages?
DynJS
100% InvokeDynamic
Alternative to Rhino for JavaScript
Node.js Compatibility for vert.x
Clojure?
What language support do you want see?
14
16. Threading Model
Vert.x implements the Multi-Reactor Pattern
An event loop is an OS thread
Handles events for many handlers
Vert.x has multiple event loops. Typically one per core.
Don't block the event loop!
16
17. Hybrid Threading Model
Don't force everything to run on an event loop
Worker verticles can block
Communicate with other verticles by message passing.
Allows us to leverage the huge ecosystem of blocking Java libs
17
18. Components
Server & Client
TCP
HTTP
WebSocket
SockJS
Event Bus
Point-to-point, publish-subscribe
Transparent clustering
18
19. Event Bus
The nervous system of Vert.x
Verticles communicate using the event bus.
Super simple API.
Point to point. Publish/Subscribe. Request/Response.
Pass simple strings, numbers or other primitive types.
JSON messages are preferred for structured data.
Transparent clustering
19
20. Event Bus – Example
var handler = function(message) {
console.log('Received message ' + message.msg)
}
vertx.eventBus.registerHandler('example.address', handler)
vertx.setPeriodic(1000, function() {
vertx.eventBus.send('example.address', { msg: 'foo’ })
})
20
21. Event Bus – Extended to 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
21
22. Modules
Authentication Manager ■ Web Server
Form Upload ■ Work Queue
JDBC Persistor ■ AMQP
Mailer ■ More…
Mongo Persistor
Session Manager
22
24. Composition
Deploy code using code
Modules are unit of composed code
Deploy modules using a verticle
Or provide multiple verticles inside a module
Remember: verticles communicate using the Event Bus.
24
25. Architecture
I/O verticles
Logic
verticles
Separation of concerns
Workers if required Event
Bus
Polyglot
Worker
verticle
25
27. Big Fast Data
Realtime Analytics Dashboards & APIs
WebSocket
SockJS
Polyglot Integration
Use language independent format like JSON, XML for data
Exchange messages using event bus
27
28. Fast Data – RabbitMQ
AMQP message broker
Use for queuing, routing messages and WAN clustering
28
29. Big/Fast Data – Redis
“Data Structure Server”
Key-Value store
Pub-sub messaging
Use for caching verticle data, broadcasting to verticles
29
30. Big/Fast Data – GemFire
Compute Grid / Distributed Cache
Embeddable Key-Value store
Use for large partitioned caches, high performance compute,
WANs
Send data to vert.x using CacheListeners, subscriptions,
AsyncQueues
30
31. Big Data – Hadoop
Hive – of course!
SQL queries via JDBC worker verticle
Standard pattern via event bus
Use for ad-hoc queries on large datasets
31
32. Big Data – MQTT
MQTT is a machine-to-machine (M2M) / "Internet of Things”
connectivity protocol.
Extremely lightweight publish/subscribe messaging transport.
It is useful for connections with remote locations where a small
code footprint is required and/or network bandwidth is at a
premium.
Eclipse Paho
Coming soon!
32
33. Big Data – Intravert (@zznate - apigee)
Processors, filters and procedures allow you perform arbitrary
programmatic transformations on the server side before the results are
returned to the client.
Execute procedures and join like logic in a single RPC request
eliminating round-trips
A simple transport and JSON API that runs over HTTP allows clients to
choose from JSON, JSON compressed by smile, & even big fat sexy
XML
A real REST interface (ever thought about what would a Cassandra
hyper media API look like?)
Work with simple familiar objects like String or Integer instead of bytes
33
34. v2.0 – Features
New ClassLoader
Netty 4.0
Languages as modules
Flexible Module repositories, including Maven
Management
34
35. v2.0 – Developer experience
Gradle template project
Maven archetype and plugins
Zero setup IDE debugging
Zero setup IDE testing
Test Tools project
35
37. Real Deployment
vert.x provides a JSON RPC API:
deployer.js
JsonRpcServer.groovy
Integration.groovy – worker
Spring Integration message flow to RabbitMQ
Dynamically deploys components to consume queues:
Consumer.groovy – worker, Spring Integration message flow
JsonRpcClient.groovy
37
38. Real Deployment
I/O verticles Worker Verticles
HTTP Spring Integration
JSON RPC AMQP publisher
Event
Bus
HTTP Spring Integration (Groovy DSL)
JSON RPC Client AMQP Consumer
38
39. Summary
Write apps as set of loosely coupled components that live
anywhere
Polyglot – use the language(s) you want
Simple concurrency – wave goodbye to most race conditions
Leverage existing Java library ecosystem
Module system – empower the community
Run Node.js apps too
We believe Vert.x is the platform for the new generation of
polyglot web and enterprise applications 39