- 1.1. Kafka
- 1.2. Brocker & Cluster
- 1.3. Topic
- 1.4. Producer
- 1.5. Consumer
- 1.6. Kafka Streams
- 1.7. Kafka Connect
๐ kafka documentation
1.1. Kafka
a distributed, partitioned, and replicated commit log service
์์ค ์ ํ๋ฆฌ์ผ์ด์ (mysql, oracle, nosql,โฆ/app/was/โฆ)๊ณผ ํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ (hadoop, search engine, monitoring, emailโฆ)๊ฐ์๊ฐ ๋ง์์ง๊ณ ,ํ๋กํ ์ฝ ํฌ๋งท ํํธํ๊ฐ ์ฌํด์ ธ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์์ง
์ด๋ฌํ ๋ณต์กํจ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ค๊ฐ์์ ์์ค ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํ๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ์ ๋์จํ๊ฒ ํจ (scale out)
ํ๋ก๋์๊ฐ ํ์ ์ ์ฌํ๊ณ ์ปจ์๋จธ๊ฐ ๊ฐ์ ธ๊ฐ๋ ๊ตฌ์กฐ
- Kafka Client: kafka์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉํ๋ (producer, consumer, admin, stream ๋ฑ) API
1.2. Brocker & Cluster
- brocker: Kafka application ์๋ฒ ๋จ์
-
cluster: 3๋ ์ด์์ brocker๋ก ๊ตฌ์ฑ
- zookeeper: metadata ์ ์ฅํ์ฌ brockers ๊ด๋ฆฌ
- controller: n๋ brocker ์ค ๋ง์คํฐ brocker (allocate partition, health check)
1.3. Topic
๋ฉ์์ง(๋ฐ์ดํฐ) ๋ถ๋ฅ ๋จ์ n๊ฐ์ ํํฐ์ ํ ๋น ๊ฐ๋ฅ ๊ฐ ํํฐ์ ๋ง๋ค ๊ณ ์ offset ๊ฐ์ง ๋ฉ์์ง ์ฒ๋ฆฌ์์๋ ํํฐ์ ๋ณ๋ก ๊ด๋ฆฌ
- partition: ๋ ์ฝ๋๋ฅผ ๋ด๊ณ ์๊ณ replication ๊ฐ๋ฅ
- ISR(In-Sync Replica): replication(leader+follower)์ sync๋ก ๋ ๋ฌถ์
- segment: ์ค์ ๋ก ๋ฉ์์ง๊ฐ ์ ์ฅ๋๋ ํ์ผ ์์คํ ๋จ์
1.4. Producer
๋ฉ์์ง(๋ ์ฝ๋)๋ฅผ brocker๋ก ์ก์ API
Role
Topic์ ํด๋นํ๋ ๋ฉ์์ง๋ฅผ ํด๋น ํํฐ์ ์ offset๊ณผ ํจ๊ป ๊ธฐ๋ก
- Publishing: ํน์ topic์ผ๋ก ๋ฐ์ดํฐ ์ก์
- ์ฒ๋ฆฌ ์คํจ ์ ์ฌ์๋
- key ์ฌ์ฉ์, ํด๋น partition์ผ๋ก ๋ฐ์ดํฐ ๋งคํ
1.5. Consumer
๋ฉ์์ง(๋ ์ฝ๋) brocker์์ ์์ API ๋ค์์ consumer๋ฅผ groupํ ํ ์ ์์
Role
- Polling: Topic์ partition์ผ๋ก ๋ถํฐ ๋ฉ์์ง(๋ ์ฝ๋)๋ฅผ ๊ฐ์ ธ๊ฐ
- Commit: Partition offset ์์น๋ฅผ ๊ธฐ๋ก
- Parallel Processing: Consumer ์ฌ๋ฌ๊ฐ์ผ ๊ฒฝ์ฐ, Consumer group์ ํตํด ๋ณ๋ ฌ ์ฒ๋ฆฌ
Offset number:
ํํฐ์ ๋ด ๊ฐ๊ฒ๋๋ ๊ณ ์ ํค ํ ํฝ ๋ณ, ํํฐ์ ๋ณ๋ก ๊ณ ์ ํ๊ฒ ์ง์ ๋จ ์ปจ์๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ด๋๊น์ง ์ฝ์๋์ง ํ์ธํ๋ ์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๊ณณ๊น์ง commit
์ปจ์๋จธ ์ด์๊ฐ ๋ฐ์ํด๋ __consumer_offset ํ ํฝ์ ์ ์ฅ๋ ์ง์ ํ์ธ(High availablility)
๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ consumer ๊ฐ์๋ partition ๊ฐ์๋ณด๋ค ์ ๊ฑฐ๋ ๊ฐ์์ผ ํจ
1.6. Kafka Streams
๋ฐ์ดํฐ ๋ณํ(transformation) API
- stateful, stateless์ ๊ฐ์ ์ํ ๊ธฐ๋ฐ stream ์ฒ๋ฆฌ ๊ฐ๋ฅ
- stream api์ DSL(Domain Specific Language) ๋์ ์ง์
- Exactly-once ์ฒ๋ฆฌ, HA ํน์ง
- Kafka security(acl, sasl ๋ฑ) ์ง์
- stream ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ณ๋ cluster(yarn ๋ฑ) ๋ถํ์
ESP (Event Stream Platform)
๋ํ์ ์ผ๋ก Kafka, Kinesis, Flink, Spark, Storm, Logstashโฆ
Kafka Streams API
- Source processor
- Sink processor
1.7. Kafka Connect
Kafka client๊ฐ ์๋ connect๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ import/export ๊ฐ๋ฅ code ์์ด configuration์ผ๋ก ๋ฐ์ดํฐ migration ์ ์ฌ์ฉ