최근 "대규모 마이크로서비스 간 데이터 공유"라는 글을 읽었습니다
이 사진은 비동기 연결에 관한 것입니다.
제 기억이 맞다면 이 사진의 주문 페이지 서비스는 Kafka의 메시지 스트림을 읽을 수 있을 뿐만 아니라 프런트엔드 애플리케이션의 REST API 요청도 읽을 수 있는 것 같습니다.
그래서 두 작업을 동시에 수행할 수 있는 서비스를 작성하는 것이 가능한지 궁금합니다.
Go와 같은 1개의 서비스에서만 가능합니다.
이거 좋은 생각인가요?
예, Kafka에서 소비하고 REST 엔드포인트를 노출하는 Go 서비스를 확실히 작성할 수 있습니다. 그러나 이는 이상적인 디자인 결정이 아닙니다.
Kafka 기반 스트리밍 시스템을 사용하면 생산자와 소비자 간의 비동기 통신이 가능합니다. 그러나 REST API 기반 시스템은 호출자와 호출 수신자 간에 동기식으로 통신합니다.
가용성 보장은 동기 모드 통신과 동기 모드 통신 간에 다릅니다. Kafka Streams 기반 시스템은 REST API와 다른 가용성 보장을 갖습니다. 스트리밍 시스템에서는 메시지 처리 처리량에 초점을 맞추는 반면 종단 간 동기 통신에서는 대기 시간이 주요 관심사입니다(발신자가 결과를 얻기 위해 오랫동안 기다리게 하고 싶지는 않습니다).
이 두 종류의 시스템을 하나의 서비스에 담으면 해당 서비스의 가용성을 알기 어려울 것입니다. 또한 서비스의 비동기식 또는 동기식 부분이 반대쪽의 시끄러운 이웃에서 실행되어 서비스를 사용할 수 없게 될 수 있습니다.
따라서 일반적으로 REST 기반 API와 Kafka 스트림을 두 개의 독립적인 서비스로 처리하는 것이 좋습니다.
위 내용은 Kafka의 메시지 스트림을 사용하고 REST API 요청을 읽는 서비스를 Go에서 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!