Why architecture matters here
HLC failures come from unbounded clock skew, misunderstanding the guarantees, and confusing HLC with vector clocks. Architecture matters because HLC + NTP + skew bounds compose into external consistency.
The architecture: every piece explained
The top strip is construction. Physical time from NTP. Logical counter per-node. HLC timestamp = (pt, l). Update rule: on send take max(local, current); on receive combine.
The middle row is properties. Monotonicity. Causality. Bounded skew. External consistency requires bounded uncertainty.
The lower rows are practice. Use cases. vs vector clocks. Ops — clock sync + observability.
End-to-end flow
End-to-end: transaction commits with HLC timestamp (1720394890, 5). Sent to replica. Replica updates its HLC to max. Read at HLC picks correct version. Bounded skew keeps HLC within milliseconds of wall time.