์์ ๊ธ์์๋
์ฃผํคํผ(zookeeper)๋ฅผ ์ค์นํ๊ณ ์นดํ์นด ํ ํฝ(kafka topic)์ ์์ฑํ๋ ๊ณผ์ ์ ํ ํ์ ์๋ฐ Kafka API๋ฅผ ์ด์ฉํ์ฌ Kafka Producer์ Kafka Consumer๋ฅผ ๊ตฌํํด๋ณด์์ต๋๋ค.
์ด๋ฒ ๊ธ์์๋ ํ๋ก๋์์ ์ปจ์๋จธ๋ฅผ ์ฌ์ฉํ ๋ ์ค์ ํ๋ ์ต์ ๋ค์ ๋ํด์ ์์๋ด ๋๋ค.
Kafka Producer configs ์ค์
- bootstrap.servers
- ์ฐ๊ฒฐํ ์๋ฒ ์ ๋ณด์
๋๋ค.
host1:port1,host2:port2์ ๊ฐ์ด ์ฌ๋ฌ๊ฐ๋ฅผ ๋์ดํ ์ ์์ต๋๋ค. - ์ด๊ธฐ ์ปค๋ฅ์ ์ฐ๊ฒฐ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ชจ๋ ์๋ฒ ๋ฆฌ์คํธ๋ฅผ ํฌํจํ ํ์๋ ์์ต๋๋ค. ์ค์ ๋ฉ์์ง ์ ์ก์์๋ ์๋ก์ด ์ปค๋ฅ์ ์ ๋งบ์ ๋ค์์ ์ ์กํ๊ธฐ ๋๋ฌธ์ด์ง์.
- ์ฐ๊ฒฐํ ์๋ฒ ์ ๋ณด์
๋๋ค.
- key.serializer, value.serializer
- ๋ฉ์์ง๋ฅผ serialize ํ ๋ ์ฌ์ฉํ ํด๋์ค๋ฅผ ์ง์ ํ๋ฉด ๋ฉ๋๋ค.
ByteArraySerializer,StringSerializer๋ฑ๋ฑSerializer๋ฅผ implementsํ ํด๋์ค๋ค์ด ์์ต๋๋ค.
- partitioner.class
- ์ด๋ค ํํฐ์ ์ ๋ฉ์์ง๋ฅผ ์ ์กํ ์ง ๊ฒฐ์ ํ๋ ํด๋์ค์ ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์
DefaultPartitioner์ด๋ฉฐ ๋ฉ์์ง ํค์ ํด์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์กํ ํํฐ์ ์ ๊ฒฐ์ ํฉ๋๋ค.
- acks
- ํ๋ก๋์๊ฐ ์ ์กํ ๋ฉ์์ง๋ฅผ ์นดํ์นด๊ฐ ์ ๋ฐ์ ๊ฑธ๋ก ์ฒ๋ฆฌํ ๊ธฐ์ค์ ๋งํฉ๋๋ค.
0, 1, all๊ฐ์ผ๋ก ์ธํ ํ ์ ์์ผ๋ฉฐ ๊ฐ๊ฐ ๋ฉ์์ง ์์ค๋ฅ ๊ณผ ์ ์ก ์๋์ ๋ํด ์ฐจ์ด๊ฐ ์์ต๋๋ค.-
์ค์ ๊ฐ ์์ค๋ฅ ์๋ ์ค๋ช acks = 0 ๋์ ๋น ๋ฆ ํ๋ก๋์๋ ์๋ฒ์ ํ์ธ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ
๋ฉ์์ง ์ ์ก์ด ๋๋๋ฉด ์ฑ๊ณต์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.acks = 1 ๋ณดํต ๋ณดํต ์นดํ์นด์ leader๊ฐ ๋ฉ์์ง๋ฅผ ์ ๋ฐ์๋์ง๋ง ํ์ธํฉ๋๋ค. acks = all ๋ฎ์ ๋๋ฆผ ์นดํ์นด์ leader์ follower๊น์ง ๋ชจ๋ ๋ฐ์๋์ง๋ฅผ ํ์ธํฉ๋๋ค. - ๊ธฐ๋ณธ๊ฐ์
acks=1์ต์ ์ ๋๋ค.
- buffer.memory
- ํ๋ก๋์๊ฐ ์๋ฒ๋ก ์ ์ก ๋๊ธฐ์ค์ธ ๋ ์ฝ๋๋ฅผ ๋ฒํผ๋งํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ ๋๋ค.
- ๋ ์ฝ๋๊ฐ ์๋ฒ์ ์ ๋ฌ๋ ์ ์๋ ๊ฒ๋ณด๋ค๋ ๋นจ๋ฆฌ ์ ์ก๋๋ฉด
max.block.ms๋์ ๋ ์ฝ๋๋ฅผ ๋ณด๋ด์ง ์์ต๋๋ค. - ๊ธฐ๋ณธ๊ฐ์ 33554432, ์ฝ
33MB์ ๋๋ค.
- retries
- ํ๋ก๋์๊ฐ ์๋ฌ๊ฐ ๋ฌ์๋ ๋ค์ ์๋ํ ํ์๋ฅผ ๋งํฉ๋๋ค.
- 0๋ณด๋ค ํฐ ์ซ์๋ก ์ค์ ํ๋ฉด ๊ทธ ์ซ์๋งํผ ์ค๋ฅ ๋ฐ์์์ ์ฌ์๋ํฉ๋๋ค.
- max.request.size
- ์์ฒญ์ ์ต๋ ๋ฐ์ดํธ ํฌ๊ธฐ๋ฅผ ๋งํฉ๋๋ค. ๋์ฉ๋ ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ก ์ ํํ ์ ์์ต๋๋ค.
- ์นดํ์นด ์๋ฒ์๋ ๋ณ๋๋ก ์ค์ ํ ์ ์์ผ๋ฏ๋ก ์๋ก ๊ฐ์ด ๋ค๋ฅผ ์ ์์ต๋๋ค.
- connections.max.idle.ms
- ์ง์ ํ ์๊ฐ ์ดํ์๋ idle ์ํ์ ์ฐ๊ฒฐ์ ๋ซ์ต๋๋ค.
- max.block.ms
- ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐผ๊ฑฐ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ ๋ ์ฐจ๋จํ ์๊ฐ์ ์ ํ ์ ์์ต๋๋ค.
- request.timeout.ms
- ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ์ต๋ ์๊ฐ์ ์ ํ ์ ์์ต๋๋ค.
- ์ ํด์ง ์๊ฐ ์ ์ ์๋ต์ ๋ฐ์ง ๋ชปํ๋ฉด ๋ค์ ์์ฒญ์ ๋ณด๋ด๊ฑฐ๋ ์ฌ์๋ ํ์๋ฅผ ๋์ด์๋ฉด ์์ฒญ์ด ์คํจํฉ๋๋ค.
- retry.backoff.ms
- ์คํจํ ์์ฒญ์ ๋ํด ํ๋ก๋์๊ฐ ์ฌ์๋ํ๊ธฐ ์ ์ ๋๊ธฐํ ์๊ฐ์ ๋งํฉ๋๋ค.
- producer.type
- ๋ฉ์์ง๋ฅผ ๋๊ธฐ(sync), ๋น๋๊ธฐ(async)๋ก ๋ณด๋ผ์ง ์ ํํ ์ ์์ต๋๋ค.
- ๋น๋๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฉ์์ง๋ฅผ ์ผ์ ์๊ฐ๋์ ์์ ํ ์ ์กํ๋ฏ๋ก ์ฒ๋ฆฌ ํจ์จ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
Kafka Consumer configs ์ค์
- group.id
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ์๋ณํ๋ ๊ณ ์ ์์ด๋์ ๋๋ค. ๋ฉ์์ง๋ฅผ ์ ์กํ ๋ ์ง์ ํ๋ topic ์ด๋ฆ๊ณผ ๋ค๋ฆ ๋๋ค.
- Zookeeper์์๋ ๊ฐ ๊ทธ๋ฃน์ ๋ฉ์์ง offset์ ๊ด๋ฆฌํ๋๋ฐ ๊ทธ๋ฃน id๊ฐ ๊ฐ์ผ๋ฉด offset๊ฐ ๋ํ ๊ณต์ ๋ฉ๋๋ค.
- bootstrap.servers
- ํ๋ก๋์์ ๋์ผํฉ๋๋ค. ์ฐ๊ฒฐํ ์ ๋ณด๋ฅผ ๋งํฉ๋๋ค.
- fetch.min.bytes
- ํ๋ฒ์ ๊ฐ์ ธ์ฌ ์ ์๋ ์ต์ํ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ๋งํฉ๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์ธ 1์ ๊ฒฝ์ฐ์๋ ์ฆ์ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๋ปํ๋ฉฐ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ ํ ๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ์๊ณ ๋๊ธฐํฉ๋๋ค.
- auto.offset.reset
- ์นดํ์นด์ ์ด๊ธฐ offset์ด ์๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ํ์ฌ ํ์ฌ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ์๋์ ์ค์ ์ ๋ฐ๋ฆ
๋๋ค.
- earliest : ๊ฐ์ฅ ๋น ๋ฅธ ์คํ์ ์ผ๋ก ์๋ ์ฌ์ค์ ํฉ๋๋ค.
- latest : ์ต์ ์คํ์ ์ผ๋ก ์๋ ์ฌ์ค์ ํฉ๋๋ค.
- none : ์ด์ ์คํ์ ์ด ๋ฐ๊ฒฌ๋์ง ์์ผ๋ฉด ์ปจ์๋จธ ๊ทธ๋ฃน์ ์์ธ๋ฅผ ๋์ง๋๋ค.
- anything else : ์ปจ์๋จธ์๊ฒ ์์ธ์ ๋์ง๋๋ค.
- ๊ธฐ๋ณธ๊ฐ์
latest๋ก ์ค์ ๋์ด ์์ต๋๋ค.
- ์นดํ์นด์ ์ด๊ธฐ offset์ด ์๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ํ์ฌ ํ์ฌ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์ ์๋์ ์ค์ ์ ๋ฐ๋ฆ
๋๋ค.
- session.timeout.ms
- ์ปจ์๋จธ์ ์คํจ๋ฅผ ๊ฐ์งํ๋๋ฐ ์ฐ์ด๋ ํ์์์์ ๋๋ค.
- ๋ธ๋ก์ปค์์ ์ธ์ ํ์์์ ์๊ฐ์ธ๋ฐ, ํ์์์์ด ๋ฐ์ํ๋ฉด ์ปจ์๋จธ๋ ์ข ๋ฃ๋๊ฑฐ๋ ์ฅ์ ๋ก ์ธ์๋๊ณ ๋ธ๋ก์ปค๋ ํด๋น ์ปจ์๋จธ๋ฅผ ๊ทธ๋ฃน์์ ์ ์ธํ๊ณ ๋ฆฌ๋ฐธ๋ฐ์ฑ์ ์๋ํฉ๋๋ค.
- ์ฐธ๊ณ ๋ก ์ปจ์๋จธ๋ ๋ธ๋ก์ปค์๊ฒ ์๊ธฐ๊ฐ ์ด์์์์ ๋ํ๋ด๊ธฐ ์ํด ์ ํธ(heartbeat)๋ฅผ ๋ณด๋ ๋๋ค.
- heartbeat.interval.ms
- ์ด์์์์ ์๋ฆฌ๋ ์ ํธ(heartbeat)์ ์์ ์๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ์๋ก์ด ์ปจ์๋จธ๊ฐ ๊ทธ๋ฃน์ ์ํด์ง๊ฑฐ๋ ์ ์ธ๋ ๋ ์ฌ์กฐ์ ์ ์ํด ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
session.timeout.ms๊ฐ๋ณด๋ค ๋ฎ๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
- max.poll.interval.ms
- ์ด์์๋ค๊ณ ์ ํธ๋ฅผ ๋ณด๋ด์ง๋ง ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์๋นํ์ง ์๋ ๊ฒฝ์ฐ, poll์ด ํธ์ถ๋์ง ์์ผ๋ฉด ์ปจ์๋จธ๋ ์คํจ๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
- ์ปจ์๋จธ ๊ทธ๋ฃน์ ๋ค๋ฅธ ๊ตฌ์ฑ์์๊ฒ ํํฐ์ ์ ์ฌํ ๋นํ๊ธฐ ์ํด ์ฌ์กฐ์ ๋ฉ๋๋ค.