Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

신뢰성있는 메시지 전송 전략


Info

수많은 노드로 규모를 확장하는것이, AKKA 메시지의 궁극적인 목표입니다.

여러분의 로컬에서만 실행되는 코드를 하나도 바꾸지 않고 분산시스템에서 실행되게 할수 있을까요?

짧게 답하면 '아니오' 입니다. 로컬과 원격의 환경차이를 그냥 추상화해서 없애 버릴수는 없습니다.

다음과 같은 무시할수 없는 네 영역이 있기때문입니다.

  • 지연시간: 노드사이의 네트워크를 통해 전송되는 지연시간을 예측할수 없습니다.
  • 부분실패: 분산 시스템을 이루는 각 부분을 항상 감시할수없으며, 각 부분이 제대로 작동하는지 알아내기가 어렵습니다.
  • 메모리접근: 로컬에서는 메모리 객체에대한 참조를 항상 얻을수 있지만, 원격 노드의 원격객체에대한 참조를 얻는 것은 어럽습니다.
  • 동시성: 원격노드를 조정하는 모든 권한을 가지는 주인이 없으며, 연산순서를 보장받기가 어렵습니다.


이와 같은 문제로 로컬프로그래밍 모델은 분산환경에서의 규모 확장에 실패할 가능성이매우 높습니다.


그래서 아카는 이와 반대되는 접근방법을 선택하게 됩니다. 로컬 프로그래밍 모델에서도, 객체공유가 아닌 메시지 처리기법을

사용하여 이것을 확장가능하게 합니다. 이것의 단점도 분명 있습니다. 로컬 시스템에서의 프로그래밍이 불필요하게 어려워질수도

있다란것입니다. 예를들어 A class의 모든 접근수준이 private라고 한다면, B Class는 A class의 값을 어떻게 획득해야 할까요?

A class의 모든 접근 수준이 public이라 할지라도..., 원격에 있는 B Class가 어떻게 A class의 퍼로퍼티에 접근 할수 있을까요?


분산처리를 위해 가장 기본이되는, 신뢰성있는 메시지 전략을 위해 AKKA는 어떠한 전략을 사용하는지 간단하게 살펴보겠습니다.


Local전송 Vs Remote 전송

 Actor는 Local처리(전송)과 Remote 전송하는 사용방법이 거의 동일합니다.

...