Я'вэ работает с акка на 7-8 месяцев ежедневно. Когда я начинал, я работал бы на приложения и заметил, что актеры будут использованы в основном в любом месте оказавшись внутри, вдруг для связи между объектами. Так что я сделал то же самое - спина еще актер Для х/г/з.
Мне кажется, что это может быть слишком неразборчивы, добавив сложности, где это'т нужна - но я могу'т найти любые дискуссии о том, где актеры против обычного синхронного или асинхронного логики даже с помощью фьючерсов должно быть использовано. Я начал обдумывать свою позицию после того, как мой коллега упоминал нечто подобное. Я понял, что несколько случаев в последнее время когда я размышлял над задачей, а потом избежать создания еще одного актера, потому что я мог бы достичь того же результата безопасно в неизменяемом реализации - например, что-то как получить значения параметров из БД или файл, где вы к очень нечасто и будем ждать результат является фактическое использование случае.
В частности, мне кажется, что любой случай, когда вы'вновь играет с неизменным состоянием, актеры создают сложности и ограничения пропускной способности - это чистое назначение объекта, например, можно назвать одновременно без риска с любым уровнем параллелизма, но актер может обрабатывать только одно сообщение за раз. Альтернативное соображение-вы'МР-парк-нить, Если вам нужно ждать результат, если вы начнете использовать фьючерсы, но случаи, когда вы не'т нужно беспокоиться о async сообщения или данные, кажется, это может быть излишним нанимать актера.
Итак, мой вопрос - есть ли плохое время, чтобы использовать актеров? Я'м любопытное, как Эрланг выглядит и нравится другим людям'с проницательностью. Или если есть некоторые принципы, на основе использования актера.
Этот вопрос меня заинтересовал и я провел небольшое исследование. Для других точек зрения, увидеть в этом своем блоге Ноэль Уолш или этот вопрос на переполнение стека. У меня есть некоторые мнения, я хотел бы предложить:
Как и Джейсон, я хотел бы услышать других людей'ы инсайт. Как я могу решить некоторые из проблем выше, и использовать Акка лучше?
Это's стоит, учитывая то, что актер модель используется для: актер, модель
Это ценно, потому что с помощью общего состояния из нескольких потоков становится действительно трудно, особенно когда есть отношения между различными компонентами общего состояния, которые должны быть синхронизированы. Однако, если у вас есть домен компоненты, в котором:
тогда модель актер не будет давать гораздо (если таковые имеются) пользу.
Надеюсь, что помогает.
Ваша интуиция верна, ИМХО. С помощью актеров везде как пресловутый молоток и видит только гвозди.
Эрланга лучшей практикой является использование процессов/актеры за все действия, которые происходят одновременно. То есть, как и в реальной жизни. Иногда трудно найти правильный детализации, но в большинстве случаев вы просто знаете, глядя на образцу домен и использовать немного здравого смысла. Я'м боюсь, что я Дон'т лучше, чем это, но я надеюсь, что это помогает.
В целях ввода/вывода обмена сообщениями:
Недавно я встречался с акка-приложений, где модели акторов на самом деле причиной проблемы параллелизма, более простой модели хватило бы и лучше под нагрузкой.
Проблема заключалась в том, что входящие сообщения двигались в разных 'полосы' (по разным актер путей), но код взял на сообщения прибудут в конечный пункт назначения в том же порядке, в котором они приехали. Пока данные поступили с достаточно большими интервалами, это работает, потому что там будет только один конфликтующих сообщение гонок до места назначения. Когда интервалы сократились, они начали прибывать из строя и вызывает странное поведение.
Эта проблема могла бы быть решена правильно с немного меньше участников, но это'ы легко ошибиться, когда злоупотребляют их.
На мой взгляд есть два варианта использования для актеров. Общие ресурсы, такие как порты и тому подобное, и большие государства. Первой была покрыта и дискуссии до сих пор, но большие государства тоже является уважительной причиной.
Большая структура передается при каждом вызове процедуры можно использовать много стека. Это состояние может быть помещен в отдельный процесс, структура заменяется идентификатором процесса, и этот процесс запрашиваются по мере необходимости.
Баз данных, таких как mnesia можно рассматривать как хранение состояние внешне на процесс опроса.