전체 글 306

[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

[백준] 11399번 자바 ATM

문제 출처 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 접근 방식 및 풀이 - Greedy 알고리즘의 전형적인 문제 - 문제에서도 나왔지만 힌트는 정렬이다. 오름차순으로 정리하여 누적값을 새로운 배열에 넣는다. - 새로운 배열에 있는 값의 합이 ATM의 최소값이다. 소스 코드 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) ..

[백준] 10610번 자바 30

문제 출처 https://www.acmicpc.net/problem/10610 10610번: 30 문제 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한다. 미르코를 도와 그가 만들고 싶어하는 수를 계산하는 프로그램을 작성하라. 입력 N을 입력받는다. N는 최대 105개의 숫자로 구성되어 있으며, 0으로 시작하지 않는다. 출력 미르코가 만들고 싶어하는 수가 존재한다면 그 수를 출력하라. 그 수가 존재하지 않는 www.acmicpc.net 접근 방식 및 풀이 - 30 배수의 수는 10배수이면서 3의배수이면 만족한다. - 10배수는 int 배열중 0이 있는지 없는지..

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

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

Programming/Kafka 2020.04.08

[백준] 11047번 자바 동전 0

문제 출처 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 접근 방식 및 풀이 - 오름차순으로 되어 있는 동전을 내림차순으로 받기위해 n-1부터 배열에 다시 담음. - k원과 배열의 동전의 금액중 k가 더 크면 나눌수 있다. - 나눠서 몫은 count에 나머지는 k에 다시 넣는다. 소스 코드 import java.io.BufferedReader; import java.io.IOEx..

[백준] 커리큘럼 독학 알고리즘 공부

알고리즘을 공부를 위해 백준에서 문제를 풀어보려고 마음을 먹었다. 집중공부시간을 1달정도 잡고, 안경잡이 개발자 youtube 와 알고리즘 문제풀이(PS) 시작하기 블로그에서 소개해준 커리큘럼을 따라서 진행했다. 문제중에는기초적인 출력문제부터 수열에 관련된 문제등등 수학적 지식이 필요한 문제도 있었다. 알고리즘만 공부할수가 없는 상황이라 하루 평균 2~4시간씩 4주를 목표로 잡고 진행했지만, 실제로 마친건 5주정도 걸린것 같다. 공부 기간 2020.3.2 ~ 2020.4.6 코드 모음 Git 주소 : https://github.com/hanbitlog/studybackjun 커리큘럼 정리 내가 백준님과 참고한 블로그에서도 제시한 공부방법은 하나의 문제는 2시간을 넘기지 않으며 이해가 되지 않으면 다른 블..

[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