appcore-control-plane
Estável 1.0.0 · MSRV Rust 1.89 · crates.io · docs.rs · código-fonte
Guia e exemplos mantidos pelo crate
O repositório do Runtime mantém o guia detalhado, exemplo básico e exemplo intermediário. O wiki resume a fronteira pública; detalhes de API e execução ficam junto ao código do crate.
Responsabilidade: implementações genéricas de presença, heartbeat, discovery e leases.
Dependências internas: contracts, core, distributed contracts e transport.
API principal: clients in-memory, file e offline; configuração HTTP, retry policy e transport trait; transports one-shot standard, pooled e bearer; coordinator e heartbeat policy; guards de liderança global/serviço; validação de endpoint seguro.
Use PooledHttpTransport para chamadas reutilizáveis sem autenticação.
BearerHttpTransport também possui um cliente reutilizável e limitado.
Mantenha StdHttpTransport somente onde o comportamento V1 one-shot com
Connection: close for necessário.
HttpControlPlaneClient converte um body codificado uma vez em
SharedHttpControlPlaneRequest e o empresta entre retries limitados. Os
transports internos reutilizam a mesma alocação imutável; transports externos
existentes mantêm o fallback owned compatível. Os dois owners de request omitem
os bytes do body no Debug.
Use para coordenação distribuída sem payload de negócio. Perfil file exige locks/storage certificados. Perfil remoto exige TLS e autenticação do deployment.
O perfil file limita estado e backup a 16 MiB e rejeita estado malformado ou futuro. A aritmética de expiração e epoch é verificada; o esgotamento do epoch falha fechado em vez de reutilizar um fencing token.
InMemoryControlPlane usa por padrão 65.536 registros/slots de lease combinados
e orçamento estimado de 16 MiB retidos. with_limits pode reduzir ambos;
stats expõe bytes atuais/de pico, contagens e admissões rejeitadas. A rejeição
é atômica, então um registro existente continua utilizável. O estado em arquivo
preserva a fronteira JSON V1 de 16 MiB e também limita o estado decodificado a
262.144 registros e 64 MiB.
Maturidade: contratos e referências estáveis; operação do serviço externo pertence ao deployment.