2013-03-14 4 views
7

Wir evaluieren nur wenige Optionen für die Entwicklung einer telekommunikationsbezogenen Anwendungsplattform (und die Migration/Konsolidierung einiger eigenständiger Anwendungen in die neue Plattform). Eines unserer Hauptanliegen ist die Fähigkeit, große Mengen von Anfragen während der Stoßzeiten zu bewältigen.JRuby/TorqueBox für leistungsstarke/unternehmenskritische Anwendungen

Wir fühlen uns der TorqueBox auf eine interessante Lösung, weil erwägenswert scheint:

  • Speed ​​(neben reinen Java-Performance)
  • Schnellere Entwicklungszeit über Java
  • Wartbarkeit
  • Unterstützung für Themen/Nebenläufigkeit, obwohl es Ruby ist
  • Schneller/einfacher Frontend-Entwicklung mit Schienen
  • ...
  • RedHat unterstützt und läuft auf JBoss (Skalierbarkeit, die künftige Entwicklung und die Fähigkeit, Java zu nennen, wenn notwendig)
  1. Hat jemand entwickelt/implementiert ähnliche Anwendung (en) mit JRuby/TorqueBox?
  2. Irgendwelche schwerwiegenden Leistungsengpässe? (oder warum sollten wir JRuby nicht verwenden und sollten bei Java bleiben?)
+0

Von dem, was ich aus dem Benchmarks gesammelt und IRC: JRuby/Torquebox kann und die hohen Belastungen recht gut ginge. Wir entwickeln möglicherweise eine PoC-App mit Celluloid.IO (für Nebenläufigkeit) + TorqueBox und testen, wie es mit einer Java-Referenz-App umgehen würde. Wird mit Lade-Statistiken aktualisiert, wenn wir uns dazu entschließen, die JRuby PoC-App zu entwickeln. – bud

+0

Die Kombination von Celluloid: io mit Torquebox schien zumindest für unsere Anforderung ein Overkill zu sein und wir nutzten die eingebauten Warteschlangenfunktionen von TB, und diese scheinen ohne Probleme zu funktionieren. Eine Sache zu beachten ist, haben wir festgestellt, Running-on-Entwicklungsmodus gab Fehler mit jboss Speicher Grenzen. Durch die Bereitstellung der App im Produktionsmodus wurden sie gelöscht. – bud

Antwort

0

ja jeder ausgereifte Java-Web-Server mit JRuby ist eine wertvolle Option. Die Details der Handhabung von High-Loads zu Spitzenzeiten hängen wirklich davon ab, welche Art von App du ausführen wirst, wie viel "Hardware" du dir leisten kannst, aber im Allgemeinen ist es machbar, aber sei dir bewusst, dass es noch einige "Gotchas" geben könnte. z.B Ruby-Bibliotheken (Edelsteine), die nicht gut mit Thread-Sicherheit umgehen. Sie müssen einfach verstehen, wie es weitergehen, als - was scheint, Sie tun, da Sie ‚Celluloid.IO‘ verwenden :)

+0

Celluloid: IO schien ein Overkill für unsere Situation zu sein, sobald wir unsere Anforderungen wirklich verstanden und uns mit der TB vertraut gemacht hatten, und wir entschieden uns einfach für die eingebauten Warteschlangen von JB/TB. – bud

0

Die Antwort lautet ja, aber sich bewusst sein Speicherlecks (Edelsteine, threadsafety Fragen, etc.) sind wollen . Sie müssen mit Tools wie VisualVM, Eclipse MAT und/oder NewRelic vertraut sein.

Wir verwenden Torquebox erfolgreich für einige Kunden auf Amazon EC2, die 60k-80k Visits pro Tag bearbeiten (neue c3 Instanzen sind großartig für Java).

Die Bereitstellung ist ebenfalls ein Problem. Wir können aufgrund des Speicherverbrauchs keinen Roll-Neustart durchführen. Jedes Mal, wenn wir Capistrano einsetzen, ist ein vollständiger JBoss-Neustart erforderlich (kein großes Problem für uns).

Bests, Antonio