Observadores das estrelas ao longo do tempo | Contribuintes ao longo do tempo |
---|---|
GitHub: opengoofy/hippo4j
Guia: opengoofy/hippo4j
Para documentação completa e mais detalhes, visite: Documentos
Pool de threads é uma ferramenta para gerenciar threads baseada na ideia de pooling. O uso do pool de threads pode reduzir o custo de criação e destruição de threads e evitar o esgotamento dos recursos do sistema causado por muitos threads. Em cenários de processamento de tarefas de alta simultaneidade e grande volume, o uso de pools de threads é essencial.
Se você realmente usa o pool de threads em seu projeto, acredito que poderá encontrar os seguintes pontos problemáticos:
O conjunto de threads é definido arbitrariamente e há muitos recursos de thread, causando alta carga no servidor.
Os parâmetros do pool de threads são difíceis de avaliar. À medida que a simultaneidade de negócios aumenta, o negócio enfrenta o risco de falha.
O tempo de execução da tarefa do pool de threads excede o ciclo médio de execução e é invisível para os desenvolvedores.
O acúmulo de tarefas do pool de threads desencadeia a política de rejeição e afeta o funcionamento normal dos negócios existentes.
Quando ocorrem problemas como timeouts e disjuntores na empresa, por não haver monitoramento, é impossível determinar se o problema é causado pelo pool de threads.
O conjunto de encadeamentos nativo não suporta a transferência de variáveis de tempo de execução. Por exemplo, o contexto MDC será GG quando encontrar o conjunto de encadeamentos.
Incapaz de executar o encerramento normal, um grande número de tarefas do pool de threads em execução foram descartadas quando o projeto foi encerrado.
Enquanto o conjunto de threads está em execução, a execução da tarefa é interrompida. Suspeita-se que ocorreu um conflito ou que uma operação demorada foi executada, mas não há como iniciar.
Fornece suporte para as seguintes funções:
Controle Global - Gerencie instâncias de pool de threads de aplicativos.
Mudanças dinâmicas - altere dinamicamente os parâmetros do pool de threads enquanto o aplicativo está em execução, incluindo, mas não se limitando a: núcleos, número máximo de threads, capacidade de fila de bloqueio, política de rejeição, etc.
Alarme de notificação - quatro estratégias de notificação de alarme integradas, atividade do pool de threads, nível de água da capacidade, estratégia de rejeição e tempo de execução da tarefa muito longo.
Coleta de dados - oferece suporte a vários métodos para coletar dados do pool de threads, incluindo, entre outros: logs, coleta integrada, Prometheus, InfluxDB, ElasticSearch, etc.
Monitoramento de execução - Visualize os dados de tempo de execução do pool de threads em tempo real e exiba os dados de tempo de execução do pool de threads em gráficos dentro de um tempo personalizado.
Expansão de função - suporta o contexto de entrega da tarefa do pool de threads quando o projeto é fechado, suporta a espera que o pool de threads conclua a tarefa dentro de um tempo especificado;
Vários modos - Dois modos de uso integrados: dependência do centro de configuração e nenhuma dependência de middleware.
Gerenciamento de contêineres - visualização do tempo de execução do pool de threads do contêiner Tomcat, Jetty, Undertow e alterações no número de threads.
Adaptação da estrutura - Dubbo, Hystrix, RabbitMQ, RocketMQ e outras visualizações de dados de tempo de execução do pool de threads do consumidor e alterações no número de threads.
Revisão de alterações - Fornece uma variedade de funções de usuário. As alterações nos parâmetros do pool de threads feitas por usuários comuns exigem a revisão do usuário administrador antes de entrarem em vigor.
Plug-ins dinâmicos - plug-ins integrados de vários conjuntos de threads, com suporte para plug-ins definidos pelo usuário e extensões de tempo de execução.
Adaptação multi-versão - Após testes reais, a versão do cliente SpringBoot 1.5.x => 2.7.5 foi suportada (versões superiores não foram testadas).
Para fins de demonstração local, consulte Início rápido
Ambiente de demonstração: http://console.hippo4j.cn/index.html
Mais empresas conectadas podem se cadastrar no endereço de cadastro. O cadastro é apenas para promoção de produtos.
Código aberto não é fácil, clique na estrela no canto superior direito para incentivá-lo!
Se quiser acompanhar os artigos atualizados e informações compartilhadas do Hippo4j em tempo real, você pode acompanhar minha conta oficial.
Se você tiver alguma dúvida durante o uso ou tiver alguma sugestão para o projeto, siga o relato oficial e responda: Junte-se ao grupo para se comunicar e discutir com 1000+
amigos que pensam como você.
Caso sua empresa não utilize cenários Hippo4j, recomendo também a leitura dos princípios subjacentes ao projeto, principalmente pelos seguintes motivos:
A fim de melhorar a qualidade do código e o subsequente comportamento de expansão, vários padrões de projeto são usados para obter alta coesão e baixo acoplamento.
A camada inferior da estrutura depende da estrutura Spring para ser executada e usa um grande número de funções relacionadas ao Spring no código-fonte.
Use uma variedade de ferramentas do pacote de simultaneidade JUC para garantir a segurança de operações multithread e compreender a programação simultânea por meio de cenários reais.
Aprenda com as principais estruturas de código aberto Nacos e Eureka para implementar funções leves de centro de configuração e centro de registro.
Personalize a implementação da estrutura RPC e encapsule o Netty para completar a otimização da comunicação de rede cliente/servidor.
Padronize a escrita de código por meio de plug-ins como CheckStyle e Spotless para garantir comportamento e estilo de código de alta qualidade.
[Sa-Token]: Uma estrutura leve de autenticação de autoridade Java que torna a autenticação simples e elegante!
[HertzBeat]: Sistema de monitoramento em nuvem fácil de usar e amigável, sem necessidade de agente, poderosos recursos de monitoramento personalizados.
[JavaGuide]: Um guia que cobre o conhecimento básico que a maioria dos programadores Java precisa dominar.
[ toBeBetterJavaer ]: Um guia de aprendizagem Java bem-humorado e fácil de entender.
[Jpom]: Construção on-line simples, leve e pouco invasiva, implantação automática, operação e manutenção diária e software de monitoramento de projeto.
[12306]: Usuário 12306 completo de alta imitação + captura de ingressos + pedido + serviço de pagamento para ajudar os alunos a se concentrarem em projetos de emprego.
[CongoMall]: Shopping de nível empresarial, desenvolvido com base no modelo orientado a domínio DDD, incluindo negócios e infraestrutura de shopping.
Obrigado a todos os desenvolvedores que contribuíram para o projeto. Se você estiver interessado em contribuir, consulte a boa primeira edição.
A comunidade Hippo4j recebeu várias licenças da Jetbrains e designou desenvolvedores ativos para o projeto. Somos muito gratos à Jetbrains por seu apoio à comunidade de código aberto.