본문 바로가기

partition3

다중 서버일 경우 Kafka를 통한 채팅 서버 중계(with stomp, spring boot) 들어가기 이 글은 채팅 프로그램 구현 후, 다중 서버일 경우 발생할 수 있는 문제를 해결하기 위해 카프카(kafka)를 적용하는 과정을 담은 글로,  https://khdscor.tistory.com/122에서 구현한 채팅 프로젝트로부터 코드가 이어진다.  Spring boot with React: STOMP를 통해 채팅 시스템을 구현해보자(With Mysql, MongoDB)(2)들어가기  이 글은 https://khdscor.tistory.com/121에서 이어진다. 여기선 의존성, Config 파일 등 세부적인 파일을 다루지 않고 바로 비즈니스 로직을 작성한 과정을 담았다. 이에 대해 궁금한 것은 이전khdscor.tistory.com 이전에 토이 프로젝트로 STOMP를 통해 Spring boot,.. 2024. 6. 17.
Kafka - Producer 메시지 분배 전략(파티셔닝 전략)과 배치(feat. 하나의 파티션으로만 메시지가 전송된다?) 들어가기  Spring boot와 Kafka를 같이 사용하는 토이 프로젝트를 진행 중이었다.Kafka ui 툴을 통해서 메시지가 잘 전송이 되나~ 확인하려고 했는데 내 눈을 의심하였다...어째서 파티션 하나로만 메시지가 전송된거지?? Kafka를 공부했을 때는 파티션을 돌아가면서 메시지가 전송된다고 했는데? 처음에 당혹함을 감추지 못하였지만, 찾아보니 이는 단순한 이유였다. 공부했었던 파티션에 균등하게 분배하는 것은 파티션 분배 전략 중 라운드로빈(Round-Robin) 방식이고, 특정 파티션에 레코드를 축적하다가, 일정량이 채워지면 다른 파티션으로 이동하는 것이 스티키(Sticky) 방식이라고 한다. 스티키 방식은 파티션 전환 비용을 줄이고, 네트워크의 효율성을 높이며, 레코드의 일괄 전송(batch .. 2024. 6. 6.
카프카(Kafka)는 어떻게 사용하는가? 들어가기 최근 모놀리식 아키텍처와 MSA( MircroService Architecture)에 대해 공부를 하였다. 모놀리식 아키텍처는 하나의 애플리케이션 안에 서비스의 모든 부분을 담아서 개발을 하는 것이고, MSA는 서비스의 기능별로 다른 서버를 두어 각각의 애플리케이션으로 개발하는 것이다. 이러한 MSA는 기능별로 독립된 서버이기에 서로의 의존성을 낮추고 나눠서 개발할 수 있으며, 단위테스트가 용이하다는 장점이 있다. 단점으로는 모놀리식 아키텍처보다 훨씬 복잡하다는 점이 있다. 그렇다면 MSA 방식으로 기능을 구현한 애플리케이션들 간에는 어떻게 소통이 이루어질 수 있을까? gateway를 통해 서로 간의 api를 호출하는 방식이 있고 메시지를 주고받아 소통을 하는 방식이 있다고 한다. 메시지 처리 .. 2023. 12. 9.