Você pode conferir o link para ver algumas coisas bem interessantes sobre esse assunto.
Estou tentando criar um aplicativo da Web semelhante ao Youtube (não é uma desculpa), mas acho que não sei como o vídeo é veiculado na Internet muito bem.
Eu sei como construir aplicações web baseadas em banco de dados, mas nada como a escalabilidade do Youtube. Todos os aplicativos criados anteriormente foram executados em um servidor com os arquivos armazenados na mesma caixa do servidor da Web.
Como se dissocia o servidor de aplicativos do armazenamento de arquivos do servidor de mídia? Eu gostaria mais ou menos quatro máquinas (clusters de máquinas):
Como faço para juntar tudo isso? Quais tecnologias devo alavancar? Onde eu vou aprender mais sobre como arquitetar isso?
Como funciona o material flash embutido do Youtube? Quero incorporar meu flash player em outros sites e vinculá-lo à minha arquitetura.
Observação: examinei: link
Mas eu ainda não entendi como essa coisa se liga. Se alguém pode explicar em termos de alto nível como funciona tudo isso?
Existem servidores clientes dedicados rodando internamente para misturar tudo isso entre os servidores de aplicativos, armazenamento de arquivos, etc. É tudo via HTTP usando JSON, o que está acontecendo aqui!
Obrigado!
Você pode conferir o link para ver algumas coisas bem interessantes sobre esse assunto.
How does one decouple the application server from the file storage from the media server?
Você usa um sistema de arquivos de cluster como o OCFS2: link
Armazenamento SAN, OCFS2, cada servidor de aplicativos monta o sistema de arquivos compartilhado por meio do iSCSI.
Uma solução mais exótica é o MogileFS, usado pelo LiveJournal: link
Felicidades
Bem, como tudo se encaixa é, no entanto, você quer se encaixar realmente. Há tantas opções sobre como arquitetar um sistema do tipo que você está descrevendo, o que realmente depende é o aplicativo específico, o que você está confortável e o quanto ele realmente precisa dimensionar.
O melhor que você pode realmente fazer é dar uma olhada em todos os diferentes softwares em uso para sites altamente escaláveis, e ler tutoriais, documentação e olhar para implementações reais, se você for capaz. Dê uma olhada no software de mensagens como o ZeroMQ ou outro software baseado no AMQP. Observe os armazenamentos de dados escalonáveis que não exigem fragmentação manual e normalização de bancos de dados. Há tantas coisas sobre as quais você pode ler que lhe darão uma ideia de como tudo realmente se encaixa, e você pode ter uma boa visão panorâmica de todo um sistema.
Tags architecture web web-services