Articles
액터 모델을 간단히 알아보자
짱승_
2021. 3. 18. 11:44
하드웨어를 모두 활용하려면 코드를 동시에 실행시켜야 한다. `Threads` 가 길이 아니라보고 이를 대신할 방법 중 하나가 액터 모델이다.
모델
- 액터 모델은 동시 연산을 다루기 위한 개념적 모델이다.
- 시스템의 구성 요소는 서로 상호 작용해야 한다.
- 이를 사용하는 가장 유명한 언어는 `Erlang`.
액터
- 메시지를 받고 이를 바탕으로 어떠한 계산을 한다.
- 객체지향 언어와 동일한 부분이 있다
- 오브젝트는 메시지를 받고(메서드 호출) 이를 바탕으로 무엇인가 한다.
- 가장 큰 다른 점은 액터들은 서로 완전히 독립적이고 메모리를 공유하지 않는다.
- 다른 액터가 직접적으로 변경하지 못하는 상태를 가지고 있다.
- 액터는 우체통을 가지고 있다.
- 여러 액터들이 동시에 가동된다고 해도 하나의 액터는 메시지를 순차적으로 처리한다.
- 우체통은 이 메시지들을 저장하는 곳이다.
- 액터가 메시지를 받으면 아래 3가지 일 중 한가지를 할 수 있다.
- 액터들을 더 생성
- 다른 액터들에게 메시지를 보냄
- 다음 메시지로 무엇을 할 것인지 결정
- 첫번째, 두번째는 직관적으로 이해할 수 있지만 세번째가 흥미롭다. "다음 메시지로 무엇을 할 것인지 결정"의 의미는 다음 메시지가 왔을 때 상태가 어떻게 보여져야하는지 결정한다는 의미이고 이는 곧, 액터가 상태를 어떻게 변경시킬지 결정한다는 의미이다.
- 결함을 받아들임
- `Erlang` 은 "크래시 나도록 내버려두라" 라는 철학을 가지고 있다.
- 크래시 나도록 내버려두되 다만 누군가 이를 관리하고 크래시가 났을 때 어떤일이 일어났는지 알아야 한다.
- 모든 코드는 "프로세스" 안에서 동작한다. (`Erlang` 에서 액터를 "프로세스"라 부른다.)
- 이 "프로세스"는 완전히 독립적이며 다른 "프로세스"에 어떠한 영향도 미치지 않는다.
- 관리자 프로세스를 가진다. 이 프로세스는 관리받는 프로세스가 크래시나면 이를 알아채고 어떠한 동작을 하게된다.
원문: www.brianstorti.com/the-actor-model/
The actor model in 10 minutes
The actor model in 10 minutes
www.brianstorti.com
반응형