Kafka API
๐ฟ Kafka API
Kafka API
- Kafka Producer API: directly producing data
- Kafka Connect Source API: bridging between a datastores we donโt control and kafka
- KafkaStreams API/KSQL: App wanting to consume from Kafka and produce back into Kafka, also called stream processing
- Use KSQL can write your real time job as SQL-like
- Kafka Consumer API: Read a stream and perfrom real-time action on it
- Kafka Connect Sink API: Read a stream and store it into a target store
- Kafa to S3, Kafka to HDFS, KafKa to (R)DBMS
๋ถ๋ฅ
์์ ๊ฒ๋ค์ ํฌ๊ฒ ๋๋์๋ฉด 3๊ฐ์ง ์ด๋ค.
- Conntector ๊ณ์ด: ๋ถ์ฐ ์ปค๋ฅํธ๋ฅผ ๊ตฌ์ถํด์ผํจ
- Source & Sink API
- connect-api ์ฌ์ฉ
- Producer / Consumer ๊ณ์ด: ์ธํ๋ผ(๋ถ์ฐ ์ปค๋ฅํธ) ๊ตฌ์ถ X
- Producer & Consumer API
- kafka-client ์ฌ์ฉ
- spring kafka(์ด๋๋ฏผ, ์ปจ์๋จธ, ํ๋ก๋์, ์คํธ๋ฆผ์ฆ ์ ๊ณต)
- Stream ๊ณ์ด
- Kfka Streams
๐ฟ Kafka Connector
ํน์ ํ ์์ ํํ๋ฅผ ํ ํ๋ฆฟ์ผ๋ก ๋ง๋ค์ด ๋์ ์ปค๋ฅํฐ๋ฅผ ์คํํจ์ผ๋ก์ ๋ฐ๋ณต ์์ ์ ์ค์ผ ์ ์๋ค.
๋ถ๋ฅ
- ์์ค ์ปค๋ฅํฐ: ๋ฐ์ดํฐ๋ฅผ ํ ํฝ์ผ๋ก ์ ์ก(ํ๋ก๋์ ์ญํ )
- ์ฑํฌ ์ปค๋ฅํฐ: ํ ํฝ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ ์ฅ์์ ์ ์ฅ(์ปจ์๋จธ ์ญํ )
๊ตฌ์ฑ
- ์ฌ์ฉ์๊ฐ ์ปค๋ฅํธ์ ์ปค๋ฅํฐ ์์ฑ ๋ช
๋ น์ ๋ด๋ฆฌ๋ฉด ์ปค๋ฅํธ๋ ๋ด๋ถ์ ์ปค๋ฅํฐ์ ํ์คํฌ๋ฅผ ์์ฑ
- ๋ณดํต Task๋ ์ค์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ Customํ์ฌ ์ฌ์ฉ
- ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ดํ๋ผ์ธ์ ์์ฑํ ๋ converter ์ Trasform ๊ธฐ๋ฅ์ ์ต์
์ผ๋ก ์ถ๊ฐํ ์ ์๋ค.
- ์ปจ๋ฒํฐ: ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋๋ก ๋์์ค๋ค.
- JsonConverter, StringConverter, ByteConverter๋ฅผ ์ง์
- ์๋๋ฉด ์ง์ CustomConver๋ฅผ ์์ฑ ๊ฐ๋ฅ
- Tramsform: ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ๊ฐ ๋ฉ์์ง ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋จํ๊ฒ ๋ณํํ๊ธฐ ์ํ ์ฉ๋
- Json ๋ฐ์ดํฐ๋ฅผ ์ปค๋ฅํฐ์์ ์ฌ์ฉํ ๋ ํน์ ํค๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐ ๊ฐ๋ฅ
- Cast, Drop, ExtractField ๋ฑ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต
- ์ปจ๋ฒํฐ: ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ์คํค๋ง๋ฅผ ๋ณ๊ฒฝํ๋๋ก ๋์์ค๋ค.
๐ฟ Kafka Connector ์คํ
๋จ์ผ ๋ชจ๋
ํ๋์ ํ๋ก์ธ์ค์ 1ํ๋์ ์ปค๋ฅํธ๊ฐ ์คํ๋์ด ๊ทธ๋ฃน์ ๊ฐ๋ ์์ด ํผ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ
๋ถ์ฐ ๋ชจ๋
2๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ 1๊ฐ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ฌ์ ์ด์
- 1๊ฐ์ ์ปค๋ฅํธ ํ๋ก์ธ์ค์ ์ด์๊ฐ ๋ฐ์ํ์ฌ ์ข ๋ฃ๋๋๋ผ๋ ์ด์์๋ ๋๋จธ์ง 1๊ฐ ์ปค๋ฅํธ ํ๋ก์ธ์ค๊ฐ ์ปค๋ฅํฐ๋ฅผ ์ด์ด๋ฐ์์ ํ์ดํ๋ผ์ธ์ ์ง์์ ์ผ๋ก ์คํ
__
๐ฟ ์ฅ์ ๊ณผ ๋จ์
Kafka Producer(Consumer) API
- ์ฅ์
- Extremely simple to use
- multithread๋ก ๊ตฌ์ฑ ๊ฐ๋ฅ
- ๋ถ์ฐ ์ปค๋ฅํธ ๊ตฌ์ถ ํ์ ์์
- perfectly suited for applications directly emitting stream of data such as logs, clickstreams, IOT
- ๋จ์
- Producer API can be extended and built upon to do a lot more thing
- this will requre engineers to write a lot of added logic
- How to track the source offset(how to resume if stopped)
- How to distribute the load for your ETL(converter, transformer) across many producers
Connect Source(Sink) Connect API
- ์ฅ์
- built so that developers would get a nicer API made for
- producer tasks distribution for parallel processing
- easy mechanism to resume your producers
- ํ์คํฌ ๋ง๋ค ๋ค๋ฅด config ๊ฐ๋ฅ
- bustiling variety of available connectors
- built so that developers would get a nicer API made for
- ๋จ์
- ๋ถ์ฐ ์ปค๋ฅํธ๋ฅผ ์ง์ ๊ตฌ์ฑํด์ผ ํจ
- ๋จ์ ์ ์ ๋ชจ๋ฅด๊ฒ ์