개발/Kafka
-
[Kafka] - 14. EOS(Exactly Once Symantics)개발/Kafka 2022. 8. 10. 15:07
Symantics 1. At-Most-One Semantics ( 최대 한번 전송 ) Producer Acks=1 확인 시간이 초과되거나 오류가 Response되어도, Producer가 재전송하지 않아 Message가 Kafka Topic에 기록되지 않고, Consumer에 전달되지 않는다. 2. At-Least-Once Semantics ( 최소 한번 전송 ) Producer ACKS=ALL,-1 Producer가 Broker로 부터 ACK를 수신, ALL인 경우에는 Topic에 최소 한번 작성된 것을 의미한다. ACK가 시간 초과나 오류를 Response하면, Message가 기록되지 않는 것으로 판단하여 Message를 Retry 처리한다. 이로 인해 Message가 중복되어 저장 될 수 있다. 3..
-
[Kafka] - 13. Kafka Log File개발/Kafka 2022. 8. 10. 14:05
Kafka Log file Kafka Log Segment File은 Data File와 같은 개념이다. Segment File이 생성되는 위치는 각 Broker의 server.properties File 내 log.dirs Parameter로 정의한다.( ','로 구분 ) 각 Topic과 Partition은 log.dirs 아래에 하위 directory로 구성 E.g) /data/kafka/kafka-log-a/test_topic-0 log.dirs = /data/kafka/kafka-log-a, /data/kafka/kafka-log-b, /data/kafka/kafka-log-b File명에는 의미가 존재한다. 000000123453.* File은 123453 Offset부터 7735203(7735..
-
[Kafka] - 12. Cooperative Sticky Assignor개발/Kafka 2022. 8. 9. 17:11
1. Consumer rebalancing Process by time 1. Consumer들이 Join Group Reqeust를 Group Coordinator에 보낸다.(Rebalance process start) 2. Join Group Response 및 Join Group 목록을 Group Leader(Consumer C)에게 전달한다. 3. 모든 Consumer들은 Broker에게 Sync Group Request ( Group Leader는 각 Consumer의 Partition 할당(assignor)을 계산하여 Group Coordinator에게 전달) 4. Broker들은 Sync Group Response로 각 Consumer 별 Partition 할당을 보낸다. 2. Eager Re..
-
[Kafka] 11. Parition Assignment Strategy개발/Kafka 2022. 8. 9. 15:37
Parition Assignment Strategy Conumser의 설정 파리미터 중에서 partition.assingment.strategy로 할당 방식을 조정할 수 있다. org.apache.kafka.clients.consumer.RangeAssignor : Topic별로 작동하는 Default Assignor org.apache.kafka.clients.consumer.RoundRobinAssignor : Round Robin 방식으로 Consumer에게 Partition을 할당한다. org.apache.kafka.clients.consumer.StickyAssginor : 최대한 많은 기존 Partition 할당을 유지하면서 최대 균형을 이루는 할당을 보장한다. org.apache.kafka...
-
[Kafka] - 10. Consumer_Rebalance개발/Kafka 2022. 8. 9. 14:51
Partition-Assignment 하나의 Partition은 지정된 Consumer_group 내에 하나의 Consumer만 사용 가능 동일한 Key를 가진 Message는 동일한 Consumer가 사용한다. Consumer의 설정 Parameter 중 Partition.assignment.strategy로 할당 방식을 변경이 가능하다. Consumer Group은 Group Coordinator 프로세스에 의해 관리 된다. Partition.Assignment.Strategy org.apache.kafka.clients.consumer.RangeAssginor : Topic별로 작동하는 Default Assignor org.apache.kafka.clients.consumer.RoundRobinAs..
-
[Kafka] - 9.Replica failure&recovery개발/Kafka 2022. 8. 8. 18:47
1. Replica Failure ISR List 관리 Message(data)가 ISR의 모든 Replicas(복제본)에 수신되면 Commit으로 간주 Leader가 Zookeeper의 ISR-list의 변경 사항을 유지한다. Monitoring은 Kafka의 Cluster 내에 Controller가 담당. N개의 Replica가 있는 경우 N-1개의 장애를 허용한다. Follower가 실패하는 경우 Leader에 의해 ISR list에서 삭제 Leader는 새로운 ISR을 사용하여 Commit Leader가 실패하는 경우 Controller가 ISR Follower 중 하나를 새로운 Leader로 선출한다. Controller는 새 Leader, ISR정보를 Zookeeper에게 Push 후 Loca..
-
[Kafka] - 7. In sync Replicas개발/Kafka 2022. 8. 5. 02:57
Replication of Partition 장애를 대비하기 위해 Partition을 Replicate하여 다른 Broker에 Replicas(복제본)을 만들어 두어 장애를 대비한다. 실제로 어떻게 복제하는가?를 알아보자 1. ISR In Sync Replicas 로 '얼마나 잘 복제하고 있는가'에 대한 지표 ISR은 High Water Mark라고 하는 지점까지 동일한 Replicas이다. Leader Partition은 가진 Broker와 이를 따르는 Follower (102,103)이 있다. replica.lag.max.messages 값이 4에 따라, ISR과 OSR이 나누어진다. High Water Mark LOG-END-OFFSET과 ISR의 Last-Committed offset의 차이가 r..
-
[Kafka] - 6. Replication개발/Kafka 2022. 8. 4. 18:31
Broker에 장애 발생 시? 장애가 발생한 Broker의 Partition들은 모두 사용할 수 없는 문제 발생 대안? 다른 Broker들에게 Partition을 만든다 하지만, 기존 Message(data)와 Offset 정보는 어떻게 처리해야할까? 라는 의문 발생 Replication Partition을 Replication하여 다른 Broker에 replicas(복제물)을 미리 만들어 대비한다. 즉, Leader(원본)와 Follower(복제물)을 만들어 구성한다. Client(Producer/Consumer)는 Leader에게서만 Write, Read 처리 할 수 있다. Follower는 Broker의 장애 시 안정성을 제공하기 위한 존재이다. Follower는 Leader의 Commit log(..