rust/personhog-leader/README.md
---
title: PersonHog Leader Cluster
---
graph TB
subgraph P[Leader Pod]
C1[vNode Cache]
end
P -->|produce merged state| K[(Kafka person_state topic)]
K -.->|"consume from O_pg_writer (cache warm)"| P
K -->|consume + batch| PGW[Postgres Writer Service]
PGW -->|idempotent upsert| PG[(PostgreSQL)]
TBD:
TBD
graph TB
C[Client] -->|"UPDATE /persons/<id>"| R
subgraph R[Router]
direction TB
PARSE[Parse request] --> DECIDE{Consistent Read/Write?}
DECIDE -->|"Yes"| HASH["Hash person_id → vnode"]
HASH --> WATCH["Lookup vnode → pod(from metadata store cache)"]
end
WATCH -->|"handoff"| MS[(Metadata Store)]
MS -->|"vnode assignments"| LOOKUP
LOOKUP --> POD
subgraph POD[PersonHog Leader BE]
direction TB
VALIDATE[Validate ownership] --> COMPUTE[Compute write]
COMPUTE --> CACHE[Update in-memory cache]
CACHE --> KAFKA[Durably store to Kafka]
end
KAFKA --> ACK[Ack to client]