Создание приложения для торговли акциями на основе Java, нуждающихся в указателях для использования технологий - PullRequest
3 голосов
/ 23 июня 2009

Я создаю приложение на Java (с внешним интерфейсом jQuery), которое должно взаимодействовать со сторонним приложением. он должен обновлять интерфейс максимум каждые две секунды.

Было бы неплохо использовать кометы? Если да, то как они вписываются в картину?

Какие еще средства / технологии я могу использовать для улучшения приложения?

Приложение будет опрашивать цены акций из стороннего приложения, записывать его в базу данных, а затем каждую секунду отправлять его во внешний интерфейс. Для опроса у меня есть таймер, который запускается каждую секунду, чтобы вызвать стороннее приложение для данные, затем я должен отобразить его во внешнем интерфейсе, используя JSP или что-то,

ну, на данный момент, я не уверен, стоит ли мне использовать сервлет, чтобы записать это в интерфейс, что бы вы посоветовали? как я должен идти об этом?

Есть ли какая-нибудь новая технология, которую я могу использовать вместо сервлетов?

Я также использую Berkeley db для хранения данных. Как вы думаете, это хороший вариант? какие будут недостатки, если таковые имеются для использования Беркли ..

Я абсолютно невежественен, поэтому любой совет будет высоко ценится.

Спасибо!

edit: я планирую сделать это так, чтобы приложение deskop постоянно опрашивало из третьей части и записывало в базу данных, а веб-приложение только считывало и отображало из базы данных, это уменьшит нагрузку на веб-приложение и все это должно сделать, это читать из БД.

Ответы [ 4 ]

5 голосов
/ 23 июня 2009

Взгляните на использование фреймворка веб-приложений вместо сервлетов - если только это не очень простой проект с одним экраном. К сожалению, в мире Java много всего, и это может быть чем-то вроде минного поля. Придерживайтесь, возможно, SpringMVC или Struts 2, худшая часть заключается в их настройке, но посмотрите на пример приложения, а также на учебник или два и продолжайте работать.

http://www.springsource.org/about

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

Другой вариант, на который стоит обратить внимание, - это использование инфраструктуры шаблонов, такой как Appfuse, чтобы начать работу без необходимости интегрировать большую часть инфраструктуры, см .:

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

Он предоставляет вам шаблон для настройки SpringMVC с MySQL в качестве базы данных плюс Spring в качестве инфраструктуры POJO. Это может быть быстрый способ начать и создать прототип.

Судя по вашим требованиям к задержке в 2 секунды, было бы разумно взглянуть на какую-то платформу AJAX - JQuery или Prototype / Scriptaculous - это то, с чего нужно начинать.

http://jquery.com/

http://www.prototypejs.org/

С точки зрения других технологий, чтобы сделать вещи лучше, вы захотите рассмотреть систему сборки, Ant / Maven в порядке с Maven, немного более сложным из двух.

http://ant.apache.org/

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

Также рассмотрим JUnit для тестирования приложения. Возможно, вы захотите рассмотреть Selenium для функционального тестирования внешнего интерфейса.

http://www.junit.org

http://seleniumhq.org/

4 голосов
/ 24 июня 2009

Действительно ли это приложение , торгующее ? Или просто приложение для отображения цены акций? Я спрашиваю, потому что из вашего описания это звучит как последний.

Насколько критично, что данные опрашиваются каждую секунду ? В частности, будет ли иметь значение, если некоторые опросы опаздывают на секунду или две?

Если вы создаете приложение для торговли акциями (где время абсолютно критично) или если вы не можете позволить себе задержать ваш опрос, я бы порекомендовал вам взглянуть на одно из решений Java Real Time:

Кроме этого, мой единственный совет - придерживайтесь хороших методов проектирования ОО. Например, используйте DAO для записи в вашу базу данных, таким образом, если вы обнаружите, что Berkeley DB не совсем для вас, вы можете переключиться на систему реляционных баз данных с относительной легкостью. Это также упрощает переход к некоторым решениям по разделению баз данных (например, Осколки гибернации ), если вы решите, что вам это нужно.

Хотя у меня могут быть свои собственные технологические предпочтения (например, я бы выбрал Spring MVC для внешнего интерфейса, как уже упоминали другие, я бы попробовал использовать Hibernate для упорство), я действительно не могу утверждать, что они будут лучше, чем другие технологии там. Пойдите с чем-то, с чем вы знакомы, если это отвечает всем требованиям.

2 голосов
/ 23 июня 2009

Я думаю, что вы должны сосредоточиться на своем архитектурном проекте, прежде чем выбирать технологии с акцентом на масштабируемость и расширяемость. Создав архитектурный проект, вы можете посмотреть, что доступно и что вам нужно построить, и все это должно быть довольно очевидным.

Хотя это не совсем сопоставимо, рассмотрим, как Google, eBay и YouTube решают проблемы масштабируемости, с которыми они сталкиваются. Хотя у торговой системы не будет проблем, с которыми эти парни сталкиваются с огромным количеством пользователей, у вас будут аналогичные проблемы с объемами данных и возможностью своевременной обработки ценовых тиков.

У LSE есть 3000 имен, умножьте это на 10 или около того популярных бирж по всему миру, и у вас будет много данных, которые постоянно обновляются в течение периода, когда открыт каждый рынок. Чтобы дать вам представление о том, что входит в сбор данных с одного обмена, взгляните на http://kx.com/.

С точки зрения базы данных вам понадобится что-то промышленное, что позволяет кластеризоваться и иметь надежную репликацию - для меня это означает Oracle. Вы также хотите взглянуть на Дизайн базы данных временных рядов , который, по моему опыту, является наилучшим способом построения такого рода системы.

Те же требования к масштабированию и надежности будут применяться к вашим серверам приложений, при этом логичным выбором будет JBoss, хотя я бы также рассмотрел OSGi Spring Server (http://www.springsource.com/products/dmserver), так как его облегченный характер может сделать его быстрее.

Вам также понадобятся серверы Apache для балансировки нагрузки и для обслуживания статического контента - быстрый Google найдет стеки информации об этом, поэтому я не буду повторять это здесь.

Также забудьте опрос, он не масштабируется. Обратите внимание на использование процессов обмена сообщениями и потребителей для межпроцессного взаимодействия, событий и рабочих потоков для взаимодействия в процессе. Оба метода достигают естественного эффекта балансировки нагрузки, который можно настроить, увеличивая количество пользовательских процессов или рабочих потоков по мере необходимости.

Также статический интерфейс не собирается резать горчицу, ИМХО. Взгляните на то, что уже есть на рынке - у рынков с ЧПУ, индекса IG и т. Д. Есть довольно впечатляющие торговые приложения в реальном времени.

Кроме того, если предположить, что это коммерческий проект, а не ставить под угрозу все цели, такие компании, как CNC Markets, IG Index и т. Д., Зарабатывают деньги на торговых сборах, а программное обеспечение является средством для достижения цели, к которому вы получаете доступ бесплатно, просто имея учетную запись. Другая цель для программного обеспечения для торговли - коммерческие учреждения, такие как банки, инвестиционные менеджеры и т. Д. Я хотел бы получить довольно непроницаемый план того, как я собираюсь проникнуть на любой из этих рынков, прежде чем тратить слишком много времени и усилий.

1 голос
/ 23 июня 2009

PostgreSQL, вероятно, правильная база данных. Это немного более предприимчиво, чем MySQL. Что касается внешнего интерфейса, есть много вещей, которые могут идти «поверх» сервлетов, SpringMVC, Tapestry, и так далее, и так далее. Реальная реализация сервлета будет скрыта от вас.

Многие предложат, и, вероятно, это неплохое предложение использовать Spring для настройки приложения и выполнения любых внедрений зависимостей.

Если вы ищете что-то более легкое, вы могли бы рассмотреть Grails. Он быстро развивается и становится зрелым.

Действительно, довольно сложно рекомендовать вещи, не зная, какой это будет «производственная» среда. Мы говорим много транзакций? (конечно, это программа торговли акциями, но это симуляция с небольшим количеством пользователей и т. д ...) Интересно предлагать что-то, но если вы серьезно, я не уверен, что я бы начал такой крупный проект, как этот. Есть много способов сделать это, и много способов сделать это неправильно.

...