Primeiro Segredo! Como lidar com a seleção de assento grande cevada desempenho de alta escala para votos agarrar?

Autor | Ali entretenimento Henglei especialistas técnicos, engenheiro de desenvolvimento sênior dinheiro novo

Produzido | AI acampamento base tecnológica (ID: rgznai100)

 

fundo

Com o desenvolvimento da indústria de entretenimento ao vivo, vários tipos de performances após o outro, mais e mais performances de estar aberto, os bilhetes para a demanda do usuário se encontram para a seleção do banco independente. a seleção do banco de cevada não só para salas de teatro pequenos como o show, mas também para grandes eventos desportivos, grandes concertos e outros locais de grandes dimensões (como Ninho de Pássaro quase 100.000).

recurso de seleção de banco é o tipo de bilhetes rush "escolha" por causa da "eleição" de visualização e locais de grandes dimensões sobre a quantidade de dados que a cevada é um grande desafio. Através do servidor e algumas soluções no front-end para discutir como apoiar os locais de grande escala Ultra, a seleção do banco de alto desempenho, por alguns aspectos dessa esperança pode ajudar em alguma prática alta concorrência para o leitor.

 

O problema central

Primeiro, olhe para a mercadoria geral pico, pegue um telefone pico móvel é, em circunstâncias normais, apenas alguns modelos de telefones móveis, tais como arquivo acessível, de alto desempenho, tais como o carro-chefe, lidar com esses bens inventário pode ser. Para a classe de seleção do banco de votos de apoio, todos cada assento de cada seleção pode ser considerado um produto diferente, locais de grande e pequeno porte, ter um assento ninho 10w grande. Essa é uma classe base de votos agarrar eleição envolvendo 10 milhões nível de produtos, se a corrida para vários projetos abertos ao mesmo tempo, o número total será muito grande. lado fornecedor de electricidade cevada dimensões atuais do produto é apenas as barracas de ingressos, tamanho do assento não é uma mercadoria, não pode tirar vantagem da capacidade do Grupo de pico, classe de seleção assento para votos de apoio que envolvem fornecedor de electricidade, seleção de assentos, as vendas de ingressos nuvem, cevada é um teste da capacidade total.

Vamos olhar todo o processo de assentos, bilhetes: Ingressos para projeto de teste JJ Changsha como um exemplo.

1, o usuário abre a página de detalhes do projeto necessidade de triagem

 

 

2. Clique na compra seleção de assentos, página de seleção de assento aberto, veja assentos gráficos e barracas de ingressos

 

 

 

3. Selecione uma área de arquibancada, selecione o assentos preferenciais, assento selecção clique em OK

 

             

4, o próximo única página, preencher o número de telefone endereço de entrega, criar uma ordem

 

             

 

5, enviar o pedido para completar o pagamento, emissão de bilhetes. Entre eles, 2,3,4 ligações estão associados com a seleção do banco. Do ponto de vista de processo, seleção de assentos de tecnologias-chave que:

  • mapa de assentos carregamento rápido. Na verdade, a capacidade de ler banco rapidamente carga é selecionada da página. seleção de assentos mapa base do assento página para download, assento de informações básicas (Arranjar, etc.) para fazer a renderização, mas os bilhetes arquivos necessários, o status de cada assento de triagem para determinar está bloqueado ou pode ser vendido ou foram vendidos. Para grande quantidade de estádio de dados acomoda 50.000 -10 10.000, tornando uma página de seleção de assentos necessidades são grandes;

  • Alta concorrência. Devido à escassez de bilhetes quentes, enquanto o número de bilhetes de pico pode chegar a centenas de milhares. Como para suportar uma alta concorrência tais ea taxa de transferência é um teste importante;

  • Pontualidade de atualizações de status assento quando um assento vendido, a necessidade de atualizar o status do banco;

  • Grab vota experiência: quando os votos de apoio nas arquibancadas de um assento quente pode ser complicado por dezenas de pessoas tentam roubar, a melhor forma de melhorar a experiência do usuário, na medida do possível, para que mais usuários a comprar um sucesso de uma só vez, a experiência melhor.

prática da seleção do assento de alto desempenho

Os requisitos básicos para a seleção do banco de alto desempenho, apresentamos a nossa prática para ir em classe de seleção assento para votos de apoio de várias dimensões como segue.

 

1. A combinação do movimento

A quantidade de dados gargalo seleção do banco de "suportar o peso." Logicamente, um show completo assento na frente do usuário, necessidade de incluir assentos arquibancada, Arranjar, preço, venda de estado e outras informações, arquibancadas, Arranjar e assim é constante e previsível antecipadamente; a venda de estado de acordo com mudanças dinâmicas e assim que o projeto. Portanto, o assento de divisão strobe dados em dados dinâmicos e estáticos. Para grandes locais como estádios 100.000, o usuário abre um assento página selecionada, a sede dos dados estáticos (id assento, id ticket, se os pacotes fixos, coordenadas x, y, e no palco, o que está de pé, algumas linhas de números, etc. ), esses dados de cerca de 15m ou mais. Juntamente com dados dinâmicos, como estado de velocidade de contagem, cor, estado arquibancada, o estado do assento, estádio 10w provavelmente cerca de 2M.


Em outras palavras, se não lidar com o usuário só página de seleção de assento aberto na quantidade de dados mais de 17M. Se os dados de seleção assento armazenados em oss, se todos baixado 15M, 10w pessoas ao mesmo tempo que você precisa para agarrar vota 1500G largura de banda e os altos custos de largura de banda. A fim de resolver o problema da velocidade de acesso de arquivo estático, dados estáticos acessar diretamente do oss a CDN. Enquanto isso, a fim de proteger os dados mais recentes, os dados estáticos usando controle de versão.

2. Os dados estáticos pré-carregados

O pico de alta largura de banda acima mencionada, a fim de reduzir o pico e melhorar a experiência, o cliente é introduzido dados estáticos pré-carregamento. processamento de informação estática em conjunto com pré-carregado, proporciona uma margem de tempo para processar grandes quantidades de informação banco de dados, a informação de exibição estática prioridade de utilizador, os utilizadores podem reduzir eficazmente o tempo de espera, melhorar a experiência de utilizador quando se abre a página de selecção de assento.

Combinada com a análise do comportamento do usuário por dados grandes, determinar o tipo de triagem pré-carregado melhorar a taxa de acerto pré-carregado.

 

Figura 2.1: pré-carregar o fluxo de ajustamento

 

Preload + pré-análise, preparação de dados concluída desenho a informação básica do local, e, em seguida, os dados de antecedência Ver assento imagem ligação, pré-renderizados Ver e, em seguida, para abrir o segundo efeito página de seleção de assento.

3. Os dados que codificam assento

Dinâmica e restringe volume de dados estáticos nos alcançar alto rendimento, mas também um desperdício de tráfego de usuários de banda e serviço. Ele precisa ser comprimido, comprimido para um determinado intervalo aceitável. Apenas a quantidade de dados é suficientemente pequena, única maneira de conseguir uma elevada taxa de transferência.

1) codificação de dados estática

Na alça sede de grandes quantidades de dados (por exemplo, cem mil) pré-carregado dados apenas estática é muitas vezes insuficiente, pré-carregado não tem os dados capacidade de processamento do problema assento fundamentalmente, ao mesmo tempo, um semelhantes eventos multi-esportivos como data para a cenário multi-seleção, devido à existência do controle de cache a quantidade de uso pré-carga, muitas vezes afetam a taxa de acerto pré-carregado. A compressão de dados e a utilização de dados recodificada é uma forma eficaz para resolver o problema na origem.

Renumeração dados de assento, abandonando xml tradicional e formato JSON, não só pode tamanho dos dados de forma eficaz compressa, mas também na segurança de dados para fornecer uma garantia, mesmo que sejam para obter os dados de interface por causa da falta de codificação de dados de protocolo, não pode obter uma informação original válido .

2) Os dados do assento estáticos compressão quadro global

Atualmente cevada pelas suas características dados assentos específicos, combinados com binário eficiente codificação de dados assento esquema de numeração de código, e depois usar a compressão sem perdas genérico para reduzir ainda mais o volume de dados, reduzindo, assim, os dados do banco de tempo de transmissão da rede, a partir da raiz para resolver grande neste problemas de atraso de transmissão de dados causados por:

 

Figura 3.1: processo de compressão de dados estática

 

dados binários codificados com base apenas garante a segurança dos dados, mas também garantir a eficiência na análise de dados, mesmo que o uso de compressão de dados também tem menos atraso do que analisar json, xml de. Embora ambas as ferramentas de modo a produção em massa, e mais resolver o problema da construção de dados.

             

Figura 3.2: arquitetura ferramenta de compressão de dados estática

 

E o processo de negociação pela extremidade do lado do servidor do aperto de mão para a codificação de compressão de dados e perceber composição geral flexível, Sever correspondente final de compressão pode ser emitido por diferentes formatos de arquivo terminar:

Figura 3.3: compressão de dados estáticos, o fluxo de trabalho de negociação handshake

 

CRC combinado com a ideia de desenvolver um IOS, Android e vertical verificação de hash compatível com base nas propriedades de H5 assento de três terminais. Em comparação com outros cálculo de hash MD5 comum, quando o processamento de 60.000 assento informação multi-dimensional, no fim de alcançar uma dúzia de milissegundos, a detecção da quantidade total de dados de cerca de 50 milissegundos H5 lados, de tal modo que o processo não é preciso muito tempo para você pode verificar a precisão de dezenas de milhares de resolução assento da classe. Depois disso, a detecção de ligação de codificação completa, o volume de redução de dados realizada ao mesmo tempo, mantendo ao mesmo tempo a proporção de tradicional e json xml dados analisados eficientes, alta segurança.

 

    

Figura 3.3: Comparação de dados comprimidos

 

Em que o quantum é o fim da cevada e moagem dinâmica mordeu dicionário algoritmo de compressão, em combinação com um grande cenário de negócios Matt, para alcançar uma alta taxa de compressão de dados e análise rápida:

 

Figura 3.4: quantum estrutura de arquivo compactado

 

3) Os dados dinâmicos que codificam assento transformação

Dificuldades a) Os dados dinâmicos

interface de seleção dinâmica assento principalmente relacionados com barracas de ingressos, da arquibancada, o estado de estar. A quantidade máxima de dados que é a sede do estado. Com um estádio de 50.000 lugares, por exemplo, cada assento deve retornar a um estado em que tornando a ponta. Usando id assento e status da chave, uma vez que o assento de modo que todo o resultados de retorno mais é muito grande, 50.000 banco de dados estádio de volta para a acima de 1M.

Se a página precisa abrir uma seleção de assentos 1M quantidade de dados taxa de transferência, a interface básica não está disponível. Antes da política está em conformidade com a estratégia de agrupamento, cerca de 50.000 serão divididos em 10 grupos, cada solicitação para que a quantidade de dados sobre 100k, de modo a alcançar a interface básica está disponível, mas necessidade de solicitação de 10 vezes a fio para obter o status de toda a triagem pode pensar e saber o desempenho impacto quanto. Se o estádio de 50.000 lugares, 100.000 bilhetes de pico de rush, então esta interface vai só precisa de 1 milhão de qps, ele certamente vai agarrar cada enforcamento.

b) Programa

Atualmente interface é a premissa por acordo mtop, pensamos: mtop atualmente não suporta byte [] fluxo de matriz, apenas suporta JSON formato de estrutura string. Como reduzir os dados retornados, tente usar um programa simples, chamado uma vez, ao mesmo tempo devolver o estado inteiro estádio assentos, a direção dos nossos esforços.

Grande quantidade de dados é principalmente porque há uma grande quantidade de redundante id assento. Não há maneira de não contar com estes assentos id? Desde que fazemos a separação estática e dinâmica, dados estáticos já cobertas id assentos, interface dinâmica onde só precisamos retornar ao estado correspondente a esse estado, a fim de retornar o assento ainda dentro. Nós voltar para o simples resultado da fusão estado vizinho irá reduzir ainda mais o tamanho dos resultados retornados. Assume-se que o assento de cadeira utilizador seleccionado normalmente distribuída, e o comprimento médio de um retorno média de menos do que 5w assento 20k.

Claro, se nós mtop suporta o protocolo um fluxo binário, então nós podem ser armazenados com um pouco bit, você pode reduzir ainda mais o tamanho do resultado retornado.

4. Cache Eficiente

1) cache

Para uma alta TPS tais, Tair é a melhor escolha. Tair + usando cache local, os dados para suportar um pico elevado tal. Ele mencionou Tair, para mencionar algumas das nossas políticas aqui. página do usuário na seleção de assentos é um dos stands, criamos um cache de posição, ou seja, cache de stand-nível, um usuário será selecionado assentos, nós também adicionamos um cache de assento, é o tamanho do assento de cache. Dois cache para proteger o usuário verificar as arquibancadas eo usuário pode bater o cache de base de rádio. standcache tecla de atalho, permitindo perto de dados em tempo real a partir da seleção de assentos não-cena, então a introdução de Tair localcache e goiaba localcache para aumentar o rendimento, reduzindo assim a pressão sobre a leitura de Tair.

2) proteger o sistema a jusante

Atualmente utiliza uma estratégia de usar uma chamada para o bloqueio a jusante, Tair bloqueio global. Antes de ir para obter os dados de fundo nuvem bloqueio pedido de ingressos. I got trancadas no processo de cache de atualização Tair. Na verdade, daqui em gravação Tair ou qps relativamente pequenas, mas cada competição ler bloqueio sobre Tair ou não muito pequeno. Ao usar o bloqueio Tair local + permeabilidade aleatória veio para reduzir qps de leitura de consumo de bloqueio. Para fazer downgrade de dependência a jusante, o aumento instantâneo de dados, gravar todas as chamadas para o instantâneo de dados downstream. Quando o instantâneo antes da adopção de uma chamada particular, não conseguiu compensar.

3) atualizações de dados de garantia oportuna

Porque nós usamos um bloqueio global Tair, você pode controlar a jusante invocado na segunda série. Chamada gatilho assíncrona. Ele irá acionar os 1s mais curtos que iniciar uma chamada para o downstream. Se queremos maximizar o uso de recursos de inventário cloud-ticket, dando aos usuários um atraso em menos de 1s, temos alguma estratégia. Receba as tarefas de atualização de dados de chamadas dentro de bloqueio de segmento 1s, fazer algumas tarefas na estratégia de atualização de dados, iniciado no âmbito 1s 1 várias chamadas no bilhete ou a nuvem, as chamadas mais Tair atualizações mais oportunas. Uma vez que o usuário tem uma certa seleção de assentos operação, o atraso usuário é 500ms em geral substancialmente nenhuma perceptível.

4) buffer de cache look-aquecimento-aquecimento, a experiência do usuário eo desempenho do sistema útil. Grab votos projetos usando certas estratégias que automatizado pré calor.

 

5. Segurança e Recuperação de Desastres

1) Segurança

Olhe assento cevada feito a partir dos dados acima codificação e criptografia, e caminhos de armazenamento fazer confusão, não para proteger a raça assento aberto contra o tempo dados não pode ser quebrada, para proteger os dados de seleção de assentos de segurança. estratégias de seleção de assentos de prevenção e controle de layout de página Além disso, a segurança é uma necessidade real para clicar sobre o assento, a fim de completar a ordem, para evitar que as escovas para evitar ignorando a seleção do banco ordens diretas. Por uma estratégia similar reduz a seleção de assentos de tráfego inválido, melhorar a estabilidade.

2) Recuperação de desastres

Seleção de assento é feito principalmente de desastres nas seguintes áreas. Os dados estáticos é armazenado no OSS, atualmente usado de armazenamento de recuperação de desastres regional; Tair usado buffer de cache de espera pode ser feita quando a falha de handover; pc eo cluster de servidor sem fio feita isoladamente.

 

resumo

Neste papel, processamento de dados, desempenho seleção de assentos, caching, e assim por diante algumas estratégias práticas assento opção de desempenho de cevada. Através destas práticas cevada pode facilmente levar centenas de milhares de itens para pegar votos atualmente tráfego superior.

【end】


Bem-vindo a todos os desenvolvedores sob o código Fanger Wei preenchimento de varredura as "grandes desenvolvedores e pesquisas AI", a apenas 2 minutos, você pode colher valor de 299 yuan "desenvolvedores AI milhões de pessoas congresso" bilhetes online ao vivo!

推荐阅读全球呼吸机告急!医疗科技巨头美敦力“开源”设计图和源代码使用大batch优化深度学习:训练BERT仅需76分钟 | ICLR 2020
互联网之父确诊新冠,一代传奇:任谷歌副总裁、NASA 访问科学家
微软为一人收购一公司?破解索尼程序、写黑客小说,看他彪悍的程序人生!在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!2020年,这20个大家都认识的加密交易所过得怎么样?你点的每个“在看”,我都认真当成了AI
Lançado 1375 artigos originais · ganhou elogios 10000 + · vistas 6,85 milhões +

Acho que você gosta

Origin blog.csdn.net/dQCFKyQDXYm3F8rB0/article/details/105354903
Recomendado
Clasificación