728x90
반응형

 

 

 Kafka 공부하면서 끄적여보기

 - Kafka는 Producer, Broker, Consumer를 따로따로 공부해야한다. 

728x90
반응형

'IT Diary > # 끄적이며 공부하기' 카테고리의 다른 글

Message Queue 와 ApacheKafka  (0) 2022.08.13
DNS  (0) 2021.09.10
Java는 뭘까?  (0) 2021.08.22
728x90
반응형

호출순서

생성자 호출 -> 의존성 주입 완료(@Autowired , @RequiredArgsConstructor ) -> @PostConstruct

  • 생성자가 호출되었을 때, bean은 초기화 전이다.(DI가 이루어 지기 전)
  • bean lifeCycle에서 오직 한 번만 수행된다. (여러 번 초기화 방지)

 

@PostConstruct

- 객체의 초기화 부분
- 객체가 생성된 후 별도의 초기화 작업을 위해 실행하는 메소드를 선언한다.
- @PostConstruct 어노테이션을 설정해놓은 init 메소드는 WAS가 띄워질 때 실행된다.

 

@PreDestroy

- 마지막 소멸 단계
- 스프링 컨테이너에서 객체(빈)를 제거하기 전에 해야할 작업이 있다면 메소드위에 사용하는 어노테이션.
- close() 하기 직전에 실행 -> ((AbstractApplicationContext) context).close()



728x90
반응형

'IT Diary > # JAVA' 카테고리의 다른 글

WEB, WAS 그리고 Servlet  (0) 2022.05.25
[JAVA] Garbage Colletion 의 동작원리  (0) 2022.05.01
[ JAVA ] JVM 의 정의  (0) 2022.05.01
Stream 뿌셔보기  (0) 2022.01.12
스택과 큐  (0) 2021.08.27
728x90
반응형

 

 

 

Message Queue 의 정의 

메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중에 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다. 메시지 지향 미들웨어란 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다. 여기서 메시지란 요청, 응답, 오류 메시지 혹은 단순한 정보 등의 작은 데이터가 될 수 있다.

 

큐는 여러 컴포넌트들이 데이터를 생성하고 또 저장하고 사용하는 과정에서 일종의 버퍼 역할을 수행함. 

큐가 있음으로 producer과 consumer간의 속도가 다를 때, 둘 중 어느 한 컴포넌트가 네트워크에 연결되지 못한 상황 등에 대응이 가능

 

 

Message Queue 의 장/단점

장점

  • 비동기(Asynchronous): Queue에 넣어두기 때문에 나중에 처리할 수 있다.
  • 분리 또는 비동조(Decoupling): 애플리케이션과 분리할 수 있다.
  • 탄력성(Resilience): 일부가 실패 시 전체에 영향을 받지 않는다.
  • 과잉(Redundancy): 실패 할 경우 재실행이 가능하다.
  • 보증(Guarantees): 작업이 처리된 걸 확인할 수 있다.
  • 확장성(Scalable): 다수의 프로세스들이 큐에 메시지를 보낼 수 있다.

단점

  • 아키텍처에 외부 구성 요소인 메시지 전송 에이전트를 필요로 한다는 점. 일반적으로 새로운 요소를 추가하면 시스템 성능이 저하되고, 신뢰성도 떨어진다.
  • 시스템 전체로 볼 때 관리가 어렵고 비용도 더 들어가게 된다.
  • 즉각적인 서비스가 불가능

Message Queue 를 사용하는 케이스

  • 다양한 어플리케이션에서 비동기 통신이 가능
  • 이메일 발송 및 문서 업도르가 가능
  • 많은 양의 프로세스들을 처리할 수 있음
  • 다른 곳의 API로 부터 데이터 송수신이 가능

 

 

Message Queue 중에서도 가장 많이 쓰이는게 요 Apache Kafka 가 아닐까 한다...

 

 

1. Kafka의 정의

 

Apache Kafka는 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 오픈 소스 분산 이벤트 스트리밍 플랫폼(distributed event streaming platform)입니다.

대용량 실시간 로그 처리에 특화되어 설계된 메시징 시스템으로 시스템 대비 TPS가 우수합니다.

  • Publisher / Subscriber
  • 모델확장성분산 처리 (Partitioning)
  • 디스크 순차 저장 및 처리
  • 고가용성 / 확장성
    • Kafka 는 Cluster 로 작동하기 때문에  고가용성이 제공됨
    • Cluster : 각기 다른 서버들을 하나로 묶어서 하나의 시스템같이 작동하게 함
    • 고가용성 : 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질
기존의 메시징 시스템은 Broker가 Consumer에게 메시지를 Push 해주는 방식인 반면, 
Kafka는 Consumer가 Broker로부터 직접 메시지를 가지고 가는 Pull 방식으로 동작

즉, 기존 메시지 큐의 다양한 기능을 포기하고 대용량 메시지를 처리하기 위한 기능을 제공하는 메시지 큐  



 

 

 

 

 

출처

https://goyunji.tistory.com/125 
https://12bme.tistory.com/176

728x90
반응형

'IT Diary > # 끄적이며 공부하기' 카테고리의 다른 글

Kafka 조금은 친해져보기  (0) 2023.01.04
DNS  (0) 2021.09.10
Java는 뭘까?  (0) 2021.08.22
728x90
반응형

 

트랜잭션의 정의 

 

트랜잭션(Transaction)은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

 

 

예시)

A라는 사람이 B라는 사람에게 사과 1개를 주고  B가 그 사과를 받은 경우, 이 거래 기록은 더 이상 작게 쪼갤 수가 없는 하나의 트랜잭션을 구성한다. 만약 A는 사과를 건네 주었으나 B는 사과를 받지 못했다면 그 거래는 성립되지 않는다. 이처럼 A가 사과를 주는 행위와 B가 사과를 받는 행위는 별개로 분리될 수 없으며 하나의 거래내역으로 처리되어야 하는 단일 거래이다. 이런 거래의 최소 단위를 트랜잭션이라고 한다. 

 

트랜잭션의 4가지 특성

1. Atomicity (원자성)

  • 트랜잭션의 연산은 반드시 모두 반영되도록 완료되거나, 아니면 전혀 반영되지 않도록 복구되어야한다.
  • (ALL OR NOTHING)

2. Consistency (일관성)

  • 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.

3. Isolation (독립성, 격리성)

  • 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.

4. Durablility (영속성, 지속성) 

  • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

 

@Transactional 어노테이션

  • 클래스나 메서드에서 사용할 경우, 해당 범위 내 매서드가 트랜잭션이 되도록 보장해준다. 
  • @Transactional으로 생성된 프록시 객체는 @Transactional이 적용된 메소드가 호출될 경우,
  • PlatformTransactionManager를 사용하여 트랜잭션을 시작하고, 정상 여부에 따라 Commit/Rollback 동작을 수행한다.

 

 

 

 

참고

출처: https://data-make.tistory.com/738 [Data Makes Our Future:티스토리]

https://hanamon.kr/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%98-acid-%EC%84%B1%EC%A7%88/

 

[데이터베이스] 트랜잭션의 ACID 성질 - 하나몬

트랜잭션이란 여러 개의 작업을 하나로 묶은 실행 유닛을 말한다. 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다. ACID는 데이터베이스 내에서 일어나는 하나의 트랜잭션(transaction)의 안

hanamon.kr

http://wiki.hash.kr/index.php/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98

 

트랜잭션 - 해시넷

트랜잭션(transaction)이란 "쪼갤 수 없는 업무 처리의 최소 단위"를 말한다. 거래내역이라고도 한다. '트렌젝션'이 아니라 '트랜잭션'이 올바른 표기법이다. 영어로 간략히 Tx라고 표기하기도 한다.

wiki.hash.kr

 

728x90
반응형

'IT Diary > # JPA' 카테고리의 다른 글

JPA ( Java Persistence API ) 의 정의  (0) 2022.01.08

+ Recent posts