Sterngucker im Laufe der Zeit | Mitwirkende im Laufe der Zeit |
---|---|
GitHub: opengoofy/hippo4j
Ferienhaus: opengoofy/hippo4j
Die vollständige Dokumentation und weitere Details finden Sie unter: Dokumente
Der Thread-Pool ist ein Tool zum Verwalten von Threads, das auf der Idee des Poolings basiert. Durch die Verwendung des Thread-Pools können die Kosten für das Erstellen und Zerstören von Threads gesenkt und eine Erschöpfung der Systemressourcen durch zu viele Threads vermieden werden. In Szenarien mit hoher Parallelität und umfangreicher Aufgabenverarbeitung ist die Verwendung von Thread-Pools unerlässlich.
Wenn Sie den Thread-Pool tatsächlich in Ihrem Projekt verwenden, werden Sie meiner Meinung nach auf die folgenden Schwachstellen stoßen:
Der Thread-Pool ist willkürlich definiert und es sind zu viele Thread-Ressourcen vorhanden, was zu einer hohen Belastung des Servers führt.
Thread-Pool-Parameter sind schwer zu bewerten. Mit zunehmender geschäftlicher Parallelität besteht für das Unternehmen das Risiko eines Scheiterns.
Die Ausführungszeit der Thread-Pool-Aufgabe überschreitet den durchschnittlichen Ausführungszyklus und ist für Entwickler unsichtbar.
Die Anhäufung von Thread-Pool-Aufgaben löst die Ablehnungsrichtlinie aus und beeinträchtigt den normalen Betrieb bestehender Unternehmen.
Wenn im Unternehmen Probleme wie Zeitüberschreitungen und Leistungsschalter auftreten, kann nicht festgestellt werden, ob das Problem durch den Thread-Pool verursacht wird, da keine Überwachung erfolgt.
Der native Thread-Pool unterstützt die Übertragung von Laufzeitvariablen nicht. Beispielsweise führt der MDC-Kontext einen GG aus, wenn er auf den Thread-Pool trifft.
Das ordnungsgemäße Herunterfahren konnte nicht durchgeführt werden, da eine große Anzahl laufender Thread-Pool-Aufgaben beim Herunterfahren des Projekts verworfen wurde.
Während der Thread-Pool ausgeführt wird, wird die Ausführung der Aufgabe angehalten. Es wird vermutet, dass ein Deadlock aufgetreten ist oder ein zeitaufwändiger Vorgang ausgeführt wurde, es gibt jedoch keine Möglichkeit, ihn zu starten.
Bietet Unterstützung für die folgenden Funktionen:
Globale Kontrolle – Verwalten Sie Anwendungs-Thread-Pool-Instanzen.
Dynamische Änderungen – Ändern Sie Thread-Pool-Parameter dynamisch, während die Anwendung ausgeführt wird, einschließlich, aber nicht beschränkt auf: Kerne, maximale Anzahl von Threads, Blockierungswarteschlangenkapazität, Ablehnungsrichtlinie usw.
Benachrichtigungsalarm – integrierte vier Alarmbenachrichtigungsstrategien: Thread-Pool-Aktivität, Kapazitätswasserstand, Ablehnungsstrategie und Aufgabenausführungszeit ist zu lang.
Datenerfassung – unterstützt mehrere Möglichkeiten zum Sammeln von Thread-Pool-Daten, einschließlich, aber nicht beschränkt auf: Protokolle, integrierte Sammlung, Prometheus, InfluxDB, ElasticSearch usw.
Laufüberwachung – Sehen Sie sich die Thread-Pool-Laufzeitdaten in Echtzeit an und zeigen Sie die Thread-Pool-Laufzeitdaten innerhalb einer benutzerdefinierten Zeit in Diagrammen an.
Funktionserweiterung – unterstützt den Thread-Pool-Aufgabenbereitstellungskontext, wenn das Projekt geschlossen wird, und unterstützt das Warten darauf, dass der Thread-Pool die Aufgabe innerhalb einer bestimmten Zeit abschließt.
Mehrere Modi – Zwei integrierte Nutzungsmodi: Abhängigkeit vom Konfigurationscenter und keine Middleware-Abhängigkeit.
Containerverwaltung – Tomcat-, Jetty- und Undertow-Container-Thread-Pool-Laufzeitanzeige und Thread-Nummernänderungen.
Framework-Anpassung – Dubbo, Hystrix, RabbitMQ, RocketMQ und andere Consumer-Thread-Pool-Laufzeitdatenanzeige und Thread-Nummernänderungen.
Änderungsüberprüfung – Bietet eine Vielzahl von Benutzerrollen. Änderungen an Thread-Pool-Parametern durch normale Benutzer erfordern eine Überprüfung durch den Administrator, bevor sie wirksam werden.
Dynamische Plug-Ins – integrierte Plug-Ins für mehrere Thread-Pools, die benutzerdefinierte Plug-Ins und Laufzeiterweiterungen unterstützen.
Anpassung mehrerer Versionen – Nach tatsächlichen Tests wurde die Client-Version SpringBoot 1.5.x => 2.7.5 unterstützt (höhere Versionen wurden nicht getestet).
Informationen zu lokalen Demonstrationszwecken finden Sie unter Schnellstart
Demo-Umgebung: http://console.hippo4j.cn/index.html
Weitere angeschlossene Unternehmen können sich gerne unter der Registrierungsadresse registrieren. Die Registrierung dient nur der Produktwerbung.
Open Source ist nicht einfach. Klicken Sie auf den Stern in der oberen rechten Ecke, um es zu fördern!
Wenn Sie die aktualisierten Artikel und geteilten Informationen von Hippo4j in Echtzeit verfolgen möchten, können Sie meinem offiziellen Konto folgen.
Wenn Sie während der Nutzung Fragen haben oder Vorschläge für das Projekt haben, folgen Sie dem offiziellen Account und antworten Sie: Treten Sie der Gruppe bei, um mit 1000+
gleichgesinnten Freunden zu kommunizieren und zu diskutieren.
Wenn Ihr Unternehmen keine Hippo4j-Szenarien verwendet, empfehle ich außerdem, die zugrunde liegenden Prinzipien des Projekts zu lesen, hauptsächlich aus folgenden Gründen:
Um die Codequalität und das anschließende Erweiterungsverhalten zu verbessern, werden mehrere Entwurfsmuster verwendet, um eine hohe Kohäsion und eine geringe Kopplung zu erreichen.
Die unterste Ebene des Frameworks basiert auf der Ausführung des Spring-Frameworks und verwendet eine große Anzahl von Spring-bezogenen Funktionen im Quellcode.
Verwenden Sie verschiedene Tools im Rahmen des JUC-Parallelitätspakets, um die Sicherheit von Multithread-Vorgängen zu gewährleisten und die gleichzeitige Programmierung anhand tatsächlicher Szenarien zu verstehen.
Lernen Sie von den Mainstream-Open-Source-Frameworks Nacos und Eureka, um leichtgewichtige Konfigurationscenter- und Registrierungscenterfunktionen zu implementieren.
Passen Sie die RPC-Framework-Implementierung an und kapseln Sie Netty, um die Optimierung der Client/Server-Netzwerkkommunikation abzuschließen.
Standardisieren Sie das Schreiben von Code durch Plug-Ins wie CheckStyle und Spotless, um ein qualitativ hochwertiges Codeverhalten und einen Codestil sicherzustellen.
[Sa-Token]: Ein leichtes Java-Authority-Authentifizierungs-Framework, das die Authentifizierung einfach und elegant macht!
[HertzBeat]: Benutzerfreundliches und benutzerfreundliches Cloud-Überwachungssystem, kein Agent erforderlich, leistungsstarke benutzerdefinierte Überwachungsfunktionen.
[JavaGuide]: Ein Leitfaden, der das Kernwissen abdeckt, das die meisten Java-Programmierer beherrschen müssen.
[ toBeBetterJavaer ]: Ein leicht verständlicher, humorvoller Java-Lernleitfaden.
[Jpom]: Einfache und leichte, wenig aufdringliche Online-Konstruktion, automatische Bereitstellung, täglicher Betrieb und Wartung sowie Projektüberwachungssoftware.
[12306]: Vervollständigen Sie den 12306-Benutzer-, Ticket- und Bestell- und Zahlungsservice mit hoher Nachahmung, um Studenten dabei zu helfen, sich auf Beschäftigungsprojekte zu konzentrieren.
[CongoMall]: Einkaufszentrum auf Unternehmensebene, entwickelt auf der Grundlage des domänengesteuerten DDD-Modells, einschließlich Einkaufszentrumsgeschäft und Infrastruktur.
Vielen Dank an alle Entwickler, die zum Projekt beigetragen haben. Wenn Sie daran interessiert sind, einen Beitrag zu leisten, lesen Sie bitte die gute erste Ausgabe.
Die Hippo4j-Community hat mehrere Lizenzen von Jetbrains erhalten und dem Projekt aktive Entwickler zugewiesen. Wir sind Jetbrains für die Unterstützung der Open-Source-Community sehr dankbar.