reactive applications on apache tomcathome.apache.org/~violetagg/presentations/2018-06... ·...

73
Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g

Upload: others

Post on 20-May-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Applications on Apache Tomcat

Violeta Georgieva @violeta_g_g

Page 2: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Violeta Georgieva

•  Pivotal •  Tomcat committer and PMC – RM Tomcat 7.0/8.0

•  Spring Framework contributor

Page 3: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Use Cases

Page 4: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Use Cases

Page 5: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Use Cases

Network Latency

Page 6: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Use Cases

Processing Latency

Page 7: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Demo Blocking

Load Generator

Browser

Trading Service Stock Quotes

Page 8: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Synchronous Processing Blocking

request

Page 9: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Synchronous Processing Blocking

request

Page 10: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Synchronous Processing Blocking

response

Page 11: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Synchronous Processing Blocking

response

Page 12: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Synchronous Processing Blocking

Page 13: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

request

Page 14: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool

process

Page 15: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool

request

Page 16: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool

response

Page 17: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool result

Page 18: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool response

Page 19: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Blocking

Thread Pool

Page 20: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

Page 21: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

setReadListener Container Application

Page 22: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

Container Application

onDataAvailable

Page 23: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

read Container Application

Page 24: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

isReady Container Application

Page 25: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

Container Application

more ✔

Page 26: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Read

Container Application

stop ✖

Page 27: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

Page 28: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

setWriteListener Container Application

Page 29: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

Container Application

onWritePossible

Page 30: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

write Container Application

Page 31: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

isReady Container Application

Page 32: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

Container Application

more ✔

Page 33: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Asynchronous Processing Non-Blocking Write

Container Application

stop ✖

Page 34: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Page 35: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Page 36: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

subscribe

Publisher Subscriber

Page 37: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Publisher Subscriber

onSubscribe

Page 38: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

request(2)

Publisher Subscriber

Page 39: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Publisher Subscriber

onNext

Page 40: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

request(1)

Publisher Subscriber

Page 41: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Publisher Subscriber

onNext

Page 42: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

Publisher Subscriber

onComplete | onError

Page 43: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Reactive Streams

cancel

Publisher Subscriber

Page 44: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

setReadListener

Page 45: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

subscribe

Page 46: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

onSubscribe

Page 47: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

request

Page 48: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

isReady

Page 49: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

read

Page 50: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

data

Page 51: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

onNext

Page 52: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

request

Page 53: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

isReady

Page 54: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

stop ✖

Page 55: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

onDataAvailable

Page 56: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

read

Page 57: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

data

Page 58: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Read

onNext

Page 59: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

setWriteListener

Page 60: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

subscribe

Page 61: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

onSubscribe

Page 62: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

request

Page 63: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

onNext

Page 64: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

isReady

Page 65: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

write

Page 66: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

request

Page 67: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

onNext

Page 68: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

isReady

Page 69: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

stop ✖

Page 70: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

onWritePossible

Page 71: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Servlet 3.1/Reactive Streams Bridge Write

write

Page 72: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

Demo Non-Blocking

Load Generator

Browser

Trading Service Stock Quotes

Page 73: Reactive Applications on Apache Tomcathome.apache.org/~violetagg/presentations/2018-06... · Reactive Applications on Apache Tomcat Violeta Georgieva @violeta_g_g. Violeta Georgieva

THANK YOU

https://github.com/violetagg/ApacheEURoadshowDemo