회로 차단기는 어디로 가야합니까?

Aug 18 2020

저는 새로운 REST API를 개발 중이며 일부 프로젝트에서 Controller. 나는 그것을 DAO.

내가 말할 수있는 첫 번째 차이점 DAO은이 제 3자를 소비하는 모든 서비스가 오류 시나리오에서 열려 있다는 것입니다. 그리고 그것을에 배치하면 Controller결국이 제 3자를 소비하는 모든 경로가 열립니다. 그래서 그것은 즉시되지 않을 것입니다. 그러나 두 번째 선택 (에서 Controller)은 관리하기가 더 쉬운 것 같습니다.

어디로 가야하는지에 대한 권장 사항이 있습니까?

답변

3 Christophe Aug 19 2020 at 17:02

이 답변에는 두 부분이 있습니다. 첫 번째 부분은 이미 Robert Harvey 가 그의 의견에서 언급했습니다.

  • Chris Richardson의 마이크로 서비스 패턴 카탈로그에 따르면 회로 차단기 는 원격 서비스의 프록시에 있어야합니다. API Gateway는이를위한 좋은 장소입니다.
  • 또 다른 대안은 서버 측 검색입니다. 특히 복구 전략이 동일한 서비스의 실행중인 다른 인스턴스를 찾는 것을 의미하는 경우입니다.

그러나 두 번째 부분이 있습니다. 회로 차단기의 목표는 서비스를 사용할 수없는 것으로 감지되면 나중에 실패 할 단계를 누적하여 많은 좌절감을 느끼는 대신 빠르게 실패하는 것입니다. 따라서 회로 차단기는 소비하는 서비스가 중단에 대응할 준비가 된 경우에만 완전한 의미를 갖습니다.

  • 원격 서비스가 필수적 일 수 있으며 소비 서비스는 자체적으로 보류 (예 : 내부 회로 차단기)를 결정할 수 있습니다.
  • 원격 서비스는 필수가 아니며 소비하는 서비스는 계속해서 서비스를 제공 할 수 있지만 성능이 저하 된 모드 일 수 있습니다.
  • (서비스 검색 기반 차단기는 실패하지는 않지만 다른 작동하는 서비스를 찾으면 소비자가 알아 차리지 못합니다).

일반적인 관점에서 이러한 종류의 동작 선택은 컨트롤러 책임입니다. 컨트롤러는 서비스 요소 사이를 조정하고 "실패"정보를 기반으로 처리를 조정할 수 있습니다.

그러나 귀하의 경우에만 다른 곳에서 데이터를 가져오고 오류 처리 전략이 항상 동일한 경우 (필수 및 비 필수간에 차이가 없습니다. 예를 들어 캐시 된 값을 사용하고 다른 경우에는 실패) dao imho에 넣기로 결정할 수 있습니다.