First Akka App
Index
-
여러 노드에서 Akka 앱 실행
- goticks.com
- 프런트 엔드 + 백엔드
-
akka remote 모듈
- 네트워크상에서 actor 간 커뮤니케이션
- 클러스터링 X
Scaling Out
도입
- 분산 컴퓨팅은 어렵다. Akka도 마찬가지지만 Actor가 조금 쉽게 해준다.
- RPC, 로컬에서 호출하듯 리모트에서도 호출하고 싶다.- P2P
- 더 많은 노드로 구성된 네트워크에는 메시징이 적합
네트워크 토폴로지
- 노드: 특정 task를 수행하는 role
- 프로토콜: TCIP/IP, UDP
- protocol data unit
- message, byte
- 직렬화/역직렬화
- message, byte
- 그룹 멤버십: 노드 그룹
- static
- dynamic
- flexible to 실패 노드
- discovery
분산 프로그래밍 모델
- 단일 노드에서 구현한 다음 코드 수정없이 멀티 노드로 확장할수 있는 방법은 ? 없다
- 로컬대비 분산 모델의 4가지 중요한 차이점
- Latency: 메시징 딜레이 타임 by traffic
- Partial Failure: 네트워크 상의 노드가 살아있는지 확인하는건 어렵다.
- Memory Access: 분산 설정에서 객체 참조를 얻어온다.
- Concurrency: no owner, 상호간 연산만 존재
- Akka는 로컬에서도 분산 모델로 동작하는것으로 이슈를 해결
- 멀티 코어 환경, 비동기 프로그래밍에 유리
Remoting
- static 멤버십: 클라이언트-서버 네트워크, 프런트엔드 & 백엔드
- 프런트 엔드: REST 인터페이스
- lookup BoxOffice 액터
- deploy remotely BoxOffice 액터
- 백 엔드: BoxOffice, TicketSeller
- 프런트 엔드: REST 인터페이스
GoTicks Distributed
- build.sbt
- akka-remote
- akka-multi-node-testkit
- remote node 주소를 찾는 방법
- look up
- create,get reference,deploy it remotely
- application.conf
- ActorRefProvider
- backend:2551, frontend:2552
GoTicks Distributed
- actorSelection 메소드
- 쿼리에 맞는 모든 액터에 메시지를 보낸다.
- Remote Lookup 이 필요한 이유
- backend 액터 시스템은 시작되지 않았거나 crashed 되었거나 재시작되지 않았을수 있다.
- boxOffice 액터 자체가 crashed restarted 될수 있다.
- Identify 메시지
Remote Deployment
- static 멤버십: 클라이언트-서버 네트워크, 프런트엔드 & 백엔드
- 프런트 엔드: REST 인터페이스
- lookup BoxOffice 액터
- deploy remotely BoxOffice 액터
- 백 엔드: BoxOffice, TicketSeller
- 프런트 엔드: REST 인터페이스
First Akka App
By k16wire
First Akka App
- 1,236