카프카 스트림즈! 대용량, 폭발적인 성능의 실시간 데이터 처리!
Вставка
- Опубліковано 29 сер 2024
- 카프카 스트림즈는 카프카와 연동하는 스트림 처리 라이브러리로써 비상태(stateless) 기반, 상태(stateful)기반 처리에 특화되어 있습니다. 이번영상은 카프카 스트림즈의 특징과 코드를 설명합니다.
- 아파치 카프카 서적 구매 : www.yes24.com/P...
- 데브원영 블로그 : blog.voidmainv...
영상 제작 실력이 갈수록 높아지네요 ㅎㅎ
역시 좋은 정보를 주셨네요 다음 영상도 기대 하고 있겠습니다 감사합니다~~
항상 잘 보고있습니다!
언제나 좋은 내용 잘 보고 있습니다 ㅎㅎㅎ
개요를 잘 정리해주셔서 유익하게 잘 보았습니다 ^^ 감사합니다
잘 봤습니다
봐주셔서 감사합니다!
내용 잘 들었습니다. 혹시 방금 말씀하신 내용들도 출간하신 책에 모두 나와있는건가요?
안녕하세요 coookker님, 스트림즈 내용도 책에 모두 포함되어 있습니다~!
안녕하세요 데브원영님! 영상 통해서 많은 정보를 얻고 있는 대학 새내기입니다!! 영상의 내용과 맞는지 모르겠지만 궁금해서 질문을 남깁니다! 메타버스산업에서의 데이터엔지니어 수요에 대해서 어떠한 생각을 가지고 계시는지 궁금합니다!
안녕하세요 배준현님, 메타버스를 포함해서 모든 산업이 데이터기반으로 처리되고 활용되고 있습니다. 그러므로 앞으로는 데이터 엔지니어의 수요가 점점더 많아질거라 생각됩니다.
크리스마스 기념 30% 할인해서 구매했어요!
할인만 기다렸다 ㅠㅠ
감사합니다! 아무쪼록 도움이 되셨으면 좋겠습니다.
데브원영님 덕분에 카프카에 큰 흥미를 느끼고 공부하고 있습니다! 스트림즈 관련 서적이나 강의 추천해주실 수 있으신가요??
제가 출간한 아파치 카프카 책에도 스트림즈 관련 내용이 포함되어 있으니 살펴보셔도 좋습니다! www.yes24.com/Product/Goods/99122569
최근 데브원영님 카프카 강의를 들으며 공부하고 있는데요, 카프카 스트림즈 관련 궁금한 내용이 있어서 댓글 남깁니다.
- 카프카 스트림즈는 카프카 프로듀서로 이미 생성된 데이터를 기반으로 사용하는 목적인건가요?
- 카프카 프로듀서는 기존에 사용하던대로 사용하면 되는걸까요?
@김인호님, 답변드립니다.
- 카프카 스트림즈는 카프카 프로듀서로 이미 생성된 데이터를 기반으로 사용하는 목적인건가요? > 네 맞습니다. 토픽에 있는 데이터를 소스로 데이터를 활용하는데 목적이 있습니다.
- 카프카 프로듀서는 기존에 사용하던대로 사용하면 되는걸까요? > 프로듀서는 기존에 사용하던 것을 그대로 사용하셔도 좋습니다.
안녕하세요 데브원영님 ~! 블로그에 Kafka Streams 관련 질문 드렸던 김태선 입니다.
답변이 학습에 큰 가이드가 되었습니다, 정말 감사드립니다.
이번에는 Streams앱에서 KTable을 활용해서 데이터를 가져오는 샘플을 만들어보다가 궁금한점이 있어서 여기에 추가질문 남깁니다.
Q1. "GlobalKTable로 사용할 수 없을만큼 데이터가 많고, 변경빈도가 잦다" 의 크기와 빈도의 기준이 어느정도로 생각하시는지 궁금합니다. 천만건? 1억건? / 매시간 변경? 매일 변경?
Q2. KTable로 사용할 Topic은 key기준으로 영구보존 되어야 하는데 topic 보존기간 config설정을 해주지 않아도 되나요?(원영님 책에서는 따로 설정 안하시더라구요.)
아니면 changelog topic을 기반으로 하기때문에 보존기간이 지나도 사라지지 않는지? 궁금합니다.
[ Sample Stream App Project ]
KTable(key,value)기준으로 GorupUserKTable(groupId, userId[ ]) , UserInfoKTable(userId, userInfo{ } ) 이렇게 2개의 Topic을 KTable로 KStream과 join하여 동작하는 Stream App
(KStream 1개, KTable 2개 = 총 3개의 소스 프로세서)
GorupUserKTable을 사용해서 groupId를 기준으로 KStream에 join해서 userId[ ] 를 받아오고,
UserInfoKTable을 사용해서 userId를 기준으로 userInfo를 받아오도록 만들고 싶습니다.
(결국 groupId 기준으로 userInfo[ ] 받아오는게 목적입니다만, 2개의 KTable topic이 개별적으로 수정이 일어날 수 있어 분리하였습니다.)
Q3. 위 Sample 프로젝트처럼, 2개의 KTable를 1:1과 1:N으로 활용해서 하나의 KStream과 함께 토폴로지를 작성하는게 구현 가능한 구조인지 궁금합니다.
Q4. 위 Sample 프로젝트에서, 일부 group의 userId[ ] 배열의 크기가 엄청나게 큰경우(예를들면 1억건) Serdes.ListSerde()로 직렬화, 역직렬화하면 변경을 자주 수행하는데 성능 이슈가 없는지?
위 Sample구조가 잘못됬다면 어떤방향으로 고쳐야 하는지 알려주시면 감사하겠습니다. (아니면 KTable대신 그냥 MongoDB같은 가벼운 DB를 쓰는게 좋은것인지... 고민입니다.)
긴글 읽어주셔서 감사드리고, 다시한번 우리나라에 데이터 처리 개발역량을 캐리 해주고 계신 데브원영님 진심으로 감사말씀 드립니다.
q1: 상황에 따라 서비스의 크기에 따라 다를 것 같습니다. 해당 객체를 구현하시는 애플리케이션이 돌아가는 머신의 성능과 데이터 양에 따라 결정해주시면 좋을 것 같습니다.
q2: cleanup.policy를 compact로 해주시면 가장 최근의 메시지 키를 가진 레코드는 삭제하지 않습니다. compact로 설정한 이후 관련 상세 옵션을 상황에 맞게 설정하는 것이 좋을 것 같습니다.
q3: 우선, 스트림즈의 조인은 메시지 키를 기준으로 조인을 하므로 조인을 수행할 서로 다른 두개의 스트림(또는 테이블)의 메시지 키를 맞춰주는 것이 중요합니다. 프로젝트에 대해 정확히 이해하지는 못했으나, window개념까지 포함하여 설계가 필요할 것 같습니다.
q4: 일반적으로 브로커 옵션에 의해 레코드의 최대 크기가 1MB로 설정되어 있으므로, 1억건의 배열이 메시지 값으로 들어가는 것은 불가능할 뿐만 아니라 비효율적일 것같습니다.
파이썬은 불가인가요
파이썬은 공식적으로 스트림즈 라이브러리를 지원하지 않습니다.