Dimensionamento no back-end
Em uma configuração muito simples, uma entrada DNS vai para um IP que pertence a um servidor. Todo mundo em todo o mundo vai para essa única máquina. Com tráfego suficiente, é demais para lidar muito antes de você atingir o tamanho do YouTube. Em um cenário simples, adicionamos um balanceador de carga. A tarefa do balanceador de carga é redirecionar o tráfego para vários servidores de back-end enquanto aparece como um servidor.
Com tantos dados quanto o YouTube, seria demais esperar que todos os servidores pudessem veicular todos os vídeos; portanto, temos outra camada de indireção a acrescentar: sharding . Em um exemplo artificial, um servidor é responsável por tudo que começa com "A", outro possui "B" e assim por diante.
Aproximando a borda
Eventualmente, porém, a largura de banda se torna intensa e você está movendo MUITOS dados para uma sala. Então, agora que somos super populares, saímos da sala. As duas tecnologias importantes aqui são redes de distribuição de conteúdo e Anycasting .
Onde tenho esses grandes arquivos estáticos sendo solicitados em todo o mundo, paro de apontar links diretos para meus servidores de hospedagem. O que eu faço é colocar um link para o meu servidor CDN. Quando alguém pede para ver um vídeo, ele solicita ao meu servidor CDN. A CDN é responsável por já ter o vídeo, solicitar uma cópia do servidor de hospedagem ou me redirecionar. Isso varia de acordo com a arquitetura da rede.
Como esse CDN é útil? Bem, um IP pode realmente pertencer a muitos servidores que estão em muitos lugares em todo o mundo. Quando sua solicitação sai do computador e vai para o ISP, o roteador deles mapeia o melhor caminho (mais curto, mais rápido, menos custo ... qualquer que seja a métrica) para esse IP. Geralmente, para uma CDN, ela estará na ou mais próxima à sua rede de nível 1 .
Então, solicitei um vídeo do YouTube. A máquina em que foi armazenada é pelo menos iad09s12.v12.lscache8.c.youtube.com
e tc.v19.cache5.c.youtube.com
. Aqueles aparecem na fonte da minha página da Web que estou vendo e foram fornecidos por alguma forma de servidor de indexação. Agora, no Maine, achei o servidor tc19 em Miama, Flórida. De Washington, achei o servidor tc19 em San Jose, Califórnia.
Várias técnicas são usadas para sites grandes.
www.youtube.com
-> qualquer número de endereços IPVamos olhar no DNS:
Portanto, o www.youtube.com pode realmente ir para vários endereços IP.
endereços IP anycasted
Um único IP pode ser tratado por qualquer número de sistemas autônomos (uma rede na internet) simultaneamente. Por exemplo, muitos servidores DNS raiz e o
8.8.8.8
servidor DNS do Google são transmitidos em vários pontos do mundo. A ideia é que, se você estiver nos EUA, acessa a rede dos EUA e se estiver no Reino Unido, acessa a rede do Reino Unido.mídia proveniente de servidor diferente
Só porque você está ligado
www.youtube.com
, isso não significa que todo o conteúdo tenha que vir do mesmo servidor. Neste site, os recursos estáticos são servidos emsstatic.net
vez deserverfault.com
.Por exemplo, se assistirmos ao Slave Leia PSA de Kaley Cuoco , descobrimos que a mídia é atendida
v10.lscache5.c.youtube.com
.várias conexões com a internet
Garanto que o YouTube tem mais de uma conexão com a Internet. Não obstante todas as outras técnicas, mesmo que o YouTube realmente fosse um único site e um único servidor, ele poderia, em teoria, ter conexões com todas as outras redes às quais estava veiculando vídeo. No mundo real, isso não é possível, é claro, mas considere a idéia.
Qualquer uma ou todas essas idéias (e mais!) Podem ser usadas para oferecer suporte a uma rede de entrega de conteúdo . Leia esse artigo se quiser saber mais.
fonte
Você está errado ao imaginar que o YouTube (também conhecido como Google) tem apenas um servidor; este inforgraphic pode ajudar a ilustrar a escala do sistema que suporta esse serviço.
Mesmo que você tenha apenas um ponto de presença, você pode absolutamente ter mais de um servidor atrás de um único nome e até IP, usando ferramentas como balanceadores de carga e tudo.
O Google, no entanto, tem muitos pontos de presença e usa ferramentas como AnyCast - uma técnica para publicar o mesmo IP em vários locais da Internet, e encaminhar as pessoas para o pool de servidores mais próximo - para apoiar a infraestrutura.
fonte
Vou tocar um pouco no lado da rede: o Google tem um Ponto de Presença (PoP) em 73 datacenters exclusivos ao redor do mundo (sem incluir os seus). Eles são membros de 69 trocas exclusivas na Internet . O Google está em mais datacenters e pontos de troca na Internet do que em outras redes listadas no peeringdb.
A capacidade total de troca de internet do Google é> 1,5Tbps, e esse 1,5Tbps é reservado para redes com> 100Mbps de tráfego com o Google, mas menos do que eu imagino em torno de 2-3Gbps. Depois de ter 'volume suficiente' , você será movido para o PNI (Private Peering).
Além do emparelhamento do Internet Exchange e do privado (com AS15169), o YouTube também opera uma rede de trânsito: AS43515, e outra rede que eu assumo é para peering / estouro pago, AS36040. O Google também opera servidores de cache global do Google , para que os ISPs sejam implantados ainda mais localmente em suas redes. (Dados de peeringdb, bgp.he.net).
Com base na minha experiência, acredito que o YouTube usa muito mais do que apenas geolocalização IP ou Anycast para escolher um local para veicular vídeos.
O Google administra uma enorme rede global de backbone, eles possuem fibra escura , financiaram cabos submarinos . O volume de tráfego gerado pelo YouTube é enorme! Eu acho que o YouTube tem um volume de tráfego de pico de> 12Tbps. O Google representa pelo menos 7% (e provavelmente> 10%) de todo o tráfego da Internet entre domínios.
Então, para realmente responder à sua pergunta, do ponto de vista da rede, para escalar como o YouTube, você precisa fazer um investimento maciço em sua rede - da fibra no solo ao equipamento WDM e aos roteadores. Você precisa obter o conteúdo e a rede o mais próximo possível dos seus usuários. Isso geralmente significa peering, IXs e talvez um pouco de trânsito. Você precisa informar de maneira inteligente aos usuários de onde obter o conteúdo para manter o tráfego o mais uniformemente distribuído e barato possível. E, é claro, você precisa ter uma infraestrutura de servidor massiva para armazenar, processar, converter e fornecer 4 bilhões de visualizações por dia!
Se você está curioso sobre o lado do servidor, escrevi uma postagem no blog que detalha algumas das imagens do datacenter lançadas recentemente.
fonte
Se você quiser saber mais sobre sistemas de grande escala e as tecnologias que essas empresas usam, a melhor fonte agora é http://highscalability.com
As maiores empresas como Google ou Akamai, sempre possuem componentes que eles mesmos escreveram / criaram. (por exemplo, a Akamai desenvolveu um servidor da web para seus serviços)
fonte