액터 모델은 어떻게 사용됩니까?


18

배우 모델에 대해 조금 읽었지만 실제 상황에서 배우를 사용하는 방법, 즉 문제를 모델링하는 방법을 실제로 이해하지 못합니다.

누군가 설명해 주시겠습니까? 간단한 예 또는 예에 대한 링크가 많이 인정 될 것입니다.


아니면 배우 모델 을 의미 합니까?
back2dos

배우가 아니라 요원을 의미한다고 생각합니다. 그렇다면 다음 wikipedia 항목을 확인하십시오. en.wikipedia.org/wiki/Software_agent
DwB

1
그들은 /에 괴짜를 즐겁게하기 위해 그린 랜턴과 유인원의 행성에 출연합니다. 차례로, /의 괴짜들. 우리의 나머지를 즐겁게하십시오.
Job

나는 배우 모델을 의미하고 명확히하기 위해 게시물을 업데이트했습니다.
Pnutus

답변:


21

메시지와 함께 모델링 작업의 의미에서 액터는 몇 가지 유용한 항목을 제공하는 소프트웨어 모델링 방법입니다 ...

  1. 액터는 단일 스레드에서 작동 할 수 있으므로 많은 잠금 마법없이 스레드 안전 / 비 동시 작업을 수행 할 수 있습니다. 액터는받은 편지함에있는 메시지에 응답합니다. 명령을 처리하려고 할 때 메시지를 보내면 수신 된 순서대로 처리합니다. 일반 대기열과 같습니다. 스레드 안전은 여기서 살인자이며, 내가 작업하는 여러 오픈 소스 프로젝트에서 이것을 사용합니다.

  2. 예를 들어 스칼라는 일부 언어에서는 액터를 분리하고 통신하는 채널을 원격 채널로 전환하여 단일 프로세스에서 액터 기반 코드를 분산 시스템으로 쉽게 전환 할 수 있습니다. 이것은 구현이 얼마나 쉬운 지에 따라 변경되지만 멋진 기능입니다.

  3. CRUD 이벤트가 아닌 작업 기반 이벤트에 집중할 수 있습니다. CRUD는 간단하지만 파일 캐비닛과 상호 작용하는 것과 같습니다. 우리가 생산하는 소프트웨어보다 더 많은 가치를 제공 할 수 있다면 왜 그렇게 하는가? 작업 기반 시스템에서 여러 작업을 단일 "업데이트"명령에 묶는 것은 DB에 저장하는 것보다 더 유용합니다. 이것은 또한 CQRS와 같은 것들에 들어갑니다.


유용한 답변과 링크에 감사드립니다. 배우에게 더 나은 느낌을주기 위해 어떤 언어를 살펴 보는 것이 좋습니까?
Pnutus

1
나는 그것이 당신이 편한 언어에 달려 있다고 생각합니다. 스칼라는 언어 개념이기 때문에 배우에 관한 최고의 문서 중 일부를 가지고있을 수 있습니다. Erlang은 일반적으로 메시징에 훌륭하지만 전체 언어는 해당 개념을 기반으로합니다.
트래비스

Scala와 Erlang을 살펴 보겠습니다. 발견 가 시작하는거야, 얼랑을위한 초보자 가이드. 감사!
Pnutus

+1 : 매우 흥미 롭습니다. 원격 액터를 구현하는 C ++ 라이브러리가 있는지 알고 있습니까? Scala를 사용하게되어 기쁘지만 내 프로젝트는 C ++입니다.
조르지오

1
이 C ++ 배우 모델 구현 고려 actor-framework.org
첸 OT

4

트래비스의 대답 은 확실합니다. 동시성에 대해 이야기하기 시작할 때 리소스 문제를 해결하려고합니다. 스레드와 잠금의 동시성은 잘못하기 쉽습니다. 액터 모델을 사용하면 코드의 동시 부분을 다른 코드에 의존하지 않고 병렬로 수행 할 수있는 자체 포함 너겟으로 프로그래밍 할 수 있습니다. 경쟁 조건 및 교착 상태와 같은 불쾌감을 피하려고합니다.

이 대화에서 배우는 나와 당신과 같습니다. 당신은 단지 내 두뇌에 도달 할 수없고 내가 입력하고있는 것을 골라냅니다. "우리는 왜 존재 하는가?"라는 메시지를 전달했습니다. 나는 앉아서 전화를 걸었고 "나는 생각합니다."라는 답장을 보냈습니다. 당신은 내가 저의 행성 지구에서 무엇을하고 있는지 알 수 없었습니다. 당신과 나에게 유일한 연락은 우리가주고받는 메시지를 통해서입니다.

편집하다:

어느 언어에 익숙한 지 말하지 않았지만 언어에 배우 구현이 있는지 확인하십시오. 아마도 가장 간단한 것은 파이썬에서 액터 라이브러리 중 일부일 것입니다. 그러나 Erlang이 학습에 더 좋을 것입니다. 언어는 약간 거칠지 만 일단 뉘앙스를 극복하면 좋은 언어입니다.


gnat의 편집이 나에게 지시되는지 확실하지 않지만, 선택한 무기는 대개 Haskell 인 경향이 있습니다. Erlang은 확실히 좋은 언어입니다. Haskell은 전통적으로 동시성을 위해 CSP에 의존했지만, 거기에는 몇 가지 액터 구현이 있습니다.
M15K

-2

액터는 시스템에서 작동 할 수있는 외부 엔티티 (사용자, 외부 시스템 등)를 나타내는 사용 사례 다이어그램의 요소입니다. 모든 기본 유스 케이스에는 액터가 포함됩니다. 풍부한 예제를 보려면 Google "유스 케이스"만 있습니다.


6
스틱 피겨 라고하는 사람들이 아닌가요?
pillmuncher

1
나는 명확하지 않았고 당신은 오해했다. 나는 배우 모델에 대해 이야기하고있었습니다.
Pnutus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.