Akka의 Actor와 Scala의 Actor 모델의 차이점은 무엇입니까?
Akka 배우 모델도 있다는 것을 알게 되었기 때문에 Akka의 Actor와 Scala의 Actor 모델의 차이점이 무엇인지 궁금합니다.
글쎄, 없습니다. 액터 모델 만 있고 Akka 액터와 스칼라 액터는 해당 모델의 두 가지 구현 입니다.
모든 액터 모델은 동시성 프리미티브가 액터라고 말하며 다음을 수행 할 수 있습니다.
다음을 포함하여 메시지를 수신하고 메시지 내용에 따라 다음에 수행 할 작업을 결정합니다.
아는 배우에게 메시지 보내기
새로운 배우 만들기
다음과 같은 특정 보증을 제공합니다.
모든 액터는 한 번에 하나의 메시지 만 처리합니다.
배우 X가 배우 Y에게 보낸 메시지는 전송 된 순서대로 도착합니다.
이 수준에서 Scala와 Akka 액터 사이에는 차이가 없습니다.
수행 할 수있는 작업의 차이점 은 다른 스칼라 액터 구현 개요를 참조하십시오 . 저에게 가장 큰 것은 Akka가 감독자와 ActorRegistry를 지원한다는 것입니다.
역사적인 답변도 있습니다. Scala의 제작자는 행위자 프레임 워크가 있어야한다고 생각했습니다. Jonas Bonér는 시도해 보았지만 완전히 만족하지 않았기 때문에 Akka로 진화 한 새로운 작업을 시작했습니다. 그러나 Scala 사람들은 그것이 자신의 것보다 낫다고 생각했습니다. 그래서 Jfokus 2011에서 그들은 Akka가 Scala의 표준 액터 프레임 워크가 될 것이라고 발표했습니다. 그러나이 마이그레이션에는 시간이 걸립니다.
이것은 "모델"이 의미하는 바에 따라 약간 다릅니다. "실행 모델"또는 "프로그래밍 모델"(및 기타 모델)을 참조 할 수 있습니다.
실행 모델의 경우 기본적으로 스레드 기반 또는 이벤트 기반의 두 가지가 있습니다. Scala 표준 액터 라이브러리에는 둘 다 포함되어 있습니다. 스레드 기반은 각 액터에 대해 하나의 스레드를 사용하는 반면 이벤트 기반은 스레드 풀을 사용합니다. 전자는 이해하기 더 직관적이고 후자는 더 효율적입니다. Akka는 이벤트 기반 모델을 기반으로합니다.
프로그래밍 모델의 경우 스칼라 표준 라이브러리와 Akka간에 큰 차이가 있습니다. 스칼라 표준 라이브러리에서는 기본적으로 "run"메소드를 구현합니다. 수신 메시지를 기다리려면 "receive"또는 "react"를 호출하여 대기 상태가됩니다. 따라서 프로그래밍 모델은 "thread-metaphor"를 따릅니다. 그러나 Akka에서 프로그래밍 은유는 몇 가지 라이프 사이클 메서드를 구현한다는 것입니다. 그러나 "run"메서드는 프레임 워크 내부에 작성됩니다. 실제로이 프로그래밍 모델은 이벤트 기반 실행 모델에서도 훨씬 더 잘 작동합니다.
스칼라 표준 액터의 다양한 실행 모델과 프로그래밍 모델에 관심이 있다면이 문제에 대한 몇 가지 게시물 을 작성 했습니다 .
'Development Tip' 카테고리의 다른 글
Google지도는 API 키를 어떻게 보호하나요? (0) | 2020.10.24 |
---|---|
Maven 종속성으로서의 JDK tools.jar (0) | 2020.10.24 |
API를 사용하여 기본 MailChimp 가입 양식 만들기 (0) | 2020.10.24 |
파이썬 추상 클래스에서 추상 속성을 만드는 방법 (0) | 2020.10.24 |
파이썬 set ([])은 두 객체가 같은지 어떻게 확인합니까? (0) | 2020.10.24 |