This document provides a high-level overview of the gRPC Core architecture. gRPC Core is a library written in C++ that provides a portable and performant implementation of the gRPC protocol.
The gRPC Core is built around a few key concepts:
call directory contains the fundamental data structures for managing a call's lifecycle.transport and ext/transport directories for more information.filter and ext/filters directories for more information.lib/promise directory for more information.lib/event_engine directory for more information.The gRPC Core is organized into the following directories:
call: The heart of the gRPC C++ core, defining the fundamental data structures for an RPC.channelz: A system for inspecting the state of gRPC channels.client_channel: The core implementation of the client-side channel, including name resolution, load balancing, and connectivity.config: Manages static and dynamic configuration of the gRPC Core.credentials: The core implementation of gRPC's credential system.ext: Contains extensions to the gRPC Core, including filters and transports.filter: The fundamental building blocks for the gRPC channel filter mechanism.handshaker: A framework for establishing a secure connection between a client and a server.lib: A collection of libraries that provide common functionality, such as data structures, memory management, and platform-specific code.load_balancing: A flexible and extensible framework for load balancing.plugin_registry: The main entry point for configuring the gRPC Core library.resolver: A pluggable mechanism for resolving a logical name into a list of network addresses.server: The core implementation of the gRPC server.service_config: A mechanism for per-service and per-method configuration of a gRPC channel.telemetry: A system for collecting and reporting metrics about the behavior of gRPC.transport: The core transport abstraction for gRPC.tsi: An abstraction for different transport security mechanisms like TLS and ALTS.util: A collection of utility classes and functions.xds: An implementation of the xDS APIs, which allow a gRPC client or server to discover and configure itself dynamically.