O que é um servidor de borda de CDN?
Um servidor de borda de CDN é um nó de uma rede distribuída que entrega conteúdo em cache ou via proxy relativamente próximo de quem faz a requisição. Ele também pode aplicar políticas de roteamento, acesso ou transformação na borda.
Como funcionam os servidores de borda de CDN
Um servidor de borda é o ponto de atendimento de requisições selecionado entre os pontos de presença distribuídos de uma CDN para um cliente e um momento específicos. Ele termina a conexão, avalia a configuração de borda, verifica o estado do cache local ou hierárquico e responde ou contata uma camada superior. Como o roteamento e os objetos em cache são específicos de cada localidade, URLs idênticas podem apresentar latência, idade ou comportamento em caso de falha diferentes entre regiões.
Informações essenciais
- O nó de borda que atende uma requisição é determinado pelo roteamento, não pela distância em um mapa. O Amazon CloudFront usa DNS para direcionar o usuário ao ponto de presença que pode atender melhor à requisição, normalmente o mais próximo em termos de latência. A Cloudflare responde às consultas DNS com um endereço anycast, e, com anycast, o sistema de roteamento da Internet escolhe o nó com base na topologia da rede e no ponto em que a requisição entra na rede. A seleção baseada em DNS normalmente vê o endereço do resolvedor recursivo do usuário, que, conforme observado na RFC 7871, pode estar longe do usuário quando um resolvedor centralizado é usado. Assim, uma requisição pode chegar a uma cidade ou país diferente do esperado, e dois usuários no mesmo lugar, em redes diferentes, podem alcançar nós de borda diferentes.
- Uma ausência no cache de borda nem sempre significa uma requisição à origem. Os pontos de presença de borda do CloudFront normalmente consultam um cache regional de borda antes da origem, e o Origin Shield acrescenta outra camada; o cache em camadas da Cloudflare permite que apenas os data centers das camadas superiores contatem a origem; a proteção da origem da Fastly concentra as requisições em um ponto de presença designado para essa proteção. O uso dessas camadas é condicional. O Origin Shield, o cache em camadas e a proteção da origem precisam ser habilitados. O CloudFront encaminha requisições dinâmicas e métodos como
POSTsem passar pelos caches regionais de borda, embora a AWS descreva o Origin Shield habilitado como ainda presente no caminho das requisições dinâmicas. A Cloudflare aplica o cache em camadas somente às requisições elegíveis para armazenamento em cache no momento da requisição. Para uma requisição que passa por uma camada superior, a origem vê essa camada, e não o nó de borda alcançado pelo usuário, de modo que os logs da origem, por si só, não mostram qual nó de borda atendeu ao usuário. Na Cloudflare, por exemplo, o valor deCf-Rayenviado à origem nesse caso identifica o data center que se conectou à origem. - Os cabeçalhos de resposta e os logs podem mostrar qual nó de borda respondeu e se houve um acerto no cache, mas os nomes dependem do provedor. O cabeçalho de resposta
Cf-Rayda Cloudflare termina com um código de data center de três letras, eCF-Cache-Statusinforma o resultado da consulta ao cache. Na Fastly,X-Served-Byidentifica os servidores de cache, eX-CacheinformaHITouMISS. Com a proteção da origem habilitada, a resposta normalmente lista duas entradas, primeiro a da camada de proteção e depois a do nó de borda que atende ao usuário, e, quando há um acerto no cache de borda, a entrada da camada de proteção corresponde ao momento em que o objeto foi armazenado em cache pela primeira vez, não à requisição atual. Os logs do CloudFront registramx-edge-locationex-edge-result-type, e seu cabeçalho de resposta opcionalServer-Timingcontémcdn-pope um resultado da consulta ao cache:cdn-cache-hit,cdn-cache-missoucdn-cache-refresh(uma cópia em cache entregue depois que o CloudFront verificou com a origem que ela ainda é válida). Os significados também variam: a Fastly informa uma passagem sem uso do cache comoMISS, e a Cloudflare observa que, com o cache em camadas, o valor deAgede um acerto no cache local pode ser herdado de uma camada superior. A RFC 9211 define um cabeçalho comum,Cache-Status, para essa finalidade, mas cada cache decide se o envia, portanto normalize os dados por provedor antes de compará-los. - Cada ponto de presença tem seu próprio conteúdo em cache e, por algum tempo após uma alteração, possivelmente sua própria configuração. Um objeto é adicionado ao cache do ponto de presença que atendeu à requisição, e um ponto de presença pode remover objetos menos populares antes de outro. A validade é independente da configuração: o armazenamento em cache HTTP permite que um cache responda com uma cópia armazenada ainda dentro do prazo de validade sem contatar a origem, de modo que, depois que um arquivo muda na origem, um ponto de presença pode continuar entregando a cópia antiga até que ela expire ou seja invalidada, e o conteúdo dos caches não precisa ser igual entre os pontos de presença. Após uma atualização de configuração, o CloudFront informa que as alterações não chegam a todos os pontos de presença de borda ao mesmo tempo e que, durante a propagação, não é possível determinar se um ponto de presença específico está usando a configuração anterior ou a nova. Portanto, um teste em um ponto de presença não mostra o que outro entrega.
Quando os servidores de borda de CDN são importantes
Inspecione o comportamento dos nós de borda quando usuários de uma região enfrentarem latência, ausências no cache ou respostas inconsistentes. Os resultados podem diferir entre pontos de presença porque o roteamento, o estado do cache e a propagação da configuração variam.
Como a Transloadit ajuda com os servidores de borda de CDN
O Smart CDN da Transloadit entrega resultados em cache a partir de pontos de presença de borda por meio do Robot /tlcdn/deliver, usado implicitamente nas requisições ao domínio tlcdn.com. Quando há um acerto no cache, o nó de borda responde sem executar o Template; quando não há resultado no cache, a Assembly do Template é executada primeiro, de modo que a primeira requisição a uma URL sem resultado em cache inclui o tempo de busca do arquivo de origem e de processamento.
As páginas vinculadas não listam os pontos de presença de borda nem nomeiam os cabeçalhos de resposta que identificam o nó de borda que atende à requisição ou o status de seu cache.
Fontes
- Amazon CloudFront: como o CloudFront entrega conteúdo (pontos de presença de borda e caches regionais de borda)
- Amazon CloudFront: usar o Amazon CloudFront Origin Shield
- Amazon CloudFront: referência de logs padrão (x-edge-location, x-edge-result-type)
- Amazon CloudFront: entender as políticas de cabeçalhos de resposta (cabeçalho Server-Timing)
- Amazon CloudFront: atualizar uma distribuição (propagação para pontos de presença de borda)
- Cloudflare: Tiered Cache
- Cloudflare: cabeçalhos HTTP (Cf-Ray e códigos de data center)
- Cloudflare: respostas do cache (valores de CF-Cache-Status e o cabeçalho Age)
- Fastly: proteção da origem
- Fastly: verificar o cache (X-Served-By e X-Cache)
- Fastly: referência do cabeçalho X-Cache
- RFC 4786: operação de serviços anycast
- RFC 7871: sub-rede do cliente em consultas DNS
- RFC 9111: armazenamento em cache HTTP (seção 4.2, validade)
- RFC 9211: o campo de cabeçalho de resposta HTTP Cache-Status