이벤트 스트리밍 플랫폼
어플리케이션과 같은 이벤트 소스에서 발생한 데이터를 지속적으로 수집, 처리, 저장하는 플랫폼이다.
아파치 카프카는 이벤트 스트림을 지속적으로 저장하고, 실시간 또는 회고적으로 처리한다. 주식 거래 어플리케이션과 같이 실시간으로 많은 데이터를 주고 받아야 하는 경우에 사용된다.
Server
카프카는 하나 이상의 서버의 집합으로 실행된다. 데이터를 저장하는 계층(broker), 데이터를 지속적으로 내보내고 받는 서버가 있다.
Client
이벤트 스트림을 지속적으로 읽고, 쓰는 애플리케이션. consumer 와 producer가 Client에 해당한다.
Producer
이벤트를 쓰는 클라이언트
Consumer
이벤트를 구독하는(읽는) 클라이언트
Topic
버킷 내의 스트림을 분산시켜 저장, 관리하는 네임스페이스.
Partition
토픽은 분할된다. 하나의 토픽은 다른 카프카 브로커에 있는 버킷에 분산된다. 새로운 이벤트가 토픽에 publish 될 때, 토픽 파티션 중 하나에 추가되는 것이다. 같은 이벤트 key를 가진 이벤트들은 같은 파티션에 저장된다. Kafka 는 지정된 주제 파티션의 소비자가 항상 해당 파티션의 이벤트를 작성된 순서와 정확히 동일한 순서로 읽을 것임을 보장 합니다.
kafkajs를 이용해 만드는 nest server 는 Client. consumer, producer 모두 가능한 듯..