Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Construtor de API de Dados há muito suportava o cache na memória () de Nível 1 (L1) e cabeçalhos de solicitação HTTP relacionados ao cache, como no-store, no-cachee only-if-cached para influenciar o comportamento do cache.
O cache de nível 2 (L2) estende o cache além do processo local adicionando uma camada de cache distribuída. Com L2, os resultados armazenados em cache podem ser reutilizados em várias instâncias do DAB e podem sobreviver a reinicializações de contêiner individuais, o que faz com que as implantações sem estado se sintam menos apáridas de todas as maneiras certas.
Benefícios do cache de nível 2
Use o cache de nível 2 quando quiser:
- Compartilhar resultados armazenados em cache em instâncias do DAB em expansão
- Reduzir viagens de ida e volta do banco de dados para leituras repetidas
- Manter os contêineres sem estado aquecidos após reciclar ou reimplantar
- Melhorar o desempenho de cargas de trabalho de leitura pesada
- Participação em cache de namespace com partições
Definir configurações de cache de runtime
O cache de nível 2 é configurado globalmente em runtime.cache. O bloco de cache de runtime habilita o cache, define o TTL (tempo de vida padrão) e configura o provedor de cache distribuído.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Propriedades de runtime
| Propriedade | Descrição |
|---|---|
enabled |
Habilita o suporte ao cache globalmente. |
ttl-seconds |
Define o tempo de vida útil do cache padrão em segundos. |
level-2.enabled |
Ativa a camada de cache distribuída. |
level-2.provider |
Seleciona o provedor de cache distribuído. Atualmente redis , há suporte. |
level-2.connection-string |
Cadeia de conexão para a instância do Redis. |
level-2.partition |
Namespace opcional para chaves Redis e o canal de backplane. Somente os contêineres que usam a mesma partição compartilham o mesmo espaço de cache distribuído. |
Configurar o comportamento de cache específico da entidade
As entidades podem substituir o comportamento do cache global. Use o bloco de entidade cache para habilitar o cache, definir um TTL personalizado e escolher o nível de cache.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
A propriedade cache.level
Use cache.level para controlar quais camadas de cache uma entidade usa.
| Valor | Descrição |
|---|---|
L1 |
Somente cache na memória. Rápido e local para o processo atual do DAB. |
L1L2 |
Na memória mais cache distribuído. Esse nível é o padrão para entidades armazenadas em cache. |
Se L2 não estiver habilitada globalmente, uma entidade configurada com L1L2 se comporta como L1.
Como L1L2 funciona
Dica
TL; DRL1L2 = Solicitação → L1 → L2 → banco de dados → L2 → L1 → Resposta
Por padrão, uma entidade com cache habilitado usa o nível L1L2.
-
L1é o cache por processo na memória. -
L2é a camada de cache distribuída, atualmente Redis, além de um backplane para coerência entre instâncias.
Primeiro, uma pesquisa de cache com L1L2 verifica L1. Em um L1 erro, ele verifica L2 se o cache de nível 2 está habilitado e configurado globalmente. Se a entrada não for encontrada em nenhuma das camadas, o DAB executará a consulta de banco de dados. Em seguida, o resultado é armazenado em ambos L1 e L2.
Isso significa que:
- Solicitações futuras na mesma instância são atendidas do local
L1 - Solicitações em outras instâncias podem ler
L2e promover a entrada em suas própriasL1 - Se um contêiner for reiniciado, um
L1erro seguido de umL2hit ainda poderá evitar uma viagem de ida e volta do banco de dados
Essa combinação oferece um cache distribuído quente em instâncias escalonadas ou recicladas.
Suporte ao Redis
O Redis é o provedor atual para o cache de nível 2. Ele é adequado para esse cenário porque dá suporte a:
- Acesso compartilhado em várias instâncias do DAB
- Expiração de chave para cache baseado em TTL
- Leituras e gravações rápidas para cargas de trabalho de alta taxa de transferência
- Coordenação de backplane entre instâncias
Espaços de cache particionados
Use a configuração opcional partition para isolar a atividade de cache distribuído. O DAB usa o valor da partição para namespace de chaves Redis e o canal de backplane. Somente os contêineres que compartilham a mesma partição participam do mesmo espaço de cache distribuído.
Essa configuração é útil quando você deseja:
- Separar o tráfego de produção e não produção
- Isolar locatários ou ambientes
- Impedir que serviços não relacionados compartilhem entradas armazenadas em cache