microservices ... · pdf filehazelcast ignite zookeeper cluster mgmt stomp apache camel...
TRANSCRIPT
@burrsutter
Reactive Programming, Systems and Microservices
@burrsutter
http://bit.ly/reactiveworkshophttps://github.com/burrsutter/reactive_tutorial_jfokus17
@burrsutter
Change History
0.1 - JFokus 2017
@burrsutter developers.redhat.com
http://developers.redhat.com
@burrsutter
@burrsutter
Hej världen(Hello World)
@burrsutter
State of the Art
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter https://www.redhat.com/en/about/videos/ikea-vs-shellshock#
@burrsutter
@burrsutter
@burrsutter
ThingsChUI
80’s
GUI
90’s
Web
00’s
Mobile
10’s
@burrsutter
@burrsutter
Ingestion Analytics
Sensors
Actuators
Gateway
Dashboards
Workflow
Integration
Control MessagesConfiguration
@burrsutter
Reactive
@burrsutter
@burrsutter
@burrsutter
@burrsutter
@burrsutter
Reactive ManifestoReactive Systems
Elastic Resilient
Message Driven
Responsive
http://www.reactivemanifesto.org/
@burrsutter
Reactive programming is programming with asynchronous data streams.
@burrsutter
@burrsutter
RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
http://reactivex.io/https://github.com/ReactiveX/RxJava
@burrsutter
@burrsutter
@burrsutter
Vertx.io an Eclipse project
@burrsutter
Vert.x is a toolkit for building reactive
applications on the JVM.
@burrsutter
HTTP 1&2 UDP Event Bus Shared Data TCP
Hazelcast
Ignite
Zookeeper
Cluster Mgmt
Stomp
Apache Camel
RabbitMQ
Integration
AMQP
Vert.x Core
Templating
Auth & OAuth
Router
Web
Service Discovery
Circuit Breaker
Microservices
Java
Groovy
JavaScript
Languages
Ruby
MySQL/Postgres
Mongo
JDBC
Data
Redis
Hawkular Dropwizard Shell
Metrics & Ops
TCP SockJS
Bridges
@burrsutter
Vert.x Verticle
Ver
ticle
1
Ver
ticle
2
Ver
ticle
3
Ver
ticle
4
Ver
ticle
5
JVM
Vert.x Instance
vertx.eventBus
A Verticle is the programmable unit – a component
A Verticle is always executed on the same thread
A single thread may execute several verticles – event loop
A Verticle Instance normally starts 1 thread/event-loop per core
@burrsutter
@burrsutter
Event Providers
Handlers
Events
while(true) {Get next eventFind interested handlersDispatch the event
}
@burrsutter
@burrsutter
Web Apps & REST
@burrsutter
@burrsutter
router.get("/api/whiskies").handler(this::getAll); router.get("/api/whiskies/:id").handler(this::getOne); router.post("/api/whiskies").handler(this::addOne); router.delete("/api/whiskies/:id").handler(this::deleteOne); router.put("/api/whiskies/:id").handler(this::updateOne); // Serve static resources from the /assets directory router.route("/assets/*").handler(StaticHandler.create("assets"));
vertx .createHttpServer() .requestHandler(router::accept) .listen(8080, result -> { if (result.succeeded()) { future.complete(); } else { // could be something else is running on our port future.fail(result.cause()); } });
Vert.x HTTP Router
@burrsutter
Vert.x EventBus
Ver
ticle
1
Ver
ticle
2
Ver
ticle
3
Ver
ticle
4
Ver
ticle
5
JVM
Vert.x Instance
Ver
ticle
1
Ver
ticle
2
Ver
ticle
6
Ver
ticle
7
JVM
Vert.x Instance
vertx.eventBus
@burrsutter
Reactive ManifestoReactive Systems
Elastic Resilient
Message Driven
Responsive
http://www.reactivemanifesto.org/
@burrsutter
Reactive Programming, Systems and Microservices
@burrsutter
http://bit.ly/reactiveworkshophttps://github.com/burrsutter/reactive_tutorial_jfokus17