Как читать и записывать очень большие данные с устройства - PullRequest
0 голосов
/ 26 декабря 2011

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

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

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

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

Заранее спасибо !!!!

Ответы [ 2 ]

0 голосов
/ 26 декабря 2011

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

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

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

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

0 голосов
/ 26 декабря 2011

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

...