2011-12-25 3 views
0

Я строю систему отслеживания местоположения для одного из наших клиентов. У них есть GPS-устройства, установленные в транспортных средствах, и каждое устройство запрограммировано с IP-адресом сервера и номером порта. Мы разработали прослушиватель TCP, который прослушивает запрос, отправленный устройством. Эти устройства отправляли запрос каждую минуту.Как читать и писать чрезвычайно большие данные с устройства

Фактическая проблема заключается в том, что в течение 1 000 минут каждое устройство GPS посылает запрос, поэтому хранение информации очень сложно, я не могу найти оптимальный подход к хранению данных, поступающих с устройств. Должен ли я хранить в файле или в memcached?

Пожалуйста, помогите мне найти лучший способ справиться с этой проблемой. Пожалуйста, помните, что каждое GPs-устройство поддерживает GPRS, и из-за этого у них есть подключение к Интернету, чтобы они могли разговаривать с нашим серверным сервером. Иногда эти устройства не могут найти Интернет, так как транспортное средство будет перемещаться по всем местам, но как только устройство получит интернет-соединение, оно отправляет весь пакет за один раз, который, как предполагается, отправляется каждую минуту.

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

Спасибо заранее!

+2

Как слово совета - использование «лаха» в качестве единицы на международном форуме - не отличная идея; он широко не используется. Также неясно, хотите ли вы написать «1 000 000 лакхов» или «100 000» лакх - поставить запятую до того, как * 2 * 0 необычны. –

ответ

0

Один из вариантов, который приходит на ум, - это Apache Flume как способ сбора данных в Hadoop. Другой (коммерческий) вариант Splunk

0

Чтобы быть в состоянии обрабатывать такое количество данных, я бы создать кучу серверов очереди сообщений в очередь на все входящие данные, и набор слушателей принимать сообщения из этих очередей и интерпретировать их. ActiveMQ, RabbitMQ и HornetQ могут теоретически обрабатывать тысячи сообщений в секунду.

HornetQ, например, имеет high performance journal, который будет очень эффективно балансировать между журналом в памяти и пейджингом в файловой системе. В Linux он получил native integration with LibAIO для оптимизации взаимодействия файловой системы.

Если вы настроили балансировщик оборудования, вы можете настроить устройства GPS для связи с балансировщиком нагрузки, и они будут перенаправляться на один из серверов очереди сообщений.

Узким местом может быть получение данных из прослушивателей очереди сообщений в вашу базу данных. Чтобы этого избежать, вы можете использовать MySQL Cluster's horizontal partitioning.

+0

Спасибо geryfairer, не могли бы вы помочь предложить сервер очереди сообщений в java, и, пожалуйста, дайте мне знать, что каждое устройство gps обменивается данными на одном и том же сервере и на одном и том же порту, так как я могу обрабатывать миллион запросов одновременно, поэтому время не должно происходит? Пожалуйста, предложите мне, где я могу хранить все входящие данные в memoey или файловой системе? Должен ли я использовать memcached? – geekIndiana

+0

Я знаю, что HornetQ будет хранить столько сообщений в памяти, а страницу на диск при необходимости. – greyfairer

+0

Балансировщик оборудования, такой как Cisco Catalyst, может принимать все входящие данные на один IP-номер и порт и распространять его на сотни серверов. Я знаю, что HornetQ будет хранить как можно больше сообщений в памяти, а при необходимости - на диск. Но это только для временного хранения. Что вы хотите сделать с данными дальше? – greyfairer

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