Programming 131

[kafka] 기본 용어 정리

카프카 용어 정리 카프카(kafka) 아파치 프로젝트 애플리케이션 이름, 클러스터 구성이 가능하며 카프카 클러스터라고 부른다. 카프카 클러스터는 브로커, 주키퍼, 토픽, 파티션, 리더, 팔로워로 이루어져 있다. 주키퍼(Zookeeper) 주키퍼는 분산 코디네이션 시스템이다. 카프카 브로커를 하나의 클러스터로 코티네이팅 하는 역할을 하며 나중에 이야기할 카프카 클러스터의리더(Leader)를 발탁하는 방식도 주키퍼가 제공하는 기능이다. 브로커(Broker) 카프카 애플리케이션이 설치되어 있는 서버 또는 노드 토픽(Topic) 프로듀서와 컨슈머들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임으로 사용한다. 토픽은 카프카 클러스터에서 여러개 만들 수 있으며 하나의 토픽은 1개 이상의 (Parition)으..

Programming/Kafka 2020.04.11

[kafka] 카프카 특징

1. 카프카 특징 # 대표적인 특징 프로듀서와 컨슈머의 분리 멀티 프로듀서, 멀티 컨슈머 디스크에 메시지 저장 확장성 높은 성능 1. 프로듀서와 컨슈머의 분리 카프카는 메시징 전송방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 펍/섭 방식 적용. 이런 느슨한 결합을 통해 어느 한쪽 시스템에서 문제가 발생하더라도 서로 의존성이 없으므로 연쇄작용이 발생할 확률은 매우 낮음 장점 : 컨슈머의 서버가 하나더 추가 되더라도 카프카로만 보내면 되기 때문에 서버 추가에 대한 부담도 줄일 수 있음 2. 멀티 프로듀서, 멀티 컨슈머 카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어 있음. 하나의 프로듀서가 하나의 토픽에만 메시지를 보내는 것이 아니라, 하나 또는 하나이상의 토픽으..

Programming/Kafka 2020.04.10

[kafka] 카프카의 동작 방식과 원리

1. 메세징 시스템과 PUB/SUB 모델 카프카는 기본적으로 메시징 서버로 동작한다. 따라서 카프카의 동작 방식을 설명하기에 앞서 먼저 메시징 시스템에대해 알아보자. 메세지라고불리는 데이터 단위를 보내는 측(Publisher 또는 Producer)에서 카프카에 토픽이라는 각각의 메시지 장소에 데이터를 저장하면, 가져가는 측(Subscriber 또는 Consumer)이 원하는 토픽에서 데이터를 가져가에 되어 있다. 중앙에 메시지 시스템 서버를 두고 이렇게 메세지를 보내고(Publish) 받는(Consumer) 형태의 통신을 Pub/Sub 모델이라고 한다. Pub/Sub 모델이 아닌 일반적인 형태의 네트워크 통신은 아래와 같이 구성된다. 전송 속도와 전송 결과를 신속하게 알 수 있는 장점이 있는 반면 특정 ..

Programming/Kafka 2020.04.09

[kafka] 링크드인과 카프카 탄생배경

카프카 탄생 배경 미국의 대표적인 비즈니스 인맥 소셜네트워크 서비스인 링크드인 에서 처음 출발한 기술로서, 링크드인 사이트가 급속도로 성장하면서 발생하는 내부 여러 이슈들을 해결하기 위해 탄생하였다. 과거 링크드인 시스템 구성도 위의 아키텍쳐 처럼 엔드투엔드(End to End)연결 방식의 아키텍처는 많은 문제점이 있다. 첫번째로는 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없으니 복잡도는 증가할 수 밖에 없다. 또한 문제가 발생했을때, 조치를 취하려면 여러 시스템에서 확인해야한다. 두번째로는 데이터 파이프라인 관리의 어려움이다. 실시간 트랜잭션 데이터 베이스, 아파치 하둡, 모니터링 시스템, 키-값 저장소 등 많은 데이터 시스템들이 있는데, 이 시스템에 저장된..

Programming/Kafka 2020.04.08

[JAVA] Instance Time

개념 시간을 타임스탬프로 다루기 위해서 사용한다. 타임스탬프는 UTC 기준으로 EPOCH TIME(1970-01-01 00:00:00)을 0으로 정하고, 그로부터 경과된 시간을 양수 또는 음수의 나노초 단위로 표현한다. Date형으로변환 가능하다 항상 UTC(+0:00) Timezone을 사용하기 때문에 주의해야 한다. (시간대를 고려해야 할 경우는 OffsetDateTime사용한다) immutable 하면서 thread safe하기 때문에 쓰레드간 경합 상황에서도 사용이 가능하다. 예제 현재 시간의 타임스탬프 값을 구하기 1 2 3 4 5 6 7 8 Instant current = Instant.now(); System.out.println("Current Instant = "+ current); lo..

Programming/Java 2020.04.07

[colorscripter] 크롬 붙여넣기 오류

블로그에 올리는 소스 코드의 가독성을 위해 ColorScripter를 사용하려다가 복사 붙여넣기를 해도 원하는대로 안되서 해매다가 해결방법 공유합니다. [ 현상 ] 1. 오른쪽 하단에 클립보드에 복사 2. tistory 글쓰기에 복사하면 내가 원하는 테마가 아닌 흰 표형식으로 붙여넣기가 된다. [ 해결 방법 ] 1. colorscripter 메뉴 중 세부 설정 클릭 2. 세부설정에서 HTML태그 자체 복사 체크 후 저장 3. 다시 클립보드에 복사 후 붙여넣기, 오른쪽 열은 삭제해 줌. 4. 결과 PS. 크롬업데이트나 IE 문제인가 싶었는데 설정만 바꿔주면 되더라구요!ㅠㅠ

[kafka] window에서 사용시 java.nio.file.FileSystemException

현상 window에서 kafka 정상 시작은 되었지만, 몇일 뒤 아래와 같은 오류로 kafka 강제 종료되었다. [2020-03-25 09:34:24,966] INFO Starting server (org.apache.zookeeper.server.ZooKeeperServerMain) ................. [2020-04-01 10:52:09,979] ERROR Error while deleting segments for test-0 in dir D:\tmp\kafka-logs (kafka.server.LogDirFailureChannel) java.nio.file.FileSystemException: D:\tmp\kafka-logs\test-0\00000000000000000000.timei..

Programming/Kafka 2020.04.03

[kafka] 카프카란 ? 비동기 처리 메세지 큐의 한 종류

카프카 기본 개념 1. 정의 - 비동기 처리를 위한 메시킹 큐의 한 종류 - 프로듀서와 컨슈머로 구성 - 대표적인 비동기 메시징 시스템임 메일과 비슷한 개념 Mail System | Kafka System 보내는 사람 | Producer Mail Server | Kafka Server 받는사람 | Consumer 즉, 보내는 사람은 받는 사람과 상관없이 메일 서버로 메세지를 전송한다. 보낸 메세지는 메일서버에 저장되어 있고, 받는 사람은 언제든지 자기가 원하는 시간에 메일을 받아볼 수 있다. Quickstart 참고사항 아파치 카프카 공식홈페이지의 QuickStart를 따라해볼때 주의사항입니다. 1. 서버는 최소 3대 구성하기 주키퍼 - 3EA 카프카 - 3EA 주키퍼는 카프카의 노드를 관리해주고, 토픽..

Programming/Kafka 2020.04.02

[JAVA] protected 접근 단계

개념 protected 접근 단계는 기본 접근 단계하고 거의 똑같은데, 하위클래스에서 protected로 지정된 것도 상속할수 있다는 점이 다르다. 그 하위클래스가 상위클래스가 속해 있는 패키지와 다른 패키지에 속해 있는 경우도 해당된다. 그 점을 제외하면 똑같다. protected는 하위 클래스가 상위클래스와 다른 패키지에 들어 있어도 메소드나 생성자와 같은 클래스 안에 있는 것을 상속할 수 있는 기능을 제공해 준다. 특징 설계 방법에 따라 protected 접근 단계를 사용하는 경우도 있고 언젠가는 꼭 그 접근 단계가 필요한 경우도 있다. protected의 특징 가운데 (다른 접근 단계와는 달리) protected 접근 단계는 상속에만 적용된다는 점이 있다. 다른 패키지에 들어있는 하위클래스에 상위..

Programming/Java 2020.04.01