Pergunta

Ao ler sobre estruturas (.net. Ruby on rails, django, mola, etc.), eu continuo vendo assim e assim faz ou não escala bem.

O que significa quando alguém diz que um quadro "escalas bem" e o que significa dizer que um quadro "não escala bem"?

Obrigado.

Foi útil?

Solução

Quando você traçar algum uso de recursos (memória, tempo, espaço em disco, largura de banda de rede) contra usuários simultâneos, você tem uma função que descreve como o aplicativo funciona em diferentes fatores de escala.

pequena escala - alguns usuários -. Usa alguns recursos

grande escala - um grande número de usuários -. Utiliza um grande número de recursos

A questão crítica é "quão perto linear é a escala?" Se ele é escalado linearmente, em seguida, servindo 2.000 usuários simultâneos custa 2 vezes mais do que servindo 1.000 usuários e 4 vezes mais do que servir 500 usuários. Esta é uma ferramenta / framework / idioma / plataforma / os que escalas bem. É previsível, e a previsão é linear.

Se ele não escala linearmente, em seguida, servindo 4.000 usuários custa 1.000 vezes mais do que servindo 2.000 usuários que custam 100 vezes servindo 500 usuários. Isso não escala bem. Algo deu errado como o uso subiu; não parece previsível e não é linear.

Outras dicas

Isso significa que uma estrutura particular faz (ou não) atender ao aumento da demanda que mais usuários colocar sobre ele. Se você tiver um aplicativo escrito em VBScript, pode não fazer um bom trabalho de lidar com os usuários do Facebook 40.000.000, por exemplo.

Este post explica algumas das dores de escalabilidade Twitter experimentou um ano ou mais atrás. Poderia fornecer mais alguns insights sobre a resposta à sua pergunta.

Às vezes a falta de escalabilidade é usado para denegrir uma linguagem ou estrutura, por isso esteja atento para isso. Atenha-se estudos que mostram métricas reais. Isto aplica-se ao meu exemplo VBScript no parágrafo anterior também.

Se um quadro ou um aplicativo escamas bem, isso significa que ele pode lidar com cargas maiores. Conforme o site torna-se mais popular com mais visitantes e mais hits por dia, um quadro que escalas bem irá lidar com a maior carga o mesmo que ele lida com uma carga menor. Um quadro que escalas bem vai agir da mesma quando recebe 200.000 atinge uma hora como faz quando fica 1 hit de uma hora. Não só atinge, mas que está sendo implantado em vários servidores, possivelmente atrás de balanceamento de carga, possivelmente com vários servidores de banco de dados diferentes. Um quadro que escalas bem pode lidar com essas demandas crescentes bem.

Por exemplo, twitter explodiu quase de noite no ano passado. Ele foi desenvolvido usando Ruby on Rails, e foi calorosamente destaque no debate em curso sobre se Rails escalas bem ou não.

substituir a frase "expansão alça" para "escala"

Há alguns elementos a ele em minha mente. A primeira é a mais óbvia - de aumento da performance. a sua estrutura pode ser usada para construir capacidade de hight, sistema de alto rendimento ou pode apenas ser usado para construir aplicações menores. Vai escala verticalmente em hardware (bibliotecas paralelas, por exemplo) e que vai escala horizontal (fazendas web, por exemplo).

O segundo é ele pode escalar para equipes maiores ou a empresa. Ou seja, ele funciona bem com grandes bases de código? equipes grandes de desenvolvimento? Será que ela tem um bom suporte ferramenta? Como é fácil de implementar? você pode rolar para dezenas ou centenas ou mesmo milhares de usuários? Todo o caminho para baixo é mais fácil contratar pessoas que têm esta habilidade. Pense tentando montar uma equipe de desenvolvimento de 20 ou 50 pessoas que todos os trabalhos sobre este quadro. Seria fácil ou quase impossível?

IMHO, dizendo que um quadro "escalas bem" normalmente significa que alguém na cadeia boatos foi capaz de usá-lo para lidar com lotes de volume.

Em escalabilidade programação paralela é geralmente usado para descrever como um algoritmo executa como é paralelizado. Um algoritmo que tem uma 1: aumento de velocidade 1 é uma besta rara, mas vai dobrar em desempenho em duas vezes o hardware / cpu, agudos em três vezes o hardware / CPU, etc ...

Em minha experiência praticamente qualquer estrutura pode ser feita para escala dado conhecimento suficiente.

O mais fácil o enquadramento é usar o maior a chance de que um desenvolvedor com experiência insuficiente vai correr em problemas de escalabilidade.

Isso significa que alguma empresa respeitada está fazendo algo sério com ele e não está tendo nenhum problema com ele.

Escala meios como é fácil para satisfazer mais demanda usando mais hardware.

Exemplo: Você tem um site escrito em alguma linguagem que recebe 1000 visitas por dia. Você se destaque em alguns magazin proeminente e seu número de usuários cresce. De repente, você tem 1000000 visitas por dia, isso é 1000 vezes mais. Se você pode apenas usar mais de 1000 servidores para satisfazer a necessidade adulta de recursos, suas escalas site bem. Se, por outro lado, você adicionar servidores 2000, mas ainda os usuários não podem se conectar, porque seu banco de dados só pode lidar com 1000 pedidos por dia, do que o seu site não escala bem.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top