분류 전체보기
-
12 days of Apache Kafka - 7. ConsumersKafka 2021. 1. 17. 10:12
www.youtube.com/watch?v=Z9g4jMQwog0 KafkaConsumer 클러스터와 연결. 여러가지 설정을 map 으로 담는다. (몇몇 브로커들 주소, 보안 설정들... 등등) 위는 KafkaProducer 사용원칙과 같다. ConsumerRecords consumer 를 통해서 데이터를 읽어보고, 여러 가지 방식으로 우리가 원하는 메세지만 취할 수 있다. 해당 메세지를 consumerRecords 라는 곳에 받을 수 있다. 그리고 그 안에 consumerRecord 들이 들어있다. ConsumerRecord key-value pair 우리는 위 세가지를 이용하여 다루지만 Consumer 는 많은 일을 한다. connection 관리, 클러스터의 metadata 업데이트 등등... 그리고..
-
12 days of Apache Kafka - 6. ProducersKafka 2021. 1. 17. 10:11
www.youtube.com/watch?v=I7zm3on_cQQ KafkaProducer cluster 와 연결하는데 사용함. 해당 클래스에 설정값이 담긴 map 을 넣어 사용한다. (몇몇 브로커들의 주소, 보안적인 설정들 ...등등) ProducerRecord key-value 를 담고 있음. 개발자로서 신경쓰는 건 위의 두 가지 클래스겠지만 프로듀서는 많은 일을 한다. connetion pool 관리, 네트워크 버퍼링, 브로커로부터 ack 를 기다리는 일, 필요한 메세지를 translate 하는 등등 .. 프로그래머가 신경도 될만큼. 어떤 파티션으로 나눌 것인지 결정하는 것도 프로듀서가 결정한다. 커스텀 스키마를 적용하는 것도 프로듀서가 한다. 파티션 기능은 프로듀서가 담당한다고 봐도 된다. 이 단계..
-
12 days of Apache Kafka - 5. ReplicationKafka 2021. 1. 17. 10:09
www.youtube.com/watch?v=Vo6Mv5YPOJU Partition in One broker 하나의 브로커에만 파티션이 존재한다면, 문제가 생길 확률이 높다. → Partition 의 복제본을 두어야 한다. (다른 브로커에) Follwer replicas Leader replica 가 존재하고, 복제본을 follwer replica 라 부른다. ( 하나의 리더에 N-1 개의 팔로워가 존재한다) 파티션에 쓰든, 읽든 우리는 Leader 만 다룬다. Leader 에 쓰면, 데이터는 팔로워들로 나누어 진다. 이러한 과정은 개발자 입장에서 신경쓸 필요가 없다. (카프카의 관리자 입장이라면... 신경쓸 수 있다.) 또한 내구성면에서 이러한 설정들을 바꿀 수도 있다. 하지만 거의 신경쓰지 않아도 될 ..
-
12 days of Apache Kafka - 3. PartitioningKafka 2021. 1. 17. 10:07
www.youtube.com/watch?v=y9BStKvVzSs 하나의 토픽이 하나의 노드에만 있다면? 확장성 측면에서 문제가 많을 것이다. 노드의 크기만큼만 저장할 수 있게 된다. 경제적인 면으로도 처음부터 엄청 큰 노드를 쓰고 싶지도 않을 것이다. 한 토픽에만 데이터가 몰리고, 읽기와 쓰기가 많다면 하나의 노드에만 엄청난 부하가 몰릴 것이다. Partitioning 위와 같은 상황이 일어나지 않게 카프카는 Partition 을 제공한다. Partition 은 하나의 토픽(로그) 를 여러 개로 쪼개어 카프카 클러스터의 각각 노드에 저장할 수 있게 한다. 또한 어떤 노드에 저장할 지도 결정해준다. key 가 존재하지 않는 message 라면, round robin 방식으로 저장된다. key 가 존재한다면..
-
12 days of Apache Kafka - 2. TopicsKafka 2021. 1. 17. 10:04
www.youtube.com/watch?v=kj9JH3ZdsBQ Topics Kafka 는 Topics (이벤트를 관리하는 단위)을 기반으로 만들어진다. 만약 Topic 에 대해 처음 듣는다면, 관계형 DB 의 table 정도로 생각해도 좋다. Topic 이란 비슷한 이벤트를 담는 컨테이너이다. 보통 개발자는 '비슷함' 을 추상적으로 정의하여 사용한다. Topic 을 여러 주제로 나누어서 각각 담는 방식도 있고, 중복해서 담는 경우도 있다. 예를 들면, 온도조절기를 통해 이벤트를 받는 Topic, 온도 조절기의 이벤트 중 일정 온도 이상의 이벤트만 필터해서 담는 Topic 이 중복으로 존재할 수 있다. Topic 은 Queue ? 카프카의 Topic 은 queue 와는 다르다. Log 라고 보는 것이 맞..
-
12 days of Apache Kafka - 1. IntroductionKafka 2021. 1. 17. 10:01
www.youtube.com/watch?v=qu96DFXtbG4 카프카란 무엇인가? store process 와 실시간 스트리밍 데이터를 대용량으로 다루는 이벤트 스트리밍 플랫폼. 로깅, 스트림, pub-sub 등 다양한 곳에 이용할 수 있다. Event 란 무엇인가? '일어난 일', 어떤 것이든 이벤트가 될 수 있다. 온도 정보.. 등등 과 같은 정보, 날짜가 경과 했음을 알리는 고지서, 사용자가 화면을 클릭하거나 드래그 하는 경우, 마이크로 서비스에서 어떤 변화 등등 모든 것이 이벤트가 될 수 있다. Event = Notification + State 이벤트는 Notification 과 State 로 말할 수 있다. Notificaiton 은 '언제(wheness)' 의 관점으로 어떤 것의 트리거로서..
-
<Spring JPA> 1.22 임베디드 타입JPA 2020. 6. 10. 09:56
임베디드 타입을 보면서 mapped superclass 가 생각났다. 비슷한 관점이면서 다른 관점이다. 임베디드는 정말 단위로서 제공을 하는 느낌, mapped 는 상속의 개념. 경우에 따라 잘 활용하면 될 것 같다. 쿼리나 기능적으로 큰 의미는 없어보여 별 쓸말이 없다. https://velog.io/@codemcd/Entity%EC%97%90%EC%84%9C-%EB%A7%A4%ED%95%91-%EC%A0%95%EB%B3%B4-%EB%B6%84%EB%A6%AC%ED%95%98%EA%B8%B0 Entity에서 매핑 정보 분리하기 엔티티를 구현하다보면 여러 엔티티의 공통된 필드를 분리하고 싶은 경우가 있다. 이 때 사용할 수 있는 어노테이션을 정리해보려고 한다. 엔티티를 분리할 때도 상속과 조합을 사용할 ..