Самый быстрый способ записи данных на отдельные машины? - PullRequest
0 голосов
/ 04 апреля 2011

У меня есть сеть из 100 машин, все из которых работают под управлением Ubuntu Linux.

В режиме непрерывного (потокового) компьютера X «заполняется» некоторыми данными в реальном времени.Мне нужно написать скрипт на Python, который бы получал данные в качестве входных данных, загружал их в память, обрабатывал и сохранял их на диск.

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

Предположим, у меня есть контейнер данных на Python (будь то список, словарь и т. д.), уже обработанный и разделенныйна кусочки.Какой самый быстрый способ отправки каждого «фрагмента» данных на каждый отдельный компьютер?

Ответы [ 3 ]

5 голосов
/ 04 апреля 2011

Вы должны взглянуть на pyzmq:

http://www.zeromq.org/bindings:python

и общие руководства по zeromq (0mq)

http://nichol.as/zeromq-an-introduction

http://www.zeromq.org/

3 голосов
/ 04 апреля 2011

У вас есть два (класса) выбора:

  1. Вы можете создать какой-нибудь механизм распространения самостоятельно.
  2. Вы можете использовать существующий инструмент для управления распределением и хранением.

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

Если вам нужна дополнительная функциональность, вам, вероятно, понадобится найти какой-нибудь существующий инструмент, который поможет вам. Похоже, вы захотите исследовать некоторые комбинации AMQP (для надежного обмена сообщениями), Hadoop (для распределенной обработки данных) или более полных решений NoSQL, таких как Cassandra или Riak. Используя эти инструменты, ваша система будет значительно более надежной, чем вы, возможно, построите сами.

2 голосов
/ 04 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...