В чем разница актера акки с моделью актера скалы


Я обнаружил, что есть также модель акка-актера, поэтому мне интересно, в чем разница между актером акки и моделью актера скалы?

3 71

3 ответа:

Ну, нет. Есть просто модели акторов, и актеры акка и актеры Скала два реализации этой модели.

вся модель актора говорит, что ваши примитивы параллелизма являются актерами, которые могут:

  • получите сообщение и решить, что делать дальше в зависимости от содержания сообщения, в том числе:

  • отправлять сообщения всем актерам, о которых они знают

  • создать новый актеры

и предоставляет определенные гарантии, например:

  • любой актер, будет обрабатывать только одно сообщение за раз

  • сообщения, отправленные актером X актеру Y, поступят в том порядке, в котором они были отправлены

нет никакой разницы между актерами Scala и Akka на этом уровне.

различия в том, что они могут сделать, см. Различные Реализации Актера Scala Обзор. Самое большое, для меня, это то, что Akka поддерживает супервизоров и ActorRegistry.

есть и исторический ответ. Создатели Scala считали, что должна быть актерская основа. Йонас Бонер попробовал его, но не был полностью удовлетворен, поэтому он начал работать над новым - который превратился в Akka. Тем не менее, люди Scala думали, что это лучше, чем их собственные - поэтому на Jfokus 2011 они объявили, что Akka должен был стать стандартным актерским каркасом Scala. Однако эта миграция займет некоторое время.

Это немного зависит от того, что вы подразумеваете под "моделью" - вы можете ссылаться на "модель выполнения" или "модель программирования" (и, возможно, другие модели).

для моделей выполнения существует в основном два: на основе потоков или на основе событий. Стандартная библиотека актера Скала содержит. Потоковый использует один поток для каждого актора, в то время как Основанный на событиях использует пул потоков. Первый более интуитивен для понимания, второй более эффективен. Акка построена на модель на основе событий.

для программной модели существует большая разница между стандартной библиотекой scala и Akka. В стандартной библиотеке scala вы в основном реализуете метод " run "- и если вы хотите дождаться входящего сообщения, вы попадаете в состояние ожидания (вызывая" receive "или"react"). Таким образом, модель программирования следует "потоковой метафоре". Однако в Akka метафора программирования заключается в том, что вы реализуете несколько методов жизненного цикла, но метод " run написано внутри фреймворка. На самом деле оказывается, что эта модель программирования работает намного лучше с моделью выполнения на основе событий.

Если вас интересуют различные модели исполнения и модели программирования стандартных актеров scala, которые я написал aнесколькопосты по этому вопросу.