saay, hi

[4] 단일서버 replication factor 테스트 본문

kafka 테스트/cluster 테스트

[4] 단일서버 replication factor 테스트

saay-hi 2024. 6. 27. 11:20
목적  -   동일 consumer group에서 replication factor 1개와 3개 비교
시나리오 1.    consumer AP script 작성 후 consumer group 및 topic 생성
→ testConsumer.java 작성
2.  동일 consumer group 내에서 replication factor 변화에 따라 어떤 차이점이 있는지 확인
→ replication factor 관련된 java option이 없어서 일단 topic 생성 후, 명령어로 replication factor 3개로 증량
→ 각 broker 마다 group list 초단위로 조회하여 확인
→ topic 생성 뒤, log dir에 변화 있는지 확인( replication factor 증량하게 될 경우 topic name에 동일한 숫자가 따라 붙음 )
→ producer AP 데이터 증량 ( 10000 이상 )
 
구성 

이름설명
replication 각 메세지들(파티션)을 여러 개로 복제해서 카프카 클러스터 내 다른 브로커에 분산시키는 동작
replication factor replication 동작 시 같은 메시지를 가지는 파티션의 총 개수 ( = 원본 + 복제본)

[ test 방법 ]

1.consumer group을 조회

broker1
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          40000           40000           0
         1stConsumer-7634e4aa-e2fb-4d11-a0ce-5f30cbe93aaf /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
broker2
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          40000           40000           0
         1stConsumer-7634e4aa-e2fb-4d11-a0ce-5f30cbe93aaf /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
broker3
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          40000           40000           0
         1stConsumer-7634e4aa-e2fb-4d11-a0ce-5f30cbe93aaf /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer

 

2.각 broker마다 watch를 1초간 걸어 topic 전송 뒤, broker 데이터 취득이 고정적인지 1초마다 확인

broker2 에서 먼저 취득 ( 데이터 취득 순서는 계속 다름 ) 
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         1stConsumer-2952408b-b457-4760-b1bb-39a8227ae1cc /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
broker1 이 취득
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         1stConsumer-2952408b-b457-4760-b1bb-39a8227ae1cc /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
broker3 이 취득
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         1stConsumer-2952408b-b457-4760-b1bb-39a8227ae1cc /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer

 

3.동일 consumer group 내에 replication 1 / 3 개 조회

broker1 
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_test         0          3423            73648           70225
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         1          3333            73381           70048
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         2          3256            72983           69727
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         -                                                -               -
broker2
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_test         0          20071           73648           53577
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         1          62117           73381           11264
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         2          61824           72983           11159
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         -                                                -               -
broker3
GROUP                TOPIC                PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG
         CONSUMER-ID                                      HOST            CLIENT-ID
cluster_group_240220 cluster_test         0          20071           73648           53577
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         1          62117           73381           11264
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_test         2          61824           72983           11159
         1stConsumer-fc1b4b9e-395f-4b5d-9448-ec1c39f0633f /192.168.56.105 consumer-cluster_g
roup_240220-1stConsumer
cluster_group_240220 cluster_topic_240220 0          110000          110000          0
         -                                                -               -

[ 결과 ]

1. replication factor 가 1인 경우, console에 보이는 데이터동기화는 가능하나 데이터는 저장하지 못함 ( broker log에 남지 않음 )

2. 동일 consumer group 내의 broker 1,2,3 모두 동기화되어 동일하게 topic 취득

3. broker 데이터 취득이 고정적이지 않음

→ leader broker가 먼저 데이터 취득한 뒤 follower broker에게 동기화된다고 하였지만 실질적으로 하나의 broker가 고정적으로 먼저받는 현상은 없음

→ 추측 : 서버가 동일하고 port만 달라서 leader broker가 없으며 이상적인 분산서버 설정과는 달리 leader port가 다 다르므로 이와같이 비고정 데이터 취득 현상 발생


[ 의견 ]

broker마다  consumer group 의 1초 간격이 조금씩 다른 이유는 watch명령어에 한계일 수도 있음

replication factor 증량 시, 하나의 leader broker에서 받은 뒤 follower broker에게 뿌리는 형식이라고 생각했으나.. leader broker가 topic받은 후 다른 follower broker에게 전달하는지에 관한 테스트는 차후에 분산서버를 통해 진행할 예정