SlideShare ist ein Scribd-Unternehmen logo
1 von 46
분산 메시징 처리 카프카 맛보기
Tech Session
2018.07.30
클라우드팀 윤찬열
Contents
01. Kafka Overview
02. Kafka Topic Partitioning
03. Kafka Topic Replication
04. Producer ACKS
05. Kafka Consumer Group
06. Kafka Management
07. Demo
Internal Use Only
Linkedin의 고민
01. Kafka Overview
Frontend
Server
Frontend
Server
Metric
Server
Frontend
Server
Frontend
Server
Application Metrics Application Metrics Application Metrics Application Metrics
Internal Use Only
Linkedin의 고민
장애
01. Kafka Overview
Frontend
Server
Frontend
Server
Metric
UI
Frontend
Server
Frontend
Server
Database
Server
Database
Server
Chat
Server
Chat
Server
Chopping
Cart
Active
Monitoring
Data
Monitor
Metric
Analysis
Internal Use Only
A Centralized Data Pipeline
01. Kafka Overview
Frontend
Server
Frontend
Server
Metric
UI
Frontend
Server
Frontend
Server
Database
Server
Database
Server
Chat
Server
Chat
Server
Chopping
Cart
Active
Monitoring
Data
Monitor
Metric
Analysis
Message System
Internal Use Only
01. Kafka Overview
출처: https://en.wikipedia.org/wiki/Franz_Kafka
Franz Kafka
Internal Use Only
Kafka ?
 분산 비동기 메시징 시스템
 Linkedin에서 개발 되어 2011년 오픈소스로 공개
 발행(Producer), 소비(Consumer) ,중개(Broker) 구조로 구성
 Tcp기반으로 오버헤드 감소시켜서 동작
 다른 메시징 시스템과 다르게 일정기간 저장
-> 장애 발생시 다시 메시지 처리(Rewind) 가능
 파일 시스템에 메시지 저장 -> 영속성(Durability) 보장
01. Kafka Overview
Internal Use Only
비동기 메시지 시스템
 메일을 보내면 메일 서버에 저장 메일을 받는 사람은 자신이 필요할 때 수신 하는 비동기 구조
 메일시스템과 동일 하게 Producer가 메시지를 보내면 Kafka Cluster에 저장 , Consumer가 필요할 때
메시지를 가져오는 구조
01. Kafka Overview
출처: https://en.wikipedia.org/wiki/Franz_Kafka
Kafaka Cluster ConsumerProducer
메일 수신메일 전송 메일 서버
Internal Use Only
Why Kafka?
 Producers 와 Consumers 역할 분리
.하나의 topic에 대하여 여러 Producers 가 message를 전송하고 여러 Consumers 가 message를 소비하는
구조로 중앙 집중 형 구조로 구성
 Scalable
. Kafka cluster를 통하여 확장이 어느정도 용이 하게 설계
 High Performance
. 분산처리 - 동일한 기능을 하는 여러 대의 서버로 이뤄진 분산 시스템으로 구성되어, 단일 시스템보다
더 높은 성능을 얻으며, SPOF 극복
. 배치 처리 - 작은 i/o 에 대하여 묶어서 처리 하여 속도 향상에 도움
. 페이지 캐시 - 파일시스템에 쓰기 전에 페이지캐시를 통하여 높은 속도 보장(실제로 하드웨어 권고
사항에 sata disk를 사용해도 무방하다고 함)
 이기종과의 호환성
 배치 단위 전송 및 압축 전송 가능
01. Kafka Overview
Internal Use Only
Disk-Based Retention(Persistent)
 다른 Message-system 과 다르게 파일시스템을 Message 주 저장소로 사용
 Memory에 별도의 Cache 없이 OS의 Page Cache 사용
 Page Cache 로 read() 함수 호출 없이
직접 mapping된 주 메모리 참조
01. Kafka Overview
출처: http://www.yunweipai.com/archives/11749.html
Page Cache
File System
Buffer Cache Disk
User Process
Kernel
User Process
pdflush
INode & metadata
Internal Use Only
Disk-Based Retention
 Cousumer가 파일시스템에 데이터 전송 시 zero-copy 사용
 zero-copy(무복사) : 디스크에서 파일을 읽어 소켓에 담은 뒤 응답 하지 않고 ,
커널 영역에서 파일 데이터를 읽고 바로 소켓에 데이터를 담아 전달
01. Kafka Overview
출처: https://www.ibm.com/developerworks/linux/library/j-zerocopy/
출처: https://www.slideshare.net/springloops/apache-kafka-intro20150313springloops-46067669
Internal Use Only
Kafka 구조
 Producer : 메시지를 Broker로 전송
 Broker : Producer가 보낸 메시지를 저장
 Consumer : Broker에 있는 메시지를 소비
01. Kafka Overview
Kafaka Broker
ConsumerProducer
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Producer
Producer
Consumer
Consumer
Consumer
Consumer
Internal Use Only
Kafka Broker 구조
 Producer가 보낸 메시지를 구분 하기 위하여 Broker에는 Topic으로 구분 하여 메시지 저장
01. Kafka Overview
Producer msg0
Broker
msg1msg2 Topic
Topic
Topic
Internal Use Only
Kafka Topic Partition
 Producer 가 Message 를 전송 할 때 1개의 Topic으로 Partitioning이 안되어 있을 경우 1개의 Message를 낼
때 1초가 걸린다면 3개의 Message를 보낼 때 3초가 소요
02. Kafka Topic Partitioning
Producer
msg0
msg1
msg2
Topic
Partition 1
Partition 2
Partition 3
Producer msg0 Topicmsg1msg2
 Partitioning 된다면 동일한 작업에 대하여 Partition 갯수에 비례 하여 처리 속도가 향상
Internal Use Only
Kafka Partition
 Partition 은 Offset 0부터 순차적으로 쓰이고, offset0부터 순차적으로 읽혀진다.
02. Kafka Topic Partitioning
Producer
msg0
msg1
msg2
Topic
Partition 1
Partition 2
Partition 3
0 1 2 3
0 1 2
0 1 2
Kafka Partition Disadvantages
 무조건 증가 했다고 전체 처리 성능이 증가 하는 것은 아니며, 그만큼 consumer가 추가 되어야 한다 .
 추가만 가능 하며, 줄일 수는 없다. (초기에 낮게 시작하여 높이는 것을 추천)
 장애 복구 시간 증가 (controller broker 장애시)
Internal Use Only
Kafka Replication
 고가용성을 위하여 topic에 대한 replication(복제) 기능을 제공
 Kafka cluster 는 Replication을 할 경우 broker들 간에
Leader를 우선 선출
 이때 선출된 leader는 모든 Read/Write 가 발생
03. Kafka Topic Replication
Kafka cluster
Topic replication
Producer
Broker 1
Broker 2
Broker 3
message
Leader
Follower
Internal Use Only
Kafka Replication
 Leader는 follower라는 replication 대상으로 message Replication
 Leader가 장애 발생된다면 다른 follower가 Leader로 승격
 Leader에 대한 선출 및 승격은 Zookeeper가 결정
03. Kafka Topic Replication
Kafka cluster
Topic replication
Producer
Broker 1
Broker 2
Broker 3
message
Leader
Follower
replication
Internal Use Only
Kafka Zookeeper
 Zookeeper: Hadoop의 서브 프로젝트, Hadoop의 분산 어플리케이션을 관리 하는 코디네이션
어플리케이션으로 사용
 추가적인 개발 리소스를 줄이고자 Zookeeper를 코디네이션 Kafka의 분산 어플리케이션의 코디네이션
어플리케이션으로 사용
03. Kafka Topic Replication
Producer broker consumer
zookeeper
Broker and
topic metadata
consumer metadata
partition offsets
Internal Use Only
Kafka Zookeeper
 앙상블이라는 이름의 클러스터를 구성 하며, 일반적으로 3대 이상의 홀수 단위로 서버를 구성
(서버들간의 데이터 불일치가 발생할 경우 과반수의 룰을 적용 하기 때문에 데이터정합성 측면에서
유리)
 앙상블을 구성하게 되면 각 ZooKeeper 서버들은 Leader와 follower을 선출 하며 실제 데이터는
Client가 Follower를 통하여 받고, Leader로 전달 그리고 leader가 모든 follower에 전달 하여 모두
동일한 데이터를 갖을 수 있도록 유지
03. Kafka Topic Replication
Internal Use Only
Kafka Zookeeper
 각 상태정보는 znode 에 key-value 형식으로 저장 하며 아래 그림과 같이 계층적 구조로 정보를 저장
 저장되는 데이터를 메모리에 저장 하여 빠른 처리 속도를 나타냄
03. Kafka Topic Replication
Internal Use Only
Kafka Broker Controller
 임의의 1개의 Broker 가 Controller의 역할을 담당하여 Leader 선출을 담당
 Controller 장애 발생 시 다른 Broker가 Controller의 역할을 위임
03. Kafka Topic Replication
Internal Use Only
Kafka ISR
 Leader와 Follower선출과 데이터의 무결성 처리 위하여 ISR(In Sync Replica) 사용
 ISR은 “Replication Group”이라고 할 수 있는데, replication factor 3 으로 설정 되어 있을 경우 특정
1개의 Broker가 Leader, 나머지 Broker가 Follower 선출
 여기서 Message가 Leader로 전송이 지속적으로 되는 상태에서 , Follower는 지속 적으로 변경사항을
요청한다. 그리고 Leader 가 변경 사항을 전달하는 Pull방식으로 replication
03. Kafka Topic Replication
Internal Use Only
Kafka ISR
03. Kafka Topic Replication
Kafka cluster
ISR
Producer
Broker 1
Broker 2
Broker 3
message
Leader
Follower
Follower
(1) Producer message send
(2) Leader에게 변경사항 요청
(2) Leader에게 변경사항 요청 (3) 변경사항 전달
(3) 변경사항 전달
Internal Use Only
Kafka ISR
 follower에서 Leader로 일정 기간 동안 변경사항을 요청 하지
않을 경우 , 해당 follower에 대하여 Leader는 ISR로 유지 하지 않는다.
03. Kafka Topic Replication
Kafka cluster
ISR
Producer
Broker 1
Broker 2
Broker 3
message
Leader
Follower
Follower
Leader변경사항 요청 실패
Internal Use Only
Kafka ISR
 ISR에서 해당 broker에서 방출
03. Kafka Topic Replication
Kafka cluster
ISR
ISR
Producer
Broker 1
Broker 2
Broker 3
message
Leader
Follower
Follower
Broker 3 ISR에서 방출
Internal Use Only
Kafka Producer ACKS
 Producer가 Broker의 Topic 으로 Message를 보낼 때 응답 받아 처리 하여 Mesaage손실을 방지
04. Kafka Producer ACKS
참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/
Broker(Leader)
TopicProducer
 acks=0 일 경우 , Producer가 Message를 Leader에게 전송 후 acks을 안 기다림
Broker(Follower)
Topic
acks=0
 가장 빠르지만 Message손실 가능성이 가장 높음
Internal Use Only
Kafka Producer ACKS
 acks=1 일 경우 , Producer가 Message를 Leader에게 전송 후 Leader 가 acks을 보낸 후 Follower에게
Replication 진행 (가장 많이 사용 되며, 기본값)
 Producer는 Leader가 잘 보냈는지 확인 할 때까지 기다림
 0 설정 보다 Message 손실가능성이 낮지만 acks을 보내고 Replication도중 장애 발생 시
Message손실 가능성 있음
04. Kafka Producer ACKS
참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/
Broker(Leader)
TopicProducer
Broker(Follower)
Topic
acks=1
1
3
2
Internal Use Only
Kafka Producer ACKS
 acks=all(-1) 일 경우 , Producer가 Message를 Leader에게 전송 후 Leader 가 모든 Follower에게
Replication이후 acks을 보냄
 Producer는 Leader가 잘 보냈는지 확인 할 때까지 기다림
 가장 느리지만, Message 손실 가능성이 가장 낮음
04. Kafka Producer ACKS
참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/
Broker(Leader)
TopicProducer
Broker(Follower)
Topic
acks=all(-1)
1
2
3
Internal Use Only
Kafka Consumer Group
 Producer 는 여러 개의 Partitioning 되어 있는 Topic으로 Message를 전송 하기 때문에 다른 Message
system 보다 Message를 빠르게 처리
 하지만 분할 되어 있는 Topic을 가져 올 때는 1개의 Consumer가 처리 한다면 Pull하는 속도가 느림
05. Kafka Consumer Group
Topic
Partition 00
Partition 01
Partition 02
Consumer Group
Consumer 01
Internal Use Only
Kafka Consumer Group
 Kafka에서는 Cosumer Group 을 통하여 각각 Partition에 대하여 Consumer를 지정 하여 그룹화 함으로
빠른 속도를 보장 함과 함께 데이터 손실을 방지
 아래 그림 처럼 3개의 Partion에 대하여 Cosumer Group 에 2개의 consumer가 동작 하여 분산하여
데이터를 수신
04. Kafka Consumer Group
Topic
Partition 00
Partition 01
Partition 02
Consumer Group
Consumer 01
Consumer 02
Internal Use Only
Kafka Consumer Group
 Consumer Group은 1개의 Partition에 대하여 1개의 Consumer만 지정 해서 보낼 수 있다.
05. Kafka Consumer Group
Topic
Partition 00
Partition 01
Partition 02
Consumer Group
Consumer 01
Consumer 02
Consumer 03
Internal Use Only
Kafka Consumer Group
 만약 3개의 Partition에 대하여 4개의 Consumer 가 있다면 1개의 Consumer는 대기 하게 되어 낭비
05. Kafka Consumer Group
Topic
Partition 00
Partition 01
Partition 02
Consumer Group
Consumer 01
Consumer 02
Consumer 03
Consumer 04
Internal Use Only
Kafka Consumer Group
 한개의 topic에 대하여 한 Consumer Group 에서 처리 하던 것을 ,동일한 정보를 다른 쪽에서 사용
하기 위해서 다른 Consumer Group을 추가 하여 동일한 데이터에 대하여 1개의 Message System에서
가져 와서 활용 하는 것도 Kafka의 장점
05. Kafka Consumer Group
Topic
Partition 00
Partition 01
Partition 02
Consumer Group1
Consumer 01
Consumer 02
Consumer 03
Consumer Group2
Consumer 01
Consumer 02
Internal Use Only
Kafka Manager
 Partition ,Topic 설정 변경,추가,삭제 등 여러가지 작업을 웹 환경에서 제공
 JMX 모니터링 제공
06. Kafka Management
Internal Use Only
Kafka Monitoring
 안정적인 운영을 위하여 JMX을 이용 하여 모니터링
 Promethus JMX Exporter으로 수집한 데이터를 Prometheus Server 에서 저장하며,
Grafana 를 이용하여 모니터링
06. Kafka Management
Kafaka
JMX exporter
Kafaka
JMX exporter
Kafaka
JMX exporter
Prometheus
server
Grafana server
Internal Use Only
Kafka Monitoring
 안정적인 운영을 위하여 JMX을 이용 하여 모니터링
 Promethus JMX Exporter으로 수집한 데이터를 Prometheus Server 에서 저장하며,
Grafana 를 이용하여 모니터링
06. Kafka Management
Prometheus Server Grafana
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
AWS(외부)에 있는 서버의 log를 Filebeat로 전송
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
Logstash를 이용하여 kafka broker로 전달
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
ZK-Web으로 zookeeper 상태 확인
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
Kafka Manager를 이용하여topic 생성 및 설정
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
Logstash를 kafka topic 에 저장된 메시지
가져온 뒤 파싱 및 elasticsearch 로 저장
Internal Use Only
AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석!
07. DEMO
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
Kafaka Broker
Zookeeper
kafka-es-data01
Master/Data Node
kafka-es
Coordinator Node transport 9300
kafka-es-data02
Master/Data Node
kafka-es-data03
Master/Data Node
Logstash
Consumer Node
Rest
Kibana
Dashboard
Filebeat
Logstash
Producer Node
Prometheus
Grafana
server
Prometheus
Prometheus
Kibana를 이용하여 로그 정보 가시화
Internal Use Only
참고 문서 & 링크
 Kafka: The Definitive Guide (Publisher: O'Reilly Media, Inc.)
 카프카, 데이터 플랫폼의 최강자(Publisher: 고승범 , 공용준)
 http://kafka.apache.org/documentation/
 http://epicdevs.com/
Thank you.

Weitere ähnliche Inhalte

Was ist angesagt?

Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2Chandresh Pancholi
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)Hyunmin Lee
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020Ji-Woong Choi
 
Continuous Go Profiling & Observability
Continuous Go Profiling & ObservabilityContinuous Go Profiling & Observability
Continuous Go Profiling & ObservabilityScyllaDB
 
Kubernates vs Openshift: What is the difference and comparison between Opensh...
Kubernates vs Openshift: What is the difference and comparison between Opensh...Kubernates vs Openshift: What is the difference and comparison between Opensh...
Kubernates vs Openshift: What is the difference and comparison between Opensh...jeetendra mandal
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...AWSKRUG - AWS한국사용자모임
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaEdureka!
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...SlideTeam
 
Rancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep DiveRancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep DiveLINE Corporation
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for MicroservicesVõ Duy Tuấn
 
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과Opennaru, inc.
 
VMware Advance Troubleshooting Workshop - Day 3
VMware Advance Troubleshooting Workshop - Day 3VMware Advance Troubleshooting Workshop - Day 3
VMware Advance Troubleshooting Workshop - Day 3Vepsun Technologies
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축철구 김
 
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...HostedbyConfluent
 
Hello, kafka! (an introduction to apache kafka)
Hello, kafka! (an introduction to apache kafka)Hello, kafka! (an introduction to apache kafka)
Hello, kafka! (an introduction to apache kafka)Timothy Spann
 
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...TomBarron
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service MeshJeong-Ho Na
 

Was ist angesagt? (20)

Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2Distributed tracing using open tracing & jaeger 2
Distributed tracing using open tracing & jaeger 2
 
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
카프카(kafka) 성능 테스트 환경 구축 (JMeter, ELK)
 
Kafka basics
Kafka basicsKafka basics
Kafka basics
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
Continuous Go Profiling & Observability
Continuous Go Profiling & ObservabilityContinuous Go Profiling & Observability
Continuous Go Profiling & Observability
 
Kubernates vs Openshift: What is the difference and comparison between Opensh...
Kubernates vs Openshift: What is the difference and comparison between Opensh...Kubernates vs Openshift: What is the difference and comparison between Opensh...
Kubernates vs Openshift: What is the difference and comparison between Opensh...
 
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
EKS에서 Opentelemetry로 코드실행 모니터링하기 - 신재현 (인덴트코퍼레이션) :: AWS Community Day Online...
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
Kubernetes Docker Container Implementation Ppt PowerPoint Presentation Slide ...
 
Rancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep DiveRancher 2.0 Technical Deep Dive
Rancher 2.0 Technical Deep Dive
 
Log management system for Microservices
Log management system for MicroservicesLog management system for Microservices
Log management system for Microservices
 
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과가상화 기술과 컨테이너 기술의 차이점과 기대 효과
가상화 기술과 컨테이너 기술의 차이점과 기대 효과
 
VMware Advance Troubleshooting Workshop - Day 3
VMware Advance Troubleshooting Workshop - Day 3VMware Advance Troubleshooting Workshop - Day 3
VMware Advance Troubleshooting Workshop - Day 3
 
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축GitLab과 Kubernetes를 통한 CI/CD 구축
GitLab과 Kubernetes를 통한 CI/CD 구축
 
Terraform
TerraformTerraform
Terraform
 
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
Distributed Tracing for Kafka with OpenTelemetry with Daniel Kim | Kafka Summ...
 
Hello, kafka! (an introduction to apache kafka)
Hello, kafka! (an introduction to apache kafka)Hello, kafka! (an introduction to apache kafka)
Hello, kafka! (an introduction to apache kafka)
 
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...
Practical CephFS with nfs today using OpenStack Manila - Ceph Day Berlin - 12...
 
멀티클라우드 Service Mesh
멀티클라우드 Service Mesh멀티클라우드 Service Mesh
멀티클라우드 Service Mesh
 

Ähnlich wie [오픈소스컨설팅]Kafka message system 맛보기

Kafka introduce kr
Kafka introduce krKafka introduce kr
Kafka introduce krJung soo Ahn
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회JaM2in
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOI Goo Lee
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3SANG WON PARK
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring SANG WON PARK
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1NeoClova
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)Jaeyeon Kim
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsSungMin OH
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개태준 문
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planetByeongsu Kang
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)I Goo Lee.
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법Ji-Woong Choi
 
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결   kafka를 이용한 매체 전송[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결   kafka를 이용한 매체 전송
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송ChoiYura
 

Ähnlich wie [오픈소스컨설팅]Kafka message system 맛보기 (20)

Kafka introduce kr
Kafka introduce krKafka introduce kr
Kafka introduce kr
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회ARCUS offline meeting 2015. 05. 20 1회
ARCUS offline meeting 2015. 05. 20 1회
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3Apache kafka performance(latency)_benchmark_v0.3
Apache kafka performance(latency)_benchmark_v0.3
 
KAFKA 3.1.0.pdf
KAFKA 3.1.0.pdfKAFKA 3.1.0.pdf
KAFKA 3.1.0.pdf
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
2015 oce specification
2015 oce specification2015 oce specification
2015 oce specification
 
Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring Understanding of Apache kafka metrics for monitoring
Understanding of Apache kafka metrics for monitoring
 
Maxscale 소개 1.1.1
Maxscale 소개 1.1.1Maxscale 소개 1.1.1
Maxscale 소개 1.1.1
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
MLOps 플랫폼을 만드는 과정의 고민과 해결 사례 공유(feat. Kubeflow)
 
Apache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloopsApache kafka intro_20150313_springloops
Apache kafka intro_20150313_springloops
 
Mcollective orchestration tool 소개
Mcollective orchestration tool 소개Mcollective orchestration tool 소개
Mcollective orchestration tool 소개
 
Streaming platform Kafka in SK planet
Streaming platform Kafka in SK planetStreaming platform Kafka in SK planet
Streaming platform Kafka in SK planet
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결   kafka를 이용한 매체 전송[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결   kafka를 이용한 매체 전송
[ 2021 AI + X 여름 캠프 ] 2. 장비 상호 연결 kafka를 이용한 매체 전송
 

[오픈소스컨설팅]Kafka message system 맛보기

  • 1.
  • 2. 분산 메시징 처리 카프카 맛보기 Tech Session 2018.07.30 클라우드팀 윤찬열
  • 3. Contents 01. Kafka Overview 02. Kafka Topic Partitioning 03. Kafka Topic Replication 04. Producer ACKS 05. Kafka Consumer Group 06. Kafka Management 07. Demo
  • 4. Internal Use Only Linkedin의 고민 01. Kafka Overview Frontend Server Frontend Server Metric Server Frontend Server Frontend Server Application Metrics Application Metrics Application Metrics Application Metrics
  • 5. Internal Use Only Linkedin의 고민 장애 01. Kafka Overview Frontend Server Frontend Server Metric UI Frontend Server Frontend Server Database Server Database Server Chat Server Chat Server Chopping Cart Active Monitoring Data Monitor Metric Analysis
  • 6. Internal Use Only A Centralized Data Pipeline 01. Kafka Overview Frontend Server Frontend Server Metric UI Frontend Server Frontend Server Database Server Database Server Chat Server Chat Server Chopping Cart Active Monitoring Data Monitor Metric Analysis Message System
  • 7. Internal Use Only 01. Kafka Overview 출처: https://en.wikipedia.org/wiki/Franz_Kafka Franz Kafka
  • 8. Internal Use Only Kafka ?  분산 비동기 메시징 시스템  Linkedin에서 개발 되어 2011년 오픈소스로 공개  발행(Producer), 소비(Consumer) ,중개(Broker) 구조로 구성  Tcp기반으로 오버헤드 감소시켜서 동작  다른 메시징 시스템과 다르게 일정기간 저장 -> 장애 발생시 다시 메시지 처리(Rewind) 가능  파일 시스템에 메시지 저장 -> 영속성(Durability) 보장 01. Kafka Overview
  • 9. Internal Use Only 비동기 메시지 시스템  메일을 보내면 메일 서버에 저장 메일을 받는 사람은 자신이 필요할 때 수신 하는 비동기 구조  메일시스템과 동일 하게 Producer가 메시지를 보내면 Kafka Cluster에 저장 , Consumer가 필요할 때 메시지를 가져오는 구조 01. Kafka Overview 출처: https://en.wikipedia.org/wiki/Franz_Kafka Kafaka Cluster ConsumerProducer 메일 수신메일 전송 메일 서버
  • 10. Internal Use Only Why Kafka?  Producers 와 Consumers 역할 분리 .하나의 topic에 대하여 여러 Producers 가 message를 전송하고 여러 Consumers 가 message를 소비하는 구조로 중앙 집중 형 구조로 구성  Scalable . Kafka cluster를 통하여 확장이 어느정도 용이 하게 설계  High Performance . 분산처리 - 동일한 기능을 하는 여러 대의 서버로 이뤄진 분산 시스템으로 구성되어, 단일 시스템보다 더 높은 성능을 얻으며, SPOF 극복 . 배치 처리 - 작은 i/o 에 대하여 묶어서 처리 하여 속도 향상에 도움 . 페이지 캐시 - 파일시스템에 쓰기 전에 페이지캐시를 통하여 높은 속도 보장(실제로 하드웨어 권고 사항에 sata disk를 사용해도 무방하다고 함)  이기종과의 호환성  배치 단위 전송 및 압축 전송 가능 01. Kafka Overview
  • 11. Internal Use Only Disk-Based Retention(Persistent)  다른 Message-system 과 다르게 파일시스템을 Message 주 저장소로 사용  Memory에 별도의 Cache 없이 OS의 Page Cache 사용  Page Cache 로 read() 함수 호출 없이 직접 mapping된 주 메모리 참조 01. Kafka Overview 출처: http://www.yunweipai.com/archives/11749.html Page Cache File System Buffer Cache Disk User Process Kernel User Process pdflush INode & metadata
  • 12. Internal Use Only Disk-Based Retention  Cousumer가 파일시스템에 데이터 전송 시 zero-copy 사용  zero-copy(무복사) : 디스크에서 파일을 읽어 소켓에 담은 뒤 응답 하지 않고 , 커널 영역에서 파일 데이터를 읽고 바로 소켓에 데이터를 담아 전달 01. Kafka Overview 출처: https://www.ibm.com/developerworks/linux/library/j-zerocopy/ 출처: https://www.slideshare.net/springloops/apache-kafka-intro20150313springloops-46067669
  • 13. Internal Use Only Kafka 구조  Producer : 메시지를 Broker로 전송  Broker : Producer가 보낸 메시지를 저장  Consumer : Broker에 있는 메시지를 소비 01. Kafka Overview Kafaka Broker ConsumerProducer Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper Producer Producer Consumer Consumer Consumer Consumer
  • 14. Internal Use Only Kafka Broker 구조  Producer가 보낸 메시지를 구분 하기 위하여 Broker에는 Topic으로 구분 하여 메시지 저장 01. Kafka Overview Producer msg0 Broker msg1msg2 Topic Topic Topic
  • 15. Internal Use Only Kafka Topic Partition  Producer 가 Message 를 전송 할 때 1개의 Topic으로 Partitioning이 안되어 있을 경우 1개의 Message를 낼 때 1초가 걸린다면 3개의 Message를 보낼 때 3초가 소요 02. Kafka Topic Partitioning Producer msg0 msg1 msg2 Topic Partition 1 Partition 2 Partition 3 Producer msg0 Topicmsg1msg2  Partitioning 된다면 동일한 작업에 대하여 Partition 갯수에 비례 하여 처리 속도가 향상
  • 16. Internal Use Only Kafka Partition  Partition 은 Offset 0부터 순차적으로 쓰이고, offset0부터 순차적으로 읽혀진다. 02. Kafka Topic Partitioning Producer msg0 msg1 msg2 Topic Partition 1 Partition 2 Partition 3 0 1 2 3 0 1 2 0 1 2 Kafka Partition Disadvantages  무조건 증가 했다고 전체 처리 성능이 증가 하는 것은 아니며, 그만큼 consumer가 추가 되어야 한다 .  추가만 가능 하며, 줄일 수는 없다. (초기에 낮게 시작하여 높이는 것을 추천)  장애 복구 시간 증가 (controller broker 장애시)
  • 17. Internal Use Only Kafka Replication  고가용성을 위하여 topic에 대한 replication(복제) 기능을 제공  Kafka cluster 는 Replication을 할 경우 broker들 간에 Leader를 우선 선출  이때 선출된 leader는 모든 Read/Write 가 발생 03. Kafka Topic Replication Kafka cluster Topic replication Producer Broker 1 Broker 2 Broker 3 message Leader Follower
  • 18. Internal Use Only Kafka Replication  Leader는 follower라는 replication 대상으로 message Replication  Leader가 장애 발생된다면 다른 follower가 Leader로 승격  Leader에 대한 선출 및 승격은 Zookeeper가 결정 03. Kafka Topic Replication Kafka cluster Topic replication Producer Broker 1 Broker 2 Broker 3 message Leader Follower replication
  • 19. Internal Use Only Kafka Zookeeper  Zookeeper: Hadoop의 서브 프로젝트, Hadoop의 분산 어플리케이션을 관리 하는 코디네이션 어플리케이션으로 사용  추가적인 개발 리소스를 줄이고자 Zookeeper를 코디네이션 Kafka의 분산 어플리케이션의 코디네이션 어플리케이션으로 사용 03. Kafka Topic Replication Producer broker consumer zookeeper Broker and topic metadata consumer metadata partition offsets
  • 20. Internal Use Only Kafka Zookeeper  앙상블이라는 이름의 클러스터를 구성 하며, 일반적으로 3대 이상의 홀수 단위로 서버를 구성 (서버들간의 데이터 불일치가 발생할 경우 과반수의 룰을 적용 하기 때문에 데이터정합성 측면에서 유리)  앙상블을 구성하게 되면 각 ZooKeeper 서버들은 Leader와 follower을 선출 하며 실제 데이터는 Client가 Follower를 통하여 받고, Leader로 전달 그리고 leader가 모든 follower에 전달 하여 모두 동일한 데이터를 갖을 수 있도록 유지 03. Kafka Topic Replication
  • 21. Internal Use Only Kafka Zookeeper  각 상태정보는 znode 에 key-value 형식으로 저장 하며 아래 그림과 같이 계층적 구조로 정보를 저장  저장되는 데이터를 메모리에 저장 하여 빠른 처리 속도를 나타냄 03. Kafka Topic Replication
  • 22. Internal Use Only Kafka Broker Controller  임의의 1개의 Broker 가 Controller의 역할을 담당하여 Leader 선출을 담당  Controller 장애 발생 시 다른 Broker가 Controller의 역할을 위임 03. Kafka Topic Replication
  • 23. Internal Use Only Kafka ISR  Leader와 Follower선출과 데이터의 무결성 처리 위하여 ISR(In Sync Replica) 사용  ISR은 “Replication Group”이라고 할 수 있는데, replication factor 3 으로 설정 되어 있을 경우 특정 1개의 Broker가 Leader, 나머지 Broker가 Follower 선출  여기서 Message가 Leader로 전송이 지속적으로 되는 상태에서 , Follower는 지속 적으로 변경사항을 요청한다. 그리고 Leader 가 변경 사항을 전달하는 Pull방식으로 replication 03. Kafka Topic Replication
  • 24. Internal Use Only Kafka ISR 03. Kafka Topic Replication Kafka cluster ISR Producer Broker 1 Broker 2 Broker 3 message Leader Follower Follower (1) Producer message send (2) Leader에게 변경사항 요청 (2) Leader에게 변경사항 요청 (3) 변경사항 전달 (3) 변경사항 전달
  • 25. Internal Use Only Kafka ISR  follower에서 Leader로 일정 기간 동안 변경사항을 요청 하지 않을 경우 , 해당 follower에 대하여 Leader는 ISR로 유지 하지 않는다. 03. Kafka Topic Replication Kafka cluster ISR Producer Broker 1 Broker 2 Broker 3 message Leader Follower Follower Leader변경사항 요청 실패
  • 26. Internal Use Only Kafka ISR  ISR에서 해당 broker에서 방출 03. Kafka Topic Replication Kafka cluster ISR ISR Producer Broker 1 Broker 2 Broker 3 message Leader Follower Follower Broker 3 ISR에서 방출
  • 27. Internal Use Only Kafka Producer ACKS  Producer가 Broker의 Topic 으로 Message를 보낼 때 응답 받아 처리 하여 Mesaage손실을 방지 04. Kafka Producer ACKS 참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/ Broker(Leader) TopicProducer  acks=0 일 경우 , Producer가 Message를 Leader에게 전송 후 acks을 안 기다림 Broker(Follower) Topic acks=0  가장 빠르지만 Message손실 가능성이 가장 높음
  • 28. Internal Use Only Kafka Producer ACKS  acks=1 일 경우 , Producer가 Message를 Leader에게 전송 후 Leader 가 acks을 보낸 후 Follower에게 Replication 진행 (가장 많이 사용 되며, 기본값)  Producer는 Leader가 잘 보냈는지 확인 할 때까지 기다림  0 설정 보다 Message 손실가능성이 낮지만 acks을 보내고 Replication도중 장애 발생 시 Message손실 가능성 있음 04. Kafka Producer ACKS 참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/ Broker(Leader) TopicProducer Broker(Follower) Topic acks=1 1 3 2
  • 29. Internal Use Only Kafka Producer ACKS  acks=all(-1) 일 경우 , Producer가 Message를 Leader에게 전송 후 Leader 가 모든 Follower에게 Replication이후 acks을 보냄  Producer는 Leader가 잘 보냈는지 확인 할 때까지 기다림  가장 느리지만, Message 손실 가능성이 가장 낮음 04. Kafka Producer ACKS 참조 :Https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-producer-acks/ Broker(Leader) TopicProducer Broker(Follower) Topic acks=all(-1) 1 2 3
  • 30. Internal Use Only Kafka Consumer Group  Producer 는 여러 개의 Partitioning 되어 있는 Topic으로 Message를 전송 하기 때문에 다른 Message system 보다 Message를 빠르게 처리  하지만 분할 되어 있는 Topic을 가져 올 때는 1개의 Consumer가 처리 한다면 Pull하는 속도가 느림 05. Kafka Consumer Group Topic Partition 00 Partition 01 Partition 02 Consumer Group Consumer 01
  • 31. Internal Use Only Kafka Consumer Group  Kafka에서는 Cosumer Group 을 통하여 각각 Partition에 대하여 Consumer를 지정 하여 그룹화 함으로 빠른 속도를 보장 함과 함께 데이터 손실을 방지  아래 그림 처럼 3개의 Partion에 대하여 Cosumer Group 에 2개의 consumer가 동작 하여 분산하여 데이터를 수신 04. Kafka Consumer Group Topic Partition 00 Partition 01 Partition 02 Consumer Group Consumer 01 Consumer 02
  • 32. Internal Use Only Kafka Consumer Group  Consumer Group은 1개의 Partition에 대하여 1개의 Consumer만 지정 해서 보낼 수 있다. 05. Kafka Consumer Group Topic Partition 00 Partition 01 Partition 02 Consumer Group Consumer 01 Consumer 02 Consumer 03
  • 33. Internal Use Only Kafka Consumer Group  만약 3개의 Partition에 대하여 4개의 Consumer 가 있다면 1개의 Consumer는 대기 하게 되어 낭비 05. Kafka Consumer Group Topic Partition 00 Partition 01 Partition 02 Consumer Group Consumer 01 Consumer 02 Consumer 03 Consumer 04
  • 34. Internal Use Only Kafka Consumer Group  한개의 topic에 대하여 한 Consumer Group 에서 처리 하던 것을 ,동일한 정보를 다른 쪽에서 사용 하기 위해서 다른 Consumer Group을 추가 하여 동일한 데이터에 대하여 1개의 Message System에서 가져 와서 활용 하는 것도 Kafka의 장점 05. Kafka Consumer Group Topic Partition 00 Partition 01 Partition 02 Consumer Group1 Consumer 01 Consumer 02 Consumer 03 Consumer Group2 Consumer 01 Consumer 02
  • 35. Internal Use Only Kafka Manager  Partition ,Topic 설정 변경,추가,삭제 등 여러가지 작업을 웹 환경에서 제공  JMX 모니터링 제공 06. Kafka Management
  • 36. Internal Use Only Kafka Monitoring  안정적인 운영을 위하여 JMX을 이용 하여 모니터링  Promethus JMX Exporter으로 수집한 데이터를 Prometheus Server 에서 저장하며, Grafana 를 이용하여 모니터링 06. Kafka Management Kafaka JMX exporter Kafaka JMX exporter Kafaka JMX exporter Prometheus server Grafana server
  • 37. Internal Use Only Kafka Monitoring  안정적인 운영을 위하여 JMX을 이용 하여 모니터링  Promethus JMX Exporter으로 수집한 데이터를 Prometheus Server 에서 저장하며, Grafana 를 이용하여 모니터링 06. Kafka Management Prometheus Server Grafana
  • 38. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus
  • 39. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus AWS(외부)에 있는 서버의 log를 Filebeat로 전송
  • 40. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus Logstash를 이용하여 kafka broker로 전달
  • 41. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus ZK-Web으로 zookeeper 상태 확인
  • 42. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus Kafka Manager를 이용하여topic 생성 및 설정
  • 43. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus Logstash를 kafka topic 에 저장된 메시지 가져온 뒤 파싱 및 elasticsearch 로 저장
  • 44. Internal Use Only AWS에 있는 jira 로그를 사내 Kafka로 전달 하여 Elastic Stack에서 분석! 07. DEMO Kafaka Broker Zookeeper Kafaka Broker Zookeeper Kafaka Broker Zookeeper kafka-es-data01 Master/Data Node kafka-es Coordinator Node transport 9300 kafka-es-data02 Master/Data Node kafka-es-data03 Master/Data Node Logstash Consumer Node Rest Kibana Dashboard Filebeat Logstash Producer Node Prometheus Grafana server Prometheus Prometheus Kibana를 이용하여 로그 정보 가시화
  • 45. Internal Use Only 참고 문서 & 링크  Kafka: The Definitive Guide (Publisher: O'Reilly Media, Inc.)  카프카, 데이터 플랫폼의 최강자(Publisher: 고승범 , 공용준)  http://kafka.apache.org/documentation/  http://epicdevs.com/