-
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) 처리와 비동기 처리가 동시에 이뤄지지..
-
몰입Books/자기계발 2020. 9. 14. 01:46
https://book.naver.com/bookdb/book_detail.nhn?bid=4320224 몰입 1 간절히 원하는 것을 이루기 위해 잠재력을 깨우는 '몰입'을 하라!뉴턴, 아인슈타인, 에디슨과 같은 과학자들, 워렌 버핏과 같은 투자자들, 빌 게이츠와 같은 세계적인 CEO들… 이들처럼 각자의 분 book.naver.com 몰입 - 황농문 지음, 요즘들어서 하나의 일에 집중을 잘 못하고 있는것 같다. 특히, 집중을 해야할 타이밍에 주변 환경에 눈을 돌리면서 불필요한 다른일(유튜브나 게임같은것들..)을 해버리기 일쑤고, 해야할 일에 쉽게 집중하지 못하는 문제가 있었다. 이런 문제를 안고있던 찰나, 컴퓨터를 하다가 우연히 내 방 책장 한 켠에 꽂혀있던 '몰입'이라는 책을 보았고, 이 책을 통해 혹시..
-
2. Observer Pattern카테고리 없음 2020. 4. 13. 13:04
1. 옵저버 패턴? 위키백과 정의) 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. 발행/구독 모델로 알려져 있기도 하다. 나만의 정의) 출판사(subject) + 구독자(observer) = 옵저버 패턴 출판사를 주제(subject), 구독자를 옵저버(observer)라고 부른다는 것만 외우자. 현실적인 예와 비교해보자면, 구독자들이 출판사에 구독을 신청하면, 출판사는 새로운 책이 출간될 때마다 구독자들에게 책을 나눠주고 구독자들이 구독을 원치않으면 구독을 취소할..
-
Filter, Interceptor 정리SW개발/Spring 2020. 3. 22. 21:52
이번에 개발중인 제품에서 토큰인증과 권한을 filter에서 모두 처리하면서 Error가 인증관련 문제로 나타나는 문제가 있었다. 그리고 이 부분은 결과적으로 Filter에서는 인증을, Interceptor에서는 권한체크를 담당하도록 구조를 변경하였는데, 이와 관련하여 Filter와 Interceptor가 각각 어떠한 일을 하는지 정리하고자한다. 1. 개요 클라이언트의 요청(servlet request)이 서버의 controller에 도달하기 전에 위의 그림과 같은 단계를 거치게 된다. 그냥 요청하면 컨트롤러에서 바로 처리해주면 될텐데 굳이 저러한 과정을 거치는 이유는 무엇일까? 생각해보면 간단하다. controller에 도착하기 이전에 미리 해주어야 할 것들이 있기 때문이다. 예를들어, 로그인을 할 때,..