2.2 KiB
Source tree layout
Below you will find a brief overview of each subdir in the source tree in alphabetical order.
/control_plane:
Local control plane. Functions to start, configure and stop pageserver and postgres instances running as a local processes. Intended to be used in integration tests and in CLI tools for local installations.
/docs:
Documentaion of the Zenith features and concepts. Now it is mostly dev documentation.
/monitoring:
TODO
/pageserver:
Zenith storage service. The pageserver has a few different duties:
- Store and manage the data.
- Generate a tarball with files needed to bootstrap ComputeNode.
- Respond to GetPage@LSN requests from the Compute Nodes.
- Receive WAL from the WAL service and decode it.
- Replay WAL that's applicable to the chunks that the Page Server maintains
For more detailed info, see /pageserver/README
/postgres_ffi:
Utility functions for interacting with PostgreSQL file formats. Misc constants, copied from PostgreSQL headers.
/proxy:
Postgres protocol proxy/router. This service listens psql port, can check auth via external service and create new databases and accounts (control plane API in our case).
/test_runner:
Integration tests, written in Python using the pytest framework.
/vendor/postgres:
PostgreSQL source tree, with the modifications needed for Zenith.
/vendor/postgres/contrib/zenith:
PostgreSQL extension that implements storage manager API and network communications with remote page server.
/vendor/postgres/contrib/zenith_test_utils:
PostgreSQL extension that contains functions needed for testing and debugging.
/walkeeper:
The zenith WAL service that receives WAL from a primary compute nodes and streams it to the pageserver. It acts as a holding area and redistribution center for recently generated WAL.
For more detailed info, see /walkeeper/README
/workspace_hack:
The workspace_hack crate exists only to pin down some dependencies.
/zenith
Main entry point for the 'zenith' CLI utility. TODO: Doesn't it belong to control_plane?
/zenith_metrics:
Helpers for exposing Prometheus metrics from the server.
/zenith_utils:
Helpers that are shared between other crates in this repository.