Real World Architecture [fechado]

1

Eu estou meio confuso sobre a forma como os aplicativos da web do mundo real são arquitetados e ficaria feliz em obter alguns esclarecimentos. Eu sei que existem muitos métodos e abordagens diferentes, mas um exemplo de um site bem conhecido como o Facebook / Amazon / Youtube seria suficiente. Vamos dizer que estou servindo conteúdo da web. Eu estou supondo que eu vou ter um cluster de servidores web e um cluster de DBs, um balanceador de carga na frente deles.

Minhas perguntas são:

  1. Como você armazena o código http? é armazenado localmente em cada máquina ou em um armazenamento compartilhado? Se localmente, como faço para atualizar o código se o site mudar

  2. O mesmo vale para o conteúdo estático, supondo que ele esteja em um armazenamento compartilhado

  3. Se eu estou usando um CDN, ele simplesmente armazena em cache todos os dados acessados estáticos? e por quanto tempo?

  4. LBs - posso ter um cluster de LBs? se sim, como funciona?

  5. Qual DB você escolheria para o youtube / streaming como o site? e por que

Eu sei que são muitas perguntas, mas eu agradeceria se conseguisse respostas para todos. Obrigado!

    
por John Doe 15.06.2018 / 10:11

1 resposta

3

How do you store the http code? is it stored locally on each machine or on a shared storage? If locally , how do I update the code if the web site changes

Existem várias maneiras de armazenar o código no armazenamento compartilhado, como uma montagem NFS / S3 - facilitando a atualização central, obviamente, você introduz um ponto único de falha, de modo que as pessoas geralmente têm dois cópias do código em armazenamento diferente, para que eles possam perder apenas metade de seus nós - e você pode usá-lo também para testes / implantações em azul / verde. Outra opção seria armazená-lo em um sistema de arquivos distribuído, como o Ceph ou similar, com as mesmas advertências.

Same goes for static content , I'm assuming it resides on a shared storage

Geralmente, isso é verdade, muitas pessoas usam armazenamento baseado em nuvem para conteúdo estático, pois geralmente ele está "próximo", do ponto de vista da rede, até seus CDNs, é raro ver conteúdo armazenado em servidores Web diretamente nos dias de hoje .

If I'm using a CDN , does it simply cache all static accessed data? and for how long ?

Isso é certamente a funcionalidade básica, eles geralmente podem fazer muito mais do que isso e o TTL é quase sempre configurável em uma base de objeto / arquivo individual.

LBs - How can it see if a machine is overloaded (load avg) if at all ?

Várias formas diferentes, conexões abertas, tempos de resposta, estatísticas de utilização de recursos compartilhados - LBs podem ser muito 'sintonizáveis', eu tenho uma enorme quantidade de respeito por bons gerentes de LB.

LBs - can I have a cluster of LBs? if so how does it work ?

Sim, literalmente camadas deles e da maneira que você quiser - como exemplo, usamos LB'ing Global para enviar tráfego para um datacenter específico com base em vários fatores e, depois de acessá-lo, ele é dividido em diferentes grupos de serviços (verde / azul, por exemplo) e, em seguida, para o serviço real-LBs.

What DB would you pick for youtube/streaming like site? and why

Não há um melhor na classe DB desculpe - há muitos fatores, o custo é grande (minha palavra MSSQL e Oracle podem ficar super gastas nos dias de hoje!), mas a principal coisa a considerar é se seu DB PRECISA referencial-integridade como se fosse, então você precisa de um banco de dados baseado em SQL (existem os gratuitos, MySQL e PostGRES são muito populares), mas se você pode projetar seus dados corretamente então você pode se safar com 'NoSQL 'bancos de dados como o Couchbase / Mongo / Cassandra e eles absolutamente FLY , muito mais rápidos que o SQL para consultas básicas - mas obviamente eles são menos ricos em recursos. A outra coisa é que você pode fazer seu banco de dados funcionar inteiramente na nuvem agora - a AWS em particular tem um strong portfólio de tipos de banco de dados e o Azure obviamente tem o MSSQL como parte de seu portfólio.

    
por 15.06.2018 / 10:29