Высокопроизводительный распределенный асинхронный RPC в Java

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

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

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

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

Спасибо!

2 ответа

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

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

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

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


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

Другие вопросы по тегам