Aller au contenu principal

appcore-control-plane

Paquet publié

Stable 1.0.0 · MSRV Rust 1.89 · crates.io · docs.rs · code source

Guide et exemples maintenus par le crate

Le dépôt Runtime maintient le guide détaillé, exemple débutant et exemple intermédiaire. Le wiki résume la frontière publique ; les détails d’API et d’exécution restent avec le code du crate.

Responsabilité : implémentations génériques présence, heartbeat, discovery et leases.

Dépendances internes : contracts, core, distributed contracts et transport.

API principale : clients in-memory, file et offline; configuration HTTP, retry policy et trait transport ; transports standard one-shot, pooled et bearer ; coordinator et heartbeat policy ; guards leadership global/service ; validation endpoint sûr.

Utilisez PooledHttpTransport pour les appels réutilisables sans authentification. BearerHttpTransport possède aussi un client réutilisable et borné. Conservez StdHttpTransport uniquement lorsque le comportement V1 one-shot avec Connection: close est requis. HttpControlPlaneClient convertit un body encodé une seule fois en SharedHttpControlPlaneRequest et l'emprunte entre les retries bornés. Les transports internes réutilisent la même allocation immuable ; les transports externes existants conservent le fallback owned compatible. Les deux owners de requête omettent les octets du body dans leur sortie Debug.

À utiliser pour coordination distribuée sans payload métier. Le profil file exige locks/storage certifiés. Le distant exige TLS et authentification du déploiement.

Le profil fichier limite l'état et le backup à 16 MiB et rejette tout état malformé ou futur. L'arithmétique d'expiration et d'epoch est vérifiée; l'épuisement de l'epoch échoue fermé au lieu de réutiliser un fencing token.

InMemoryControlPlane utilise par défaut 65 536 inscriptions/slots de lease combinés et un budget estimé de 16 Mio retenus. with_limits peut réduire les deux ; stats expose les octets actuels/de pic, les comptes et les admissions rejetées. Le rejet est atomique, donc un enregistrement existant reste utilisable. L'état fichier conserve la frontière JSON V1 de 16 Mio et limite aussi l'état décodé à 262 144 enregistrements et 64 Mio.

Maturité : contrats et références stables; l'exploitation du service externe appartient au déploiement.