2009-06-23 11 views
3

Ich baue eine Anwendung in Java (mit einem jQuery-Frontend), die mit einer Anwendung von Drittanbietern sprechen muss. Es muss die Schnittstelle höchstens alle zwei Sekunden aktualisieren.Erstellen einer Java-basierten Trading-Anwendung, benötigen Zeiger für Technologien zu verwenden

Wäre es eine gute Idee, Kometen zu verwenden? Wenn ja, wie passen sie ins Bild?

Welche anderen Mittel/Technologien kann ich verwenden, um die Anwendung zu verbessern?

Die Anwendung wird Aktienkurse von einer Drittanbieter-App abfragen, sie in eine Datenbank schreiben und dann jede Sekunde zum Frontend schieben, für die Abfrage habe ich einen Timer, der jede Sekunde zum Aufruf der Third Party App läuft Für Daten, dann muss ich es an die Front-End mit JSP oder etwas anzeigen,

Nun an dieser Stelle bin ich nicht sicher, ob ich ein Servlet verwenden sollte, um dies auf der Vorderseite zu schreiben, was würden Sie empfehlen? Wie soll ich vorgehen?

Gibt es eine neue Technologie, die ich anstelle von Servlets verwenden kann?

Ich verwende auch Berkeley db, um die Daten zu speichern, halten Sie es für eine gute Option? Was wären die Nachteile, wenn für die Verwendung Berkeley ..

Ich bin absolut ahnungslos, so dass jeder Rat sehr geschätzt wird.

Danke!

edit: Ich plane dies zu tun, so dass eine Deskop App ständig aus dem dritten Teil abfragt und in die Datenbank schreibt und eine Web-App nur liest und aus der Datenbank anzeigt, dies wird die Belastung der Web-App reduzieren und alles, was es zu tun hat, liest aus db.

Antwort

1

PostgreSQL ist wahrscheinlich die richtige Datenbank. Es ist ein bisschen mehr unternehmerisch als MySQL. Was das Front-End betrifft, gibt es viele Sachen, die "über" Servlets, SpringMVC, Tapestry und so weiter gehen können. Die tatsächliche Servlet-Implementierung wird für Sie nicht sichtbar sein.

Viele werden vorschlagen, und es ist wahrscheinlich kein schlechter Vorschlag Spring zu verwenden, um die Anwendung zu konfigurieren und jede Abhängigkeitsinjektion durchzuführen.

Wenn Sie etwas Leichteres suchen, sollten Sie sich über Grals Gedanken machen. Es ist schnell zu entwickeln und zu reifen.

Wirklich, es ist irgendwie schwierig, Dinge zu empfehlen, ohne zu wissen, welche Art von "Produktions" -Umgebung das wäre. Sprechen wir viele Transaktionen? (Sicher, es ist ein Aktienhandelsprogramm, aber ist es eine Simulation mit einer kleinen Anzahl von Benutzern etc ...) Es macht Spaß, Dinge vorzuschlagen, aber wenn du es ernst meinst, bin ich mir nicht sicher, ob ich ein größeres Projekt starten würde Dies. Es gibt viele Möglichkeiten, dies zu tun, und viele Möglichkeiten, dies falsch zu machen.

+0

Nun, ich verstehe, woher du kommst, aber ich muss irgendwo anfangen, vielleicht arbeite ich schrittweise darauf hin, ich weiß, dass wir viele Dinge falsch machen können, aber mit einem guten Rat kann ich wahrscheinlich nicht viel erreichen es richtig :) die Anwendung hat eine Menge von Transaktionen wie in es aktualisiert und speichert die Werte in der Datenbank jede Sekunde (atleast) und dann hat mein Client einige Firmenkunden, so dass es ein gutes Stück von Benutzern wird es schließlich verwenden wird in ein paar Jahren größer werden, aber ich brauche einen Rat, um es so zu bauen, dass es nicht saust. Danke für all Ihren Rat, es war wirklich gut :) – Mponnada

+0

auch, edit: Ich plane, dies zu tun, so dass eine Deskop App ständig aus dem dritten Teil abfragt und in die Datenbank schreibt und eine Web-App nur liest und anzeigt von der Datenbank wird dies die Belastung der Web-App reduzieren und alles, was sie zu tun hat, ist das Lesen von db. – Mponnada

5

Sehen Sie sich ein Web Application Framework anstelle von Servlets an - es sei denn, es handelt sich um ein wirklich einfaches Projekt mit einem Bildschirm. Leider gibt es in der Java-Welt sehr viele und es kann ein bisschen wie ein Minenfeld sein. Stick mit vielleicht SpringMVC oder Struts 2, der schlimmste Teil ist das Einrichten, aber werfen Sie einen Blick auf eine Beispielanwendung plus ein oder zwei Tutorials und arbeiten von dort.

http://www.springsource.org/about

http://struts.apache.org/2.x/index.html

Eine weitere Option an ist zu sehen ein Template Framework wie AppFuse mit sich selbst aufstehen und laufen, ohne viel Rahmen zu integrieren, die zusammen finden:

http://appfuse.org/display/APF/AppFuse+QuickStart

Es bietet Ihnen eine Vorlage zum Einrichten von SpringMVC mit MySQL als Datenbank plus Spring als POJO-Framework. Es kann ein schneller Weg sein, um anzufangen und einen Prototypen zu bauen.

Gemessen an Ihrer Latenzzeit von 2 Sekunden wäre es ratsam, sich eine Art AJAX-Framework anzusehen - JQuery oder Prototype/Scriptaculous sind beide gute Startpunkte.

http://jquery.com/

http://www.prototypejs.org/

In Bezug auf die anderen technoloqies Dinge besser machen Sie ein Build-System prüfen wollen, Ant/Maven sind mit Maven Fein die etwas komplexer aus beiden.

http://ant.apache.org/

http://maven.apache.org/download.html

Bedenken Sie auch JUnit für die Anwendung zu testen. Vielleicht möchten Sie Selenium für die Funktionsprüfung des Frontends in Betracht ziehen.

http://www.junit.org

http://seleniumhq.org/

+0

hi, danke für deinen Rat, es war sehr hilfreich, auch, Ich plane dies zu tun, so dass eine Deskop App ständig aus dem dritten Teil abfragt und in die Datenbank schreibt und eine Web-App nur liest und aus der Datenbank anzeigt, dies wird die Belastung der Web-App reduzieren und alles, was es tun muss, ist das Lesen von db. – Mponnada

2

Ich glaube, Sie auf Ihrer architektonische Gestaltung vor Kommissioniertechnologien mit einem Fokus auf Skalierbarkeit und Erweiterbarkeit konzentrieren. Sobald ein architektonisches Design vorhanden ist, können Sie sehen, was verfügbar ist und was Sie bauen müssen, was alles ziemlich offensichtlich sein sollte.

Während nicht direkt vergleichbar sehen Sie, wie Google, eBay und YouTube mit den Skalierbarkeitsproblemen umgehen, denen sie gegenüberstehen. Während ein Handelssystem nicht die Probleme hat, die diese Leute mit der bloßen Anzahl von Benutzern haben, werden Sie ähnliche Probleme mit dem Datenvolumen bekommen und in der Lage sein, Preis-Ticks rechtzeitig zu verarbeiten.

Die LSE hat sich für 3000 Namen entschieden, multipliziert dies mit den 10 oder so beliebten Börsen rund um die Welt und Sie haben eine Menge von Daten kontinuierlich aktualisiert über den Zeitraum, dass jeder Markt geöffnet ist. Um eine Vorstellung davon zu bekommen, was bei der Erfassung von Daten von einem einzelnen Austausch beteiligt ist, werfen Sie einen Blick auf http://kx.com/.

Aus der Datenbankperspektive benötigen Sie etwas Industrie-Stärke, die Clustering ermöglicht und eine zuverlässige Replikation hat - für mich bedeutet das Oracle. Sie möchten auch eine Time-series Database Design betrachten, die meiner Erfahrung nach der beste Weg ist, um diese Art von System zu bauen.

Die gleichen Skalierungs- und Zuverlässigkeitsanforderungen gelten für Ihre App-Server, wobei JBoss die logische Wahl ist. Allerdings würde ich auch den OSGi Spring Server (http://www.springsource.com/products/dmserver) in Betracht ziehen, da er aufgrund seines geringen Gewichts schneller sein könnte.

Sie wollen auch Apache-Server für Load-Balancing und statischen Inhalt liefern - ein schneller Google wird Stapel von Informationen auf, so dass ich es hier nicht wiederholen werde.

Vergessen Sie auch die Abfrage, es skaliert nicht. Sehen Sie sich Messaging- und Consumer-Prozesse für die prozessübergreifende Kommunikation, Ereignisse und Worker-Threads für die In-Process-Kommunikation an. Beide Techniken erzielen einen natürlichen Lastverteilungseffekt, der durch die Erhöhung der Anzahl von Verbraucherprozessen oder Worker-Threads abgestimmt werden kann.

Auch eine statische Front-End wird nicht den Senf schneiden, IMHO. Schauen Sie sich an, was bereits auf dem Markt ist - CNC Markets, IG Index usw. haben alle ziemlich beeindruckende Echtzeit-Handels-Apps.

Nebenbei, vorausgesetzt, dies ist ein kommerzielles Projekt und bedeutet nicht, einen Downer auf das Ganze, Unternehmen wie CNC Markets, IG-Index, etc. machen ihr Geld aus Handelsgebühren, die Software ist ein Mittel zu einem Ende , zu dem Sie kostenlos Zugang haben, indem Sie einfach ein Konto haben. Das andere Ziel für die Handelssoftware sind kommerzielle Institutionen wie Banken, Investmentmanager usw. Ich möchte einen ziemlich wasserdichten Plan, wie ich in einen dieser Märkte einbrechen könnte, bevor ich zu viel Zeit und Mühe aufwenden muss.

4

Ist das wirklich eine Aktie Handel Anwendung? Oder nur eine Aktienpreisanzeige? Ich frage, weil es sich aus Ihrer Beschreibung nach letzterem anhört.

Wie wichtig ist es, dass Daten pro Sekunde abgefragt werden ? Konkret wäre es wichtig, wenn einige Umfragen ein oder zwei Sekunden später sind?

Wenn Sie eine Anwendung für den Aktienhandel erstellen (wo das Timing absolut kritisch ist), oder wenn Sie es sich nicht leisten können, bei Ihren Pollings verzögert zu werden, empfehle ich Ihnen einen Blick auf eine der Java Real Time Lösungen:

Abgesehen davon ist mein einziger Ratschlag, dass Sie sich an gute OO-Design-Praktiken halten. Verwenden Sie beispielsweise ein DAO, um in Ihre Datenbank zu schreiben. Wenn Sie feststellen, dass Berkeley DB nicht für Sie geeignet ist, können Sie relativ leicht zu einem relationalen Datenbanksystem wechseln. Sie können auch leicht zu einigen Datenbankpartitionierungslösungen wechseln (z. B. Hibernate Shards), wenn Sie dies benötigen.

Während ich meine eigenen Technologiepräferenzen haben könnte (zum Beispiel würde ich Spring MVC für das Frontend wählen, wie andere erwähnt haben, würde ich Hibernate für persistance verwenden), kann ich wirklich nicht behaupten, dass diese besser wären als andere Technologien da draußen. Geh mit etwas, das du kennst, wenn es der Rechnung entspricht.

+0

Hallo, Vielen Dank für Ihre Kommentare, sie waren wirklich hilfreich, ich muss es klarer in der Frage gemacht haben, ich baue keine Aktienhandel-Anwendung, sondern eine Preisanzeige-Anwendung, wie Sie gesagt haben, tut mir leid wegen des Fehlers. – Mponnada

Verwandte Themen