Akka를위한 좋은 사용 사례

Akka 프레임 워크 (Java / Scala 서비스 플랫폼) 에 대해 많은 열망을 들었지만 지금까지 유용한 사용 사례의 많은 예를 보지 못했습니다. 따라서 개발자가 성공적으로 사용한 것에 대해 듣고 싶습니다.

한 가지 제한 사항 : 채팅 서버 작성 사례는 포함하지 마십시오. (왜? 이것은 많은 유사한 것들에 대한 예제로 남용되었으므로)



답변

지금까지 두 개의 실제 프로젝트에서 매우 성공적으로 사용했습니다. 둘 다 거의 실시간 교통 정보 필드 (고속도로 차량과 같은 교통 정보)에 있으며 여러 노드에 분산되어 여러 당사자간에 메시지를 통합하며 안정적인 백엔드 시스템입니다. 나는 고객에 대해 구체적으로 말할 자유가 없다. OK를 얻을 때 아마도 참조로 추가 될 수있다.

Akka는 0.7 버전에서 시작했지만 실제로 프로젝트를 진행했습니다. (우리는 스칼라를 사용하고 있습니다)

가장 큰 장점 중 하나는 보일러 도금이 거의없는 액터 및 메시지로 시스템을 쉽게 구성 할 수 있다는 점입니다. 수동 롤링 스레딩의 모든 복잡성 없이도 매우 잘 확장되며 거의 무료로 객체간에 비동기식 메시지가 전달됩니다.

모든 유형의 비동기 메시지 처리를 모델링하는 데 매우 유용합니다. 다른 스타일보다이 스타일로 모든 유형의 (웹) 서비스 시스템을 작성하는 것을 선호합니다. (JAX-WS를 사용하여 비동기 웹 서비스 (서버 측)를 작성하려고 했습니까? 따라서 모든 것이 암시 적 동기 메소드를 사용하여 호출되고 하나의 구성 요소가 무언가에 잠겨 있기 때문에 구성 요소 중 하나에 매달리고 싶지 않은 시스템을 말합니다. 매우 안정적이며 고장에 대한 let-it-crash + supervisor 솔루션이 실제로 효과적입니다. 프로그래밍 방식으로 설정하기가 쉽고 단위 테스트가 어렵지 않습니다.

그런 다음 우수한 애드온 모듈이 있습니다. Camel 모듈은 실제로 Akka에 잘 연결되며 구성 가능한 엔드 포인트로 비동기 서비스를 쉽게 개발할 수 있습니다.

나는 프레임 워크에 매우 만족하며 우리가 구축 한 커넥 티드 시스템을위한 사실상의 표준이되고있다.


답변

면책 조항 : 나는 Akka의 PO입니다

동시성 smorgasbord를 제공하는 것 외에도 STM 형식의 동시성 제어를 통해 추론 및 수정하기가 훨씬 간단합니다 (액터, 에이전트, 데이터 흐름 동시성).

다음은 고려할 수있는 사용 사례입니다.

  1. 거래 처리 (온라인 게임, 금융, 통계, 베팅, 소셜 미디어, 통신 등)
    • 스케일 업, 스케일 아웃, 내결함성 / HA
  2. 서비스 백엔드 (모든 산업, 모든 앱)
    • 서비스 REST, SOAP, 혜성 등
    • 메시지 허브 / 통합 레이어 역할
    • 스케일 업, 스케일 아웃, 내결함성 / HA
  3. 스냅인 동시성 / 병렬 (모든 앱)
    • 옳은
    • 작업하기 쉽고 이해하기 쉽다
    • 기존 JVM 프로젝트에 항아리를 추가하기 만하면됩니다 (Scala, Java, Groovy 또는 JRuby 사용)
  4. 일괄 처리 (모든 산업)
    • 배치 데이터 소스와 연결하기위한 낙타 통합
    • 액터는 배치 워크로드를 분할하고 정복합니다.
  5. 통신 허브 (통신, 웹 미디어, 모바일 미디어)
    • 스케일 업, 스케일 아웃, 내결함성 / HA
  6. 게임 서버 (온라인 게임, 베팅)
    • 스케일 업, 스케일 아웃, 내결함성 / HA
  7. BI / 데이터 마이닝 / 범용 크 런칭
    • 스케일 업, 스케일 아웃, 내결함성 / HA
  8. 다른 유용한 사용 사례를 여기에 삽입

답변

우리가 그것을 사용하는 방법의 예는 직불 / 신용 카드 거래의 우선 순위 대기열에 있습니다. 우리는 수백만 가지를 가지고 있으며 작업의 노력은 입력 문자열 유형에 달려 있습니다. 거래 유형이 CHECK 인 경우 처리가 거의 없지만 판매 시점 인 경우 메타 데이터 (카테고리, 레이블, 태그 등)와 병합하고 서비스 (이메일 / SMS 경보, 사기 탐지, 낮은 자금 잔액 등). 입력 유형을 기반으로 작업을 처리하고 작업을 수행하는 데 필요한 다양한 특성 (mixin이라고 함) 클래스를 구성합니다. 이러한 모든 작업은 다른 금융 기관의 실시간 모드에서 동일한 대기열에 들어갑니다. 데이터가 정리되면 지속성, 분석 또는 소켓 연결 또는 푸시 혜성 행위자로 푸시하기 위해 다른 데이터 저장소로 전송됩니다. 작업 행위자는 데이터를 가능한 빨리 처리 할 수 ​​있도록 지속적으로 자체로드 밸런싱 작업을 수행합니다. 추가 서비스, 지속성 모델 및 중요한 결정 사항.

JVM에 전달되는 Erlang OTP 스타일 메시지는 기존 라이브러리 및 애플리케이션 서버의 숄더에서 실시간 시스템을 개발하기위한 훌륭한 시스템을 만듭니다.

Akka를 사용하면 전통적인 방식으로 메시지를 전달할 수 있습니다 그러나 속도로! 또한 솔루션에 필요한 방대한 양의 액터 풀, 원격 노드 및 내결함성을 관리 할 수있는 도구를 프레임 워크에 제공합니다.


답변

Akka를 사용하여 REST 호출을 비동기식으로 처리합니다. 비동기 웹 서버 (Netty 기반)와 함께 사용자 요청 모델 당 기존 스레드와 비교하여 노드 / 서버 당 서비스되는 사용자 수를 10 배 향상시킬 수 있습니다.

상사에게 AWS 호스팅 청구서가 10 배 줄어든다는 사실을 알려주십시오. … …하지만 아마존에 말하지 마라 … 🙂


답변

우리는 대규모 Telco 프로젝트에서 Akka를 사용하고 있습니다 (불행히도 자세한 내용은 공개 할 수 없습니다). Akka 액터는 웹 애플리케이션에 의해 원격으로 배치 및 액세스됩니다. 이러한 방식으로 Google 프로토 버퍼를 기반으로 단순화 된 RPC 모델을 보유하고 있으며 Akka Futures를 사용하여 병렬 처리를 수행합니다. 지금까지이 모델은 훌륭하게 작동했습니다. 한 가지 참고 사항 : 우리는 Java API를 사용하고 있습니다.


답변

채팅 서버를 한 단계 높이면 답을 얻을 수 있습니다.

Akka는 Erlang의 “충돌”사고와 유사한 메시징 시스템을 제공합니다.

따라서 예는 메시징의 다양한 수준의 내구성과 신뢰성이 필요한 것들입니다.

  • 채팅 서버
  • MMO를위한 네트워크 계층
  • 재무 데이터 펌프
  • iPhone / mobile / 무엇이든 앱 알림 시스템
  • REST 서버
  • 아마도 WebMachine과 비슷한 것 (추측)

Akka의 좋은 점은 지속성, STM 구현, REST 서버 및 내결함성을 제공하는 선택입니다.

채팅 서버의 예에 짜증을 내지 말고 특정 종류의 솔루션의 예라고 생각하십시오.

모든 훌륭한 문서와 함께, 나는이 정확한 질문, 유스 케이스 및 예제라는 격차가 있다고 생각합니다. 예제는 사소한 것이 아니라는 것을 명심하십시오.

(비디오를보고 소스를 가지고 노는 경험만으로 작성된 akka를 사용하여 아무것도 구현하지 않았습니다.)


답변

우리는 직장에서 여러 프로젝트에 Akka를 사용하는데, 그 중 가장 흥미로운 것은 차량 충돌 수리와 관련이 있습니다. 영국에서는 주로 미국, 아시아, 오스트 랄라 시아 및 유럽으로 확장되고 있습니다. 우리는 차량을 안전하고 비용 효율적으로 수리 할 수 ​​있도록 충돌 수리 정보를 실시간으로 제공하기 위해 행위자를 사용합니다.

Akka의 질문은 실제로 ‘Akka로 할 수없는 것’입니다. 강력한 프레임 워크, 강력한 추상화 및 모든 내결함성 측면과 통합 할 수있는 기능은 매우 포괄적 인 툴킷입니다.