전체 글 410

카프카의 내부 동작 원리

카프카 리플리케이션 리플리케이션 동작 개요 카프카는 브로커의 장애에도 불구하고 연속적으로 안정적인 서비스를 제공함으로써 데이터 유실을 방지하며 유연성을 제공합니다. 리플리케이션 동작을 위해 토픽생성시 필숫값으로 replication factor라는 옵셥을설정해야합니다. 카프카는 리플리케이션 팩터라는 옵션을 이용해 관리자가 지정한 수만큼의 리플리케이션을 가질 수 있기 때문에 N개의 리플리케이션이 있는 경우 N-1까지의 브로커 장애가 발생해도 메시지 손실 없이 안정적으로 메시지를 주고받을 수 있습니다. 리더와 팔로워 토픽 상세보기 명령어를 실행해 보면 출력 내용 중 파티션의 리더 라는 부분이 있습니다. 모두 동일한 리플리케이션이라 하더라도 리더만의 역할이 따로 있기 때문에 카프카에서 리더를 특별히 강조해 표..

kafka 2023.10.19

카프카 환경 구성

AWS 실제 환경 구성 카프카를 실제 운영하는 환경에서는 서비스의 안정성이 최우선이므로 단독 서버 형태로 운영하는 경우는 거의 없고, 대부분 이중화 또는 클러스터 형태로 구성합니다. 주키퍼의 경우 최소수량인 ec2 인스턴스 3대로 구성하고, 카프카의 경우도 최소 수량인 ec2 인스턴스 3대로 구성. 일반적인 운영 환경에서는 배포서버 1대 포함 프라이븟 도메인을 위한 도메인 표시. 환경구성 실습 aws가입/로그인해서 ec2사용 클릭 위 버튼을 통해서 AMI선택화면이 나오는데 이는 인스턴스의 운영체제를 선택하는 화면입니다. Amazon Linux 2AMI 선택. 선택을 하면 인스턴스 유형 선택화면이 나옵니다. 실습과정에선 ec2하나 이상의 애플리케이션을 구동하게 되므로 4GB 용량의 메모리가 지원되는 t2...

kafka 2023.10.19

카프카 기본 개념과 구조/프로듀서 옵션/컨슈머 옵션

카프카를 구성하는 주요 요소 주키퍼(ZooKeeper): 아파치 프로젝트 애플리케이션 이름입니다. 카프카의 * 메타데이터(metadata) 관리 및 브로커의 정상상태 점검(health check)을 담당합니다. 카프카(Kafka) 또는 카프카 클러스터(Kafka cluster): 아파치 프로젝트 애플리케이션 이름입니다. 여러 대의 브로커를 구성한 클러스터를 의미합니다. 브로커(broker): 카프카 애플리케이션이 설치된 서버 또는 노드를 말합니다. 프로듀서(producer): 카프카로 메시지를 보내는 역할을 하는 클라이언트를 총칭합니다. 컨슈머(consumer): 카프카에서 메시지를 꺼내가는 역할을 하는 클라이언트를 총칭합니다. 토픽(topic): 카프카는 메시지 피드들을 토픽으로 구분하고, 각 토픽의 ..

kafka 2023.10.19

카프카 공부노트/주요특징

카프카의 주요 특징 높은 처리량과 낮은 지연시간 카프카를 선택하는 가장 큰 이유가됩니다. 기업 수준으로 커저가는 데이터 처리를 위해 굉장히 우수한 처리량과 낮은 지연시간을 지표에서 확인 할 수 있습니다. 높은 확장성 기업급의 데이터들은 아무리 뛰어난 처리량과 낮은지연시간을 가지고 있다고 해도 한계를 부딪히기 마련입니다. 그럴때 중요한것이 확장성인데 카프카는 손쉬운 확장이 가능하도록 잘 설계된 어플리케이션입니다. 기업을 운영하면서 사업이 다각화 됐을때에도 카프카는 높은 확장성이라는 장점을 발휘할 수 있습니다. 고가용성 카프카는 2013년에 클러스터 내 리플리케이션 기능이 추가되면서 고가용성이 확보됐습니다. 리플리케이션?* 참고 블로그 https://mangkyu.tistory.com/97#:~:text=%..

kafka 2023.10.19

카프카 공부노트/개요편

팀장님께서 카프카스터디가 있는데 함께 해 보는것이 어떠냐고 하셔서 신입에 애기개발자인 저는 고민하지도 않고 덥석 하겠다고 해버렸습니다. 신입의 패기와 욕심은 이런것을까요,,? ㅎㅎ MSA,EDA 기반 설계에서 카프카는 핵심 시스템으로 자리잡았다고 합니다. MSA? 마이크로서비스 아키텍처에 대한 정확한 정의는 없다. 하지만 마이크로서비스란 작고, 독립적으로 배포 가능한 각각의 기능을 수행하는 서비스로 구성된 프레임워크라고 할 수 있다. 마이크로서비스는 완전히 독립적으로 배포가 가능하고, 다른 기술 스택(개발 언어, 데이터베이스 등)이 사용 가능한 단일 사업 영역에 초점을 둔다. EDA? 수집한 데이터가 들어왔을 때, 이를 다양한 각도에서 관찰하고 이해하는 과정입니다. 한마디로 데이터를 분석하기 전에 그래프..

kafka 2023.10.19

SpringBoot/java/한글파일(.hwp) 이미지 데이터 바인딩하기

hml 파일에 이미지 바인딩 하기 BINDATALIST에 bindata 등록 hml에 이미지를 등록하기 위해서 위와 같이 BINDATALIST 태그를 찾아서 등록을 해 주어야 합니다 binData에 값이 결국 바인딩될 id값이 됩니다. bindata 등록 위에서 list에 등록 하셨다면 파일 가장 하단에 다음과 같은 태그를 작성해서 myTag로 위치를 지정한다음 이미지파일을 base64로 인코딩해서 replace시켜주면 끝입니다. list에 등록해 놓은 "2" 와 같은 값 java 코드 자세한 코드는 위 링크에 있습니다. 해당 글에서는 이미지 바인딩하는 부분만 작성돼 있습니다. String utf8String = Base64.getEncoder().encodeToString(imageBytes); Nod..

JAVA,객체지향 2023.09.06

java map안에 map 찾기

map안에 map 찾기 Map map = new HashMap(); Map map2 = new HashMap();map2.put("test", "123"); map2.put("test2", "hello"); map.put("resultMap", map2); ..map.get("resultMap")이런식으로하면 {test=123, test2=hello}이렇게 꺼내지긴하겠지만그안에있는 test나 test2를 꺼낼려면 어떻게 할까? 답 String o = ((HashMap) result.get(arg)).get("test").toString(); 즉 맵안에 맵이 있으니 꺼낼때도 맵을 한번 감싸서 꺼내면 되는 것 이였습니다..

JAVA,객체지향 2023.09.06

java Enum , 열거형 비교

Enum은 equals 로 비교할 필요가 없다?! enum은 equals 메서드를 쓸 필요가 없다고 하셨습니다. 열거 타입은 인스턴스들이 고정되어 있으므로 간단하게 ==을 사용하면 됩니다. equals 를 실행한다고 해도 결국 == 검사를 수행하게 됩니다. 게다가 == 비교를 하는 편이 코드도 간단해지고 직관적이기 때문에 상황에 따라 선택해서 컨벤션을 맞추는 것이 좋겠습니다. Enum은 toString도 구현할 필요가 없다?! 열거 객체의 이름 주는 toString 메서드가 자동으로 만들어지기 때문입니다. 그리고 toString의 반대 역할을 하는 valueOf 메서드도 있다는 것을 기억해 두면 좋겠습니다. 그리고 존재하긴 하지만 사용하는 것을 조심해야 하는 메서드로 ordinal 이 있습니다.

JAVA,객체지향 2023.09.06