2013-03-10 3 views
0

Я пытаюсь использовать служебную шину azure для неудобной параллельной проблемы, которая может быть разделена на N независимых разделов. Это, по сути, проблема с отображением/уменьшением, но я не хочу использовать Hadoop, потому что мне нужны ответы в реальном времени (< 1 сек.)Azure служебная шина для неудобного параллелирования

Мой первоначальный план состоит в том, чтобы иметь кучу работников, каждый с 1/N фрагменты базы данных. Затем я поставил N проблем поиска на автобусе, и каждый рабочий выполнил все это. Комбинатор объединяет результаты.

Я здесь лаяю неправильное дерево? Неправильно ли это решение этой проблемы?

+0

Как вы планируете синхронизировать работников N, чтобы агрегатор знал, когда нужно вставить? Кроме того, что представляет собой неловко параллельная проблема? – Igorek

+0

Неловко парализовано: «слишком легко» распараллеливать: http://en.wikipedia.org/wiki/Embarrassingly_parallel Я планирую, чтобы агрегатор просто наблюдал за тем, когда все рабочие не надеты. –

ответ

1

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

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

Возможно, вы можете, но не можете, найти, что вы можете последовательно выполнять свои требования к второстепенной задержке. Только при тестировании вы узнаете, можете ли вы достичь своих требований к латентности perf &. Я предлагаю создать приложение, чтобы бросить работу в очередь, и роль (-а) рабочего, чтобы вытащить работу, сделать что-то значимое, а затем вернуть ответы.

Измерение, настройка, измерение, настройка. Тогда вы узнаете;)

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

Однако обратите внимание, что теперь вам придется самостоятельно построить большую часть этой инфраструктуры, включая механизм уведомления работников, повторить обработку обработок mark-as-being и т. Д., Которые ServiceBus предоставляет вам автоматически.

HTH.

+0

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

+0

ServiceBus может быть или не быть узким местом. Только тестирование с прототипом скажет вам. –

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