Akka(툴킷)
Akka (toolkit)![]() | |
원본 작성자 | 조나스 보네르 |
---|---|
개발자 | 라이트벤드 |
초기 릴리즈 | 2009년 7월 |
안정적 해제 | 2.6.17 / 2021년 10월 15일;[1] 전 |
리포지토리 | |
기록 위치 | 스칼라 |
운영 체제 | 크로스 플랫폼 |
플랫폼 | Java 가상 시스템 |
면허증 | 아파치 라이선스 2.0 |
웹사이트 | akka |
Akka는 JVM의 동시 및 분산 애플리케이션 구축을 단순화하는 무료 오픈 소스 툴킷 및 런타임이다.아크카는 동시성을 위한 다중 프로그래밍 모델을 지원하지만 에를랑에서 영감을 끌어내는 등 배우 기반의 동시성을 강조한다.[2]
언어 바인딩은 자바와 스칼라 모두에 존재한다.아크카는 스칼라(Scala)로 쓰여져 있으며, 스칼라 2.10을 기준으로 스칼라 표준도서관의 배우들은 아크카에게 유리한 평가를 받고 있다.[3]
역사
필립 할러가 쓴 배우 구현은 스칼라 2.1.7의 일환으로 2006년 7월에 출시되었다.[4] 2008년까지 스칼라는 복잡한 서버 애플리케이션에서 사용되어 주목을 받았으나, 잠금 장치를 사용하여 메모리를 공유하고 필요할 때 동기화하는 스레드를 만들면서 일반적으로 동시성을 달성했다.그러한 접근방식의 어려움을 알고 Erlang 프로그래밍 언어의 이벤트 중심 응용 프로그램 작성에 대한 라이브러리 지원에서 영감을 받은 스웨덴 프로그래머 Jonas Bonér는 Scala와 Java와 유사한 기능을 제공하기 위해 Aka를 만들었다.보네르는 2009년[5] 초 아크카에 대한 작업을 시작해 그해 6월 이를 위한 비전을 작성했다.[6]첫 공개는 2010년 1월 발표된 Akka 0.5이다.[7][8]Akka는 현재 Play 프레임워크와 Scala 프로그래밍 언어와 함께 Lightbend Platform의 일부가 되었다.
구분 피쳐
Akka 배우를 기반으로 애플리케이션을 구분하는 핵심 포인트는 다음과 같다.
- 동시성은 메시지 기반 및 비동기식이며, 일반적으로 변경 가능한 데이터는 공유되지 않으며 동기화 기본 요소도 사용되지 않는다.아크카는 배우 모델을 구현한다.
- 행위자들이 동일한 호스트에 있든, 별도의 호스트에 있든, 직접 또는 라우팅 시설을 통해 통신하든, 몇 개의 스레드나 많은 스레드에서 실행하든 간에 상호 작용하는 방식은 동일하다.이러한 세부사항은 배치 시 구성 메커니즘을 통해 변경될 수 있으며, 프로그램을 수정하지 않고 (더 강력한 서버를 사용하기 위해) 확장 및 (더 많은 서버를 사용하기 위해) 확장될 수 있다.
- 배우들은 프로그램 실패와 관련하여 계층적으로 배치되는데, 이는 배우의 감독자가 처리해야 할 이벤트로 처리된다(어떤 배우가 실패를 촉발하는 메시지를 보냈는지에 관계없이).에를랑과 대조적으로 아크카는 부모의 감독을 시행하는데, 이는 각 배우가 부모 배우에 의해 만들어지고 감독된다는 것을 의미한다.
Akka는 모듈식 구조를 가지고 있으며, 핵심 모듈이 배우들을 제공한다.다른 모듈들은 행위자의 네트워크 배포, 클러스터 지원, 명령 및 이벤트 소싱, 다양한 제3자 시스템과의 통합(예: Apache Camel, ZeroMQ), 퓨처스 및 에이전트와 같은 다른 동시성 모델에 대한 지원 등의 기능을 추가할 수 있다.
프로젝트 구조
빅토르 클랭은 2011년 9월 Akka 프로젝트의 기술 책임자가 되었다.빅토르가 2012년 12월 라이트벤드 공학과장이 되자 롤랑 쿤은 아크카의 기술 주역이 됐다.개발의 주요 부분은 Lightbend에 고용된 핵심 팀에 의해 이루어지며,[9] 활발한 커뮤니티의 지원을 받는다.[10]현재 강조점은 클러스터 지원 확대에 있다.
다른 라이브러리와의 관계
다른 프레임워크와 툴킷이 등장하여 Akka를 중심으로 생태계를 형성하고 있다.
- 스프레이 툴킷은[11] Akka를 사용하여 구현되며 HTTP 서버는 물론 RESTful API 생성을 위한 도메인별 언어(DSL) 등 관련 시설도 갖추고 있다.
- 웹 응용 프로그램 개발을 위한 Play 프레임워크는 Akka와의[12] 통합을 제공한다.
- 버전 1.6까지는 Apache Spark가 노드[13] 간 통신에 Akka를 사용했다.
- Soko Web Server 라이브러리는 Akka 애플리케이션을[14] 위한 REST API의 구현을 지원한다.
- 이벤트 지원[15] 라이브러리는 Akka 행위자를 위한 이벤트 기반 아키텍처(도메인 기반 설계 참조) 지원을 제공한다.
- 웹 서버를 로드 테스트하기 위한 Gatling 응력 테스트 도구는 Akka를[16] 기반으로 한다.
- 스칼라트라 웹 프레임워크는 Akka를 기반으로 구축되며 그것과의[17] 통합을 제공한다.
- 바딘 웹 앱 개발 프레임워크는 Akka와[18] 통합할 수 있다.
- 분산된 스트림과 배치 데이터 처리를 위한 Apache Flink 플랫폼은 Akka를 기반으로 구축되었다.[19]
- 반응형 마이크로 서비스를 구축하기 위한 라검 프레임워크는 akka 위에 구현된다.[20]
GitHub에는 Akka를 사용하는 250개 이상의 공공 프로젝트가 등록되어 있다.[21]
Akka에 대한 출판물
Akka에 관한 몇 권의 책이 있다.
- 아크카 이센셜스[22]
- Akka 코드 예제
- 아크카 동시성[23]
- 액션의[24] 아크카
- 유효 아크카[25]
- Java, Scala 및 Akka 코드 예제를[26] 포함한 Akka 2.0의 컴포지티브 퓨처
Akka는 또한 에 특징지어진다.
- P. 할러의 "스칼라의 연기자"[27]
- N. 레이쇼우두리의 "스칼라 인 액션"[28]
- D. Wampler의 "Java 개발자를 위한 기능 프로그래밍"[29]
- A. 알렉산더의 "스칼라 요리책"[30]
- V. Subramaniam의 "JVM에서 동시성 프로그래밍"[31]
- M. Bernhardt의 "Reactive Web Applications"[32]
Akka의 상업적 용도를 기술한 많은 웹 기사 외에도 그것에 대한 개요 기사도 있다.[33][34][35][36]
참고 항목
참조
- ^ Akka Team. "Akka 2.6.17 Released". Retrieved 18 October 2021.
- ^ Akka Team. "Scala Actors Introduction". Retrieved 17 September 2018.
- ^ Jovanovic, Vojin. "The Scala Actors Migration Guide". Retrieved 13 March 2013.
- ^ "Scala Version History - Older versions". scala-lang.org. 2009-02-16. Archived from the original on 2013-01-04.
- ^ Jonas Bonér (2009-02-16). "init project setup". github.com.
- ^ Bonér, Jonas. "Akka Actor Kernel". [email protected]. Archived from the original on 2016-03-04. Retrieved 2017-07-13.
- ^ Jonas Bonér (2009-07-12). "v0.5". github.com.
- ^ Jonas Bonér (2010-01-04). "Introducing Akka - Simpler Scalability, Fault-Tolerance, Concurrency & Remoting through Actors". jonasboner.com.
- ^ "Akka team". akka.io. Retrieved 6 June 2013.
- ^ "Akka contributors list". github.com. Retrieved 6 June 2013.
- ^ Doenitz, Mathias. "Spray toolkit". spray.io. Retrieved 6 June 2013.
- ^ "Play framework documentation: Integrating with Akka". playframework.com. Retrieved 6 June 2013.
- ^ "Spark project sources". github.com. Retrieved 6 June 2013.
- ^ "Socko Web Server". sockoweb.org. Retrieved 6 June 2013.
- ^ "eventsourced library". eligosource. Retrieved 6 June 2013.
- ^ "Gatling stress test tool". github.com. Retrieved 6 June 2013.
- ^ "Scalatra documentation: Akka". scalatra.org. Archived from the original on 6 August 2013. Retrieved 6 June 2013.
- ^ "Vaadin in Akka". Vaadin.com. Retrieved 26 April 2014.
- ^ "Apache Flink - Akka for the win !". flink.apache.org. Retrieved 2 December 2015.
- ^ "Lagom - Integrating with Akka".
- ^ Tasharofi, Samira. "Akka actor project corpus at GitHub". cs.illinois.edu. Archived from the original on 2012-10-30. Retrieved 2013-06-06.
- ^ Gupta, Munish K. (2012). Akka Essentials. Packt Publishing. p. 334. ISBN 978-1849518284.
- ^ Wyatt, Derek (2013). Akka Concurrency. Artima. p. 521. ISBN 978-0981531663.
- ^ Roestenburg, Raymond (2013). Akka in Action. Manning Publications. p. 475. ISBN 978-1617291012.
- ^ Allen, Jamie (2013). Effective Akka. O'Reilly Media. p. 74. ISBN 978-1449360078.
- ^ Slinn, Michael (2012). Composable Futures with Akka 2.0. Micronautics Research. p. 178. ISBN 978-0984278923.
- ^ Haller, Philipp (2012). Actors in Scala. Artima. p. 169. ISBN 978-0981531656.
- ^ Raychaudhuri, Nilanjan (2013). Scala in Action. Manning Publications. p. 416. ISBN 978-1935182757.
- ^ Wampler, Dean (2011). Functional Programming for Java Developers. O'Reilly Media. pp. 90. ISBN 978-1449311032.
- ^ Alexander, Alvin (2013). Scala Cookbook. O'Reilly Media. p. 722. ISBN 978-1449339616.
- ^ Subramaniam, Venkat (2011). Programming Concurrency on the JVM: Mastering Synchronization, STM, and Actors. Pragmatic Bookshelf. pp. 280. ISBN 978-1934356760.
- ^ Bernhardt, Manuel (2016). Reactive Web Applications: Covers Play, Akka and Reactive Streams. Manning Publications. p. 328. ISBN 9781633430099.
- ^ Darrow, Barb (25 June 2012). "Juniper networks signs on with Scala". gigaom.com. Retrieved 8 June 2013.
- ^ Ross, David. "Scaling the Klout API with Scala, Akka and Play". Retrieved 8 June 2013.
- ^ Haines, Stephen (May 8, 2013). "Open source Java projects: Akka". JavaWorld. Retrieved 2020-07-15.
- ^ "Java Magazin 6.13". jaxenter.de. Archived from the original on 13 August 2013. Retrieved 8 June 2013.