You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

오늘날 우리가 인터넷에서 서비스를 사용하는 방식은 다운로드하거나 혹은

데이터 전송을 비롯한 많은 스트리밍 데이터 인스턴스를 포함하고 있습니다.

TCP의 데이터를 전송하고 수신하는 방식이 일치하기 때문에 소비자가 소비하기위해

읽는 동안만 존재하는 일시적인 개념을 스트림이라고 표현할수 있습니다.

액터 또한 스트림을 다루는것으로 볼수 있습니다.

스트림은 생산자와 소비자사이에 지속적으로 발생하는것이며

원활한 흐름을 위해 중재할 필요가 있다란 것입니다.

AkkaStreams


스트림처리 설정을 공식화하고 직관적이고 안전한 방법을 제공하기위해

AKKA Sterames API는 다음과 같은 기능을 제공합니다.

  • 고정된 유형의 요소 전송에대한 정적전송 보장

  • 데이터를 일부 CPU를 통해 스트림으로 순차공급

  • 안정적인 전송을위한 오버플로방지및 손실보정

  • 안정적인 처리를위해 생산자의 속도를 늦출수 있는 방법

Reactive Streams


여러 기업들이 모여 Reactive Streams에 대한 표준을 정의 하였습니다.

Reactive Stream은 구현체가 아니라, 이것을 구현하기위한 스펙입니다. ( http://www.reactive-streams.org/ )

이것에 대한 스펙은 네트워크상의 비동기처리 ,비 블로킹,이벤트 기반 데이터 처리등에 대한 다양한 공통 스펙을

표준화 하는것입니다. 그리고 이것은 개발 플래폼,시스템경계가 틀려도 공통적으로 소통및 적용할수

있는 구현 방향 목표를 제시 하는것입니다. 


Akka Streams는 내부적으로 Reactive Streams 인터페이스를 사용하며, AKKA를 사용하는 최종 사용자를

대상으로 제공되며 두 인터페이스는 다르지만

서로 다른 스트리밍 구현이 상호 운영될수 있도록하는 Reactive Streams의 프로젝트의 기대치와  일치합니다. 


스트림처리가 필요한 이유


그림예: Akka에서 발생한 스트림데이터를 바로 소비하여 Kafka로 흘러보내는 전략 


우리의 서비스 데이터는 생산자로부터 끊임없는 데이터가 발생하게 되며, 그것이 집결되어 대량의 데이터가

쌓인 지점을 빅데이터라고 가정해봅시다.  스트림처리의 반대가 패치(일정시간 모아둔데이터를 한꺼번에 처리)라고

가정해봅시다. 패치전략은 수행되는 동안 많은 메모리와 CPU를 사용하며  그것을 소비하기전 어느 저장공간에 담아야하며,

또한 소비를 위해 중앙저장장치에 부하를 주게되며 결론적으로 데이터 반영이 패치시간에 의존적이게 됩니다.

아카 스트림 전략은 생산자로 부터 데이터가 발생하면(Source) 그것을 오랫동안 담아두지않고

바로 소비를하고 (Sink)  실시간으로 활용할수 있다란 점입니다.

설치


패키지 이름 : Akka.Streams


  • No labels