테스트 결과 - ShinHeeEul/exerciseELK GitHub Wiki
테스트 시험 환경, 임의로 초당 10000개를 선정하여 비교해보았다.
1초당 10000개씩 10초 간 요청
로그 파일에 저장된 timestamp 시간이다.
{"@timestamp":"2025-02-15T16:52:40.232858+09:00","@version":"1","log_message":"completed : 전송 완료","logger_name":"grpc.server.service.GrpcServerService","thread_name":"grpc-default-executor-10","log_level":"INFO","level_value":20000,"app_name":"exerciseETL"}
다음은 카프카에 찍힌 시간이다. 카프카에 담기기까지 0.1초가 안걸린 모습을 볼 수 있다.
kibana에서도 elastic search에서 중간에 1초간 거의 메세지를 저장하지 못했지만 10000개의 메세지를 처리하긴 하는 모습을 확인할 수 있었다. 또한 순서가 보장되어 도착하지 않는다는 것도 확인할 수 있었다.
elastic search에도 카프카와 같은 시간이 찍혀있는데, 처리 시간이 0.001초도 안걸린 건 아닌 것 같고, 로그에 저장되어 있는 시간을 출력하는 형식인건가보다.
그렇다면 카프카가 없다면 어떨까?
카프카 없이 1초당 10000개씩 19초간 요청을 보낸다면?
Kafka에 있을 때보다 요청이 불안정하게 처리되는 모습을 볼 수 있다. 처리된 양을 보니 최소 한번은 보장해주어 유실된 것 같진 않지만, 이보다 더 늘렸을 때 유실 될 수도 있을 것 같다.