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:

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.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.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.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.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.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 componente | desempenhar um papel | Principais recomendações de configuração/seleção | Por que escolher |
|---|---|---|---|
| Banco de dados em nuvem Redis | Nú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 CKafka | Reduçã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 AS | Nú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 CVM | Nú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 CLB | Nú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 SCF | Nú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
- Link para o site oficial do produto.
- Saiba mais sobre o banco de dados em nuvem Redis agora
- Saiba mais sobre as filas de mensagens CKafka agora
- Saiba mais sobre o Elastic Scaling AS hoje mesmo!
- Saiba mais sobre o Cloud Servers CVM agora
- Saiba mais sobre o Cloud Functions SCF hoje mesmo!
- Saiba mais sobre o balanceamento de carga CLB agora
- Link para teste gratuito.
- Links para tutoriais de tecnologia.
- Link da solução.