inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Ứng dụng kiến trúc microservice (MSA) phát triển với Spring Cloud

Microservice Orders được sửa đổi - Order Kafka Producer

KafkaProducer와 OrderProducer 차이

387

hungryo

22 câu hỏi đã được viết

1

안녕하세요.

Producer 구조 관련해서 문의드립니다.

어디선가 이해를 못하고 있는건지...

order-service에서 catalogs-service 호출할때 

KafkaProducer를 만들어서 send할때 그냥 topic, orderDto만 jsonString 형식으로 보냈는데

왜 OrderProducer에서는 스키마, 필드 등 형식을 만들어서 send하는지요?

둘다 Topic에 전달하는건 같고...

차이점은 다른 서비스에 전송(catalogs-service)하냐 자신(order-service)에게 전송하냐 차이가 보이는데  결국 Topic에 전송하는거라.. 같은게 아닌가 합니다.

 

 

spring-boot spring-cloud JPA architecture msa Kafka

Câu trả lời 2

4

Dowon Lee

안녕하세요, 이도원입니다.

KafkaProducer와 OrderProducer는 사용용도가 다릅니다. 먼저, order-service에서의 KafkaProducer는 catalog-service에게 주문 내역을 전달하기 위해서 사용했습니다. 단순히 제품ID, 수량, 가격 등의 정보를 Json으로 전달하였습니다. 해당 메시지를 토픽으로부터 받게 되는 catalog-service에서도 Json 데이터에 저장된 제품ID, 수랴, 가격 등의 정보를 해석해서 자신의 DB에 업데이트 했습니다. 반면에, OrderProduce의 용도의 다른 order-service간의 데이터 동기화를 위해 사용했습니다. 여러 order-service가 존재할 경우, 각각의 DB를 사용하면 주문에 대한 동기화가 이뤄지지 않기 때문에, 이러한 데이터 동기화를 위해 사용하고 있습니다. 이를 위해 Topic에 주문 정보를 저장하면, 자동으로 DB에 반영해 줄 수 있도록 Kafka Connect도 설정하였습니다. Topic에 저장된 메시지가 자동으로 DB에 저장되기 위해서는 DB가 읽을 수 있는 데이터 형식이어야 하는데, 이를 위해 Payload에 주문 정보를 저장하여 토픽에 보냈습니다. Kafka Connect는 Payload의 값을 해석하여 해당 DB에 주문 정보를 업데이트하게 됩니다. 

감사합니다. 

0

cro

안녕하세요, 답변을 보고 추가로 궁금한 점이 생겨서 질문드립니다.

 

두 가지 방식의 차이점을 저는 다음과 같이 이해했습니다.

catalog-service로의 전송

JSON으로 전송 → 애플리케이션에서 수신 → 비즈니스 로직 처리 후 DB 업데이트

order-service 동기화

스키마 기반 전송 → Kafka Connect를 통해 직접 DB 업데이트

 

저는 catalog-service의 경우 단순한 데이터 저장이 아니라 재고 차감, 유효성 검증 등의 비즈니스 로직이 필요하기 때문에 애플리케이션 레벨에서 처리해야 하고,

order-service의 경우는 단순한 데이터 동기화 목적이므로 Kafka Connect를 통해 직접 DB에 반영하는 방식을 선택한 것으로 이해해도 맞을까요?

 

그리고 이런 구분 기준이 일반적으로 비즈니스 로직의 유무에 따라 결정되는 건지도 궁금합니다.

0

hungryo

앗 유레카~! 

 

감사합니다~!

kafka 업데이트 강의 듣고 시포요

0

84

1

강의 교안

0

72

1

마이크로서비스간 통신 시, 인증 처리

0

79

1

api gateway 에서 인증 처리

0

64

1

섹션 19 질문드립니다

0

51

1

강의 자료 업데이트

0

81

1

부하분산 강의 섹션

0

56

1

강의자료는 어디에서?

0

69

1

강의 자료는 어디서 다운 받을 수 있나요?

0

109

1

전체 사용자 조회시 오류

0

57

1

혹시 pk 외 별도의 id 를 부여한 이유가 있을까요 ??

0

109

2

학습 방향

0

94

2

카프카 커넥터 사용 목적 문의

0

85

2

kafka 강의

0

107

2

서비스 디스커버리 종류

0

87

2

강의 자료에 대해서 궁금해요

0

115

2

GlobalFilter, LoggingFilter가 동작하지 않습니다.

0

89

2

Kafka Source Connect 버전 에러

0

83

2

소스커넥터는 사용안한 거 맞죠?

0

81

2

강의자료 업데이트 문의

0

94

2

강의에서 BCryptPasswordEncoder 에 역할(5-2)

0

56

1

강의 업데이트 계획이 궁금합니다.

0

111

2

MSA 애플리케이션에 Spring Web과 Spring Data JPA를 사용하는 것이 바람직한지 궁금합니다. (MSA 설계와 관련된 질문입니다)

0

160

2

어떤 것이 업데이트 된 건가요?

0

162

2