액터 모델은 어떻게 사용됩니까? 실제 상황에서

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

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



답변

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

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

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

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


답변

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

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

편집하다:

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


답변

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