https://velog.io/@minsuk/ELK-%EC%8A%A4%ED%83%9D-%EA%B5%AC%EC%B6%95
해당 글의
이벤트 스트리밍 플랫폼, pub/sub구조.
Producer가 topic에 데이터 전송, Broker가 데이터 저장, Consumer가 데이터 가져간다
Topic은 여러개의 partition으로 나눠지고, partition 내 한 칸은 로그다. partition 내 로그 위치는 offset이다. partition을 늘리면 그만큼 분산처리가 되다보니 throughput이 높아진다. 하지만 파티션을 늘리면 Round-robin 방식으로 쓰여짐에 따라 순차적으로 메세지가 쓰여지지 않는 단점이 있다.
Topic이 각 Consumer group이 파티션 별 offset 위치를 기억하기 때문에 fail-over 상황에 대비할 수 있다.
Consumer Group은 하나의 topic을 담당하는데 Group내 Consumer 하나 가 down 되면 다른 Consumer 가 해당 partition을 담당하면서 Rebalance 할 수 있다.
Broker(Kafka)를 여러 개 둠으로써 클러스터를 구성할 수 있고 이에 따른 Replication르 두어 수평적인 scale-out과 높은 HA를 유지할 수 있다. Zookeeper는
단점 : 결합력이 높아지면서 트래픽이 증가하더라도 scale-out 한계
하둡과의 차이는
1. hdfs에서 데이터를 불러와서 메모리에 놓고, 인메모리 프로세싱 통해 빠르게 수행
하둡은 반복작업 수행할 때마다 디스크에 접근하기 때문에 실시간 데이터 니즈가 증가함에 따라 실시간 작업 불가능. 보통 그래서 하둡은 배치성 통계작업에 사용
2. stream processing