액터 모델과 마이크로 서비스의 차이점은 무엇입니까?


답변:


11

액터 모델-동시 계산을위한 수학적 모델이며 마이크로 서비스는 서비스 지향 아키텍처의 구현입니다. 유사점은 우연의 일치입니다.

액터 모델을 기반으로 마이크로 서비스를 구축하고 액터 모델로 일부 마이크로 서비스 아키텍처를 모델링하는 것이 가능하지만 이것이 동등한 것은 아닙니다. "마이크로 서비스 시스템"을 "이메일 시스템"으로 바꾸면 여전히 유효합니다. "액터 모델"을 "CSP (Communicating 순차적 프로세스)"로 바꾸면 CSP와 액터 모델 시스템이 서로 모델링 될 수 있으므로 "참"도됩니다.

액터 모델이 주어지면 마이크로 서비스 나 SOA 또는 이메일을 사용하여 구현할 수 있지만, 실제로 비교하기 위해 동일한 추상화 레벨에있는 것은 아닙니다.

또한 액터 모델은 버퍼를 강조하므로 (마이크로 서비스 세계에서는 메시지 큐로 생각할 수 있음) 일부 액터 / 마이크로 서비스는 기본적으로 비동기 통신이 가능하지만 준비가되지 않을 수 있습니다.

즉, 액터 모델과 비교하면 매우 높은 수준의 고려에서 창의적인 통찰력을 얻을 수 있지만 대부분 사과 대 오렌지입니다.

SOA / 마이크로 서비스의 수학적 모델을 액터 모델과 비교하는 것이 목표라면, 1) SOA에 대한 수학적 모델에 합의 된 것이 없으며 , 2) 모델에는 일반적으로 목적이 포함 되기 때문에 사소하지 않습니다 . 그리고 SOA / 마이크로 서비스 모델링은 행위자 모델의 목적과 다를 가능성이 높습니다. 여기서 SOA 모델링 시도의 한 예입니다 .

물론, 마이크로 서비스로 액터 모델 시스템을 생성하고 각 서비스를 액터로 호출 할 수 있습니다 (액터 모델이 무엇인지에 대한 엄격한 정의 참조). 그러나 이것이 일반적인 의미에서 둘 사이에 의미있는 관계가 있다는 것을 의미하지는 않습니다.


액터 모델을 같은 레벨의 마이크로 서비스와 비교할 수 없습니다. 내 대답 업데이트 할 수 있도록
로마 수시

나는 그렇게 말하지 않습니다. 마이크로 서비스는 어셈블리 또는 C 프로그램뿐만 아니라 액터 모드를 구현할 수 있습니다. 그러나 나는 그들이 항상 또는 자주한다고 말하지 않습니다. 그리고 Erlang도 액터 모델 구현의 예입니다. 당신의 주장을 이해하지 못했습니다.
Roman Susi

죄송합니다. Actors가 수학적 모델이고 uServices가 그 모델을 구현한다는 것을 처음 읽었습니다. 이들이 서비스 아키텍처를 구현하는 것을 보지 못했습니다. 제 질문은 Actors와 SOA의 두 수학적 모델이 서로 비교되는 방식입니다. 서비스는 요청을 수락하고 응답 메시지를 생성하는 메시지 루프가있는 것입니다. 이것이 액터가하는 일입니다. SOA의 마이크로 서비스와의 차이점은 무엇입니까? 다시 말해, 분산 된 서비스 네트워크가있을 때이를 마이크로 서비스 또는 행위자로 지칭해야합니까?
Little Alien

이 사이트는 포럼이나 뉴스 피드가 아닌 질문과 답변 사이트입니다. UPDATE 및 EDIT와 같은 모니 커는 필요하지 않습니다. Stack Exchange의 모든 게시물에는 이미 누구나 볼 수있는 자세한 편집 기록이 있습니다.
Robert Harvey

1

마이크로 서비스는 각 관심 영역을 자체 배포 가능한 아티팩트 (실행 파일, 스크립트, JAR, WAR 등)로 분할하여 소프트웨어를 구성하는 방법입니다. 예를 들어 필요한 곳에 더 많은 인스턴스를 배포하여 확장 할 수있는 유연성을 제공합니다. 사용자가 장바구니에 물건을 추가하는 것보다 카탈로그를 보는 데 더 많은 시간을 소비한다고 가정하십시오. 하나는 배치 가능한 아티팩트가 카탈로그 기능을 처리하고 다른 하나는 장바구니 기능을 처리합니다. 더 많은 카탈로그 서비스 사본을 실행하여로드를 처리 할 수 ​​있습니다.

또한 내부 변경과 분리합니다. 제품 데이터를 저장하기 위해 관계형 데이터베이스에서 문서 데이터베이스로 이동한다고 가정 해 봅시다. 장바구니 서비스를 변경할 필요가 없습니다.

액터 모델은 배포 가능한 아티팩트보다 낮은 수준이며 서비스를 구현 한 객체 유형에 대해 더 자세히 설명합니다. 위의 예를 계속하면 시스템에 쇼핑 카트가 액터로 표시 될 수 있으므로 모든 사용자의 쇼핑 카트는 별개의 액터이며 메시지는 항목을 추가하고, 항목을 제거하고, 현재 컨텐츠에 응답하고, 배송을 추가하고, 체크 아웃하도록 지시합니다 이 경우에도 마이크로 서비스가 있으며 액터 모델로 구현됩니다.


같은 서비스의 여러 인스턴스를 가질 수 있다고 말했을 때 나는 그것이 반대라고 생각하기 시작했습니다. 서비스는 유형이지만 배우는 객체입니다 :)
Little Alien

액터를 개별적으로 배포 할 수 없습니까? 확실합니까? dotnet.github.io/orleans/Documentation/Grain-Versioning/…
Daffy Punk

나에게 그것은 구현 현명한 것, 아마도 두 개념 사이에 약간의 수렴이있을 것 같다 ...
Daffy Punk

1

주요 차이점은 세분성 중 하나라고 말하고 싶습니다.

액터 모델의 경우 액터가 OOP에서 하나의 오브젝트에 해당하는 경향이 있다는 점에서 상대적으로 세분화됩니다.

마이크로 서비스의 경우 단일 마이크로 서비스가 많은 수의 액터 또는 오브젝트로 구성 될 수 있다는 점에서 비교적 거칠다.

현대 웹이 훨씬 더 큰 세분성 ( "매크로 서비스")으로 동일하다는 것을 상상하기 위해 상상력을 너무 많이 늘릴 필요는 없습니다. (예를 들어, HTTP 서버는 매크로 서비스, 데이터베이스 서버는 매크로 서비스, 웹 브라우저는 매크로 서비스 등입니다.)

의사 소통을하는 격리 된 부분과 거의 같습니다. 변경되는 조각의 크기 (따라서 조각의 수)입니다.


아무리 클지라도 모든 Java 응용 프로그램은 단일 객체입니다. 물체는 다른 물체로 만들어져 무한정 커질 수 있습니다. uServices는 다른 객체로 만들어진 일종의 응용 프로그램이라고 생각합니다.
Little Alien

0

마이크로 서비스는 여러 복제본을 생성하여 수평 적으로 확장되며, 각 복제본은 상태 비 저장 서비스 로 인해 요청을 처리 할 수 있습니다. 그들은 무국적의 본질로 인해 실패에 대해 탄력적입니다.

액터는 로드가 적거나 사용 가능한 리소스가 더 많은 파티션으로 이동하여 확장합니다. 그들은 상태양호 합니다. 액터 프레임 워크에 따라 다른 액터가 동적으로 회전하거나 액터의 핫 백업을 항상 유지하여 기본 액터의 장애를 처리 할 수 ​​있기 때문에 장애에 대해 탄력적입니다.

다시 말하지만 마이크로 서비스는 상태 저장이 가능하지만 마이크로 서비스의 설계 원칙에 위배됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.