Twitter Arquitetura do Sistema

análise do twitter arquitetura do sistema

(A) núcleo do twitter negócio
core business twitter, e que, após a ser seguido:
(1) a atenção seguinte-
na página pessoal, você verá uma mensagem que você seguir as pessoas publicados (não mais de 140 palavras), que está a seguir a processo;
(2) a atenção acom-
você postar uma mensagem, siga as pessoas vão ver esta mensagem, é ser seguido no processo;

(B) o Twitter lógica de negócios
da lógica de negócios não é complicado Twitter
na sequência de operações, verificar que seguem a mensagem, e que publicou,
o negócio seguido, front-end back-end js polling, consulte siga as pessoas não têm novas mensagens, há uma versão atualizada (atualizados em tempo depende do tempo de votação);

arquitetura (C) de três camadas (de três camadas arquitetura)
arquitetura website, a abordagem tradicional é a estrutura de três camadas, o chamado "tradicional" não significa "fora de prazo", tecnologia imatura na moda, a forma tradicional é mais robusto.
(1) a camada de apresentação (camada de apresentação): apache servidor web , a principal tarefa é para analisar o protocolo http, um pedido para a camada lógica;
(2) camada lógica (camada de lógica): vira-lata trilhos do servidor , usando trilhos módulo pronto, para reduzir o operacional ascender;
(3) a camada de dados (camada de dados): mysql;

camada de dados para vir:
o Twitter núcleo é (1) um utilizador; relação de utilizador (3);; (2) mensagem
circundante estas centrais, dados de concepção do esquema de núcleo:
(1) da tabela de utilizador do utilizador
de identificação, nome, passagem , status, ...
(2) mensagem mesa MSG
msgid, o author_id, MSG, Tempo, ...
(. 3) user relacionamento relação a tabela
de identificação, following_ids, followed_ids

camada lógica :
Quando um utilizador envia uma mensagem, realizados sequencialmente:
(1) para a tabela de mensagem de erro armazenado;
(2) o utilizador verificar a tabela de relação, descobrir followed_ids;
adquirido nos followed_ids estado utilizador; (3.)
(4) identificações de linha , empurre a mensagem em uma fila fila;
(5) na fila msg, ids atualizar a home page;
há uma fila para uso, há muitas maneiras de conseguir isso, como apache mina, twitter própria equipe alcançou um francelho.

Camada de Apresentação :
uma camada principal tem duas funções:
(1) protocolo HTTP processamento (HTTP Processor);
(2) o distribuidor (despachante);
obviamente, mais do que apenas um navegador para acessar o Twitter, pode haver telefones celulares, devido à possível há outros protocolos, portanto, pode haver outro processador.

Em qualquer caso, estrutura de arquitetura clara da seguinte forma:

Figura 1: esquema de uma versão

(D) renda em dinheiro cache = que é igual ao cache
usando uma arquitetura de cache é essencial para grandes sites, o site é o tempo de resposta do usuário a experimentar os fatores mais importantes que afetam a velocidade de resposta é o maior inimigo de io disco.
twitter engenheiros acreditam que uma boa experiência para o local tempo médio de resposta deve ser em torno de 500ms, o tempo ideal é 200-300ms.
Sobre o uso de cache, e é uma parte importante da arquitetura do twitter com arquitetura de cache clara da seguinte forma:

Figura 2: Com a versão 2 arquitetura de cache

Quando exigido cache? IO mais freqüente o lugar, quanto mais necessidade de cache.
IO é o banco de dados mais frequentemente acessados, a tabela de três núcleo se é necessário colocar na memória?
abordagem Twitter é dividir a mesa, em que os campos mais frequentemente acessados carregado cache.
(1) cache vetor e linha de cache linha que é uma matriz de cache e armazenar em cache
o cache Vector : mensagens recém-publicados msgids, relacionadas com ids do autor, id estes elevada frequência de visita, armazená-los no cache de cache chamado de Vector;
cache de Row : Corpo da mensagem linhas de cache;
memória limitada, esconderijo vector prioridade, a taxa de sucesso de cache resultado vector real é de 99%, de cache fila é de 95%;

(2) cache fragmento e cache de página
de acesso do usuário, além de página do Twitter (canal web), bem como telefones celulares (canal API), enquanto a proporção dos últimos do tráfego total de 80% -90%.
Além do cache mysql, esconderijo API gravidade estará no canal.
A tela principal do telefone, uma tela é uma tela de uma mensagem, pode ser toda a página é dividida em vários locais, cada um correspondendo a um número de mensagem / local, que é o fragmento.
Alta popularidade do fragmento de cache de suas páginas, você pode ler o seu comunicado de imprensa para melhorar a eficiência, esta é a missão cache de fragmento.
Autor popularidade, as pessoas vão visitar a sua home page, que é a missão cache de página.
Os resultados reais, taxa de acerto de cache de fragmento de 95%, cache de página é de 40%.
Embora o cache de página taxa de acerto, mas porque ele está acessando a página inicial, o espaço que ocupava é grande, influenciam-se mutuamente, a fim de evitar que dois tipos de cache, ambas as necessidades de cache para ser implantado em diferentes máquinas físicas.
Twitter o cache de fragmento e cache de página estiver usando memcached.

(3) http acelerador
problema de cache de canais web precisam ser abordadas, após a análise, a pressão, principalmente, da busca de canais web.
Quando confrontados com acontecimentos inesperados, os leitores podem procurar informações relevantes, e não se preocupa com os autores destas informações são aqueles que não são do seu próprio acompanhamento.
A fim de reduzir a pressão da busca, palavra-chave pesquisar e pesquisar o conteúdo pode armazenar em cache aqui, twitter engenheiros usam um verniz.
Curiosamente, verniz normalmente implantado em camada servidor web, a primeira visita de verniz, que não está relacionado com o conteúdo, basta visitar o servidor web;
engenheiros do twitter puts verniz no servidor Web Apache interior, porque eles acreditam operações verniz complexo, o medo de paralisia causada pelo colapso do sistema de verniz, que adoptou essa implantação conservador.
o twitter sem taxa de acerto verniz público, segundo eles, após o uso de verniz, todo o ponto de carga caiu em 50%.

(E) requerem isolamento de inundação
arquitectura Twitter é outra grande parte da sua fila de mensagens: isolamento de operação de um utilizador, a suavização da taxa de pico de fluxo.
Quando o restaurante está cheio, para novos clientes, apesar de não servir, mas não excluída, mas agora deixá-los sala de espera.
Quando um usuário acessa twitter, o recebeu é apache servidor web, mas apache não poderia receber um número ilimitado de usuários.
20 de janeiro de 2009, Obama fez seu discurso de posse, twitter tráfego disparou, então o que fazer.
Enfrentando pico de cheia, como garantir que o site não apressar o colapso? Rapidamente aceito, mas o serviço atrasado.
apache recepção do pedido, encaminhado para Mongrel, Mongrel responsável pelo processamento real, Apache a mão livre para cumprimentar o próximo usuário.
No entanto, o número de usuários capazes de receber apache é sempre limitado, está sujeita ao número de apache concorrente pode acomodar o número de processos de trabalho, não há um olhar mais atento dentro princípio do apache é a seguinte:

Figura 3: Apache arquitectura interna

dados (VI) fluxo e controle de fluxo
rápida aceitação, serviço atrasado, apenas uma manobra dilatória, para que os usuários não receberá o 503 (serviço indisponível).
Flood real capacidade se reflete na inundação Flood dois aspectos:
(. 1) há um conjunto enorme Twitter memcached pode inundar uma grande capacidade;
(2) Twitter francelho própria fila de mensagens, como meio de drenagem do vertedouro, um comando de controle são transmitidos (drenagem e canais),
quando se atinge o pico, o fluxo de dados de controlo twitter, os dados para uma pluralidade de máquinas para evacuar, a concentração de evitar o stress, o que resulta em paralisia do sistema.
O seguinte são exemplos do twitter processos internos, assumindo que existem dois autores, através da mensagem do browser, um leitor também ler suas mensagens através de um browser.

FIG 4: fluxo Twitter

(1) Log apache servidor web, apache atribuir um processo de trabalho para os seus serviços, faça o login, verifique o id, biscoito de gravação, etc .;
(2) fazer upload de novas mensagens escritas, avançou com a ID de autor, mensagens, etc, para Mongrel, apache espera Mongrel resposta, na home page, a fim de atualizar, a nova mensagem de atualização escrito;
(3) Mongrel após receber a mensagem, atribua um msgid, e manteve-se em manter id e outro vector memcached caching para subir;
ao mesmo tempo, Mongrel deixar vector memcached para encontrar o autor que é siga, se não houver acerto de cache vai para o mysql olhar back-end, incorporando cache;
leitores ids devolvidos ao Mongrel, Mongrel colocar SMS msgstr com o cache de texto para Row memcached;
(4) Mongrel notificação francelho servidor fila de mensagens, cada autor e leitor há uma fila (não criar);
Mongrel vai msgstr leitores na fila, bem como o autor da fila;
(5) uma mesa de raça indefinida, provavelmente lidando com um determinado ID de fila, ele irá retornar para o ID do usuário Adicionar sobre a prestação de informações sobre a home page;
depois (6) Mongrel é atualizado para a frente da espera em casa para o apache, apache está de volta Browser.

(VII) de pico e computação em nuvem
não elaborar, quando o pico de cheia não podia levar, só pode adicionar máquina.
Máquina de onde eles vêm? Aluguel de equipamentos de computação plataforma de nuvem da empresa.
Claro, só você precisar alugar equipamentos no pico, economizar dinheiro ah (pergunta: Twitter como saber quando é o pico).

(Viii) empurrar e puxar de compromisso
pode ser visto, workflow Mongrel:
(1) os ids relevantes para o vector memcached e sucesso linha memecached liberação ainda notícias, não responsável por postar o banco de dados mysql;
(2) a msgstr relevante mesmo se a mensagem na fila de mensagem de sucesso impulso francelho;
Mongrel não utiliza qualquer meio para informar autores, leitores e deixá-los re-pull mensagem.
O trabalho anterior, refletindo o projeto arquitetônico conceito do twitter "spin-off" de:
(1) um processo completo será dividida em trabalho sub-processos independentes, um trabalho de cada serviço pode ser o próprio responsável (arquitetura de três níveis é um spin-off );
colaboração (2)

Twitter processos de negócios separadas, é um projeto orientado a eventos, principalmente em dois aspectos:
(1) a separação Mongrel e mysql, o primeiro não intervir diretamente na operação do mysql, memcached encomendado o único responsável;
(2) fazer upload, baixar separação lógica: kestrel só para passar pela fila de instrução;

Publicado 136 artigos originais · ganhou elogios 6 · vista 1518

Acho que você gosta

Origin blog.csdn.net/weixin_42073629/article/details/104603209
Recomendado
Clasificación