A história de desenvolvimento da estrutura B / S

A arquitetura do sistema de um site grande e maduro (como Taobao, Jingdong etc.) não foi projetada para ter alto desempenho completo, alta disponibilidade, segurança e outras características.Ela sempre evolui e melhora com o aumento do número de usuários e a expansão das funções de negócios Durante esse processo, ocorreram grandes mudanças no modelo de desenvolvimento, na arquitetura técnica e nas idéias de design.Também a equipe técnica cresceu de poucas pessoas para um departamento ou até uma linha de produtos. Portanto, a arquitetura madura do sistema é aperfeiçoada com a expansão dos negócios e não é alcançada da noite para o dia; sistemas com características diferentes de negócios terão seus próprios focos, como o Taobao, para resolver a pesquisa, o pedido e o pagamento de informações massivas sobre mercadorias, como a Tencent Para resolver a transmissão de mensagens em tempo real de centenas de milhões de usuários, o Baidu precisa lidar com solicitações de pesquisa massivas, todos com características de negócios próprias e arquiteturas de sistema também diferentes. No entanto, também podemos descobrir as tecnologias comuns desses diferentes contextos de sites. Essas tecnologias e métodos podem ser amplamente utilizados na arquitetura de sistemas de sites em larga escala. Vamos entender essas tecnologias introduzindo a evolução dos sistemas de sites em grande escala. E meios.
1. A arquitetura inicial do site

Na arquitetura inicial , aplicativos, bancos de dados e arquivos são implementados em um servidor , conforme mostrado na figura:

2. Separação
de aplicativos, dados e arquivos Com a expansão dos negócios, um servidor não pode mais atender aos requisitos de desempenho, portanto, implante aplicativos, bancos de dados e arquivos em servidores separados e configure diferentes hardwares de acordo com a finalidade do servidor. O melhor efeito de desempenho.

Terceiro, use o cache para melhorar o desempenho do site.
Enquanto o hardware otimiza o desempenho, ele também otimiza o desempenho por meio do software. Na maioria dos sistemas de sites, a tecnologia de cache é usada para melhorar o desempenho do sistema. O uso do cache é principalmente devido à presença de dados quentes. Algumas visitas ao site seguem o princípio 28 (ou seja, 80% das solicitações de acesso, que acabam caindo em 20% dos dados), para que possamos armazenar em cache dados quentes, reduzir o caminho de acesso desses dados e melhorar a experiência do usuário.

As maneiras comuns de implementar o cache são o cache local e o cache distribuído. Obviamente, existem CDN, proxy reverso etc., que serão discutidos mais adiante. O cache local, como o nome indica, é o cache de dados localmente no servidor de aplicativos, que pode ser armazenado na memória ou em arquivos.O OSCache é um componente de cache local comumente usado. As características do cache local são rápidas, mas devido ao espaço local limitado, a quantidade de dados em cache também é limitada. As características do cache distribuído são que ele pode armazenar em cache dados massivos e é muito fácil de expandir.Ele é frequentemente usado em sites de portal.A velocidade não é tão rápida quanto o cache local.Os cache distribuídos comumente usados ​​são Memcached e Redis.
Quarto, use clusters para melhorar o desempenho dos
servidores de aplicativos Servidores de aplicativos, pois a entrada no site suportará um grande número de solicitações; geralmente compartilhamos o número de solicitações por meio do cluster de servidores de aplicativos. Um servidor de balanceamento de carga é implementado na frente do servidor de aplicativos para agendar solicitações do usuário e distribuir as solicitações para vários nós do servidor de aplicativos, de acordo com a estratégia de distribuição.

O hardware da tecnologia de balanceamento de carga comumente usado é o F5, o preço é relativamente caro e o software é LVS, Nginx, HAProxy. O LVS é um balanceamento de carga em quatro camadas, selecione o servidor interno de acordo com o endereço e a porta de destino, o Nginx é um balanceamento de carga em sete camadas e o HAProxy suporta o balanceamento de carga em quatro e sete camadas, você pode escolher o servidor interno de acordo com o conteúdo da mensagem, para que o caminho de distribuição do LVS seja melhor que o Nginx e O HAProxy tem desempenho superior, enquanto Nginx e HAProxy são mais configuráveis, por exemplo, eles podem ser usados ​​para separação dinâmica e estática (com base nas características da mensagem de solicitação, escolha um servidor de recursos estático ou um servidor de aplicativos).
Quinto, separação de leitura e gravação de banco de dados e sub-tabela de sub-biblioteca
À medida que o número de usuários aumenta, o banco de dados se torna o maior gargalo.Métodos comuns para melhorar o desempenho do banco de dados são sub-tabela e separação de leitura e gravação.Como o nome indica, a separação de leitura e gravação é dividir o banco de dados em bibliotecas de leitura E escreva a biblioteca para obter a sincronização de dados através das funções principal e de espera. A sub-biblioteca e a sub-tabela são divididas em segmentação horizontal e vertical, e a alternância horizontal é dividir uma tabela grande de banco de dados, como uma tabela de usuário. A segmentação vertical é alternar de acordo com negócios diferentes, como negócios de usuários, tabelas relacionadas a negócios de commodities são colocadas em bancos de dados diferentes.

6. Use CDN e proxy reverso para melhorar o desempenho do site
Se todos os nossos servidores forem implantados em uma sala de computadores em Chengdu, o acesso será mais rápido para usuários em Sichuan, mas mais lento para usuários em Pequim. Pequim pertence a diferentes regiões desenvolvidas da China Telecom e China Unicom, respectivamente.Os usuários de Pequim precisam acessar os servidores da Internet por um longo caminho através dos roteadores da Internet.O caminho de retorno é o mesmo, portanto o tempo de transmissão de dados é relativamente longo. Para essa situação, a CDN geralmente é usada para solucionar o problema, armazenando em cache o conteúdo dos dados na sala de computadores do operador e o usuário obtém primeiro dados do operador mais próximo ao acessar, o que reduz bastante o caminho de acesso à rede. Operadores CDN mais profissionais incluem Lanxun e Wangsu.
O proxy reverso é implantado na sala de computadores do site. Quando a solicitação do usuário é alcançada, o servidor proxy reverso é acessado pela primeira vez.O servidor proxy reverso retorna os dados em cache para o usuário. Também reduz o custo de aquisição de dados. O proxy reverso possui o Squid, Nginx.

Sete, use sistema de arquivos distribuídos

Os usuários estão aumentando dia a dia, o volume de negócios está aumentando, mais e mais arquivos são gerados e um único servidor de arquivos não pode mais atender à demanda. Precisa de suporte distribuído ao sistema de arquivos. O sistema de arquivos distribuídos comumente usado possui NFS.

Oito, usando o NoSql e o mecanismo de pesquisa
Para consultas massivas de dados, usamos o banco de dados nosql mais o mecanismo de pesquisa para obter melhor desempenho. Nem todos os dados devem ser colocados em dados relacionais. O NOSQL comumente usado são o mongodb e o redis, e o mecanismo de pesquisa é o lucene.

Nove, divida os negócios do servidor de aplicativos
À medida que os negócios se expandem, o aplicativo fica muito inchado, precisamos dividir os negócios de aplicativos, como o Baidu, dividido em notícias, páginas da web, fotos e outros serviços. Cada aplicativo de negócios é responsável por operações de negócios relativamente independentes. As empresas se comunicam através de mensagens ou compartilham bancos de dados.

Dez, crie serviços distribuídos
No momento, descobrimos que cada aplicativo de negócios usará alguns serviços básicos de negócios, como serviços de usuário, pedidos, serviços de pagamento, serviços de segurança, esses serviços são os elementos básicos para dar suporte a cada aplicativo de negócios. Extraímos esses serviços e construímos um serviço distribuído usando uma estrutura de serviço parcial. O Dubbo de Taobao é uma boa escolha.

Resumo
A estrutura de sites grandes é aprimorada continuamente de acordo com as necessidades da empresa, e projetos e considerações específicos serão feitos de acordo com as diferentes características da empresa.

Publicado 51 artigos originais · Gosto 4 · Visitante 7893

Acho que você gosta

Origin blog.csdn.net/u012174809/article/details/103070733
Recomendado
Clasificación