2016-08-08 3 views
4

다른 서비스 패브릭 응용 프로그램에서 여러 기능을 그룹화했습니다. 각 서비스 패브릭 응용 프로그램은 특정 범위 내의 기능 집합 (예 : 뉴스, 블로깅, 사용자는 모두 별도의 응용 프로그램 임)을 담당합니다. 다른 팀이 해당 기능 범위에서 작업 할 수 있습니다.서비스 패브릭 응용 프로그램 간 통신

각 응용 프로그램에는/users 또는/news 또는/blog와 같은 공용 REST API가 있습니다. 따라서 공용 웹 사이트는 이러한 끝점을 호출하고 정보를 검색/게시 할 수 있습니다.

그러나 여러 번이 응용 프로그램은 서로 통신해야합니다. 그러나 이것을 설정하는 가장 좋은 방법은 무엇입니까? 지금까지 볼 수있는 2 가지 방법이 있습니다.

  • 공개적으로 게시되지 않은 자체 IP 포트를 사용하는 내부 용도로만 각 응용 프로그램에 새 HTTP 끝점을 만듭니다. 느슨한 결합.
  • RPC 호출을 사용합니다 (하지만 응용 프로그램간에 '하드'링크가 생성됩니다). 강력하게 결합.

이제는 별도의 HTTP 끝점을 사용하는 것이 좋지만 RPC 호출이 더 좋은지 궁금합니다. 디자인 철학에서 응용 프로그램간에 RPC 호출을 사용할 수 있습니까? 아니면 응용 프로그램이 업데이트되고 인터페이스가 변경되면 문제가 발생합니까?

여기 또 다른 패턴이 있습니까?

답변

2

서비스의 서명을 변경하거나 새로운 것을 추가 할 때 반드시 다시 작성해야합니다. 따라서 두 경우 모두 변경된 코드와 호출 코드를 만져야합니다.

RPC의 문제는 서비스를 사용하려는 모든 위치에서이 인터페이스에 액세스 할 수 있어야한다는 것입니다. 따라서 실제로 독립적으로 서비스를 업그레이드 할 수는 없습니다. HTTP 통신은이 문제를 해결할 수 있습니다.

그러나 HTTP 통신에 당신이 이어질 것 꽤 복잡한 코드를 작성할 필요가 : 새로운 사람들을위한 논리와 구조를 이해하는 새로운 버그

  • 장소
  • 어려움을
  • 아마 것 그들은 누군가를 유지해야 할 것입니다.
  • 업데이트를 등록하는 방법에 대해 생각해야합니다. 어떤 서비스가 먼저 업데이트되어야합니까?

예, 당신은 의존성에서 벗어났습니다 (완전히 나를위한 것은 아니지만). 그러나 작업량과 유지 관리의 양은 약간 증가합니다. RPC는 저렴하고 간단합니다.

서비스를 개별적으로 업그레이드하는 것이 중요하며 서비스 업그레이드가 중단되어 다른 작업에 영향을주지 않는 경우에만 RPC over HTTP를 사용합니다.

1

microservices 세션/정상 회의에 참석했으며 연사는 REST API 엔드 포인트가있는 다른 마이크로 서비스에 액세스하도록 권장했습니다.

우리는 전화로 표준화를 유지할 수 있으며 유지 관리가 쉽기 때문에 이에 동의합니다. 그냥 생각.

관련 문제