[Tomcat] Parte 2: ilustrando a evolução da arquitetura Tomcat

Configuração do ambiente de origem

  1. Importar pacote de origem
  2. Edite a configuração de execução, defina a classe de entrada e o diretório de construção do projeto (diretório de construção)
  3. Modifique a versão do JDK do projeto de acordo com as condições locais e codificação de caracteres

1. História da evolução da arquitetura Tomcat

1.1 Servidor único

O servidor é responsável por monitorar sockets, analisar solicitações, concluir tarefas relacionadas e retornar resultados de processamento
Insira a descrição da imagem aqui

  • Start (): inicia o servidor, abre a conexão de soquete, monitora a porta de serviço, aceita solicitações do cliente, processa e retorna respostas
  • Stop (): Desligue o servidor e libere recursos
  • Desvantagens: o monitoramento de solicitação e o processamento de solicitação juntos têm escalabilidade pobre (comutação de protocolo, implantação independente de tomcat usa protocolo HTTP e Apache usa protocolo AJP)

1.2 Separação de protocolo de rede e processamento de solicitação

Divida o servidor em duas partes: componente Conector e componente Container

  • Conector
    • Abra o Socket e monitore a solicitação do cliente e retorne os dados de resposta;
    • Um conector corresponde a uma porta
  • Container: responsável pelo processamento de pedidos específicos

1.3 Apresentando a camada intermediária de serviço

serviço é responsável por gerenciar Conector e Contêiner e estabelecer um relacionamento de mapeamento

Insira a descrição da imagem aqui

  • Um servidor pode conter vários serviços, cada serviço é independente, eles compartilham uma JVM e uma biblioteca de classes do sistema.
  • Um serviço é responsável por manter vários conectores e um contêiner
    • Desta forma, a solicitação do Conector só pode ser processada pelo Contêiner mantido pelo Serviço ao qual pertence; quando várias portas precisam ser usadas, vários serviços devem ser configurados
    • Aqui, Container é um conceito geral. Para esclarecer a função e ter o mesmo nome do componente no Tomcat, Container pode ser nomeado Engineer
  • O Tomcat iniciará um serviço chamado Catalina por padrão

1.4 Implementar contêiner por meio de divisão de tarefas

O Container é dividido em quatro partes: Engine, Host, Context, Wrapper e conectado por meio da cadeia de modo de responsabilidade
Insira a descrição da imagem aqui

  • Mecanismo: Não há contêiner pai. Um Mecanismo representa um mecanismo servlet completo. Ele recebe a solicitação do Conector e decide para qual Host transmitir para processamento. Após o Host processar a solicitação, ele retorna o resultado para o Mecanismo e o Mecanismo retorna o resultado para o Conector. .
  • Host: indica um host virtual, ou seja, um Tomcat pode ter vários nomes de domínio; este design está em conformidade com o estágio inicial do tomcat, os recursos do servidor são restritos e um servidor precisa implantar vários serviços de diferentes nomes de domínio; um motor pode ter vários hosts
  • Contexto: indica um aplicativo da web, ou seja, um aplicativo sob webapp; um Host pode ter vários contextos
  • Wrapper: representa um servlet, usado para processar especificamente a solicitação correspondente; um Contexto pode ter vários Wrapper

1.5 Gerenciamento unificado de componentes: adicionar ciclo de vida (LifeCycle) a todos os componentes

Insira a descrição da imagem aqui

  • O ciclo de vida inclui
    • Status do ciclo de vida: BEFORE_INIT_EVENT, AFTER_INIT_EVENT, START_EVENT, etc.
    • Métodos de ciclo de vida: init (), start (), stop, getState (), etc.
  • Cada componente tem um ciclo de vida
    • Conector: implemente diretamente a interface LifeCycle
    • Container: o próprio container é uma interface, ele implementa LifeCycle, então suas classes de implementação específicas têm um ciclo de vida

2. Diagrama da arquitetura geral do Tomcat

Insira a descrição da imagem aqui

2.1 Conector

  • Endpoint é usado para lidar com a conexão de rede do Socket subjacente, ou seja, para implementar o protocolo TCP / IP
  • Processador é usado para encapsular o Socket recebido pelo Endpoint em Request, que implementa o protocolo HTTP
  • O adaptador é usado para entregar a solicitação encapsulada ao contêiner para processamento específico.

2.2 Container

Um link de referência está anexado no final do artigo

Acho que você gosta

Origin blog.csdn.net/weixin_43935927/article/details/108639997
Recomendado
Clasificación