История изменений
Исправление maxcom, (текущая версия) :
У меня конструкция вышла в итоге такая:
- Acceptor thread, один
- Reactor'ы, которые занимаются исключительно вводом выводом (event loop). По одному на CPU, но не больше 32. Reactor обсуживает события ввода-вывода плюс обрабатывает очередь задач которые ему положили другие треды
- Thread pool для работы с внешними сервисами, вычислений и других долгих операций не связанных с основным IO. Настраивается, обычно 128-256 тредов
В целом конструкция оказалась вполне рабочая, единственное что единый thread pool для тяжелых задач оказался не очень хорошей идеей, лучше иметь разные для разных типов задач.
Исходная версия maxcom, :
У меня конструкция вышла в итоге такая:
- Acceptor thread, один
- Reactor'ы, которые занимаются исключительно вводом выводом (event loop). По одному на CPU, но не больше 32. Reactor обсуживает события ввода-вывода плюс обрабатывает очередь задач которые ему положили другие треды
- Thread pool для работы с БД и других тяжелых операций. Настраивается, обычно 128-256 тредов
В целом конструкция оказалась вполне рабочая, единственное что единый thread pool для тяжелых задач оказался не очень хорошей идеей, лучше иметь разные для разных типов задач.