Pass + Doc
This commit is contained in:
47
docs/diagrams/03_indexer_heartbeat.mmd
Normal file
47
docs/diagrams/03_indexer_heartbeat.mmd
Normal file
@@ -0,0 +1,47 @@
|
||||
sequenceDiagram
|
||||
title Indexer — Heartbeat double (Pair A + Pair B → Indexer partagé)
|
||||
|
||||
participant NodeA as Node A
|
||||
participant NodeB as Node B
|
||||
participant Indexer as IndexerService (partagé)
|
||||
|
||||
Note over NodeA,NodeB: Chaque pair tick toutes les 20s
|
||||
|
||||
par Pair A heartbeat
|
||||
NodeA->>Indexer: NewStream /opencloud/heartbeat/1.0
|
||||
NodeA->>Indexer: json.Encode(Heartbeat A {Name, DID_A, PeerID_A, IndexersBinded})
|
||||
|
||||
Indexer->>Indexer: CheckHeartbeat(host, stream, streams, mu, maxNodes)
|
||||
Note over Indexer: len(peers) < maxNodes ?
|
||||
|
||||
Indexer->>Indexer: getBandwidthChallenge(512–2048 bytes, stream)
|
||||
Indexer->>NodeA: Write(random payload)
|
||||
NodeA->>Indexer: Echo(same payload)
|
||||
Indexer->>Indexer: Mesure round-trip → Mbps A
|
||||
|
||||
Indexer->>Indexer: getDiversityRate(host, IndexersBinded_A)
|
||||
Note over Indexer: /24 subnet diversity des indexeurs liés
|
||||
|
||||
Indexer->>Indexer: ComputeIndexerScore(uptimeA%, MbpsA%, diversityA%)
|
||||
Note over Indexer: Score = 0.4×uptime + 0.4×bpms + 0.2×diversity
|
||||
|
||||
alt Score A < 75
|
||||
Indexer->>NodeA: (close stream)
|
||||
else Score A ≥ 75
|
||||
Indexer->>Indexer: StreamRecord[PeerID_A] = {DID_A, Heartbeat, UptimeTracker}
|
||||
end
|
||||
and Pair B heartbeat
|
||||
NodeB->>Indexer: NewStream /opencloud/heartbeat/1.0
|
||||
NodeB->>Indexer: json.Encode(Heartbeat B {Name, DID_B, PeerID_B, IndexersBinded})
|
||||
|
||||
Indexer->>Indexer: CheckHeartbeat → getBandwidthChallenge
|
||||
Indexer->>NodeB: Write(random payload)
|
||||
NodeB->>Indexer: Echo(same payload)
|
||||
Indexer->>Indexer: ComputeIndexerScore(uptimeB%, MbpsB%, diversityB%)
|
||||
|
||||
alt Score B ≥ 75
|
||||
Indexer->>Indexer: StreamRecord[PeerID_B] = {DID_B, Heartbeat, UptimeTracker}
|
||||
end
|
||||
end
|
||||
|
||||
Note over Indexer: Les deux pairs sont désormais<br/>enregistrés avec leurs streams actifs
|
||||
Reference in New Issue
Block a user