Kafka
-
[Kafka] - 15. EOS Transaction개발/Kafka 2022. 8. 10. 17:31
1. Transaction Concept EOS를 처리하기 위해 하나의 Logic으로 처리되어 필요한 개념 1-1) Transaction Coordinator 각 Producer에게는 Transaction Coordinator가 할당되며, PID 할당 및 Transaction 관리의 모든 Logic을 수행한다. 1-2) Transaction log 새로운 Internal Kafka Topic으로, Consumer offset topic과 유사하게, 모든 Transaction이 영구적이고, 복제된 Record를 저장하는 Transaction Coordinator Status 저장소 1-3) TransactionalId Producer를 고유하게 식별하기 위해 사용한다. 동일한 TransactionalID를..
-
[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..
-
11. Cache&BlockCS/OS 2022. 8. 8. 15:37
서론 Kafka는 모든 Message(data)를 Disk에 Write하여 저장한다. Kafka에서 Producer가 Broker에 Message를 넘겨주고, Broker가 Disk에 저장하기 위해서 아래와 같이 동작. Disk Flush 시에 Disk에 직접 접근하는 것이 아닌 Page cache memory를 사용하여 속도 향상을 일으켰다. 결국 Memory mapped file과 같은 개념과 유사하게 Memory 내에 일부인 캐시 메모리에다가 Data를 저장해두고 저장하는 것으로 보인다. Cache Hardware,Software의 Component로 요청한 결과를 미리 저장해두었다가 빠르게 사용하는 것이다. I/O 과정을 거치지 않고 Cache Memory에 저장한 값을 이용하여 접근한다. 비싸기..