You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 분산 메시징 플랫폼으로 kafka는 어플리케이션간에 메세지를 교환하기 위해 사용되는 메세징 시스템 입니다(분산 메시지 큐).
예를 들어, 우리가 잘 알고 있는 메일의 경우 보내는 사람은 받는 사람과 상관 없이 메일 서버로 메시지를 보낼 수 있습니다. 보낸 메시지는 메일서버에 저장되어 있고, 받는 사람은 자기가 원하는 시간에 언제든지 메일을 볼 수 있게 됩니다. 카프카도 비슷합니다. 프로듀서는 카프카로 메시지를 보내게 되고, 해당 메시지는 카프카에 저장되어 보관중입니다. 그리고 컨슈머는 카프카에 저장되어 있는 메시지를 필요로 할때, 가져갈 수 있습니다.
위처럼 처음에는 단방향으로만 존재했지만, Source Application과 Target Application이 많이 늘어나면서 데이터를 전송하는 라인이 매우 복잡해졌습니다. 라인이 많아지면 배포와 장애에 대응하기 어려워집니다. 그리고 특정 부분을 수정해야 할 때 앞단부터 다 수정해야하므로 유지보수 하기도 어렵습니다. 그래서 이러한 복잡함을 해결하기 위해 kafka를 사용하는 것입니다.
카프카 도입 전(Point to Point 방식)
이 방식은 큐를 통해서 전달할 메세지를 전달하면 받는 사람이 큐에서 메세지를 사용합니다. 큐 처럼 받는 사람들은 모두 하나씩 큐를 가지고 있고, 보내는 사람들이 목적지 큐에 전달하면 받는 사람이 꺼내 읽습니다. 때문에 데이터 연동의 복잡성이 증가합니다.
카프카 도입 후(Pub/Sub 방식)
카프카에는 Topic이라는게 존재하는데 구독자가 특정 토픽이나 이벤트에 구독을 해 놓으면 해당 토픽이나 이벤트에 대한 통지를 비동기 방식으로 받습니다. 즉, Publisher가 Topic에 메세지를 보내면 해당 토픽을 구독해놓은 모든 사용자들에게 메세지가 전송됩니다. producer, consumer 를 분리해서 높은 처리량이 가능합니다.
[정리]
Point to Point 방식은 메세지를 각각 1명의 사용자만 받을 수 있지만 Pub/Sub방식은 토픽을 구독한 많은 사용자가 메세지를 받을 수 있습니다.
Point to Point방식은 메세지를 받는 사람이 큐에서 꺼내읽는 방식이지만 Pub/Sub방식은 토픽에서 꺼내오는게 아니라 토픽에서 BroadCast 되는 방식입니다. 사용자들에게 메세지가 통보되는 개념.
[Kafka 아키텍처]
Broker : Kafka를 구성하는 각 서버 1대 = 1 broker
Topic : Data가 저장되는 곳
Producer : Broker에 data를 write하는 역할
Consumer : Broker에서 data를 read하는 역할
Consumer-Group : 메세지 소비자 묶음 단위(n consumers)
Zookeeper : Kafka를 운용하기 위한 Coordination service
Partition : topic이 복사(replicated)되어 나뉘어지는 단위
Booker_Be 프로젝트에 어떻게 활용할 수 있을지에 대한 정리
도서 검색 성능 향상:
Kafka는 고성능 메시지 큐로 활용될 수 있습니다. 사용자가 도서 검색을 수행할 때 검색 요청을 Kafka Topic으로 발행할 수 있습니다. 여러 개의 검색 서비스 컨슈머가 이 Topic을 구독하여 검색 요청을 병렬로 처리할 수 있게 됩니다. 각 컨슈머는 검색 요청의 일부분을 처리하며, Kafka의 파티셔닝 메커니즘은 컨슈머 간의 작업 부하를 균형있게 분산시킵니다. 이를 통해 검색 서비스를 수평으로 확장하여 성능을 개선하고 응답 시간을 단축할 수 있습니다.
무료 도서 공유 이벤트:
대량의 이용자가 동시에 무료 도서 공유에 신청하는 상황에서, Kafka는 이벤트 기반 처리와 비동기 통신을 통해 대용량 트래픽을 처리하는 데 도움이 됩니다. 사용자가 무료 공유를 신청할 때 해당 이벤트를 Kafka Topic에 발행할 수 있습니다. 이 Topic을 구독하는 컨슈머는 비동기적으로 이벤트를 처리하고, 사용자의 자격 확인, 도서 가용성 업데이트, 이메일 확인 등의 작업을 수행할 수 있습니다. Kafka를 사용하면 이벤트 생성과 처리를 분리하여 시스템이 많은 동시 이벤트를 처리할 때 블로킹이나 지연 없이 동작할 수 있습니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
[Kafka 란?]
예를 들어, 우리가 잘 알고 있는 메일의 경우 보내는 사람은 받는 사람과 상관 없이 메일 서버로 메시지를 보낼 수 있습니다. 보낸 메시지는 메일서버에 저장되어 있고, 받는 사람은 자기가 원하는 시간에 언제든지 메일을 볼 수 있게 됩니다. 카프카도 비슷합니다. 프로듀서는 카프카로 메시지를 보내게 되고, 해당 메시지는 카프카에 저장되어 보관중입니다. 그리고 컨슈머는 카프카에 저장되어 있는 메시지를 필요로 할때, 가져갈 수 있습니다.
[kafka는 왜 사용하는가?]
Source Application(데이터 전송) -> Target Application(데이터 받음)
위처럼 처음에는 단방향으로만 존재했지만, Source Application과 Target Application이 많이 늘어나면서 데이터를 전송하는 라인이 매우 복잡해졌습니다. 라인이 많아지면 배포와 장애에 대응하기 어려워집니다. 그리고 특정 부분을 수정해야 할 때 앞단부터 다 수정해야하므로 유지보수 하기도 어렵습니다. 그래서 이러한 복잡함을 해결하기 위해 kafka를 사용하는 것입니다.

카프카 도입 전(Point to Point 방식)

이 방식은 큐를 통해서 전달할 메세지를 전달하면 받는 사람이 큐에서 메세지를 사용합니다. 큐 처럼 받는 사람들은 모두 하나씩 큐를 가지고 있고, 보내는 사람들이 목적지 큐에 전달하면 받는 사람이 꺼내 읽습니다. 때문에 데이터 연동의 복잡성이 증가합니다.
카프카 도입 후(Pub/Sub 방식)

카프카에는 Topic이라는게 존재하는데 구독자가 특정 토픽이나 이벤트에 구독을 해 놓으면 해당 토픽이나 이벤트에 대한 통지를 비동기 방식으로 받습니다. 즉, Publisher가 Topic에 메세지를 보내면 해당 토픽을 구독해놓은 모든 사용자들에게 메세지가 전송됩니다. producer, consumer 를 분리해서 높은 처리량이 가능합니다.
[정리]
[Kafka 아키텍처]
Broker : Kafka를 구성하는 각 서버 1대 = 1 broker
Topic : Data가 저장되는 곳
Producer : Broker에 data를 write하는 역할
Consumer : Broker에서 data를 read하는 역할
Consumer-Group : 메세지 소비자 묶음 단위(n consumers)
Zookeeper : Kafka를 운용하기 위한 Coordination service
Partition : topic이 복사(replicated)되어 나뉘어지는 단위
Booker_Be 프로젝트에 어떻게 활용할 수 있을지에 대한 정리
도서 검색 성능 향상:
Kafka는 고성능 메시지 큐로 활용될 수 있습니다. 사용자가 도서 검색을 수행할 때 검색 요청을 Kafka Topic으로 발행할 수 있습니다. 여러 개의 검색 서비스 컨슈머가 이 Topic을 구독하여 검색 요청을 병렬로 처리할 수 있게 됩니다. 각 컨슈머는 검색 요청의 일부분을 처리하며, Kafka의 파티셔닝 메커니즘은 컨슈머 간의 작업 부하를 균형있게 분산시킵니다. 이를 통해 검색 서비스를 수평으로 확장하여 성능을 개선하고 응답 시간을 단축할 수 있습니다.
무료 도서 공유 이벤트:
대량의 이용자가 동시에 무료 도서 공유에 신청하는 상황에서, Kafka는 이벤트 기반 처리와 비동기 통신을 통해 대용량 트래픽을 처리하는 데 도움이 됩니다. 사용자가 무료 공유를 신청할 때 해당 이벤트를 Kafka Topic에 발행할 수 있습니다. 이 Topic을 구독하는 컨슈머는 비동기적으로 이벤트를 처리하고, 사용자의 자격 확인, 도서 가용성 업데이트, 이메일 확인 등의 작업을 수행할 수 있습니다. Kafka를 사용하면 이벤트 생성과 처리를 분리하여 시스템이 많은 동시 이벤트를 처리할 때 블로킹이나 지연 없이 동작할 수 있습니다.
Redis & Kafka

Beta Was this translation helpful? Give feedback.
All reactions