Prodcuer애플리케이션이 카프카에 메시지를 써야 하는 상황에는 여러 가지가 있을 수 있다. 감사 혹은 분석을 목적으로 한 사용자 행동 기록, 성능 메트릭 기록, 로그 메시지 저장, 스마트 가전에서의 정보 수집, 다른 애플리케이션과의 비동기적(asynchronous) 통신 수행, 임의의 정보를 데이터베이스에 저장하기 전 버퍼링 등이 있다.이러한 사용 사례들은 목적이 다양한 만큼 요구 조건 역시 다양하다. 신용카드 트랜잭션 처리하는 경우에는 어떠한 메시지 유실이나 중복도 허용되지 않으면서 지연 시간은 낮고, 처리율은 매우 높아야 한다. 반대로 웹사이트에서 생성되는 클릭 정보를 저장하는 경우에는 조금 유실되거나 중복이 허용될 수 있고, 사용자가 서비스를 이용하는데 문제만 없다면 메시지가 카프카에 도달하는데..
Kafka모든 애플리케이션은 의미가 있는 데이터를 만들고, 그 다음 처리되어야 하는 작업과 같이 뭔가 중요한 정보를 담고 있다. 따라서 해당 데이터에 알기 위해서는 데이터를 생성된 곳에서 분석할 수 있는 곳으로 옮겨야 하는 만큼 파이프라인(pipeline)이 중요한 핵심적인 요소가 된다고 할 수 있다. 실제 링크드인에서 하루 4.5조 개 이상의 이벤트 스트림을 처리하고 있기 때문에 기존의 Messaging Platform(ex: MQ)로는 처리가 불가능하여 데이터(이벤트) 스트림 처리를 위해 카프카(Kafka)가 개발되었다. Kafka vs RabbitMQKafka와 RabbitMQ 둘 다 메시지 전송 플랫폼을 제공하지만 위 그래프에서도 볼 수 있듯이 카프카가 초당 600MB로 처리량이 훨씬 높은 것을 ..
분산 환경에서의 트랜잭션모놀리식 아키텍처(Monolithic Architecture)의 일관성을 보장하기 위해 관계형 데이터베이스를 공유하는 것이 보통이다. 하나의 DB 트랜잭션으로 처리하는 경우에는 개발자가 ACID(원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability))을 보장하는 작업이 매우 단순해진다. 마이크로서비스 아키텍처도 마찬가지로 단일 서비스 내부의 트랜잭션은 ACID를 보장하지만, 여러 서비스의 데이터를 업데이트하는 트랜잭션을 구현 시 각 서비스마다 데이터베이스를 가지고 있기 때문에 데이터 일관성을 보장하기 까다로워진다. 분산 시스템 환경에서 트랜잭션과 데이터 일관성을 다루는 방법에 대해 알아보자. 2PC하나의 트랜잭션으로 데..
- Total
- Today
- Yesterday
- 분산 락
- 트랜잭션
- socket
- TDD
- 넥스트스탭
- 스프링 네티
- 비관적 락
- NeXTSTEP
- 네티 스레딩 모델
- jvm 메모리 구조
- 구름톤챌린지
- annotation
- sql
- spring session
- redis session
- 람다
- mysql
- Kafka
- nginx
- 자바 네티
- transaction
- Synchronized
- spring webflux
- postgresql
- mdcfilter
- 카프카
- 구름톤 챌린지
- pessimistic lock
- Java
- nginx configuration
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |