Producer의 Message
key - value → 보내고싶은 데이터
Kafka는 데이터를 모두 Byte Array로 저장함
메시지를 보내면 그것을 받아 Serializer에서 Byte Array로 변경하여 있는 그대로 저장
Consumers는 Deserializer로 Byte Array를 다시 변경해서 가져옴
사용자가 하는 것은 Send()밖에 없음
나머지 과정은 전부 Kafka 내부에서 처리됨
사용자가 작성한 Key-Value가 Serializer를 거쳐 Partitioner로 향한다
Partitioner는 사용자가 send한 Byte Array를 어느 파티션으로 보낼지 판단한다
설정에 따라 Compress에서 압축이 되고, Record Accumulator에서 Batch 혹은 하나하나 Kafka로 보내지게 됨
보내진다면 Kafka는 이에 대한 응답을 줌
Partitioner
- Messaage를 Topic의 어떤 Partition으로 보낼지 결정
- Key를 해싱하고 Partition의 개수로 나눠 어느 파티션으로 보낼지 결정함
- Key가 null이 아니어야 Partitioner가 위 로직으로 작동한다
- Key가 null이라면 2.4버전 이전에는 Partition에 Round Robin 방식으로 전달
- 2.4버전 이후에는 하나의 Batch가 닫힐 때까지 계속 하나의 Partition에 Message를 보내는 Sticky 방식을 사용
- Partitioner의 경우 커스텀이 가능
Producer의 Message
key - value → 보내고싶은 데이터
Kafka는 데이터를 모두 Byte Array로 저장함
메시지를 보내면 그것을 받아 Serializer에서 Byte Array로 변경하여 있는 그대로 저장
Consumers는 Deserializer로 Byte Array를 다시 변경해서 가져옴
사용자가 하는 것은 Send()밖에 없음
나머지 과정은 전부 Kafka 내부에서 처리됨
사용자가 작성한 Key-Value가 Serializer를 거쳐 Partitioner로 향한다
Partitioner는 사용자가 send한 Byte Array를 어느 파티션으로 보낼지 판단한다
설정에 따라 Compress에서 압축이 되고, Record Accumulator에서 Batch 혹은 하나하나 Kafka로 보내지게 됨
보내진다면 Kafka는 이에 대한 응답을 줌
Partitioner
- Messaage를 Topic의 어떤 Partition으로 보낼지 결정
- Key를 해싱하고 Partition의 개수로 나눠 어느 파티션으로 보낼지 결정함
- Key가 null이 아니어야 Partitioner가 위 로직으로 작동한다
- Key가 null이라면 2.4버전 이전에는 Partition에 Round Robin 방식으로 전달
- 2.4버전 이후에는 하나의 Batch가 닫힐 때까지 계속 하나의 Partition에 Message를 보내는 Sticky 방식을 사용
- Partitioner의 경우 커스텀이 가능
출처 - 패스트캠퍼스 Kafka 완전 정복
'IT > 개발' 카테고리의 다른 글
| Mongo DB geoWithinBox와 AWS Document DB (0) | 2023.11.26 |
|---|---|
| 5) Consumer (0) | 2023.09.07 |
| 3) Broker, Zookeeper (0) | 2023.08.28 |
| 2) Topic, Partition, Segment (0) | 2023.08.28 |
| 1) Apache kafka 란? (0) | 2023.08.28 |