2016-04-26 31 views
0

Ist es sinnvoll, Spring in der Server-Seite einer In-Memory-Data-Grid-basierten Anwendung zu verwenden?Spring in Speicher-Daten-Grid-Anwendung

Mein Bauchgefühl sagt mir, dass es Unsinn in einem Hochleistungssystem mit niedriger Latenz ist. Ein Kollege von mir besteht darauf, den Frühling darin aufzunehmen. Was sind die Vor- und Nachteile solcher Inklusion?

Meine Position ist, dass Spring ist in Ordnung in den Client verwendet werden, aber es ist zu schwer für den Server, es bringt zu viele Abhängigkeiten und ist eine weitere undichte Abstraktion zu denken.

Antwort

3

Data Grid-Systeme sind im Allgemeinen Speicher und I/O-intensiv. Die Verwendung von Spring wirkt sich nicht darauf aus (Sie können argumentieren, dass Spring viele Beans erzeugt, aber mit der richtigen Garbage Collection-Einstellung kein Problem darstellt).

Auf der anderen Seite hilft Ihnen die Verwendung von Spring (oder einem anderen DI), Ihren Code zu strukturieren und zu testen.

Wenn Sie also eine Art von Server basierend auf Data Grid-Systemen implementieren, achten Sie darauf, GC, Sockets in Ihrem Betriebssystem (Speicherpuffer und Socket-Speicher) richtig anzupassen. Diese geben Ihnen viel mehr Vorteile, als DI zu reduzieren.

1

Zuerst bin ich überrascht von der "Leaky Abstraktion" Kommentar. Ich habe noch nie jemanden gehört, der Spring dafür kritisiert hat. In der Tat ist es genau das Gegenteil. Spring entfernt die Implementierungsdetails von Infrastruktur wie Datengrids aus Ihrem Anwendungscode und bietet ein konsistentes und vertrautes Programmiermodell, mit dem Sie sich auf die Geschäftslogik konzentrieren können. Spring verbessert die Konfiguration und den Zugriff auf Datengrids, insbesondere Gemfire, erheblich und erzeugt in der Regel keinen Runtime-Overhead. Während der Initialisierung einer Spring-Anwendung verwendet Spring intern Werkzeuge wie Reflektion und AOP, was die Startzeit einer Anwendung erhöhen kann, aber dies hat keinen Einfluss auf die Laufzeitleistung. Spring hat sich in vielen Produktionsanwendungen mit hohem Durchsatz und niedriger Latenz bewährt. In extremen Fällen sind Dinge wie Netzwerklatenz und Serialisierung, die sich außerhalb von Spring befinden, normalerweise die größten Faktoren, die sich auf die Leistung auswirken.

"Frühling bringt zu viele Abhängigkeiten" ist eine häufige Beschwerde, ist aber ein Trugschluss. Ich würde sagen, dass Spring die genau richtige Menge an Abhängigkeiten für das, was es zu tun hat, bringt. Außerdem erleichtern Spring Boot-Starter und die Plattform-BOM die Abhängigkeitsverwaltung, sodass Sie sich keine Gedanken über Versionsinkompatibilitäten machen müssen oder allgemeine Abhängigkeiten explizit deklarieren müssen. Ich werde mich auf dieser Seite mit Ihrem Kollegen abgeben müssen.