1. A diferença entre projetos tradicionais e projetos de Internet
Projetos tradicionais:
OA, RH, CRM e outros sistemas. Grupo-alvo: funcionários corporativos.
Características: menos usuários do projeto, relativamente menos simultaneidade e alta tolerância do usuário.
Projetos de Internet:
Taobao, Tmall, JD.com Grupo-alvo:
Recursos da Internet: Grande número de usuários, grande número de visitas, mais ênfase na experiência do usuário : estética, funcionalidade, velocidade, estabilidade
Para projetos de Internet, os engenheiros de back-end podem intervir na velocidade e na estabilidade
Velocidade: abrir uma nova página leva apenas um momento e não há atraso entre as páginas.
Estabilidade: 99,9% do site pode ser acessado normalmente durante todo o ano sem problemas
2. Objetivos arquitetônicos de projetos de Internet em larga escala:
Características dos projetos de Internet:
-
Muitos usuários
-
Grande tráfego e alta simultaneidade
-
Dados massivos
-
vulnerável
-
Funções complicadas
-
Mude rapidamente
Medindo métricas de desempenho do site
- Tempo de resposta : o tempo total necessário para executar uma solicitação desde o horário de início até a última vez que os dados de resposta são recebidos
- Simultaneidade : o número de solicitações que o sistema pode atender ao mesmo tempo
- Número de conexões simultâneas : refere-se ao cliente iniciando uma solicitação ao servidor e estabelecendo uma conexão TCP. O número total de conexões TCP ao servidor por segundo
- Número de solicitações : QPS (Query Per Second) refere-se ao número de solicitações por segundo
- Número de usuários simultâneos : quantos usuários existem por unidade de tempo
- Taxa de transferência : refere-se ao número de solicitações que o sistema pode processar por unidade de tempo
- QPS: consulta por segundo refere-se a quantas solicitações por segundo
- TPS: Transação por segundo Número de transações por segundo
- Uma transação refere-se ao processo no qual um cliente envia uma solicitação ao servidor e o servidor responde. O cliente inicia a cronometragem quando envia uma solicitação e termina quando recebe a resposta do servidor. Isso é usado para calcular o tempo utilizado e o número de transações concluídas.
Objetivos arquitetônicos de projetos de Internet
- Alto desempenho: fornece uma experiência de acesso rápido
- Alta disponibilidade: os serviços do site sempre podem ser acessados normalmente
- Escalável: Ao aumentar ou diminuir o hardware, as capacidades de processamento podem ser aumentadas ou diminuídas (grande promoção de expansão de capacidade)
- Alta escalabilidade: baixo acoplamento entre sistemas, fácil adição ou remoção de novos módulos funcionais adicionando ou removendo-os
- Segurança: Fornece acesso seguro ao site e criptografia de dados, estratégia de armazenamento segura
- Agilidade: adapte-se às necessidades e responda rapidamente
Clusterizado e distribuído
Conjunto:
- Descrição popular: Muitas máquinas fazendo a mesma coisa
- Descrição profissional: Um módulo de negócios implantado em um servidor polimórfico
distribuído:
-
Descrição popular: Existem muitas máquinas e cada cluster faz coisas diferentes. Juntos, é um evento complexo (as coisas profissionais são feitas profissionalmente, porque cada coisa tem requisitos de desempenho diferentes)
-
Descrição profissional: Um sistema de grande empresa é dividido em seções de pequenas empresas e implantado em máquinas diferentes.
Os projetos na arquitetura cluster atendem às seguintes características:
-
Alto desempenho: O cluster é escalável, caso o desempenho não seja suficiente, máquinas podem ser adicionadas para garantir o desempenho.
-
Alta disponibilidade: Desde que uma máquina não esteja inoperante, o serviço pode ser fornecido
A arquitetura distribuída em cluster pode atender bem aos objetivos arquitetônicos do sistema da Internet.
-
Alto desempenho: O cluster é escalável, caso o desempenho não seja suficiente, máquinas podem ser adicionadas para garantir o desempenho.
-
Alta disponibilidade: Desde que uma máquina não esteja inoperante, o serviço pode ser fornecido
-
Escalável: expanda e reduza dinamicamente diferentes clusters de serviços de acordo com os requisitos de desempenho de diferentes serviços.
-
Alta escalabilidade: Quando precisar adicionar ou reduzir determinados serviços, basta aumentar ou diminuir os clusters que respondem ao serviço.
Evolução da arquitetura
Arquitetura monolítica
Todos os serviços são implantados em um servidor
- Vantagens: Desenvolvimento e implantação simples, preferido para pequenos projetos
- deficiência:
- Grande quantidade de código e inicialização lenta do projeto
- Fraca confiabilidade
- Má escalabilidade
- Má escalabilidade e capacidade de manutenção
- Baixa performance
arquitetura vertical
A arquitetura vertical consiste em dividir vários módulos em uma única arquitetura em vários projetos independentes para formar várias arquiteturas únicas independentes .
Problemas com arquitetura monolítica:
- Projeto começa devagar
- Fraca confiabilidade
- Má escalabilidade
- Má escalabilidade e capacidade de manutenção
- Baixa performance
Problemas com arquitetura vertical:
- Muitas funções duplicadas
Arquitetura distribuída
A arquitetura distribuída refere-se à extração de módulos de negócios públicos com base na arquitetura vertical e ao fornecimento deles como serviços independentes a outros consumidores para alcançar o compartilhamento e a reutilização de serviços.
- RPC: Chamada de procedimento remoto chamada de procedimento remoto.
Problemas com arquitetura vertical:
- Muitas funções duplicadas
Problemas com arquitetura distribuída:
- Depois que o provedor de serviços muda, todos os provedores precisam mudar
Arquitetura SOA
SOA: (Service-Oriented Architecture, arquitetura orientada a serviços) é um modelo de componentes que divide diferentes unidades funcionais de uma aplicação (chamadas de serviços) e as conecta por meio de interfaces e contratos definidos para esses serviços.
ESB: (Enterparise Service Bus) barramento de serviço corporativo, intermediário de serviço. Fornece principalmente interação entre serviços. O ESB inclui funções como: balanceamento de carga, controle de fluxo, processamento de criptografia, monitoramento de serviços, tratamento de exceções, monitoramento de emergência, etc.
Problemas com arquitetura distribuída:
- Depois que o provedor de serviços muda, todos os provedores precisam mudar
Arquitetura de microsserviços
- A arquitetura de microsserviços é uma sublimação da SOA. A arquitetura de microsserviços enfatiza um ponto-chave: “Os negócios precisam ser completamente modularizados e orientados a serviços”. Pequenos aplicativos, a interação e a integração entre esses pequenos aplicativos são completadas por meio de diversos serviços
- Arquitetura de microsserviços = 80% de pensamento de arquitetura de serviço SOA + 100% de pensamento de arquitetura de componentes + 80% de pensamento de modelagem de domínio
Características:
- Os serviços são componenteizados: os desenvolvedores podem escolher livremente as tecnologias de desenvolvimento e as equipes não precisam ser as mesmas
- A interação entre serviços geralmente usa API REST
- Descentralização: Cada microsserviço possui seu próprio banco de dados privado para persistir os dados de negócios
- Implantação automatizada: divida o aplicativo em serviços individuais independentes para facilitar a implantação, testes, operação e manutenção automatizados