2016-09-20 4 views
1

마이크로 서비스는 컨텍스트를 구분하고 더 작은 모델을 생성 할 수있는 좋은 방법이라는 것을 알고 있습니다. 디커플링을 달성하는 방법 중 하나는 마이크로 서비스 간의 비동기 게시/구독 통신입니다. 동기식 통신 마이크로 서비스

는 이제 가 요청을 처리하는 담당 마이크로 서비스를 가정 해 봅시다하고 마이크로 서비스 B에 저장되어있는 정보를 필요로합니다. 이 문제를 해결하는 방법 중 하나는 마이크로 서비스 을 마이크로 서비스 B의 이벤트에 구독하고 필요한 데이터를 해당 데이터 저장소에 복사하여 향후 처리에 사용하는 것입니다. 사용자가 마이크로 서비스 에 요청을 보내는 경우

자, 뭔가, 마이크로 서비스를 처리하는 마이크로 서비스에서 최신 이벤트를 처리하지 않은 것은 B, 그것을 사용하는 더 좋은 방법이 될 것입니다 동기식 통신을 사용하고 해당 데이터의 일부를 직접 요청합니까? 그렇다면 현재 디자인과 커플 링에 대한 "위반"으로 간주됩니까?

잘못된 모델링으로 간주 될 수 있습니까? 그러한 경우 - 데이터가 컨텍스트에 필요하면 시작부터 해당 컨텍스트의 일부 여야합니다.

답변

3

잘못된 모델링으로 간주 될 수 있습니까? 그러한 경우 - 데이터가 A 컨텍스트에서 필요하면 처음부터 해당 컨텍스트에 포함되어 있어야합니다.

예, 가능합니다. 마이크로 서비스 B는이 사용 사례에 필요한 데이터에 대한 기술 기관의 경우

  • Secret of Better UI Composition
  • 요약

    • The Known Unknowns of SOA은, 다음, 마이크로 서비스 B는 기능을 제공해야한다 .

      현재 설계 및 커플 링의 "위반"으로 간주되는 것은 무엇입니까?

      이러한 설계에서는 마이크로 서비스 B를 사용할 수없는 경우 마이크로 서비스 A는 가치를 제공 할 수 없습니다. 그건 나에게 커플 링처럼 들린다.

      이 패턴으로 트랩 된 경우 B와 동기식으로 통신하지만 B를 사용할 수없는 경우에 대한 데이터의 로컬 캐시로 추정됩니다.

      공유되는 데이터가 불변 인 경우 문제 중 일부가 사라집니다. 다음 어떤, 비즈니스에 의해 허용되는 캐시 된 데이터로 작업 할 데이터의 작가가 B의 경우 그렇지 않으면 예외

      의 데이터를 소유 할 필요하거나 던질 것이다 때 이것은 물론에만 작동

      으로 표시된 데이터는 캐시 된 데이터입니다. A가보고있는 동안 서비스 B가 데이터를 변경할 수 있습니다.A가 B가 작성한 데이터의 라이브 사본을 요구하는 결정을 내리는 경우, 더 큰 문제가 있습니다. 서비스 경계가 잘못된 곳입니다.

    +0

    "내 생각에,이 패턴에 갇혀 있다면 B와 동 기적으로 통신 할 수 있지만 B를 사용할 수없는 경우에는 해당 데이터에 대한 로컬 캐시가 있습니다." 이것은 물론 캐시 된 데이터로 작업하는 것이 비즈니스에서 허용되는 경우에만 작동합니다. 그렇지 않으면 A가 데이터를 소유하거나 예외를 throw해야합니까? – Robert

    관련 문제