2012-10-05 5 views
4

저는 Akka의 초보자이며 액터, 에이전트 또는 선물과 같은 비동기 프로그래밍을 위해 제공되는 많은 기능을 즐깁니다.충돌시 Akka 상태 유지

Akka의 세일즈 포인트는 배우가 충돌하면 배우 시스템에 의해 새 배우 시스템이 만들어지고 기존 시스템과 연결되어 강력한 안정성을 보장한다는 사실입니다.

일부 다른 시스템 (나는 JMS라고 말했을 뿐이다)은 한 걸음 더 나아가 배우들 사이에서 지속적으로 메시지를 지속시킨다. 하드웨어 장애로 인해 기계가 물리적으로 충돌을 일으키면 장애 이전 상태를 복원 할 수 있습니다.

이것은 현재 개발중인 애플리케이션에 매우 매력적입니다. Akka는 그러한 메커니즘을 제공합니까? 그렇지 않다면 달성 할 수있는 방식으로 외부 시스템과 통합 할 수있는 방법이 있습니까?

답변

5

튼튼한 사서함은 메시지를 선택적으로 저장하는 좋은 방법이므로 Akka는 JMS와 비슷한 기능을 수행 할 수 있습니다. 이 기술 외에도 아키텍처 수준에서 시스템과 관련된 메시지와 시스템 오류 발생 후에 상태를 복원하는 방법을 고려하는 것이 매우 중요합니다.

배우 패러다임과 잘 어울리는 한 가지 방법은 이벤트 소싱입니다. 이 개념에서 응용 프로그램의 상태는 상태 자체가 아닌 일련의 이벤트로 저장됩니다. 시스템 또는 그 일부가 실패하면 지속적 이벤트 저장소에서 모든 이벤트를 적용하여 상태를 복원 할 수 있습니다. 영구 메일 박스는 이러한 이벤트 저장소에 대한 링크가 될 수도 있고 전용 액터가 직접 사용될 수도 있습니다.

Martin Krasser는이 블로그에서 Akka를 사용하여이 접근법을 설명하는 매우 멋진 article을 가지고 있습니다. 그는 또한 eventsourced이라는 이름의 Akka 확장 소싱 이벤트의 저자이기도합니다.

10

예, 설명하는 내용은 durable mailboxes을 사용하여 달성 할 수 있지만 필요에 따라 액터별로 구성 할 수 있습니다.

다른 백엔드에 대한 구현이 몇 가지 있습니다. 원하는 메시지 대기열에 대한 구현이 없으면 자신의 어댑터를 구현하는 것이 그리 어렵지 않을 것입니다. Akka 소스 트리 내에서 유지 관리하는 유일한 구현은 FileBasedMailbox이며이를 수행하는 방법의 템플리트로 사용됩니다. Akka 2.0.x 배포본에 있던 다른 사서함 유형은 각각의 "소유자"가 커뮤니티 프로젝트로 유지 관리합니다.