본문 바로가기

반응형

분류 전체보기

(255)
[Kafka] Kafka Consumer 예제 1. KafkaConsumer Kafka cluster 의 레코드를 사용하는 클라이언트, 컨슈머 객체를 생성하는 클래스이다. 매개변수로 넘겨주는 서버 정보, 데이터 역직렬화 정보, 그룹 ID 등을 설정으로하여 객체를 생성한다. 컨슈머는 poll 메서드를 사용해서 브로커에서 데이터를 가져온다. poll 메서드는 마지막으로 사용한 데이터 이후 입력된 데이터들을 가져온다. poll 메서드는 timeout 을 매개변수로 줄 수 있는데, 만약 레코드가 존재하면 해당 레코드를 반환하지만 timeout 을 초과하면 빈 레코드 집합이 반환된다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터..
[Kafka] Kafka Producer 예제 1. KafkaProducer Kafka cluster 로 record 를 송신하는 클라이언트, 프로듀서 객체를 생성하는 클래스이다. 매개변수로 입력받은 설정에 따라 카프카 클러스터와 연결하여 동작한다. 레코드를 전송하는 메서드는 send() 인데, 이는 비동기로 동작한다. 프로듀서 객체가 정상적으로 동작하기 위해서는 카프카 클러스터 서버 정보와 데이터 직렬화 정보를 입력해주어야 한다. - bootstrap.servers 클라이언트가 레코드를 전송하기 위해서는 레코드가 전송될 토픽의 파티션 정보를 알아햐 한다. 클라이언트가 찾고자 하는 토픽 파티션의 메타데이터를 요청하기 위한 설정으로 클라이언트와 클러스터의 초기 연결을 위해 사용한다. 브로커의 'hostname:port' 정보의 리스트 형태를 가지며, ..
[Kafka] Kafka 기본 개념 1. event streaming 이벤트 스트리밍은 DB, 센서, 모바일 장치, 클라우드 서비스 및 소프트웨어 애플리케이션과 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형식으로 획득하는 방식을 말한다. 이 방식은 이후에 이벤트를 검색할 수 있도록 이벤트 스트림을 저장하고, 실시간으로 이벤트 스트림을 조작, 처리하고 이에 대한 응답을 수행 할 수 있다. 또한 필요한 경우 이벤트 스트림을 다른 목적지로 전달하기도 한다. 이벤트 스트리밍은 데이터의 지속적인 흐름과 해석을 통해 정확한 데이터가 정확한 위치와 시점에 존재하도록 한다. 이러한 이벤트 스트리밍은 실시간 금융거래, 자동차 산업의 차량 실시간 모니터링과 같이 다양한 산업에서 사용할 수 있다. 또한 회사의 여러 부서에서 생성된 데이터를 연결, ..
[JAVA] 쓰레드의 동기화 멀티 쓰레드 프로그램에서는 프로세스의 자원을 여러 쓰레드가 공유한다. 그렇기 때문에 각각의 작업이 다른 작업에게 영향을 끼치게 된다. 이러한 경우 공유 데이터의 변경으로 인해 개발자가 의도했던 결과가 나오지 않을 수 있다. 이러한 문제를 해결하기 위해서 임계영역 (critical section) 과 락 (lock) 개념을 도입하여 한 쓰레드가 작업을 종료할 때까지 다른 쓰레드에게 방해받지 않도록 한다. 공유 데이터를 임계영역으로 지정해놓고, 해당 영역의 lock 을 획득한 쓰레드만이 공유 데이터를 사용할 수 있도록 하여 문제를 해결한다. 이처럼 한 쓰레드가 진행 중인 다른 쓰레드를 방해하지 못하도록 막는 것을 쓰레드의 동기화 (synchronization) 이라고 한다. 자바에서는 synchronized..
[JAVA] 쓰레드 실행제어 1. 쓰레드 우선순위 쓰레드는 우선순위라는 속성을 가지고 있다. 이 우선순위의 값에 따라 쓰레드가 얻는 실행시간이 달라진다. 각 쓰레드가 수행하는 작업의 중요도에 따라 쓰레드의 우선순위를 다르게 지정하여 실행시간을 조절할 수 있다. - 쓰레드의 우선순위 지정 void setPriority(int newPriority) // 쓰레드의 우선순위를 지정한 값으로 변경한다. int getPriority() // 쓰레드의 우선순위를 반환한다. public static final int MAX_PRIORITY = 10; // 최대우선순위 public static final int MIN_PRIORITY = 1; // 최소우선순위 public static final int NORM_PRIORITY = 5; // 보통..
[JAVA] 쓰레드 구현 및 실행 (Thread, Runnable, start(), run()) 1. 쓰레드 구현 쓰레드를 구현하는 방법은 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법, 두가지가 있다. 각각의 방식으로 구현은 다음과 같이 할 수 있다. // Thread 클래스 상속 class ThreadClass extends Thread { // Thread 클래스의 run() 을 오버라이딩 public void run() { ... } } // Runnable 인터페이스 구현 class RunnableClass implements Runnable { // Runnable 인터페이스의 추상메서드 run() 을 구현 public void run() { ... } } 둘 간의 큰 차이는 없지만 Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에 ..
[JAVA] 프로세스와 쓰레드 1. Process, Thread 프로세스란 간단히 말해서 실행중인 프로그램을 의미한다. 프로그램을 실행하면 OS 로부터 실행에 필요한 자원, 메모리를 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원, 그리고 쓰레드로 구성되어 있다. 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 모든 프로세스는 하나 이상의 쓰레드를 가지고 있으며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스, multi-threaded process 라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수는 제한되어 있지 않으나, 쓰레드가 작업을 수행하는데 필요한 메모리가 한계에 다다르면 더이상 쓰레드를 만들 수 없다. - 멀티태스킹과 멀티쓰레딩 현재 ..
[JAVA] Annotation 1. annotation 애너테이션은 주석, 주해, 메모 라는 뜻을 가지고 있다. 자바에서 에너테이션은 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다. '@' 기호를 붙여서 표현하며, 주석처럼 프로그램에 직접적인 영향을 미치지 않으면서 정보를 제공한다. 대표적인 애너테이션으로 @Override, @Test 등을 사용하곤 하는데, 각각 이후에 나오는 소스코드가 오버라이딩을 위한 메서드, 테스트를 위한 메서드임을 알려주는 역할을 한다. 이와같이 JDK 에서 미리 제공하는 애너테이션들을 표준 애너테이션이라고 하는데, 주로 컴파일러를 위한 것들이다. 이외에도 개발자가 직접 애너테이션을 정의할 수 있는데, 이때 메타 에너테이션을 사용하면된다. 2. 표준 애너테이션 자바에서 제공하..

반응형