1. 들어가며 지금까지 RabbitMQ와 Kafka에 대해 자세히 알아봤습니다. 여러 메시지 큐가 있겠지만 그 둘만 다뤘던 이유는, 그 둘이 가장 널리 쓰이기도 하지만 여러 성능 테스트 결과 상반된 경향이 있었기 때문입니다. 오늘은 실제로 그 둘을 테스트 해보고 어떤 차이점이 있는지, 그리고 그 이유가 무엇인지 살펴보도록 하겠습니다.각각 결과를 살펴보면 각 Message Queue가 어디에 적합할 지 결론에 다다를 수 있을 것이라 생각합니다 :) 2. RabbitMQ vs Kafka 오늘 글은 다음 논문, 글들을 참조하여 쓰여졌습니다! 그래프는 모두 R로 작성되었습니다. Dobbelaere, Philippe & Sheykh Esmaili, Kyumars. (2017). Kafka versus Rabbit..
1. 들어가며 Message Queue 하면 가장 먼저 떠오르는 두 개는 Kafka와 RabbitMQ 아닌가 합니다.그래서 오늘은 Kafka에 이어 RabbitMQ에 대해 정리해보고자 합니다.똑같은 메시지 큐가 뭐가 다른가 싶겠지만 둘은 구현된 방식에 큰 차이가 있습니다. 또한 그 구현 방식에 따라 특화된 분야도 매우 다릅니다. 둘의 차이점은 다음 글으로 남겨두고 오늘은 RabbitMQ가 어떤 아키텍처로 구성 되어있는지 살펴보도록 하겠습니다. 2. RabbitMQ 아키텍처RabbitMQ란?메시지 생성자와 소비자 사이에서 메시지를 중계해주는 '메시지 브로커'입니다. 비동기 메시지를 사용하는 프로그램들 사이에서 데이터를 송수신하며 교환소(Exchange)와 Queue의 구조로 이루어져 있습니다. - Rab..
1. 들어가며 오늘은 Kafka의 클라이언트인 Producer와 Client가 브로커 노드와 통신하기 위해 사용하는 NetworkClient에 대해 알아보도록 하겠습니다. NetworkClient란?Kafka 클라이언트와 브로커 노드들의 연결 상태를 관리하고 브로커 노드로 데이터를 쓰거나 브로커 노드에서 데이터를 읽는 역할을 한다. 클라이언트가 브로커에 보낼 ClientRequest를 만들면, NetworkClient가 중간에서 요청을 중개해줍니다. 그림을 보면 알 수 있듯이 NetworkClient는 Client 측에 있는 구현체입니다. 오늘은 이 구현체가 어떻게 I/O Multiplexing을 통해 빠른 동시 연결을 달성하는지 알아보도록 하겠습니다. 오늘 글은 다음 글과 함께 내부 코드를 보며 ..
1. 개요 이번엔 Kafka의 큰 세가지 축(Producer - Broker - Consumer) 중 하나인 Consumer에 대해서 알아보고자 합니다.Producer에 대해서 아직 안 읽어보셨다면 다음 글을 먼저 읽어보시는 걸 추천드립니다.https://rawshrimpsushi.tistory.com/46 Kafka - Producer1. 개요 앞서 살펴본 것처럼 Kafka는 여타 Message Queue처럼 Producer - Consumer 구조를 가지고 있으나 세부적인 디테일은 크게 다릅니다. 오늘은 그 중 Producer를 좀 더 심층적으로 알아보고자 합니다. 앞rawshrimpsushi.tistory.com 오늘 글은 다음 글을 기반으로 소스 코드, 다양한 자료를 보며 작성되었습니다!https..
1. 개요 앞서 살펴본 것처럼 Kafka는 여타 Message Queue처럼 Producer - Consumer 구조를 가지고 있으나 세부적인 디테일은 크게 다릅니다. 오늘은 그 중 Producer를 좀 더 심층적으로 알아보고자 합니다. 앞으로 RabbitMQ와의 비교까지 갈 길이 머니 얼른 정리해보겠습니다! 오늘 글은 다음 글을 기반으로 소스 코드를 보며 작성된 글입니다!https://d2.naver.com/helloworld/6560422 2. Kafka Producer란? Kafka는 Producer의 데이터 전송을 위해서 Producer API를 제공합니다. Producer는 브로커에 특정 Topic(partition까지도 가능)을 지정하여 메시지를 전달합니다. 오늘은 Producer에서 유저에..
1. 개요졸업논문으로 Kafka와 RabbitMQ에 대해 작성하고 있습니다. 그 과정에서 다양한 자료 조사를 해야 했고 유용한데 번역되지 않은 자료, 논문들도 많이 있었습니다. 그래서 논문 작성 김에 해당 자료 조사를 여러 차례 블로그 글로 정리해서 올리고자 합니다 :) Kafka만의 특징 - push 방식Kafka는 push 방식으로 동작하는 기존 message Queue(RabbitMQ 등)와는 다르게 Consumer가 Broker 로부터 메시지를 직접 가져가는 Pull 방식으로 동작합니다. 즉 Consumer는 자신의 처리 능력만큼의 메시지만 가져와 처리합니다. - 로그 방식또한 in-memory 저장 방식이 아닌 메세지를 디스크에 저장한다는 특징을 가집니다. 일반적인 메세징 시스템은 Consume..