43 lines
1.0 KiB
Markdown
43 lines
1.0 KiB
Markdown
# Architecture: hyper-p2p-histogram-gossip
|
|
|
|
**Category:** measurement-rate-control
|
|
**Protocol:** `histogram-gossip/v1`
|
|
|
|
## Purpose
|
|
|
|
Distributed approximate latency/RTT distributions via gossiped histogram buckets.
|
|
|
|
## Per-metric state
|
|
|
|
```js
|
|
{ min, max, counts: number[], total }
|
|
```
|
|
|
|
## Wire messages
|
|
|
|
| type | fields | behavior |
|
|
|------|--------|----------|
|
|
| `histogram-buckets` | `metric`, `min`, `max`, `counts`, `peer`, `at` | `_mergeBuckets` into local histogram; emit `remote-buckets` |
|
|
|
|
## observe → gossip pipeline
|
|
|
|
```
|
|
_ensure(metric) → update min/max/counts
|
|
→ gossipSend full snapshot counts
|
|
→ stats.observed++
|
|
```
|
|
|
|
## Percentile estimation
|
|
|
|
Walk buckets cumulatively until cumulative count ≥ `ceil(p/100 * total)`; return bucket midpoint.
|
|
|
|
## Composition
|
|
|
|
- Feed SLI checks from `hyper-p2p-sla-budget` using percentile thresholds
|
|
- Pair with `hyper-p2p-percentile-sketch` locally for exact small-sample stats
|
|
|
|
## Limits
|
|
|
|
- Merging unlike bucket counts assumes compatible bucket count length
|
|
- Min/max drift widens bins over time
|