44 lines
3.0 KiB
Markdown
44 lines
3.0 KiB
Markdown
# OC-Discovery — Diagrammes de séquence
|
|
|
|
Tous les fichiers `.mmd` sont au format [Mermaid](https://mermaid.js.org/).
|
|
Rendu possible via VS Code (extension Mermaid Preview), IntelliJ, ou [mermaid.live](https://mermaid.live).
|
|
|
|
## Vue d'ensemble des diagrammes
|
|
|
|
| Fichier | Description |
|
|
|---------|-------------|
|
|
| `01_node_init.mmd` | Initialisation complète d'un Node (libp2p host, GossipSub, indexers, StreamService, PubSubService, NATS) |
|
|
| `02_node_claim.mmd` | Enregistrement du nœud auprès des indexeurs (`claimInfo` + `publishPeerRecord`) |
|
|
| `03_indexer_heartbeat.mmd` | Protocole heartbeat avec calcul du score qualité (bande passante, uptime, diversité) |
|
|
| `04_indexer_publish.mmd` | Publication d'un `PeerRecord` vers l'indexeur → DHT |
|
|
| `05_indexer_get.mmd` | Résolution d'un pair via l'indexeur (`GetPeerRecord` + `handleNodeGet` + DHT) |
|
|
| `06_native_registration.mmd` | Enregistrement d'un indexeur auprès d'un Native Indexer + gossip PubSub |
|
|
| `07_native_get_consensus.mmd` | `ConnectToNatives` : pool d'indexeurs + protocole de consensus (vote majoritaire) |
|
|
| `08_nats_create_resource.mmd` | Handler NATS `CREATE_RESOURCE` : connexion/déconnexion d'un partner |
|
|
| `09_nats_propagation.mmd` | Handler NATS `PROPALGATION_EVENT` : delete, considers, planner, search |
|
|
| `10_pubsub_search.mmd` | Recherche gossip globale (type `"all"`) via GossipSub |
|
|
| `11_stream_search.mmd` | Recherche directe par stream (type `"known"` ou `"partner"`) |
|
|
| `12_partner_heartbeat.mmd` | Heartbeat partner + propagation CRUD vers les partenaires |
|
|
| `13_planner_flow.mmd` | Session planner (ouverture, échange, fermeture) |
|
|
| `14_native_offload_gc.mmd` | Boucles background du Native Indexer (offload, DHT refresh, GC) |
|
|
|
|
## Protocoles libp2p utilisés
|
|
|
|
| Protocole | Description |
|
|
|-----------|-------------|
|
|
| `/opencloud/heartbeat/1.0` | Heartbeat node → indexeur (long-lived) |
|
|
| `/opencloud/heartbeat/indexer/1.0` | Heartbeat indexeur → native (long-lived) |
|
|
| `/opencloud/resource/heartbeat/partner/1.0` | Heartbeat node ↔ partner (long-lived) |
|
|
| `/opencloud/record/publish/1.0` | Publication `PeerRecord` vers indexeur |
|
|
| `/opencloud/record/get/1.0` | Requête `GetPeerRecord` vers indexeur |
|
|
| `/opencloud/native/subscribe/1.0` | Enregistrement indexeur auprès du native |
|
|
| `/opencloud/native/indexers/1.0` | Requête de pool d'indexeurs au native |
|
|
| `/opencloud/native/consensus/1.0` | Validation de pool d'indexeurs (consensus) |
|
|
| `/opencloud/resource/search/1.0` | Recherche de ressources entre peers |
|
|
| `/opencloud/resource/create/1.0` | Propagation création ressource vers partner |
|
|
| `/opencloud/resource/update/1.0` | Propagation mise à jour ressource vers partner |
|
|
| `/opencloud/resource/delete/1.0` | Propagation suppression ressource vers partner |
|
|
| `/opencloud/resource/planner/1.0` | Session planner (booking) |
|
|
| `/opencloud/resource/verify/1.0` | Vérification signature ressource |
|
|
| `/opencloud/resource/considers/1.0` | Transmission d'un "considers" d'exécution |
|