2016-05-20 9 views
0

Короче:многопоточных приложений на MPP архитектуры

ли это стоит усилий, чтобы добавить многопоточности масштабируемость (вертикальная масштабируемость) на приложение, которое будет работать всегда в MPP инфраструктуре такой Тандем HPNS (Horizontal масштабируемый)?

Теперь, позвольте мне идти глубже:

я видел на многих местах разработки под MPP (Massively Parallel Processing) с использованием Java, как правило, думают, если это Java вы можете использовать все, что Java (Знаете, пишите один раз в любом месте!), в котором многопоточные библиотеки (такие потоки, AKKA, пулы потоков и т. д.) могут многое помочь, ускорив производительность с помощью параллелизма.

Забыв, если это MPP, он масштабируется по горизонтали, то есть если вам нужно более быстрое приложение, вы должны его спроектировать для запуска кратных копий приложения, каждый на другом процессоре.

С другой стороны, мы имеем SMP (-мультисервисной обработки Симметричный) инфраструктуры (здесь есть Windows, Linux, UNIX, как среды), в них вам не придется беспокоиться о том, что, поскольку масштабируемость по вертикали, у вас может быть больше потоков, в которых их выполнение будет распределено на разных ядрах, доступных ОС (Здесь я согласен на использование многопоточных библиотек).

Итак, имея в виду, мой вопрос заключается в необходимости создания приложения, которое будет выполнять большую нагрузку данных с большим количеством проверок и других требований, при которых использование параллелизма поможет много для улучшения времени загрузки, но он должен работать в среде MPP (такой Tandem HPNS).

Должен ли разработчик инвестировать время на добавление многопоточных библиотек для добавления параллелизма и параллелизма?

Просто пару боковых нот:

1) Я не говорю, что SMP лучше или MPP лучше, они просто разные инфраструктуры; моя точка зрения сводится только к использованию многопоточных библиотек в средах MPP, что указывает на то, что приложение, использующее многопоточность на MPP, будет использовать только один процессор N Cpus, который может иметь сервер.

2) Я не говорю, что сервер MPP не поддерживает многопоточные библиотеки, вы можете иметь multithreads, работающий на HPNS, но даже у вас есть 20 потоков, нет никакого реального параллелизма, так как один поток блокирует другие; если вы не распространяете приложение (несколько экземпляров) на разных ЦП.

+1

Это очень общий и широкий вопрос; вероятно, только вы получите downvotes и закрыть запросы. – GhostCat

+0

Спасибо Jägermeister за ваш комментарий/предложение, конечно, вы правы, но я действительно думаю, что это должно быть где-то документально, поскольку я видел, что большинство разработчиков, работающих под инфраструктурой MPP, не знают о различиях между обеими архитектурами, что приводит к проблемам с производительностью и в большинстве случаев трата ресурсов, времени и денег; Я постараюсь уточнить свой вопрос, чтобы лучше понять ситуацию. –

ответ

1

Нет, я не думаю, что имеет смысл добавить многопоточную масштабируемость в приложение, которое всегда будет работать в тандеме, потому что тандем не обеспечивает поток уровня ядра, поэтому, даже если вы пишете многопоточное приложение, это не принесет никакой пользы.

Даже тандем HPNS Java обеспечивает многопоточность в соответствии с Java Spec, но его производительность не сопоставима с Linux или любой другой ОС, поддерживающей потоки уровня ядра. Фактическая цель тандема - доступность HA из-за его аппаратной избыточности.