Я исхожу из фона java и имею проблему с привязкой к ЦП, которую я пытаюсь распараллелить, чтобы повысить производительность. Я разбил свой код, чтобы выполнить его модульным способом, чтобы его можно было распределять и запускать параллельно (надеюсь).Параметры параллелизации/кластера для выполнения кода
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void runMyJob(List<String> some params){
doComplexEnoughStuffAndWriteToMysqlDB();
}
Теперь, я думал о следующих вариантах распараллеливания этой проблемы, и я хотел бы человек мысль/опыта в этой области.
Опции Сейчас я думающие о:
1) Использование Java EE (например, JBoss) кластеризация и MessageDrivenBeans. MDB находятся на подчиненных узлах кластера. Каждый MDB может выбрать событие, которое запускает работу, как указано выше. AFAIK Java EE MDB многопоточны сервером приложений, поэтому мы, надеюсь, также сможем использовать многоядерные процессоры. Таким образом, он должен быть масштабируемым по вертикали и горизонтали.
2) Я мог бы использовать что-то вроде Hadoop и Map Reduce. Озабоченность, которую я хотел бы получить здесь, заключается в том, что моя логика обработки работы на самом деле довольно высокого уровня, поэтому я не уверен, насколько это можно сделать, чтобы преобразовать карту. Кроме того, я новичок в МР.
3) Я мог бы взглянуть на что-то вроде Scala, которое, по моему мнению, упрощает параллельное программирование. Однако, хотя это масштабируемо по вертикали, это не масштабируемое для кластера/горизонтали решение.
В любом случае, надейтесь, что все это имеет смысл и благодарит вас за предоставленную помощь.
Akka обеспечивает надежную дистанционную возможность для Scala, поэтому я не уверен, что справедливо сказать, что Scala не масштабируется по горизонтали. (На самом деле даже основная библиотека Scala обеспечивает некоторую поддержку для удаленных участников.) –
Привет, Rex, спасибо, это именно то, что я предполагаю, о чем я мало что знаю. Итак, легко ли распределять задания по узлам с помощью scala и Akka? Не могли бы вы порекомендовать его с помощью кластера JBoss? – Brian
Я боюсь, что не знаю, чтобы рекомендовать; Я просто знаю, что это возможность. –