Общие очереди VS Actor Model

В моем веб-приложении J2EE я должен отправлять счетчик для каждого вызова Web API в изолированный поток для подсчета количества вызовов. Возможности включают в себя:

а) Использовать атомные длинные. Я думаю, что это вызвало бы раздор, если бы у меня были миллионы звонков в минуту. Как, все потоки будут пытаться обновить одну переменную.

б) использовать общую очередь. Каждый поток обработки запросов будет вставлен в очередь, а выделенный поток счетчиков отключится от этой очереди и увеличит счетчик.

в) Используйте модель актера, скажем, с использованием библиотеки Akka. Отправьте асинхронное сообщение актеру, и это добавит его к счетчику.

Мой вопрос заключается в том, как метод (б) сравнить с (в). Какие плюсы и минусы, и чем они отличаются на низком уровне?

1 ответ

В вашем случае я считаю, что модель актера должна быть лучшим вариантом. Плюсы с аккой

  • Модель Actor с Akka позаботится об управлении потоками, и ее легко внедрить
  • Кроме того, в будущем, если вы захотите реализовать счетчик для другого типа запроса, вы можете просто добавить новый субъект для этого.

Существует аналогичный вопрос: когда использовать актеров вместо решений для обмена сообщениями, таких как WebSphere MQ или Tibco Rendezvous?

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