Akka Stream Operator Fusion
- 기본 설정으로 Akka Stream은 stream operator (source, sink)를 하나로 합치는데(fused), 이는 하나의 actor에서 stream graph를 실행되는 것을 의미한다.
- 하나의 Operator에서 다른 Operator로 데이터를 전달하는 것은 fused stage간의 전달보다는 더 빠르다 (비동기 메시지 overhead때문에)
- fused stream operator는 동시에 실행되지 않는다. 이말은 CPU Core는 하나의 fused part만 실행을 시킨다.
- 병렬 프로세싱 (Parallel Proccess)를 하기위해서는 Asynchronous Boundaries를 직접 손으로 넣어줘야한다.
Source.range(1, 3)
.map(x -> x + 1).async()
.map(x -> x * 2)
.to(Sink.ignore());
- 2개의 지대로 구분을 할수 있다. 각각의 하나의 Actor로 작동이 된다. 이는 CPU가 Parallel하게 작동을 할수가 있다.
- 빨간 원안에 있는 작동은 하나의 Actor로 작동이 되고 다른 부분이 다른 Actor에서 작동이 된다는 의미.
Reference
- https://doc.akka.io/docs/akka/2.5/stream/stream-flows-and-basics.html
- https://akka.io/blog/2016/07/06/threading-and-concurrency-in-akka-streams-explained
'Programing > Akka' 카테고리의 다른 글
Akka Stream Error Handling (0) | 2018.08.01 |
---|---|
Akka Http (0) | 2018.07.28 |
Akka Stream 기본 개념 Source, Sink, Flow (0) | 2018.06.29 |
Akka Stream Graph DSL를 이용한 Broadcast/Merge 기능 구현 (0) | 2018.06.02 |
Akka Stream을 이용한 Kafka Producer 개발 (0) | 2018.06.02 |