Zuul's Journey to Non-Blocking
summary
Zuul is rebuilt from blocking Tomcat to a Netty event loop with RxJava filters; benchmarks show ~73,000 rps but production yields only ~10–20% throughput gain, so the real wins are resiliency under retry storms, tens of thousands of long‑lived connections and WebSockets. Pain points include blocking assumptions in dependencies, thread‑local geo shuffling, direct‑memory leaks and much harder debugging; overall the gateway works but costs more operational effort.
AI-written summary · about
chapters (20)
- 0:00Introduction
- 5:48Three key hotspots
- 14:35Underlying assumptions
- 16:57Debugging asynchronous requests
- 17:33Request passport
- 18:08Example
- 19:35Production
- 19:51Direct Memory Leak
- 21:14Asynchronous Frameworks
- 23:40Location Issues
- 25:35Retry Storm
- 28:40Retries
- 29:36Long Live Connections
- 30:09Relaxed Latency constraints
- 30:49No need for Hystrix
- 31:06throughput
- 31:30CPU bound
- 33:43Benchmark Accuracy
- 34:19Costs
- 35:07Lessons Learned
related talks
44mDeep Dive talk | Resilience in Microservices with Congestion Control
38mStream-style messaging development
25mGetting Started with Zuul
39mBuild blazingly fast, ultra lightweight cloud native Java enterprise applications
51mQuarkus 3: Elevating Java Microservices with Project Loom and Beyond
46mSubatomic, Supersonic, Reactive
55mThe Reactive Revolution
46mGet Reactive! Programming, Systems, and Microservices
