하루의 쉼터

[akka] akka에 대해서 본문

프로그래밍 - 개발/JAVA

[akka] akka에 대해서

Changun An 2022. 4. 17. 23:35
반응형

| akka에 대해서 알아보자

 

1. Outline 

1.1 Akka ?

Open Source Tool Kit으로 JVM(Java Virtual Machine)상에서 동시성과 분산 애플리케이션을 단순화 하는 런타임이다.

- Erlang(범용 병렬 프로그래밍 언어, 함수형 언어)으로부터 영향을 받아 actor 기반의 동시성이 두드러진다.

 

* JVM이란?

자바 바이트코드를 실행할 수 있는 주체이며 OS에 종속 받지 않고 다른 환경(CPU)에서도 무관하게 동일 동작을 보장한다.

1.2 Why akka?

* 그냥 스레드를 사용하면 되지 왜 akka를 사용하는가?

CPU 사양의 발전으로 인하여 여러 개의 코어를 사용하는 제품군이 많아졌고 이에 따라 멀티 스레드 프로그래밍이 발전하게 되었는데 이에 따라 문제가 발생하게 되었다.

선결론 : 멀티 스레드에서 데이터 접근함에 있어 문제가 발생 되었고 Akka는 이를 해결하기 위해 비동기화 Message 방식의 Actor Model을 구현하여 얼랭 프로그래밍언어의 라이브러리가 지원하는 고도의 동시성 쓰기, 이벤트 주도 애플리케이션을 JAVA와 Scalar에 유사한 기능을 도입하고자 하였음. 따라서 동시성이 필요한 경우 빠른 구현을 위하여 Akka를 이용하여 Actor Message로 시스템을 쉽게 구성할 수 있다.

l  멀티 스레드 프로그래밍 문제

- 공유리소스를 사용하며 여러 스레드에서 데이터 접근을 하며 lock, synchronized을 사용하며 기아, 교착 상태 발생

- 병렬 컴퓨팅에서 병렬화가 불가능한 작업들의 비중이 생기며 속도의 최대치가 정해지는 암달의 법칙

| 해결책

칼 휴이트가 제안한 Actor 모델 사용* Actor Model : Actor가 차지하는 메모리 공간은 다른 쓰레드, Actor에서 접근 할 수 없다.특징 : -> 상태 공유 X-> Actor 간 통신은 Message 전달 (Event)-> 비동기적-> 하나의 Actor에서 단일 Queue 사용. 즉, 여러 Actor 각각의 처리 방식-> Message Queue 이용-> 스레드 보다 Actor의 memory가 상대적으로 적다단점 : -> message를 이용하여 속도가 느림.

Actor 구조 

Actor Ref : 다른 Actor와 통신을 위해 사용됨. 프록시 디자인 패턴을 따름.

Dispatcher : 들어오는 Message를 받아 Actor에 전달, 스케줄링 역할 및 Actor의 처리량을 조율 하여 리소스 제공

* Actor의 상태 확인하여 메시지 처리 여부를 판단

* 종속성을 줄이기 위함

Mail Box : FIFO 순서를 따라 메시지를 선택하고 처리함.

State : 액터 객체가 가지는 몇 가지 상태(변수) 

 -  counter, set of listeners, pending requests

Behavior : 메시지  처리에 따른 액터의 상태 변화 제어, Child Actor 생성 및 제거

Actor 계층 구조

Root Guardian : 최상단 루트 가디언, 시스템 내의 모든 Actor의 부모

User Guardian :  사용자가 가지는 모든 액터의 부모 자식 액터의 Path 앞에 /user 이 추가됨

System Guardian : 시스템이 순서대로 종료 하도록 함 시스템 액터를 유지 하고 관리

 

1.3 Akka 특징

1.3.1 더욱 간단한 동시, 분산 시스템 

  - Actor, Streams를 사용

1.3.2 고성능 

 - 단일 시스템에서 Max 5천만 msg/sec

 - 적은 메모리 차지 

 - NonBlocking / Asynchronous을 사용한 빠른 반응성

1.3.3 분산시스템 

 - 모듈화 Actor는 서로 독립적이며 이를 통하여 캡슐화 프로그래밍 유사하게 구현

 - Actor 간의 메시지 송수신

 - 시스템 하나가 죽어도 다른 시스템에 큰 영향을 주지 않음.

 

Reference

https://akka.io/

 

Akka: build concurrent, distributed, and resilient message-driven applications for Java and Scala | Akka

Akka HTTP 10.2.8 Released We are happy to announce the 10.2.8 release of Akka HTTP

akka.io

https://en.wikipedia.org/wiki/Actor_model

 

Actor model - Wikipedia

From Wikipedia, the free encyclopedia Jump to navigation Jump to search Model of concurrent computation The actor model in computer science is a mathematical model of concurrent computation that treats actor as the universal primitive of concurrent computa

en.wikipedia.org

https://ko.wikipedia.org/wiki/Akka

 

Akka - 위키백과, 우리 모두의 백과사전

Akka는 오픈 소스 툴킷으로, JVM 상의 동시성과 분산 애플리케이션을 단순화하는 런타임이다. Akka는 동시성을 위한 여러 프로그래밍 모델을 지원하지만, Erlang으로부터 영향을 받아 actor 기반의

ko.wikipedia.org

https://blog.rajephon.dev/2018/11/25/akka-00/

 

Akka 공부하기 - 00.액터 모델이란? | rajephon's blog

Announcement이번 블로그 포스팅은 배운 내용을 정리해보려 합니다. 잘못된 부분이 있을 경우 코멘트 부탁드립니다. 정정 코멘트 환영합니다!

blog.rajephon.dev

https://ko.wikipedia.org/wiki/%EC%96%BC%EB%9E%AD

 

얼랭 - 위키백과, 우리 모두의 백과사전

얼랭(Erlang)패러다임다중 패러다임 함수형,병행성설계자조 암스트롱 (Joe Armstrong)로버트 버딩 (Robert Virding)마이크 윌리암스 (Mike Williams)발표일1986년최근 버전18.2.1최근 버전 출시일2015년 12월 18일 (

ko.wikipedia.org

https://ko.wikipedia.org/wiki/%EC%95%94%EB%8B%AC%EC%9D%98_%EB%B2%95%EC%B9%99

 

암달의 법칙 - 위키백과, 우리 모두의 백과사전

암달의 법칙 위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

https://doc.akka.io/docs/akka/current/general/actors.html

 

What is an Actor? • Akka Documentation

What is an Actor? The previous section about Actor Systems explained how actors form hierarchies and are the smallest unit when building an application. This section looks at one such actor in isolation, explaining the concepts you encounter while implemen

doc.akka.io

https://doc.akka.io/docs/akka/current/general/addressing.html

 

Actor References, Paths and Addresses • Akka Documentation

Actor References, Paths and Addresses This chapter describes how actors are identified and located within a possibly distributed Akka application. The above image displays the relationship between the most important entities within an actor system, please

doc.akka.io

 

반응형
Comments