Study
-
[카프카 핵심 가이드] CH1. 카프카 시작하기Study/카프카 핵심 가이드 2025. 2. 4. 00:50
토픽과 파티션카프카에 저장되는 메시지는 토픽 단위로 분류된다.토픽은 여러 개의 파티션으로 나뉘어진다.파티션은 하나의 로그에 해당한다.파티션에 메시지가 쓰여질 때는 추가만 가능(append-only)한 형태로 쓰여지며, 읽을 때는 맨 앞부터 제일 끝까지의 순서로 읽힌다.토픽 안의 메시지 전체에 대해 순서 보장 X, 단일 파티션 안에서만 순서 보장파티션은 카프카가 데이터 중복과 확장성을 제공하는 방법이기도 하다.확장성각 파티션이 서로 다른 서버에 저장될 수 있음하나의 토픽이 여러 개의 서버로 수평 확장되어 하나의 서버 용량을 넘어서는 성능을 보여줄 수 있음데이터 중복파티션은 복제될 수 있음서로 다른 서버들이 동일한 파티션의 복제본을 저장하고 있어 서버 중 하나에 장애가 발생해도 읽거나 쓸 수 없는 상황이 벌..
-
14장. 고성능 로깅 및 메시징Study/Optimizing Java 2024. 7. 31. 08:24
개요지연에 민감한 고성능 어플리케이션을 다룰 때 개발자가 해결해야 하는 일반적인 이슈 몇가지를 살펴보고, 이런 시스템에는 어떤 요건이 있고 어떠한 방식으로 설계해야 하는지 안내함저지연, 고성능 시스템에서 핵심적인 고려사항 2가지는 로깅과 메시징 14.1 로깅다른 라이브러리와 마찬가지로 로깅 라이브러리도 프로젝트 도입 전 신중한 확인이 필요하다. 14.1.1 로깅 벤치마크가장 많이 쓰는 세가지 로거(Logback, Log4j, java.util.logging)의 성능을 비교하는 벤치마크를 살펴보자 방식해당 자료를 사용해 벤치마크 수행해당 프로젝트는 여러 가지 설정으로 다중 로거를 실행 가능한 벤치마크 제공함 로깅 포맷1) Logback 포맷14:18:17.635 [Name Of Thread] INFO c..
-
CH10. JIT 컴파일의 세계로Study/Optimizing Java 2024. 6. 24. 00:29
JIT 컴파일은 JVM뿐만 아니라 많은 현대 프로그래밍 환경에 적용되어 온 기술이다.JIT 컴파일러는 달라도 적용된 기술은 동일한 경우가 많다. 이번 장에서는 JITWatch라는 툴을 이용해 JVM의 내부 작동 원리를 시각화한다.구체적인 JIT 최적화 알고리즘과 각각의 특성을 살펴보고 이런 기법들이 어떤 작용을 하는지 JITWatch로 관찰한다. 10.1 JITWatch란?JITWatch를 이용하면, 어플리케이션 실행 중에 핫스팟이 실제로 바이트코드에 무슨 일을 했는지 이해하는 데 도움이 됨반드시 핫 패스(hot path)에 있는 컴파일 대상 메서드를 분석 대상으로 삼아야 함. 인터프리티드 메서드는 최적화 대상으로 적절하지 않음*핫 패스 : 프로그램 중 매우 빈번하게 호출/실행되는 코드 경로JITWatc..
-
CH2. JVM 이야기Study/Optimizing Java 2024. 4. 14. 00:13
이 장에서는 JVM이 자바 코드를 실행하는 방법을 소개한다. 성능을 공부하려면, 기본 JVM 기술 스택의 구조를 알아야 한다. 들어가기 전에, JVM을 큰 그림으로 한번 보자. 2.1 인터프리팅과 클래스로딩 JVM은 스택 기반의 해석 머신임 레지스터는 없지만 일부 결과를 실행 스택에 보관하며, 이 스택의 맨 위에 쌓인 값들을 가져와 계산을 함 1) 인터프리팅 JVM 인터프리터(해석기)의 기본 로직은 'while 루프 안의 switch문' 으로 비유할 수 있음 이는 JVM이 바이트코드를 실행하는 방식을 설명하기 위한 비유임 각 바이트코드에 대한 실행 로직은 switch문에서 결정되며, while 루프를 통해 계속해서 새로운 바이트코드를 읽어들여 실행함 while 루프 프로그램이 계속해서 실행되는 루프 JV..