C4 Container
C4 Level 2 — Containers (the layer model)
%% C4 Level 2 — Containers (the layer model)
%% Diagrams as code. Render with any Mermaid renderer.
graph TB
client(["Application"])
subgraph L1["L1 — Access layer (stateless)"]
s3["S3 gateway"]
other["FUSE / WebDAV / SDK"]
end
subgraph L2["L2 — Global control plane (global consensus)"]
ns["Namespace DB<br/>(TiDB / TiKV)"]
place["Placement service"]
reg["Zone registry"]
end
subgraph L3["L3 — Cross-zone replication (off the data path)"]
repl["Replication workers<br/>(NATS JetStream)"]
gcust["Global custodians"]
end
subgraph L4["L4 — Zonal file system (per datacenter)"]
meta["Metadata store<br/>(redb / TiKV)"]
dserv["D servers<br/>(dumb chunk storage)"]
cust["Custodians<br/>(GC / scrub / repair)"]
lib["Client library<br/>(EC, commit) — embedded in L1"]
end
subgraph L5["L5 — Bootstrap & coordination"]
etcd["Coordination<br/>(etcd / in-memory)"]
end
client -->|"request"| s3
s3 -.->|"embeds"| lib
s3 -->|"namespace / placement"| place
place --> ns
place --> reg
lib -->|"metadata commit"| meta
lib -->|"direct fragment writes (bulk data)"| dserv
cust --> meta
cust --> dserv
repl -->|"copy chunks between zones"| dserv
gcust --> ns
s3 -.->|"discovery"| etcd
cust -.->|"leader election, locks"| etcd
dserv -.->|"registration"| etcd