Estimativa aproximada rápida: capacidade do sistema e requisitos de desempenho

Este artigo foi publicado pela primeira vez na conta oficial: Mais AI (power_ai), bem-vindo para prestar atenção, programação e produtos secos AI serão entregues a tempo!

O título original é "Estimativa do verso do envelope", a tradução literal é o significado da estimativa do verso do envelope, "Estimativa do verso do envelope" é uma frase usada para descrever cálculos aproximados ou rápidos , geralmente feito no verso de um envelope ou em qualquer papel disponível. É um método de fazer estimativas grosseiras ou aproximações sem análises detalhadas ou cálculos complexos.
O objetivo de uma estimativa no verso do envelope é fornecer um valor aproximado ou uma ideia do tamanho ou viabilidade de um conceito sem investir muito tempo ou recursos em cálculos precisos. Ele pode ser usado para avaliar a viabilidade de uma ideia, avaliar o impacto potencial de uma decisão ou comparar rapidamente diferentes opções.
Embora as estimativas no verso do envelope possam não ter a precisão de uma análise detalhada, elas são valiosas para tomar decisões rápidas, iniciar uma investigação mais aprofundada ou transmitir ideias de maneira concisa e compreensível.

Durante as entrevistas de projeto do sistema, às vezes você será solicitado a usar estimativas de fundo para estimar a capacidade do sistema ou as necessidades de desempenho. De acordo com Jeff Dean, pesquisador sênior do Google, "cálculos de fundo do envelope são estimativas que você cria usando experimentos mentais e combinações de números de desempenho comuns para obter uma boa compreensão de quais projetos atenderão às suas necessidades" [1].

Você precisa ter um bom entendimento dos fundamentos da escalabilidade para fazer estimativas de fundo de envelope de forma eficaz. Os seguintes conceitos devem ser totalmente compreendidos: o poder de dois [2], números de latência que todo programador deve conhecer e números de disponibilidade.

poder de dois

Embora os volumes de dados possam se tornar muito grandes ao lidar com sistemas distribuídos, toda a computação se resume à computação básica. Para obter resultados de cálculo corretos, é importante conhecer as unidades de volume de dados expressas em potências de dois. Um byte é uma sequência de 8 bits. Um caractere ASCII usa um byte de memória (8 bits). Abaixo está uma tabela (Tabela 2-1) explicando as unidades de volume de dados.

imagem-20230520205201026

Números de latência que todo programador deve saber

O Dr. Dean, do Google, revelou a duração de uma operação típica de computador em 2010 [1]. À medida que os computadores ficam mais rápidos e poderosos, alguns números se tornam obsoletos. No entanto, esses números ainda devem nos dar uma ideia geral de quão rápido ou lento operam diferentes computadores.

imagem-20230520205234204

observação


ns = nanossegundo, μs = microssegundo, ms = milissegundo
1 ns = 10^-9 segundos
1 μs = 10^-6 segundos = 1.000 ns
1 ms = 10^-3 segundos = 1.000 μs = 1.000.000 ns

Um engenheiro de software do Google construiu uma ferramenta para visualizar os números do Dr. Dean. Esta ferramenta também leva em consideração o tempo. A Figura 2-1 mostra os números de latência visualizados a partir de 2020 (Fonte: Referência [3]).

imagem-20230520205300147

Ao analisar os números na Figura 2-1, chegamos às seguintes conclusões:

  • A memória é rápida, mas o disco é lento.
  • Evite buscas em disco sempre que possível.
  • Algoritmo de compressão simples é rápido.
  • Se possível, comprima os dados antes de enviá-los pela Internet.
  • Os datacenters geralmente estão localizados em regiões diferentes e leva tempo entre o envio de dados.

números de disponibilidade

Alta disponibilidade é a capacidade de um sistema de executar continuamente por um longo período de tempo esperado. A alta disponibilidade é medida como uma porcentagem, onde 100% significa nenhum tempo de inatividade para o serviço. A disponibilidade da maioria dos serviços está entre 99% e 100%.

Acordo de nível de serviço (SLA) é um termo comumente usado por provedores de serviços. Este é um acordo entre você (como provedor de serviços) e seu cliente que define formalmente o nível de tempo de atividade que seu serviço fornecerá. Os provedores de serviços em nuvem Amazon [4], Google [5] e Microsoft [6] definem seus SLAs em 99,9% ou mais. O tempo de execução é tradicionalmente medido em unidades de noves. Quanto maior o número de noves, melhor o desempenho. Conforme mostrado na Tabela 2-3, o número de noves se correlaciona com o tempo de inatividade esperado do sistema.

imagem-20230520205315686

Exemplo: estimativa de QPS e requisitos de armazenamento para o Twitter

Observe que os números abaixo são apenas para este exercício, pois não são números reais do Twitter.

Premissas:

  • Existem 300 milhões de usuários ativos mensais.
  • 50% dos usuários usam o Twitter todos os dias.
  • Os usuários postam uma média de 2 tweets por dia.
  • 10% dos tweets contêm conteúdo de mídia.
  • Os dados são armazenados por 5 anos.

Estimativa:

Estimativas de consultas por segundo (QPS):

  • Usuários ativos diários (DAU) = 300 milhões * 50% = 150 milhões
  • Tweet QPS = 150 milhões * 2 tweets / 24 horas / 3600 segundos = ~3500
  • Pico QPS = 2 * QPS = ~7000

Estimamos apenas o armazenamento de mídia aqui.

  • Tamanho médio do tweet:
    • tweet_id 64 bytes
    • Texto 140 bytes
    • Mídia 1 MB
  • Armazenamento de mídia: 150 milhões * 2 * 10% * 1 MB = 30 TB por dia
  • 5 anos de armazenamento de mídia: 30 TB * 365 * 5 = ~ 55 PB

dica

A estimativa do verso do envelope tem tudo a ver com o processo. Resolver problemas é mais importante do que obter resultados. O entrevistador pode testar suas habilidades de resolução de problemas. Aqui estão algumas dicas a seguir:

  • Arredondamento e aproximação. Fazer matemática complexa durante uma entrevista é difícil. Por exemplo, qual é o resultado de "99987 / 9.1"? Não há necessidade de gastar seu precioso tempo resolvendo problemas matemáticos complexos. Não há necessidade de ser preciso. Use arredondamento e aproximação. Este problema de divisão pode ser simplificado para: "100.000 / 10".
  • Escreva suas suposições. É uma boa ideia anotar suas suposições para referência posterior.
  • Marque sua unidade. Quando você escreve "5", você quer dizer 5 KB ou 5 MB? Você pode se confundir com isso. Anote as unidades, pois "5 MB" ajuda a remover a ambigüidade.
  • Estimativas de fundo de envelope comumente solicitadas: QPS, pico de QPS, armazenamento, cache, número de servidores, etc. Você pode praticar esses cálculos enquanto se prepara para a entrevista. A prática leva à perfeição.

Parabéns você chegou até aqui! Dê a si mesmo um elogio agora. aqui você vai!

Referências

[1] J. Dean. Google Pro Dica: Use o cálculo do verso do envelope para escolher o melhor design:

http://highscalability.com/blog/2011/1/26/google-pro-tip-use-back-of-the-envelope-calculations-to-choo.html
_

[2] Introdução ao design do sistema: https://github.com/donnemartin/system-design-primer

[3] Números de latência que todo programador deve saber:

https://colin-scott.github.io/personal_website/research/interactive_latency.html

[4] Contrato de nível de serviço de computação da Amazon:

https://aws.amazon.com/compute/sla/

[5] Contrato de nível de serviço (SLA) do Compute Engine:

https://cloud.google.com/compute/sla


[ 6] Resumo do SLA para serviços do Azure: https://azure.microsoft.com/en-us/support/legal/sla/summary/

Olá, sou Shisan, um piloto veterano que desenvolve há 7 anos e uma empresa estrangeira há 5 anos na Internet há 2 anos. Posso derrotar Ah San e Lao Mei e também fui arruinado por comentários de relações públicas. Ao longo dos anos, trabalhei meio período, abri um negócio, assumi o trabalho privado e misturei o trabalho. Ganhou dinheiro e perdeu dinheiro. Ao longo do caminho, meu sentimento mais profundo é que não importa o que você aprenda, você deve continuar aprendendo. Contanto que você possa perseverar, é fácil conseguir ultrapassagens nas curvas! Portanto, não me pergunte se é tarde demais para fazer o que faço agora. Se você ainda não tem uma direção, pode me seguir [conta pública: Mais AI (power_ai)], onde frequentemente compartilharei algumas informações de ponta e conhecimento de programação para ajudá-lo a acumular capital para curvas e ultrapassagens.

Acho que você gosta

Origin blog.csdn.net/smarter_AI/article/details/131818989
Recomendado
Clasificación