본문 바로가기

전체 글96

[Apache Kafka] Kafka Replication란? Kafka Replication은 Kafka에서 데이터의 고가용성을 보장하기 위한 방법으로 각 토픽의 파티션(Partition)을 복제를 통해 클러스터 내의 여러 브로커에 중복 저장하는 것이다.Kafka 브로커가 장애가 생기더라도 데이터 손실을 최소화하고, 클러스터의 가용성을 유지할 수 있다.Replication FactorReplication Factor는 각 파티션의 데이터를 몇 개의 복제본으로 저장할지 결정하는 값이다.예를 들어, 파티션(Partition)이 1개, Replication Factor가 2이면, 원본인 리더 파티션 1개와 복제본인 팔로우 파티션이 1개 존재한다.Replication Factor는 브로커의 수 보다 클 수 없다. Replication이 많아지면 브로커의 리소스 사용량도 .. 2024. 9. 18.
[Apache Kafka] 카프카란 무엇인가? Kafka는 대규모 실시간 데이터 스트리밍을 처리하는 데 사용되는 분산 이벤트 스트리밍 플랫폼분산 이벤트 스트리밍이란, 여러 대의 서버(노드)에 분산되어 저장된 이벤트(데이터)를 실시간으로 처리하는 방식카프카 용어클러스터(Cluster)브로커들의 모임으로 확장성과 고가용성을 위해 여러 개의 Broker가 클러스터로 구성되어 있다.브로커(Broker)카프카가 설치되어 있는 서버 단위를 말하며 보통 3개 이상의 Broker로 구성하는 것을 권장복제(Replication)Kafka Replication은 Kafka에서 데이터의 고가용성을 보장하기 위한 방법으로 각 토픽의 파티션(Partition)을 복제를 통해 클러스터 내의 여러 브로커에 중복 저장하는 것이다.토픽(Topic)메시지를 구분하는 단위로 프로듀서.. 2024. 9. 18.
[JPA] Persist와 Merge Spring Boot Data JPA에서 persist와 merge는 둘 다 엔티티 객체를 데이터베이스에 저장하거나 갱신하는 데 사용 되는 메서드 입니다.save 메서드를 실행하게 되면 Spring Boot Data JPA의 JpaRepository 인터페이스의 기본 구현체인 SimpleJpaRepository에서 신규 Entity 여부 확인 후 persist혹은 merge을 실행합니다.persist는 새로운 엔티티를 영속화 할 때 사용하며 EntityManager의 영속성 컨텍스트에 추가합니다.merge는 기존의 엔티티를 업데이트 하거나 데이터베이스에 없는 엔티티를 저장할 때 사용합니다. 만약 엔티티가 영속성 컨텍스트에 없으면 새로운 영속 상태를 생성하고, 존재하면 기존 엔티티를 갱신합니다.Simple.. 2024. 9. 3.
[JPA] 영속성 컨텍스트 영속성 컨텍스트란 엔티티를 영구 저장하는 환경으로 엔티티 객체들을 관리하는 일종의 메모리상의 공간을 의미한다. 영속성 컨텍스트는 데이터베이스와 자바 애플리케이션 사이에서 객체의 상태를 관리하고 동기화하는 역할을 한다.엔티티 생명주기비영속(new/transient) : 영속성 컨텍스트와 전혀 관계 없는 새로운 상태영속(managed) : 영속성 컨텍스트에 관리하는 상태준영속(detached) : 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed) : 삭제된 상테//영속성 컨텍스트 실습//비영속성Member member = new Member();member.setId((100L));member.setName("HelloJPA");//영속em.persist(member);//회원 엔티티를 영속성 .. 2024. 9. 1.
JDK Dynamic Proxy와 CGLIB JDK Dynamic Proxy와 CGLIB 모두 프록시 객체를 동적으로 만들어 낼 수 있다.JDK Dynamic Proxy는 Java가 기본적으로 제공하는 동적 프록시 기술이며 CGLIB는 오픈소스 기술이다. JDK Dynamic Proxy는 인터페이스를 구현(Implement)하고, CGLIB는 구체 클래스를 상속(extends)해서 프록시를 생성한다.SpringBoot AOP에서는 CGLIB를 Default로 사용한다.JDK Dynamic Proxy인터페이스 기반으로 프록시를 동적으로 만들어 주기 때문에 인터페이스가 필수이다.InvocationHandler 인터페이스를 구현해서 작성하면 된다.@Slf4jpublic class TimeInvocationHandler implements Invocati.. 2024. 7. 30.
메모리 누수 분석 메모리 이슈 발생파일 업로드, 파일 다운로드 시 비정상적으로 메모리가 오르는 일이 생김 (1.4GiB 이상)JVM 옵션 설정-server -Xms512m -Xmx512m -XX:MetaspaceSize=400m -XX:MaxMetaspaceSize=400m -Xms: Java heap 초기 크기 -XmX : Java heap 최대 크기 -XX:MetaspaceSize : 가비지 컬렉션을 처음 초과할 때 트리거할 할당된 클래스 메타데이터 크기 -XX:MaxMetaspaceSize : 클래스 메타데이터에 할당할 수 있는 최대 네이티브 메모리 양HeapDump 분석MAT(Memory Analyzer Tool)으로 메모리 분석DB에 연결할 때 SSLSocketImpl에서 메모리 누수가 발생하는 것을 확인Data.. 2024. 7. 28.