본문 바로가기

반응형

java

4장 카프카 상세 개념 설명(2) 4-4) 스프링 카프카 스프링 카프카 : 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리를 의미함 4-4-1) 스프링 카프카 프로듀서 카프카 템플릿 클래스를 통해서 데이터를 전송할 수 있음. [카프카 템플릿을 사용하는 방법] 1) 기본 카프카 템플릿을 사용하는 방법 [application.yaml] spring: kafka: producer: bootstrap-servers: my-kafka:9092 acks: all @SpringBootApplication public class DefaultKafkaProducer implements CommandLineRunner { private static String TOPIC_NAME = "test"; @Autowired pri.. 더보기
4장 카프카 상세 개념 설명 4-1) 토픽과 파티션 카프카에서 토픽은 가장 중요한 역할이며 토픽의 파티션 개수는 카프카의 성능과 관련이 많음 4-1-1)적정 파티션 개수 - 고려사항 : 데이터 처리량, 메시지 키 사용 여부, 브로커 & 컨슈머 영향도 1. 데이터 처리량 파티션 : 카프카 병렬처리의 핵심, 파티션-컨슈머 1:1 매핑임 => 그러므로 파티션 개수를 정할때 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는게 중요함. 데이터 처리 속도를 올리는 방법 1) 컨슈머 처리량을 늘리는 방법 - 컨슈머 서버의 사양을 늘리거나 GC 튜닝 등을 활용할 수 있으나 컨슈머 특성상 다른 시스템(=오라클, 하둡..)과 연동하여 데이터 처리함으로 한계 존재 2) 파티션 개수 늘리는 방법 - 가장 확실한 방법임 프로듀서가 보내는 데이터양보다 파.. 더보기
3장 카프카 기본 개념 설명 3-1) 카프카 브로커, 클러스터, 주키퍼 브로커 : 클라이언트와 데이터를 주고받는 주체, 데이터 분산 저장으로 장애 발생에 대한 대응이 가능하도록 도와주는 애플리케이션 (한 클러스터(=렉)에 3대 이상의 브로커로 운영하길 권장함 - 클러스터로 묶인 브로커끼린 데이터 분산 저장 및 복제하는 역할) 프로듀서 -> 브로커 -> 컨슈머 관계로 데이터를 주고받는다. 프로듀서 : 데이터 전송 브로커 : 요청받은 토픽의 파티션에 데이터 저장 및 컨슈머가 데이터 요청하는 경우 데이터 전달 컨슈머 : 데이터 요청 config/server.properties의 log.dir 옵션에 정의된 디렉토리에 데이터를 저장함 카프카는 별도 db나 캐시 메모리를 사용하지 않고 파일 시스템에 데이터를 저장하기 때문에 파일 입출력으로 .. 더보기
자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 3 대표적으로 테스트하기 어려운 코드 1. 내부 API : Random, Shuffle, 날짜 2. 외부 세계 : 외부 Rest API, 데이터베이스 API 테스트 힘든 코드 리펙토링 방법 테스트하기 힘든 코드로 랜덤 값으로 자동자 이동에 대한 단위테스트 케이스를 예시로 보면서 어떻게 작성함으로써 테스트 코드 작성이 가능한지 설명해주셨다. 먼저 아래와 같은 코드는 테스트를 실행할때마다 다른 랜덤 값으로 실행됨으로 결과를 예측하기 어렵고 테스트가 성공한게 맞는지 판단하기 어렵다 다음과 같은 방법으로 코드를 개선할 수 있다. 1. Car 클래스의 move 메소드를 protected 접근자 제한으로 변경 아래와 같이 test 클래스에서 move 메소드를 오버라이딩함으로써 테스트가 가능하다. 2. Car 클래스의 .. 더보기
[Effective JAVA] Item 16 public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라 class Point { public double x; public double y; } 위와 같은 퇴보한 클래스는 데이터 필드를 직접 접근할 수 있음으로 캡슐화의 이점을 제공할 수 없다. class Point { private double x; private double y; public Point(double x, double y){ this.x = x; this.y = y; } public double getx(){ return this.x; } public double gety(){ return this.y; } public void setx(double x){ this.x = x; } public void sety(double y){ this.y = y; } } 이렇게 패키지 바깥에서 접근할 수.. 더보기

반응형