Pular para o conteúdo principal

appcore-ops

Pacote publicado

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: health, logs, metrics, observations, heartbeat e availability sem dependência de vendor.

Dependências internas: appcore-core, appcore-supervisor.

API principal: health status/report/checks, heartbeat sources, loggers, metric counters, ObservationEvent/ObservationSink, file sink limitado, availability report e reexports de compatibilidade para appcore-supervisor::managed_services.

O sink de observações local ao processo retém no máximo 65.536 eventos e 16 MiB; o registro de métricas retém no máximo 4.096 nomes, 128 bytes por nome e 1 MiB agregado. Ambos expõem pressão de quantidade/bytes e snapshots imutáveis compartilhados, preservando as APIs de snapshot owned. Observações grandes demais não são retidas, mas continuam chegando aos no máximo 32 drains configurados. O logger em memória também retém no máximo 4.096 registros e 8 MiB e expõe shared_records. A beta atual do Runtime guarda a configuração de drains como uma geração imutável copy-on-write. Cada observação compartilha um ponteiro da geração, em vez de clonar até 32 handles de drain, e os callbacks continuam executando após liberar o lock de configuração. SharedObservationEvent::new aplica redaction e limites de campos uma única vez. O hub em memória encaminha esse payload imutável por ObservationSink::emit_shared; os sinks internos de memória, arquivo e métricas evitam cópias profundas, enquanto implementações existentes que aceitam apenas ownership usam automaticamente o default compatível. Nomes de atributos sensíveis são verificados por uma varredura de bytes ASCII case-insensitive sem alocação. A política conservadora de substrings permanece igual, sem alocar uma String em minúsculas para cada atributo.

Na beta atual do Runtime, FileObservationSink::flush usa um único deadline de 30 segundos para admission na fila limitada e acknowledgement durável do worker. flush_timeout aceita um prazo positivo menor. Fila cheia ou worker travado retorna TimedOut; um flush já enfileirado pode terminar com segurança depois do deadline do caller.

Use para sinais operacionais genéricos. Código novo de lifecycle usa appcore-supervisor diretamente. Não adicione SDK de vendor nem métricas de negócio da aplicação ao crate.

Maturidade: primitives estáveis; export/collection de produção pertence ao deployment.