Netflix's Real-Time Graph: gRPC, Async, and Scale

Alps Wang

Alps Wang

Aug 8, 2026 · 1 views

The Quest for Sub-100ms Graph Queries

Netflix's third installment on their Real-Time Distributed Graph (RDG) provides a compelling deep dive into the serving layer's challenges and solutions. The emphasis on asynchronous, breadth-first traversal, and intelligent caching showcases mature engineering practices for handling massive, dynamic graph data at scale. The clear articulation of trade-offs, such as memory usage versus latency in breadth-first search, and the fail-open enrichment strategy, demonstrates a pragmatic approach to building a robust system. The detailed explanation of how adjacency lists are streamed rather than fetched as monolithic blocks is particularly insightful for anyone dealing with large fan-outs.

However, while the article brilliantly explains how they achieved their goals, it could benefit from more explicit discussion on the why behind certain architectural choices beyond the immediate latency and scale concerns. For instance, the decision to opt for eventual consistency is justified by the nature of their queries, but a more concrete discussion on the potential impact of even minor inconsistencies on downstream applications, and the mechanisms in place to mitigate such risks, would add further value. Additionally, while gRPC is mentioned as the communication protocol, a deeper dive into its specific advantages in this context (e.g., performance, streaming capabilities beyond what's described for adjacency lists) beyond its standard adoption would be beneficial for readers considering similar technologies. The article assumes a high level of familiarity with distributed systems concepts, which, while appropriate for the target audience, might present a slight barrier to entry for those less experienced in this domain.

Key Points

  • Netflix built a Real-Time Distributed Graph (RDG) serving layer to answer complex queries on billions of nodes and edges with sub-100ms latency.
  • The serving layer employs a breadth-first traversal strategy to balance shallow-wide and deep-narrow queries, optimizing for parallel execution.
  • Asynchronous composition is fundamental, using small thread pools to handle thousands of concurrent requests by avoiding I/O blocking.
  • Selective caching, tuned to data volatility and access patterns, achieves high hit rates on stable data.
  • Enrichments are opt-in and fail-open to maintain query performance and availability.
  • The architecture comprises a Graph Query Service, Storage Abstraction Layer, and Enrichment Layer, orchestrating gRPC requests.
  • Adjacency lists are streamed in batches to manage large fan-outs and apply filters efficiently.
  • Query interpretation upfront prevents over-fetching from the storage layer by defining clear execution plans.

Article Image


📖 Source: How and Why Netflix Built a Real-Time Distributed Graph: Part 3 — Querying the graph with gRPC…

Related Articles

Comments (0)

No comments yet. Be the first to comment!