scala - 건축 패턴을위한 모범 사례 / 배우-기반 시스템




erlang actor (4)

'Reactive Design Patterns'책은 Manning에서 제작 중이다.

참조 : https://www.manning.com/books/reactive-design-patterns

나는 액터 기반 응용 프로그램을 만드는 데 사용해야하는 디자인 패턴, 모범 사례 또는 기본 아키텍처 원칙에 대한 적절한 링크를 찾기 위해 고심하고 있습니다. 내가 아는 몇 가지는 다음과 같습니다.

블로그 게시물, 기사, WIKI, 가이드

서류

서적

구현

  • Akka Framework (여러 얼랑 (Allang) 행동의 포트와 배우를위한 많은 다른 패턴 화 된 스칼라에서 배우의 대안 구현)
  • Scalaz Actors (배우 구성, 전략 및 약속)

프리젠 테이션

highscalability.com의 사례

  • Simple queuing service (SQS) -이 서비스는 메시지 저장을위한 인터넷 규모 대기열 서비스를 제공합니다. 분산 액터는 작업을 큐에 넣고 작업을 큐에서 제거합니다. 일반적인 사용 : 중앙화 된 작업 대기열. 대기열에 작업을 넣으면 다른 액터가 대기열의 작업을 팝하고 CPU 시간이되면 처리 할 수 ​​있습니다. 확장 성의 일부입니다. 생산자와 소비자를 얼마든지 확보하십시오. 너는 그것에 대해 걱정하지 않는다. 대기열은 여러 시스템과 여러 데이터 센터에 분산되어 있습니다.

이것은 정확하게 이전 질문 과 관련이 있습니다.

배우 의 동시성 모델 은 상태 별 단일 VM 응용 프로그램 (몇 개의 별도 액터 클래스 포함)에서 수천 개의 액터 클래스 인스턴스에 대한 상태 비 저장 클러스터에 이르기까지 다양한 유형의 응용 프로그램을 구축 할 수 있기 때문에 간단한 질문이 아닙니다 .

그러나 핵심 원칙은 동일합니다.

  • 배우의 상태를 노출시키지 마십시오.
  • 불변 메시지 전달을 통해 전적으로 의사 소통

몇 주 전에 스칼라 의 배우 개발 학습 에 대한 블로그를 올렸습니다. 패러다임에 대한 수년간의 경험을 바탕으로 피할 수있는 우수 사례 및 사안입니다.


(Node.js의 경우 거의 알지 못하는) 세부 사항을 살펴 보지 않고도, 주된 차이점은 Akka가 두 가지를 모두 지원하는 반면 Node.js는 병렬 처리가없는 동시성 만 지원한다는 것입니다. 두 시스템 모두 완전히 이벤트 중심적이며 대규모 작업 부하까지 확장 할 수 있지만 병렬성이 부족하여 Node.js에서 어려움을 겪습니다 (즉, 병렬 처리는 여러 노드를 시작하고 이에 따라 요청을 적절히 처리하여 명시 적으로 코딩되므로 런타임시 유연성이 없습니다) , 튜너 블 멀티 스레드 실행 프로그램 때문에 Akka에서 매우 쉽습니다. 작은 작업 단위 (액터 호출)를 감안할 때 Akka는 자동으로 실행을 병렬 처리합니다.

또 다른 중요한 차이점은 Akka는 구조화 된 방식으로 (각 부모가 부모에 의해 감독 됨으로써) 실패를 처리하는 시스템을 포함한다는 점입니다. Node.js는 작성자가 콜백에서 콜백으로 오류 조건을 전달하는 규칙을 사용합니다. 근본적인 문제는 비동기 시스템이 동기식 스택 기반 시스템에서 사용되는 예외의 표준 접근 방식을 사용할 수 없다는 것입니다. 왜냐하면 콜백 오류가 발생할 때까지 "호출하는"코드가 다른 작업으로 이동했기 때문입니다. 시스템에 결함 처리 기능을 내장하면 해당 시스템에 빌드 된 응용 프로그램이보다 강력해질 수 있습니다.

위의 내용은 철저한 내용을 담고있는 것은 아니며 더 많은 차이점이 있음을 확신합니다.





scala erlang actor