Introdução (análise do ponto problemático)

Prezados arquitetos e desenvolvedores de comércio eletrônico, quando o “Double 11”, o “618” e outras grandes promoções da batalha soaram, diante de um tsunami de tráfego de usuários, vocês já tiveram os seguintes problemas?

  • O sistema caiu instantaneamente.No instante em que o pico começa, milhões de usuários clicam ao mesmo tempo, o tráfego instantâneo atinge o pico diretamente no banco de dados, o sistema inteiro trava, a página não pode ser aberta, a perda de transações enormes.
  • O enigma da venda excessiva de estoque.Sob solicitações simultâneas, os gargalos tradicionais de desempenho de bloqueio de leitura/gravação do banco de dados são destacados, o que pode facilmente levar a erros de dedução de estoque e ao fenômeno de “venda excessiva”, resultando em perdas significativas de capital e reclamações de clientes.
  • A resposta é extremamente lenta.Embora o sistema não estivesse completamente fora do ar, o link da transação principal estava lento, os usuários tinham que esperar dezenas de segundos para fazer pedidos, a experiência era extremamente ruim e a taxa de abandono do carrinho de compras disparou.
  • Custos de recursos e o dilema da resiliência.Um grande número de máquinas compradas para lidar com o pico fica ocioso imediatamente após o pico, resultando em uma utilização extremamente baixa dos recursos e em altos custos. A expansão e a contração manuais são ineficientes e não conseguem lidar com flutuações instantâneas no tráfego.

Se você estiver com dificuldades para projetar um sistema de pico que possa lidar com milhões de simultaneidade de QPS, garantir a consistência dos dados e otimizar os custos, a solução de arquitetura de pico da Tencent Cloud, que foi validada por um grande número de empresas, fornecerá uma resposta clara e confiável.

Diagrama e visão geral da arquitetura da solução

A figura a seguir mostra a arquitetura central e o processo de fluxo de dados da solução Tencent Cloud Seconds:

Soluções de arquitetura de picos de nuvem da Tencent: como obter milhões de pedidos simultâneos de QPS sem tempo de inatividade para sites de comércio eletrônico? - LikaCloud

As principais ideias de design desse programa são“Interceptação em camadas, processamento assíncrono, consistente em última instância”O fluxo de trabalho é o seguinte:

  1. 1.Acesso e programação de tráfego.A solicitação do usuário é passada primeiro peloAceleração global de aplicativos (GAAP)talvezCDNEntrada de acesso rápido viaBalanceamento de carga (CLB)Distribua uniformemente.
  2. 2.Otimização de solicitações de leitura e somas de verificação.A grande maioria das solicitações de consulta (por exemplo, detalhes do produto, verificações de inventário) é direcionada para oRedisCache. Ao mesmo tempo, é possível criar um novo cache usando a opçãoFunção de nuvem (SCF)Implementar validação de permissão leve (por exemplo, CAPTCHA) e interceptação de solicitações maliciosas.
  3. 3.Recorte e assincronização de solicitações de gravação.A solicitação principal do spike não manipula diretamente o banco de dados depois de passar a soma de verificação, mas grava imediatamente noFila de mensagens CKafkaNo meio da fila, e retorne rapidamente ao status de “fila” do usuário. Isso reduz os picos instantâneos a um consumo uniforme, aliviando bastante a pressão sobre o back-end.
  4. 4.Processamento de pedidos e persistência de dados.O serviço de processamento de pedidos de back-end consome mensagens do CKafka em uma taxa uniforme para completar o banco de dados (TencentDB para MySQL) dedução de estoque transacional e criação de pedidos, além de atualizar o cache.
  5. 5.Notificação de resultados.Após a conclusão do processamento, o usuário é notificado sobre o resultado final do pedido via WebSocket ou polling longo.

A proposta de valor da arquitetura é.Ele consegue uma redução absoluta do tráfego por meio do enfileiramento de mensagens (CKafka), assume a grande maioria da pressão de leitura por meio do armazenamento em cache (Redis) e responde de forma flexível à demanda de computação por meio do dimensionamento elástico (AS), protegendo assim os frágeis bancos de dados relacionais e garantindo que todo o sistema permaneça estável e eficiente sob alta simultaneidade.

Produtos e componentes principais

nome do componentedesempenhar um papelPrincipais recomendações de configuração/seleçãoPor que escolher
Banco de dados em nuvem RedisNúcleo de cache e contador. Realizar a leitura das informações de inventário antes do pico, a pré-dedução do inventário e as funções de contador durante o pico, reduzindo consideravelmente a pressão sobre o banco de dados.-Seleção de versão.Escolha a versão RAM para obter o melhor desempenho.
-Planejamento de capacidade.Reserve 30% ou mais de espaço no buffer para picos.
-Modelo de implantação.Use a versão mestre-escravo ou em cluster para garantir alta disponibilidade.
Desempenho extremamente alto, suportando centenas de milhares de leituras e gravações por segundo. Oferece operações atômicas (por exemplo, DECR) para garantir a precisão das deduções de inventário e é a primeira opção para resolver cenários de leitura e contador altamente simultâneos.
Filas de mensagens CKafkaRedução do pico de tráfego e núcleo de desacoplamento. Assume todas as segundas solicitações de gravação, convertendo o tráfego repentino e instantâneo em um fluxo de mensagens assíncrono e de velocidade uniforme para evitar que o sistema de processamento de pedidos downstream fique sobrecarregado.-Estimativa de capacidade.Estimar o número de partições de tópico e a capacidade do disco com base no número de itens de pico e no QPS de pico.
-Estratégia de retenção.Defina um tempo razoável de retenção de mensagens para evitar gravações em disco.
Alta taxa de transferência, baixa latência, compatível com o protocolo Apache Kafka, pode lidar facilmente com milhões de TPS. Capacidade de empilhamento de mensagens, para garantir que o tráfego seja muito maior do que o esperado e não haja perda de solicitações.
Elástico Stretch ASNúcleo de agendamento de elasticidade de recursos computacionais. Aumentar ou diminuir automaticamente o número de servidores de processamento de pedidos com base em métricas como o número de mensagens empilhadas no CKafka ou a carga da CPU.-Estratégias de dimensionamento.Configuração de políticas de dimensionamento de alarmes com base no volume de empilhamento de mensagens para rápida expansão da capacidade.
-Recarga.Defina tempos de resfriamento razoáveis para evitar alongamentos frequentes.
Obtenha o “uso sob demanda” dos recursos de computação, expandindo automaticamente a capacidade para lidar com o pico no início do pico e diminuindo automaticamente a capacidade para liberar recursos após o fim do pico, otimizando bastante os custos.
Servidores em nuvem CVMNúcleo de computação lógica de negócios. Usado para executar serviços de processamento de pedidos, serviços de validação de negócios, etc.-Produção de espelhos.Imagens pré-fabricadas contendo código comercial para rápida implementação pela equipe de dimensionamento.
-Tipo de instância.Escolha instâncias computacionalmente otimizadas para garantir a velocidade de processamento de pedidos.
Fornece potência de computação estável, confiável e resiliente que se integra perfeitamente ao AS, CLB e outros produtos, e é a base para a execução de códigos comerciais.
Balanceamento de carga CLBNúcleo de distribuição de tráfego. Distribua solicitações massivas de usuários uniformemente para vários servidores comerciais no back-end para evitar o superaquecimento de um único ponto.-Algoritmos de agendamento.Algoritmos como o WRR (Weighted Polling) são usados.
-Triagem de saúde.Habilite verificações de integridade para eliminar automaticamente backends anormais.
Melhorar a disponibilidade e o dimensionamento dos serviços é um componente essencial para permitir o dimensionamento horizontal.
Função de nuvem SCFNúcleo de processamento lógico leve. Usado para executar uma lógica leve, como limitação de frequência, verificação de elegibilidade do usuário (por exemplo, se ele já participou ou não) e verificação de CAPTCHA.-Tempo limite.Defina um tempo limite razoável para a execução da função.
-Configuração de memória.Configure a memória apropriada com base na complexidade lógica.
Arquitetura sem servidor, sem necessidade de gerenciar máquinas, cobrada de acordo com o número real de execuções, perfeita para picos instantâneos, custo muito baixo.

Resumo dos benefícios do programa

  • Extremo desempenho com milhões de concorrências.Cache Redis + processamento assíncrono CKafka, fácil de suportar milhões de solicitações de leitura e gravação de nível QPS, para garantir um sistema estável e sem problemas.
  • ? Otimização de custos com escalonamento flexível.Estratégia de dimensionamento automático com base no volume de mensagens acumuladas para obter um provisionamento preciso dos recursos de computação e liberação automática após o pico, reduzindo o custo em mais de 50%.
  • ? ️ Os dados são consistentes e eliminam o excesso de vendas.Aproveitamento das operações atômicas do Redis e das transações do banco de dados para garantir a precisão absoluta da dedução do estoque em cenários de alta simultaneidade, resolvendo completamente o problema de excesso de vendas.
  • ? Alta disponibilidade para negócios sem preocupações.Todos os componentes principais (Redis, CKafka, CLB) oferecem arquitetura de alta disponibilidade, failover automático, para garantir negócios contínuos sem interrupção durante o período da promoção.
  • ? Implementação rápida, O&M simples.Criado com base nos produtos maduros da Tencent Cloud, não há necessidade de criar middleware complexo, pronto para uso, reduzindo significativamente a complexidade do desenvolvimento, da operação e da manutenção.

Cenários de aplicativos e clientes aplicáveis

Essa solução é ideal para os seguintes cenários de negócios e clientes:

  • Cenários de aplicativos.
    • Segundos de comércio eletrônico.Por exemplo, promoções por tempo limitado, roubos de quantidades limitadas, lançamentos de pop-ups etc.
    • Snaps cronometrados.Por exemplo, cupons de compras, passagens de trem, ingressos para shows e assim por diante.
    • Promoções em grande escala.Eventos como o Double 11, 618 e outros eventos em que o tráfego é dezenas de vezes maior do que nos dias de semana.
  • Clientes aplicáveis.
    • Todas as plataformas de comércio eletrônico e sistemas de comércio on-line que enfrentam desafios de alta simultaneidade.
    • Comerciantes que planejam realizar grandes promoções e estão preocupados com a possibilidade de seus sistemas não conseguirem lidar com o ataque de tráfego.
    • Equipes de tecnologia que procuram deixar de criar arquiteturas complexas internamente e passar a hospedar serviços na nuvem para reduzir os custos de O&M.

Links relacionados