Uber has implemented an automated system to analyze service dependencies and understand how failures propagate across its service mesh. This system utilizes RPC middleware to correlate failures between callers and callees during production requests. It classifies dependencies into three categories: fail-close (failure consistently causes caller failure), fail-open (failure does not cause caller failure), or unknown (insufficient evidence).
In a microservices architecture with thousands of services, identifying the root cause of a request failure can be complex due to deeply nested and asynchronous service calls. Uber's new approach helps to quickly pinpoint which dependency contributed to a failure, providing faster feedback than traditional distributed tracing methods, especially for rare failure events.
Uber initially considered distributed tracing but found its sampling rate too slow for diagnosing infrequent failures. With over 99.9% of requests completing without errors, a 0.01% sampling rate meant capturing a rare erroneous request could take several hours. The new system prioritizes faster dependency analysis over individual request visibility for these scenarios.
The analysis is integrated into YARPC, Uber's RPC framework for Go and Java, through inbound and outbound middleware. This allows for precise dependency correlation by generating request IDs and correlating them across service calls. While Uber's Muttley proxy handles service-to-service requests, it lacked the necessary caller endpoint context, leading to the RPC framework integration.
✨ This summary was generated by AI from the outlets' reporting listed below. It is not independently verified and may contain errors — check the original sources. How BrevFeed works →
One email each morning: the day's tech stories, clustered across outlets and summarized. No account needed.
One email a day. Unsubscribe in one click, any time.
Spend a few minutes, get the whole day. Every topic's top stories in one hands-free rundown — listen, watch, or read the transcript.
▶ Play today's briefNew every morning, and the back catalogue is archived by date.
Uber developed an automated system to map service dependencies and classify failure propagation within its service mesh. This system uses RPC middleware to correlate caller and callee failures, identifying dependencies as fail-close, fail-open, or unknown, which helps engineers quickly diagnose the root cause of request failures in a microservices environment.