Ein schnelles, leichtes und cloudnatives Microservices-Framework.
Stapelüberlauf | Google-Gruppe | Chat Gitter | Subreddit | Youtube-Kanal | Dokumentation | Beitragsleitfaden |
Leicht bedeutet leichtgewichtig, blitzschnell und gibt Aufschluss darüber, wie man mit modernem Java SE für die Cloud-native Bereitstellung programmiert.
Ich arbeitete seit Anfang 2000 an den Java EE-Plattformen und litt unter Leistungs- und Produktivitätsproblemen. Im Jahr 2014 wurde mir klar, dass die IT-Branche von monolithischen zu Microservices und von lokalen Rechenzentren zu öffentlichen Clouds übergeht.
Um die Produktionskosten für meine Anwendungen zu senken, muss ich eine leichtgewichtige Plattform finden, die einen geringen Speicherbedarf, einen hohen Durchsatz und eine geringe Latenz in Java aufweist. Java EE und Spring/Spring Boot sind zu schwer, um in Betracht gezogen zu werden. Andere leichtgewichtige Java-Plattformen haben alle unterschiedliche Probleme bei der Trennung zwischen Geschäftslogik und technischen Querschnittsbelangen. Darüber hinaus sind sie nicht Cloud-nativ oder für Container/Cloud konzipiert.
Ohne etwas Passendes zu finden, begann ich, meine Open-Source-Plattform light-4j auf der Grundlage des Undertow-HTTP-Kerns aufzubauen, indem ich den Prinzipien folgte. Da mein Ansatz sehr radikal ist und sich gegen Produkte großer Konzerne richtet, wurde ich ständig online und offline von einigen Unternehmen angegriffen. Ich bin jedoch so überzeugt, dass mein Ansatz die zukünftige Richtung darstellt, und setze meine ganze Kraft darauf, die Entwicklung fortzusetzen. Heutzutage nutzen viele Unternehmen Light-4j in der Produktion und erhalten sehr positive Rückmeldungen. Es ermutigt mich zusätzlich, mich dem Framework zu widmen und die Plattform zu erweitern, um ein Ökosystem aufzubauen.
Für Nutzer, die von der Plattform profitieren, können Sie für mich Sponsor werden, damit ich mein ganzes Engagement in die Open-Source-Projekte stecken kann.
Es ist 44-mal schneller als die beliebteste Microservices-Plattform Spring Boot mit eingebettetem Tomcat und benötigt nur 1/5 des Speichers. Hier sind die Benchmark-Ergebnisse im Vergleich zu Spring Boot und anderen Microservices-Frameworks. Hier ist der Drittanbieter-Vergleich mit anderen Web-Frameworks.
Entwerfen Sie die OpenAPI-Spezifikation und generieren Sie den Dienst daraus. Die Spezifikation ist auch Teil des Frameworks, um die Sicherheitsüberprüfung und Anforderungsvalidierung zur Laufzeit voranzutreiben.
Unit-/End-to-End-Test-Stubs werden generiert, um einen testgesteuerten Ansatz für ein Qualitätsprodukt zu ermöglichen.
Debuggen innerhalb der IDE genau wie bei einer eigenständigen Anwendung für eine bessere Entwicklerproduktivität.
Dockerfile- und DevOps-Unterstützungsdateien werden generiert, um die Dockerisierung und die kontinuierliche Integration in die Produktion zu unterstützen.
Alle Open-Source-Frameworks sind in Java erstellt und wir arbeiten intern am Nodejs-Framework. In Zukunft könnten wir auch das Golang-Framework anbieten, und alle teilen sich das gleiche Ökosystem und den gleichen Markt.
OAuth2-Server für Sicherheit und Portal für Produktionsüberwachung und -verwaltung. Das Portal ist auch ein Marktplatz zur Verknüpfung von Kunden und Dienstleistungen.
Es gibt zwei Möglichkeiten, Ihr Projekt zu starten:
Sie können Light-Codegen verwenden, um ein funktionierendes Projekt zu generieren. Derzeit werden Light-Rest-4j, Light-Graphql-4j, Light-Hybrid-Server-4j und Light-Hybrid-Service-4j unterstützt. Light-Eventuate-Codegenerator kommt.
Das Light-Codegen-Projekt README.md beschreibt anhand von Beispielen vier Möglichkeiten, den Generator zu verwenden.
Die andere Möglichkeit, Ihr Projekt zu starten, besteht darin, von light-example-4j zu kopieren.
Die Beschreibung dieser Beispiele finden Sie hier
Außerdem gibt es einige Tutorials
Zum Ausführen/Debuggen über die IDE müssen Sie eine Java-Anwendung mit der Hauptklasse „com.networknt.server.Server“ konfigurieren und das Arbeitsverzeichnis ist Ihr Projektordner. Es gibt keinen Container und Sie arbeiten nur an einer eigenständigen Java-Anwendung.
Erstellen Sie eine Java-Anwendung, deren Hauptklasse com.networknt.server.Server ist und deren Arbeitsverzeichnis Ihr Projektstammordner ist. Sie können Ihren Server wie eine POJO-Anwendung debuggen.
mvn exec:exec
java -jar target/demo-0.1.0.jar
Sie können Strg+C verwenden, um den Server zu beenden, aber für die Produktion verwenden Sie den folgenden Befehl
kill -s TERM <pid>
Der Server verfügt über einen Shutdown-Hook und kann mit dem obigen Befehl bereinigt werden. Schließen Sie beispielsweise In-Flight-Anfragen ab und schließen Sie die Datenbankverbindungen usw. Wenn die Dienstregistrierung und -erkennung verwendet wird, sendet der Server ein Shutdown-Ereignis an die Dienstregistrierung und verarbeitet die Anforderungen 30 Sekunden lang weiter, bis alle Clients ihren lokalen Cache aktualisieren, bevor sie heruntergefahren werden .
Light-4j und alle Light-*-4j-Frameworks sind unter der Apache 2.0-Lizenz verfügbar. Weitere Informationen finden Sie in der LICENSE-Datei.