이벤트브로커 메세지브로커, 무엇이 다를까
단어에 대한 의미 파악
what is broker
이벤트와 메세지 브로커를 이해하기전에 브로커가 멀까? 왜 생겨났을까
브로커는 한국말로 중개인이다. 즉 통신 사이에 하나의 중개자를 둬서 처리한다는 것이다.
이렇게 처리하면 각 시스템의 결합도를 낮추고 비동기적으로 실행가능하다
이미지 출처 : 얄팍한 코딩사전
이벤트 vs 메세지
이벤트와 메세지의 차이를 그림으로 표현해 보았다.
의도
- 메세지
- 어떠한 특정 데이터를 요청하거나 다른시스템에 지시
- 이벤트
- 어떤 일이 일어났다고 상태를 알림
수신자 여부
- 메세지
- 발신자는 소비자에 대해 알고 있음
- 메세지 하나당 소비하는 사람이 정해져잇음
- 이벤트
- 이벤트는 특정 상태에 대한 신호
- 소비자가 특정되지않음
- 특정 채널을 구독하면 그 이벤트를보고 다른 주체가 특정일을 하는..
메세지브로커, 이벤트 브로커
위의 단어의 정의를 통해 이벤트브로커와 메세지브로커들을 정의 할 수 있다.
대표적인 메세지,이벤트 브로커인 RabbitMQ와 kafka를 기반으로 각 브로커의 차이를 설명한다.
RabbitMQ(메세지 브로커)
- 큐로 구현됨
- 큐에서 하나씩 빼서 소비자가 소비하게 됨
- 설정에 따라 유지 시킬순있음
- 주로 메모리에 저장됨, 유실의 위험성도 있음
- 설정에 따라 큐
- 에러처리, 메세지 삭제등 메세지에 대한 처리가 주로 브로커에서 함
### Kafka(이벤트 브로커)
- 디스크에 로그형태로 저장
- 파티션단위로[kafka가 멀까](/pages/../400-%EC%9D%B8%ED%94%84%EB%9D%BC-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98/kafka%EA%B0%80-%EB%A9%80%EA%B9%8C.html)
- 각 메세지는 오프셋을 가짐
- 각 메세지는 소비되어도 지워지지 않음
- 소비자들은 채널별로
- 브로커의 부담이 줄어 대용량 처리에 용이함
그런데 찾다보면 같은 서비스에대해서 이벤트브로커라고도고하고 메세지브로커 라고도한다.
aka 공식문서에서 단서를 찾을 수 있었다.
> '메시지 기반'이라는 용어는 시스템의 빌딩 블록을 의미하고 '이벤트 기반'이라는 용어는 시스템의 상위 수준 속성을 의미합니다. 그래서 메시지 기반 도구를 사용하여 이벤트 기반 시스템을 구축할 수 있습니다.