Чем отличается HavaDispatch от исполнителей Java? (и Нетти)

StackOverflow https://stackoverflow.com/questions/9322252

  •  27-10-2019
  •  | 
  •  

Вопрос

Разочаровывающе, веб -сайт Hawtdispatch описывает его как «API" Объединение нитей и Nio Event Framework ".

Давайте сначала возьмем часть «Объединение ниток». Большинство исполнителей, предоставленных Java, также являются в основном пулами резьбов. Чем отличается Hawtdispatch?

Это также, по -видимому, «API Framework Framework Nio Event Event Event». Я предполагаю, что это тонкий слой на верхнем NIO, который берет входящие данные и передает его представлению о «пуле потоков», и передает его потребителю, когда планировщик пула потоков находит время. Правильный? (Любое улучшение по сравнению с NIO приветствуется). Кто -нибудь сделал какой -либо анализ производительности Netty vs HD?

Это было полезно?

Решение

Hawtdispatch предназначена для того, чтобы быть единой системой широким пулом резьбы с фиксированным размером. Он предоставляет орудия 2 вкуса исполнителей Java:

  • Глобальная очередь диспетчерской: представленные выполняемые объекты выполняются одновременно (вы получаете тот же эффект, используя Executors.newFixedThreadPool(n) исполнитель)
  • Очередь последовательной отправки: представленные выполняемые объекты выполняются последовательно (вы получаете тот же эффект, используя Executors.newSingleThreadExecutor() исполнитель)

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

Поскольку Hawtdispatch использует пул потоков фиксированного размера для обработки всех глобальных и серийных выполнений очередей, все выполняемые задачи, которые он выполняет, должны быть не блокирующими. В некотором смысле это похоже на архитектуру Nodejs, за исключением того, что использует несколько потоков вместо одного.

По сравнению с Netty, Hawtdispatch не является основой для фактической обработки данных сокетов. Он не предоставляет структуру для того, как кодировать/декодировать, буферизировать и обрабатывать данные сокета. Все, что он делает,-это выполнять пользователь, настроенный на выполнение, когда данные могут быть прочитаны или записаны в неблокирующем розетке. Это зависит от приложения, а затем фактически читать/записать данные сокета.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top