2014-04-25 1 views
1

일정한 간격 (10 분, 30 분, 60 분 ...)으로 일부 처리 (일부 작업 실행)해야합니다. 각기 다른 배우가 있습니다. 나는 처리를 시작하기 위해 액터 안에있는 self에게 메시지를 보내고 있습니다. 배우 내부에서 수행되는 프로세싱은 경우에 따라 10ms에서 30s 또는 그 이상까지 걸릴 수 있습니다. 액터 디자인 관점의 제 질문은 액터 내의 프로세싱이 얼마나 무거울까요? 아니면별로 중요하지 않습니까?Akka 배우에서 처리해야하는 처리량은 어느 정도입니까?

+3

액터 프로세스 메시지가 하나씩 처리됩니다. 당신이 배우에게 너무 많은 메시지를 보내고 너무 많은 메모리를 차지할 것이라는 점은 중요하지 않습니다. – jilen

답변

2

메시지를 처리하기 위해 임의로 길어지는 액터를 갖는 것이 좋습니다. 그러나 더 많은 메시지를시기 적절하게 처리하는 책임이있는 배우에게서 그렇게하고 싶지는 않을 것입니다.

일반적인 패턴은 메시지를 수신하고 작업자를 작업자로 파견하는 관리자 액터를 갖는 것입니다. 매니저 액터가 필요할 경우 다른 배우 액터를 간단하게 만들 수 있기 때문에 작업자 액터에 오랜 시간이 걸리는 것은 문제가되지 않습니다.

응답 성이 필요한 것과 장시간이 걸리는 것에 대해 생각하고 주어진 액터가 둘 다 수행하지 않는지 확인하십시오.

30 초가 걸리는 작업이 있다면 여러 개의 코어가 병렬로 작동 할 수 있도록 여러 액터로 나누는 것이 좋습니다. 또 다른 공통적 인 패턴은 액터가 얼마나 큰지를 살펴보고, 임계 값을 초과하면 여러 액터를 스폰하고 작업의 각 부분을 제공하는 것입니다. 각각 액터는 동일한 작업을 수행하여 작업 자체를 수행할지 또는 일부 하위 액터간에 작업을 분할할지 결정합니다. 이 방법으로 배우의 나무는 작업의 크기에 따라 즉석에서 형성되며 작업이 완료되면 배우가 사라집니다.

+0

배우를 사용하여 실제 처리를 중단하는 [일반 ** anti ** 패턴] (http://www.chrisstucchio.com/blog/2013/actors_vs_futures.html) –

+0

@ om-nom-nom - so 기본적으로 Actor 내부의 모든 무거운 처리가 'Future'내부에서 수행되어야한다고 말할 수 있습니다. 맞습니까? –

+1

@SoumyaSimanta 나는 중요한 * 무익한 프로세싱 *이 미래의 일터에서 이루어져야한다고 말하고 싶다. 어떤 노동자 배우가 아니다. –

관련 문제