2019/06/05 Evolução da arquitetura do site M e otimização do sistema de cache

Anteriormente, o programa de geração reversa de 7 camadas nginx, esses aplicativos também possuem haproxy
nginx, que pode realizar proxy reverso de 4 camadas e geração reversa de 7 camadas, e após a geração reversa ser concluída, o módulo upstream correspondente também pode ser concluído Agora, o efeito do balanceamento de carga é
direcionado principalmente à geração da camada de aplicativo, usando o nginx para obter a geração do módulo proxy, existe um comando no módulo proxy chamado proxy_cache_path,
proxy_cache_path, especifique o caminho (alguns níveis de caminho, quantos subdiretórios, 1, , 2, Existem duas partes no cache, uma
parte está na memória, é a chave, a tabela de hash para o disco e a outra parte está no disco.Os dados no disco são o conteúdo correspondente individual
no cache. Reduza os links em todo o processo do serviço para obter funções aceleradas.
Quando um cliente acessa seu serviço da Web, se não houver cache, ele alcançará o servidor proxy reverso pela primeira vez e o servidor reverso alcançará o servidor proxy pela rede novamente. Para obter o conteúdo que o usuário precisa, esse host também precisa verificar se é estático ou dinâmico.Se for conteúdo estático, ele precisa ser Depois de IO de disco, chegar
o conteúdo solicitado pelo utilizador, em resposta ao pacote do host proxy, de modo em geral será mais de um processo de rede IO, IO de disco inevitável, esta rede IO pode consumir muito tempo, se é para obter uma dinâmica Conteúdo, pode haver um processo de execução no meio, mesmo que não seja de geração reversa, este servidor precisa ser executado para obter o conteúdo. Esta etapa é indispensável. Para o servidor back-end, para fazer o balanceamento de carga, essa IO da rede também não é Para evitar, é inevitável que o processo de execução demore algum tempo.Com
o cache, esses processos podem ser omitidos até certo ponto.Se for um conteúdo dinâmico, o processo de execução também pode ser omitido. Portanto, isso pode economizar muito tempo.Se
o usuário for um método de solicitação para obter ou se não houver modificação, o conteúdo original poderá ser usado.Este método de cache pode realmente melhorar a percepção de desempenho do usuário

Insira a descrição da imagem aqui
** A razão pela qual o cache pode entrar em vigor depende principalmente do fato de o programa ter características
locais.A operação de longo prazo possui localidade de tempo: depois que um dado é acessado, ele pode ser acessado novamente em breve (essa lógica torna o cache valioso. Base)
**
Insira a descrição da imagem aqui
Localidade espacial: geralmente, quando um dado é acessado, os dados ao redor também podem ser acessados ​​posteriormente
e o método de pré-carregamento pode ser usado.Quando um dado é acessado, os dados ao redor também são armazenados em cache na memória. Depois, você pode acessar o

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
motivo pelo qual deve usar o cache.Se houver muitos links intermediários, cada link reduzirá inevitavelmente o desempenho e afetará a percepção do usuário. melhoria é óbvia
cache usado aqui não é apenas nossa (cache servidor de cache, cache público) cache proxy reverso usado no servidor, na verdade, cada navegador tem em cache (privado cache cache privado do usuário)
de cache de vários níveis quanto mais próximo do usuário, o melhor

Insira a descrição da imagem aqui
é o próprio site é localizada zona quente, então basta deixar o cache local Fortalecido
Insira a descrição da imagem aqui
para o mysql está em causa, é resultados da consulta Cache Cache instrução select, que é o fluxo de dados, eo site cache (mais de uma imagem, arquivo de css, dados da página)
mysql e algumas classes de cache de dados usualmente chamada de dados ceche
e para sites, o cache geralmente é chamado de
lógica de cache do cache da página,
devido ao conceito de zona quente, portanto o cache geral não armazena em cache todo o conjunto de dados, a maioria deles segue a regra 2,8, 20% Dados, que transportam 80% do acesso, e os 80% restantes, 20% do acesso, portanto 20% dos dados são armazenados em cache no sistema, geralmente apenas os dados da zona quente são armazenados em cache
É impossível determinar quais dados estão na zona quente, para que o cache não entre em vigor imediatamente após ficar on-line e não atinja imediatamente o melhor modo de trabalho, mas após um período de tempo. processo de aquecimento de cache aquecer

Insira a descrição da imagem aqui
mas o processo é muito longo, ele será de cerca de medição de fluxo de pressão com o Sr. replicação para cache, a pressão medida continuamente dados de câmbio, é deixado para os dados da zona quente, o processo de aquecimento, a necessidade de implementado manualmente
Insira a descrição da imagem aqui
para alguns compilar os resultados da aplicação também pode ser armazenada em cache
, como php lá opcode, geralmente entre dois não manter o ritmo com o tempo, tanto para resolver o problema com o cache, o cache em quase todo os
dados de cache deve ser menor do que o número de espaço de dados original

Insira a descrição da imagem aqui
de cache Está cheio e precisa ser limpo.Um algoritmo conhecido é o LRU. Utilizado menos recentemente.
Como é um cache, esses dados não devem ser válidos por muito tempo. Os
dados originais também podem ser alterados. Nesse momento, o cache original deve ser invalidado, caso contrário, o cache responde ao usuário e não aos dados mais recentes
(para dados mysql , O cache deve ser atualizado a tempo)
Mas, para sites, o novo css, minha maneira de exibir as mercadorias, mas apenas outra maneira de exibir as mercadorias, neste momento, para atualizar o cache a tempo, não é necessário, você pode permitir lentidão. Um pouco '
após a expiração, há uma lógica de limpeza de cache para limpar' o

Insira a descrição da imagem aqui
cache perdido por vários motivos:
1. O primeiro acesso, sem histórico antes (aquecimento manual)
2. O cache é salvo, mas o tempo de cache é muito curto, na próxima visita Anteriormente, era limpo por expiração (aumentando a duração do cache para resolver o problema, se os dados originais mudam com muita frequência, a eficiência de aceleração do cache geralmente é muito baixa)
3. O espaço em cache é muito pequeno, um grande número de itens de cache, com base no algoritmo LRU Limpo (você precisa aumentar o espaço em cache)
Portanto, geralmente é armazenado em cache para ler mais e escrever menos.Se a taxa de acertos do cache for muito baixa, isso apresenta um problema (verifique primeiro o cache, o cache falha e depois procure mais tarde, não há mais etapas, mas mais etapas
se O valor do custo do cache é menor do que o tempo economizado, e o cache precisa ser retirado. A

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
taxa de ocorrências deve estar entre 0 e 1, qual é a alta e a baixa, e não há medida da
taxa de ocorrência da página padrão (800 páginas no total, Existem 40 caches, e a taxa de acertos dessas 40 páginas é muito alta, 90%. Ocorre que essas páginas são muito pequenas. As que faltam são frequentemente solicitadas, mas o volume é muito grande. Nesse estado, a economia Também é limitado) com
base no tamanho da página, com base no número de páginas para medir
quase todos os caches são semelhantes ao

Insira a descrição da imagem aqui
cache e é uma estrutura de vários níveis, assim como a geração reversa, cada nível de geração reversa abrirá o cache
Insira a descrição da imagem aqui
para que o servidor especifique isso Os dados podem ser armazenados em cache publicamente ou apenas em cache em particular?
Para informações privadas, com autenticação e autorização, os cookies,
exceto esses geralmente são dados públicos, mas não necessariamente Os cookies com cookies são todos particulares. Após o login, verifique o produto e as informações de descrição do produto não são dados particulares.
Para o administrador do cache, é necessário entender o que é privado e público.

Insira a descrição da imagem aqui
Para serviços da Web, todos os caches são um proxy
Cache de proxy (solicitação do usuário, o cache não está disponível, o servidor de cache deve solicitar ao servidor que o ajude a obter os dados e enviá-los ao cliente)
Também existe um cache chamado bypass (acesso do usuário ao cache, se o hit retornar diretamente, sem hit, O cliente precisa localizar o servidor original sozinho. Depois de encontrá-lo, cabe ao cliente decidir se deve armazená-lo em cache. Como esse servidor de cache, os dados em cache não são decididos pelo próprio cliente (serviço da Web, todos os caches do protocolo http) Eles são todos proxies, mas os proxies não são armazenados em cache, mas desde que os caches sejam proxies)
Os requisitos montados na lateral do cliente se tornam mais altos (geralmente bons produtos enganam os usuários, o cliente desiste porque você é difícil de usar, memacached, é um cache, servidor de cache puro, não um proxy)

Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
A capacidade de armazenamento em cache do Vanish não é comparável ao nginx, mas a quantidade de simultaneidade é fraca; portanto, ao criar um site, o verniz e o nginx serão usados ​​juntos.Por
que não usar o squid (a relação entre verniz e squid é como a relação entre o nginx e o httpd? Os produtos da era anterior, um dos produtos da era atual, aproveitam ao máximo as vantagens do modelo atual de programação de simultaneidade de rede, como o EPOLL) Devemos
organizar
as solicitações dos usuários do nosso site para ir primeiro ao nginx, para evitar pontos únicos, então use Keepalived é um modelo de mestre duplo. Ao iterar
para o back-end, não é diretamente um servidor da Web, mas uma camada maior. O servidor de cache
divide os itens de cache em vários servidores. Cada servidor de cache carrega apenas uma parte dos itens de cache
. Taxa (URL, agendamento de cache com base em URL), usando algoritmo de hash consistente para melhorar os hits do cache , De modo a não causar uma falha global, quando o número de servidores de cache mudou
cache servidor pode armazenar em cache de conteúdo estático, conteúdo dinâmico, você precisa pensar duas vezes, (que cache de conteúdo, o que não cache)
adicionar conteúdo dinâmico não está em cache, a definição de serviços de nginx localização Quando o conteúdo estático (imagens, css) é usado como proxy para o servidor de cache

Insira a descrição da imagem aqui
ou você pode definir diretamente o que não pode ser armazenado em cache é mais
simples.Para o conteúdo dinâmico, você pode ir diretamente para o host original.O Index.php
acha que cada usuário é a primeira vez A solicitação de acesso precisa ser realizada pelo servidor de números original. Se a velocidade de geração da página inicial for muito lenta, resultará em uma experiência ruim para o usuário.
Portanto, o conteúdo dinâmico precisa ser estático, e index.html
geralmente separa os sites dinâmicos e estáticos .
css e js são todos colocados no servidor dinâmico da página inicial e as imagens geralmente são colocadas no servidor de imagens. Portanto, as imagens em um site são de
cerca de uma dúzia de unidades com nomes de domínio separados , que podem transportar quase dez milhões. O nível pv

Insira a descrição da imagem aqui
agora é web2. 0, alguns dados fragmentados são colocados em um banco de dados relacional, a eficiência é muito baixa, você precisa usar um banco de dados não relacional (como redis, mongodb)
Insira a descrição da imagem aqui
sistema de fila de mensagens kafka, twitter internamente, as mensagens transportadas diariamente são trilhões Use o
serviço pequeno Kafka e use sua própria solução. Você não precisa obter deliberadamente um kafka ou algo parecido.
Agora, essa arquitetura parece perfeita, mas o que você deve fazer se houver um problema com o nó.
Portanto, a primeira etapa da operação e manutenção Certifique-se de que nosso sistema precise ser padronizado, a
versão do sistema em texto sem formatação deve ser consistente, a versão do programa deve ser consistente, a organização do caminho deve ser consistente e a boa consistência pode ser alcançada.Esta
etapa é fazer um bom trabalho de monitoramento, todos os componentes de todo o sistema precisam fazer um bom trabalho de monitoramento e alarme após a descoberta da falha irá notificar a pessoa a reparação
do sistema de monitoramento só pode identificar problemas e resolver problemas também precisam
resolver as necessidades de problema (ruim para um novo sistema, seria necessário para instalar o sistema, programas instalados, fornecem energia para iniciar o serviço e, em seguida, deixá-lo juntar-se ao programador, o serviço continuado)
ip endereço pode mudar, mas o nome do host pode ser o mesmo Então precisamos de um servidor DNS interno
desta vez você precisa configurar um servidor para hospedar todo o seu ambiente todo, cada host para fingir o programa, fornecendo o arquivo de configuração, quais serviços iniciar, etc. são definidas no servidor que é bom , Pode ser o mesmo que seu sistema de monitoramento periodicamente, monitorando se cada um de seus hosts está no destino desejado. (Se um serviço é iniciado e se um determinado arquivo de configuração é consistente) Você pode forçar cada um dos nós a instalar o software, copiar o arquivo de configuração, iniciar o serviço e

Insira a descrição da imagem aqui
monitorar o sistema de configuração, se encontrar uma falha. Em seguida, configure o monitoramento de reparo,
Se você não quiser alterar manualmente o servidor existe uma maneira simples de nuvem, todos os servidores podem usar máquinas virtuais para usar máquinas virtuais, falha da máquina virtual não importa, basta apagar o problema ocorre, desde que os dados não é local, criar uma nova instância diretamente, continuam a
ter Após a instalação da nuvem, ainda é muito problemático instalar o sistema e implantá-lo, assim como o programa de ligação, existem muitas dependências, mas se o programa python for implantado, essa dependência não será tão fácil de resolver (vários módulos, vários É necessário instalar a biblioteca e vários pams de terceiros. Esse relacionamento de dependência é muito complicado de resolver. Se você não acessa a Internet, é provável que alguns pacotes de instalação não possam ser instalados. Para usuários que instalam o sistema, esse é um grande desafio. Se houver um problema, apenas um aplicativo e o pacote do qual ele depende podem ser empacotados em um arquivo de imagem, que é iniciado diretamente com base nesse arquivo de imagem, contêiner); portanto, depois que o sistema estiver em execução, não será mais uma única operação, mas um programa e um contêiner. Com todas as dependências pode resolver
a necessidade de implementação manual do dooker
A nuvem é menos dependente dos recursos subjacentes de criação de rede, por isso é geralmente recomendado que pequenas empresas usem a nuvem pública
como uma etapa ausente, como enviar seu site para a porta do usuário, CDN, resolução de nomes de domínio em vários locais e o servidor obtido está ausente endereço do servidor de cache recente

Insira a descrição da imagem aqui
se nenhum nome de CDN, CDN vai iniciar uma solicitação de link para seu site, o que significa que o site pode ter por cento pressão por 8090 CDN carrega
Insira a descrição da imagem aqui
Se CDN desligou, desligou seu quarto servidor, Você precisa criar uma sala de computadores em um local diferente e fazer redundância
. A criação de todo o sistema baseado em doocker, chamado de containerização, pode realmente reduzir a complexidade de
nosso trabalho de operação e manutenção. Quando fazemos todo o site, precisamos fazer análises de operação e manutenção. Existe um sistema de mecanismo de busca (ELK) .Pode
haver um conjunto de dados com uma grande quantidade de dados, que precisa ser exibido em tempo real, e algum sistema de processamento de grandes fluxos de dados (strom) .O

Insira a descrição da imagem aqui
site oficial do Varnish
Insira a descrição da imagem aqui
Para a versão HTTP1.1, existem dois protocolos de cache, lógica de cache expirada, 2. A condição é que a solicitação, o conteúdo do cache expirado, não vá imediatamente para o servidor back-end para solicitar dados, primeiro pergunte ao servidor back-end se foi modificado As modificações continuam a ser usadas e o cache é atualizado para outro ciclo de vida)
pode reduzir bastante a pressão no servidor de back-end

Publicado 252 artigos originais · Curtidas6 · Visitas: mais de 60.000

Acho que você gosta

Origin blog.csdn.net/qq_42227818/article/details/90938729
Recomendado
Clasificación