2013-05-06 3 views
2

Я хотел бы сделать RPC в список клиентов со следующими требованиями:Высокая производительность распределенная асинхронной RPC в Java

  • сервер не знает клиентов (подразумевает своего рода брокера?) И cleints не знаю, серверу
  • может быть несколько клиентов - они разделяют нагрузку для лечения ПКР
  • RPC-это асинхронное
  • очень быстро (туда-обратно < 1мс)
  • дополнительно: предлагает механизм отказа.

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

Что вы хотели бы использовать для таких требований?

Спасибо!

ответ

2

Я бы использовал ActiveMQ, так как с ним легко начать и выполнить единичный тест.

Он может поддерживать 20 тыс. Сообщений в секунду, которых, вероятно, будет достаточно.

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

Можно переключить один JMS-провайдер на другой довольно легко.

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

+0

Я не уверен в решениях JMS, так как мне не нужно хранить сообщения и все такое. Мне кажется слишком много накладных расходов. Мне также нужна поездка в оба конца <1ms – unludo

+0

Я действительно думаю о том, чтобы что-то делать с zeromq – unludo

+0

1000 микросекунд довольно долгое время. Большинство решений JMS должны поддерживать это. Java Chronicle поддерживает задержки около 100 микросекунд по TCP (в оба конца). –

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