SW개발/Kafka
-
7. Kafka 운영SW개발/Kafka 2020. 9. 21. 02:03
1. 필수 명령어 더보기 1.1 토픽 생성 $ kafka-topics.sh --zookeeper ${list} --replication-factor 1 --partitions 1 --topic test-topic --create 1.2 토픽 리스트 확인 $ kafka-topics.sh --zookeeper ${list} --list 1.3 토픽 상세보기 $ kafka-topics.sh --zookeeper ${list} --topic test-topic --describe 1.4 토픽 설정 변경 $ kafka-configs.sh --zookeeper ${list} --alter ${이하 alter에서 사용가능한 옵션들} 예시1) 보관주기(retention) 변경 $ kafka-configs.sh --zo..
-
6. ConsumerSW개발/Kafka 2020. 9. 20. 23:45
1. 주요기능 특정 파티션을 관리하고 있는 파티션 리더에게 메세지 가져오기 요청을 함 2. 종류 2.1 Old Consumer Consumer의 Offset 저장을 주키퍼에 함 2.2 New Consumer Consumer의 Offset 저장을 토픽에 함(0.9 버전 이후) 3. 주요 옵션 bootstrap.servers fetch.min.bytes - 한 번에 가져올 수 있는 최소 데이터 사이즈 group.id - consumer가 속한 consumer group 식별자 enable.auto.commit auto.offset.reset (3개 방식 존재) earliest - offset이 없는 경우 가장 초기의 offset으로 설정 latest - offset이 없는 경우 가장 마지막의 offset으로..
-
5. Producer (1)SW개발/Kafka 2020. 9. 18. 02:22
1. 요약 2. Producer? 메시지를 생산(Produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션 또는 서버 3. 명령어 테스트 메세지 보내기 /usr/local/kafka/bin/kafka-console-producer.sh --broker-list ${kafka broker명+id}:${port} --topic ${메세지를 보낼 topic명} 메세지 확인 /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server ${kafka명+id}:${port} --topic ${topic명} --from-beginning 4. Java로 Producer 사용해보기 import org.apache.kafka.clients.pr..
-
4. kafka 구조SW개발/Kafka 2020. 9. 17. 00:00
1. 카프카 구조의 특징 1.1 분산 시스템 분산 시스템이란 같은 역할을 하는 여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라고 하며, 분산 시스템의 장점은 아래와 같습니다. 단일 시스템보다 더 높은 성능을 낼 수 있다 운영중인 서버에 장애가 발생하면 같은 그룹의 다른 서버가 일을 대신 처리할 수 있다. 시스템 확장이 용이하다. 1.2 페이지 캐시 OS는 물리적 메모리에 애플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리 일부를 페이지 캐시로 유지해 OS의 전체적인 성능 향상을 높이게 됩니다. 카프카는 이러한 특징을 이용해 빠른 액세스를 하기 위해 OS의 페이지 캐시를 이용하도록 디자인 되었습니다. 1.3 배치 전송 처리 서버와 클라이언트 사이 또는 서버 내부적으로 데이터를 주고받는 과정에서 ..
-
3. Kafka broker의 주요 설정(properties)SW개발/Kafka 2020. 9. 16. 00:00
Kafka broker의 server.properties 파일에는 kafka broker에 대한 여러가지 옵션을 줄 수 있는데, 주요 옵션은 아래와 같습니다. 옵션 설명 broker.id 브로커를 구분하기 위한 ID delete.topic.enable 토픽 삭제 기능을 on/off(enable = 토픽 삭제 기능) default.replication.factor 리플리케이션 팩터(Replication Factor) 옵션을 주지 않았을 경우의 기본값* min.insync.replicas 최소 리플리케이션 팩터 auto.create.topics.enable 존재하지 않는 토픽으로 퍼블리셔가 메시지를 보냈을 때 자동으로 토픽생성 offsets.topic.num.partitions offsets 토픽의 파티션 ..
-
2. zookeeper(주키퍼)SW개발/Kafka 2020. 9. 15. 00:00
1. Zookeeper? 주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템입니다. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공합니다. 2. Ensemble 주키퍼는 그림과 같이 서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 애플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고받게 됩니다. 상태 정보들은 주키퍼의 지노드(znode)라 불리는 곳에 키-값 형태로 저장하고, 지노드에 키-값이 저장된 것을 이용하여 분산 애플리케이션들은 서로 데이터를 주고 받게 됩니다. 참고로, 앙상블로 구성되어 있는 주키퍼는 과반수 방식에 따라 살아 있는 노드..
-
1. Kafka란?SW개발/Kafka 2020. 9. 14. 21:36
1. Kafka? 카프카란 Apache에서 제공하는 분산형 메세지 큐(Message Queue)입니다. 여기서 메세지 큐란, 메시지 지향 미들웨어(Message Oriented Middleware: MOM, 분산 시스템 간 메시지를 주고 받는 기능을 지원하는 소프트웨어나 하드웨어 인프라)를 구현한 것으로, 간단하게 설명하면 여러 모듈들로부터 나오는 데이터를 특정 모듈들에 전달하기 위해 지나가는 중간통로를 의미합니다. 예를들어, 카프카가 개발되기 전 링크드인의 데이터 처리 시스템은 아래 그림과 같이 복잡하게 이루어져있었습니다. 위의 그림은 엔드투엔드(end to end) 연결방식의 아키텍쳐인데, 이 아키텍쳐는 많은 문제점이 있습니다. 첫째로, 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지..