The Value Of Reactive Systems
Vložit
- čas přidán 9. 07. 2024
- In the Java world, it's been a couple years since Spring Framework 5 and Spring Boot 2 have published their new Reactive Programming features based on Project Reactor. During this period, the team has collected feedback, benchmarks, and other developer experiences.
This session is an invitation to navigate that valuable information together. Our goal? Building a decision-making template to assist you if/when you're thinking about Reactive architectures for your next system. We'll examine:
-why you should care
-what the tradeoffs are and what's being done to address them
-what benefits we should expect for various common modern use cases
-what the future holds for cloud-native systems and beyond
Speakers: Violeta Georgieva, Principal Software Engineer, Pivotal; Stephane Maldini, Reactive Engineering, Pivotal
Filmed at SpringOne Platform 2019
SlideShare: www.slideshare.net/SpringCent... - Věda a technologie
Thank you for sharing this very informative presentation🙂
01:25 - Reactive programming in a nutshell
01:26 -- What is reactive programming?
03:34 -- Reactive programming concepts worth knowing
04:08 -- Functional programming
04:49 -- Asynchronous programming (work stealing) can make debugging difficult
05:33 -- What is non-blocking programming?
06:34 -- Multiple terminal routes: Blocking ( full data or no data ) vs. Non-Blocking ( full data, no data, or partial data )
08:09 -- Overhead on low volume
09:55 - Reality Check Part 1: What are the priorities ( business and otherwise )?
12:47 - Performance Overview
12:48 -- Synchronous Processing: Blocking - Remote Call
14:14 -- Synchronous Processing: Blocking - Slow Client
14:59 -- Asynchronous Processing: Blocking - Remote Call
16:03 -- Asynchronous Processing: Blocking - Slow Client
16:27 -- Non-Blocking and Event Loops
18:22 - Reactive Programming Model
18:24 -- What is backpressure and why is it important?
19:29 - WebMVC ( blocking processing ) vs. WebFlux ( non-blocking processing )
19:55 - Use cases that favor using the reactive programming model and WebFlux
21:42 - Performance
22:36 -- Load Scenario / Description of Test Environment
23:34 -- Scenario 1 - Hello World ( return single string )
23:46 --- Comparison: WebFlux vs. WebMVC
26:02 --- Why is it important to minimize use of old generation heap memory?
28:02 --- Why does WebFlux tend to use less old generation heap memory compared to Web MVC?
30:36 --- Can non-reactive programming and reactive programming coexist on the same server?
31:59 -- Scenario 2 - Hello World with Delay ( slow client simulation )
33:06 --- Comparison: WebMVC 200 vs. WebMVC 200 ( with response delay )
34:28 --- The importance of using tail latency instead of average latency as a benchmark
34:41 --- Comparison: WebMVC 200 ( with response delay ) vs. WebMVC 600 ( with response delay )
35:04 --- Comparison: WebFlux vs. WebFlux ( with response delay )
35:37 -- Scenario 3 - Streaming ( 50 elements )
36:21 --- Comparison: WebFlux vs. WebMVC
36:52 -- Scenario 4 - Streaming with Delay ( slow client simulation )
37:22 --- Comparison: WebFlux vs. WebMVC
37:49 -- Scenario 5 - Remote Call
38:51 --- Comparison: WebFlux vs. WebMVC with RestTemplate
39:37 --- Comparison: WebFlux vs. WebMVC with WebClient
40:43 --- The benefit of replacing RestTemplate with WebClient in a WebMVC application
41:38 -- Scenario 6 - Remote Call with Delay ( slow remote service simulation )
42:12 --- Comparison: WebFlux vs. WebMVC with RestTemplate
42:34 --- Comparison: WebFlux vs. WebMVC with WebClient
44:02 --- Does it still make sense to replace RestTemplate with WebClient in a WebMVC application if it only interacts with one remote service?
45:38 - Reactive Programming Benefit: Built-in Resilience
46:10 -- Prepare for the worst, don't page Ops
46:59 - Tales of Production...
47:21 -- How Netty tries to isolate possible errors like OutOfMemoryError to the offending request
50:26 - Reality Check Part 2: Let's review the priorities again ( business or otherwise )
50:37 -- Reactive allows more productivity in writing state of the art, scalable microservices
51:21 -- Reactive applications are designed to be resilient under stress and lower maintenance
51:52 -- Reactive allows you to run more for less
53:21 - Question & Answer
Thank for the presentation.
You guys are good. Thanks for the awesome presentation
If Gatling was the load testing tool used to measure throughput, does anyone know what tool was used to measure resource usage of the application itself ?
In the presentation, they showed both throughput metrics and resource usage metrics.
As far as I know, Gatling only provides throughput metrics.
So I'm very curious what tool was used for the resource usage metrics.
Thank you for presentation. Slideshare link not valid, could you please re-upload it?
thank you for the presentation. By the way, can I know what tools you have used to calculate the performance (comparison between WebMVC and Web Flux) ? Looks very useful
Its called gatling
very good information
So for scenario 3, the "Response Time" is for receiving the whole stream?
So a p99 of ~5s is for streaming 50 items (of 1k each) => 50k/5s = 10k/s. Comparet with about 5.5k/s on MVC.
I also really like the stddev numbers for the WebFlux results. Much more consistent than MVC.