2012-07-08 6 views
2

Какова наилучшая процедура для чтения данных в реальном времени из сокета и построения графика в графике? Графирование для меня не проблема; мой вопрос больше связан с хранением потока данных, который обновляется через порт. Java должен иметь возможность читать и анализировать его в очереди, массиве или карте хеша и, таким образом, строить график реального времени.Как мне обрабатывать данные в реальном времени, хранить их в Java-типе и строить график в реальном времени?

Усложнение заключается в том, что приложение может получать большое количество данных каждую секунду. Java необходимо выполнить высокопроизводительное задание для анализа данных, очистки старых записей и непрерывного добавления новых записей. Есть ли какая-либо реальная библиотека времени, которую я должен использовать, или я должен программировать ее с нуля с помощью нуля, например. создать очередь или массив для хранения данных и удаления данных после того, как очередь/массив достигнет определенного размера?

+0

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

+0

Трудно ответить на этот вопрос, не зная, в какой форме поступают данные, и что именно вам нужно от графика. – jacobm

+0

@jacobm - это, к примеру, статистика процессора и должна отображаться на графике. –

ответ

0

Я бы смиренно предположил, что, возможно, вы можете рассмотреть LinkedBlockingQueue (используйте thread/executor для чтения/удаления данных из LinkedBlockingQueue).

Если вы не хотите использовать эти структуры данных, но предпочитаете сервер обмена сообщениями взять на себя эту ответственность по какой-либо причине, ActiveMQ/ZMQ/RabbitMQ и т. Д. Помогли бы (с очередями или темами в зависимости от вашего варианта использования - для экземпляр в AMQ, использование очереди для одного потребителя, тема для нескольких потребителей, если вы не хотите использовать браузеры с прочными очередями).

Если вам подходит ваш прецедент, вы также можете изучить библиотеки актеров, такие как kilim или akka.

+0

Есть ли лучший способ переместить данные в браузер клиента с сервера на основе подписанных клиентов? Любой простой пример поможет –

+0

некоторые структуры для отображения данных, относящиеся к производительности системы: графит (на основе python), openTSDB (на основе Java) и куб (основанный на nodejs). Для отправки данных в браузер можно посмотреть в socket.io (или java-реализации socket.io), которые используют веб-сокеты и имеют резервные копии, такие как опрос XHR. –

+0

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

Смежные вопросы