Les astronomes au fil du temps | Contributeurs au fil du temps |
---|---|
GitHub : opengoofy/hippo4j
Gîte : opengoofy/hippo4j
Pour une documentation complète et plus de détails, visitez : Docs
Le pool de threads est un outil de gestion des threads basé sur l'idée de pooling. L'utilisation d'un pool de threads peut réduire le coût de création et de destruction des threads et éviter l'épuisement des ressources système causé par un trop grand nombre de threads. Dans les scénarios de traitement de tâches à forte concurrence et à volume important, l’utilisation de pools de threads est essentielle.
Si vous utilisez réellement le pool de threads dans votre projet, je pense que vous pourriez rencontrer les problèmes suivants :
Le pool de threads est défini arbitrairement et il y a trop de ressources de threads, ce qui entraîne une charge élevée sur le serveur.
Les paramètres du pool de threads sont difficiles à évaluer. À mesure que la concurrence augmente, l’entreprise est confrontée à un risque d’échec.
Le temps d'exécution des tâches du pool de threads dépasse le cycle d'exécution moyen et est invisible pour les développeurs.
L'accumulation de tâches de pool de threads déclenche la politique de rejet et affecte le fonctionnement normal des entreprises existantes.
Lorsque des problèmes tels que des délais d'attente et des disjoncteurs surviennent dans l'entreprise, en raison de l'absence de surveillance, il est impossible de déterminer si le problème est causé par le pool de threads.
Le pool de threads natif ne prend pas en charge le transfert de variables d'exécution. Par exemple, le contexte MDC sera GG lorsqu'il rencontrera le pool de threads.
Impossible d'effectuer un arrêt progressif, un grand nombre de tâches du pool de threads en cours d'exécution ont été ignorées lors de l'arrêt du projet.
Pendant l'exécution du pool de threads, l'exécution de la tâche s'arrête. On soupçonne qu'un blocage s'est produit ou qu'une opération fastidieuse a été effectuée, mais il n'existe aucun moyen de démarrer.
Fournit la prise en charge des fonctions suivantes :
Contrôle global : gérer les instances de pool de threads d'application.
Modifications dynamiques : modifiez dynamiquement les paramètres du pool de threads pendant l'exécution de l'application, y compris, mais sans s'y limiter : les cœurs, le nombre maximum de threads, la capacité de la file d'attente de blocage, la politique de rejet, etc.
Alarme de notification - quatre stratégies de notification d'alarme intégrées, l'activité du pool de threads, le niveau d'eau de capacité, la stratégie de rejet et le temps d'exécution des tâches est trop long.
Collecte de données - prend en charge plusieurs méthodes pour collecter les données du pool de threads, y compris, mais sans s'y limiter : les journaux, la collection intégrée, Prometheus, InfluxDB, ElasticSearch, etc.
Surveillance de l'exécution : affichez les données d'exécution du pool de threads en temps réel et affichez les données d'exécution du pool de threads dans des graphiques dans un délai personnalisé.
Extension des fonctions - prend en charge le contexte de livraison des tâches du pool de threads ; lorsque le projet est fermé, prend en charge l'attente que le pool de threads termine la tâche dans un délai spécifié.
Modes multiples - Deux modes d'utilisation intégrés : dépendance au centre de configuration et aucune dépendance au middleware.
Gestion des conteneurs - Affichage de l'exécution du pool de threads du conteneur Tomcat, Jetty, Undertow et modifications du numéro de thread.
Adaptation du framework - Dubbo, Hystrix, RabbitMQ, RocketMQ et autres affichages des données d'exécution du pool de threads grand public et modifications du numéro de thread.
Examen des modifications : fournit une variété de rôles d'utilisateur. Les modifications apportées aux paramètres du pool de threads par les utilisateurs ordinaires nécessitent un examen par l'utilisateur administrateur avant de pouvoir prendre effet.
Plug-ins dynamiques : plug-ins de pool de threads multiples intégrés, prenant en charge les plug-ins définis par l'utilisateur et les extensions d'exécution.
Adaptation multi-versions - Après des tests réels, la version client SpringBoot 1.5.x => 2.7.5 a été prise en charge (les versions supérieures n'ont pas été testées).
À des fins de démonstration locale, voir Démarrage rapide
Environnement de démonstration : http://console.hippo4j.cn/index.html
Les entreprises plus connectées sont invitées à s'inscrire à l'adresse d'enregistrement. L'inscription est uniquement destinée à la promotion des produits.
L'open source n'est pas facile, cliquez sur l'étoile en haut à droite pour l'encourager !
Si vous souhaitez suivre les articles mis à jour et les informations partagées d'Hippo4j en temps réel, vous pouvez suivre mon compte officiel.
Si vous avez des questions pendant l'utilisation ou si vous avez des suggestions pour le projet, suivez le compte officiel et répondez : Rejoignez le groupe pour communiquer et discuter avec 1000+
amis partageant les mêmes idées.
Si votre entreprise n'utilise pas de scénarios Hippo4j, je vous recommande également de lire les principes sous-jacents du projet, principalement pour les raisons suivantes :
Afin d'améliorer la qualité du code et le comportement d'expansion ultérieur, plusieurs modèles de conception sont utilisés pour obtenir une cohésion élevée et un faible couplage.
La couche inférieure du framework s'appuie sur le framework Spring pour s'exécuter et utilise un grand nombre de fonctions liées à Spring dans le code source.
Utilisez une variété d'outils dans le cadre du package de concurrence JUC pour garantir la sécurité des opérations multithread et comprendre la programmation simultanée à travers des scénarios réels.
Apprenez des frameworks open source grand public Nacos et Eureka pour implémenter des fonctions légères de centre de configuration et de centre d'enregistrement.
Personnalisez la mise en œuvre du framework RPC et encapsulez Netty pour compléter l’optimisation de la communication réseau client/serveur.
Standardisez l'écriture de code via des plug-ins tels que CheckStyle et Spotless pour garantir un comportement et un style de code de haute qualité.
[Sa-Token] : un cadre d'authentification d'autorité Java léger qui rend l'authentification simple et élégante !
[HertzBeat] : système de surveillance cloud facile à utiliser et convivial, aucun agent requis, puissantes capacités de surveillance personnalisées.
[JavaGuide] : un guide couvrant les connaissances de base que la plupart des programmeurs Java doivent maîtriser.
[ toBeBetterJavaer ] : un guide d'apprentissage Java humoristique et facile à comprendre.
[Jpom] : logiciel de construction en ligne simple et léger et peu intrusif, de déploiement automatique, d'exploitation et de maintenance quotidiennes et de suivi de projet.
[12306] : Utilisateur 12306 complet à haute imitation + récupération de billets + commande + service de paiement pour aider les étudiants à se concentrer sur leurs projets d'emploi.
[CongoMall] : centre commercial au niveau de l'entreprise, développé sur la base d'un modèle axé sur le domaine DDD, comprenant les activités et l'infrastructure du centre commercial.
Merci à tous les développeurs qui ont contribué au projet. Si vous souhaitez contribuer, veuillez vous référer au bon premier numéro.
La communauté Hippo4j a reçu plusieurs licences de Jetbrains et a affecté des développeurs actifs au projet. Nous sommes très reconnaissants à Jetbrains pour son soutien à la communauté open source.