분류 전체보기 1341

Consumer Group과 Consumer

Consumer Group과 Consumer모든 Consumer들은 단 하나의 Consumer Group에 소속되어야 하며, Consumer Groupdms 1개 이상의 Consumer를 가질 수 있다.파티션의 레코드들은 단 하나의 Consumer에만 할당Consumer Group 내에 Consumer 변화가 있을 시마다 파티션과 Consumer의 조합을 변경하는 Rebalancing 발생하나의 Partition은 반드시 하나의 Consumer에만 할당이 된다(많다고, 여러 Consumer에 할당되는 것이 아니다.)그림 4번 같은 경우 Consumer#4은 놀 수밖에 없다.Consumer Group모든 Consumer들은 단 하나의 Consumer Group에 소속되어야 하며, Consumer Group..

Consumer Group과 Consumer

Consumer Group과 Consumer모든 Consumer들은 단 하나의 Consumer Group에 소속되어야 하며, Consumer Groupdms 1개 이상의 Consumer를 가질 수 있다.파티션의 레코드들은 단 하나의 Consumer에만 할당Consumer Group 내에 Consumer 변화가 있을 시마다 파티션과 Consumer의 조합을 변경하는 Rebalancing 발생하나의 Partition은 반드시 하나의 Consumer에만 할당이 된다(많다고, 여러 Consumer에 할당되는 것이 아니다.)그림 4번 같은 경우 Consumer#4은 놀수 밖에 없다.Consumer Group모든 Consumer들은 단 하나의 Consumer Group에 소속되어야 하며, Consumer Group..

Key가 없는 메시지의 파티션 분배 전략 - 라운드 로빈과 스티키 파티셔닝

Partitionning 동작 과정Partitioner에 메시지가 들어오면 Partition에서 Batch로 메시지를 모아 전달한다.Batch 레벨로 메시지를 전달한다.Key 값을 가지지 않는 메시지 전송 시, 파티션 분배 전략라운드 로빈: kafka 2.4 버전 이전 기본 파티션 분배 전략스티키 파티셔닝: kafka 2.4 버전부터 기본 파티션 분배 전략라운드 로빈라운드 로빈은 최대한 메시지를 파티션에 균일하게 분배하려는 전략으로서 메시지 배치를 순차적으로 다른 파티션으로 전송한다.Batch.size 만큼 쌓이거나, linger.ms가 지나면 자동 전달문제점: 메시지가 배치 데이터를 빨리 채우지 못하면서 전송이 늦어지거나 배치를 다 채우지 못하고 전송하면서, 전송 성능이 떨어지는 문제 발생스티키 파티셔..

여러 개의 파티션을 가지는 메시지

실습1) 3개의 파티션을 가지는 Topic 생성kafka-topics --bootstrap-server localhost:9092 --create --topic multipart-topic --partitions 32) Kafka-Console-Consumer를 수행해서 메시지 읽기 대기kafka-console-consumer --bootstrap-server localhost:9092 --topic multipart-topic3) Topic에 kafka-console-producer 수행하여 메시지 전송kafka-console-producer --bootstrap-server localhost:9092 --topic multipart-topic4) Topic에 kafka-console-consumer를..

Key값을 가지는 메시지의 전송

Key 값을 가지지 않는 메시지 전송메시지는 Producer를 통해 전송시, Partitioner를 통해 토픽의 어떤 파티션으로 전송되어야 할 지 미리 결정된다.Key 값을 가지지 않는 경우 라운드 로빈, 스티키 파티션 등의 파티션 전략등이 선택되어 파티션 별로 메시지가 전송될 수 있음Topic이 여러개의 파티션을 가질 때 메시지의 전송 순서가 보장되지 않은 채로 Consumer에서 읽혀질 수 있음.파티션 내에서는 전송 순서가 보장된다Key 값을 가지는 메시지 전송메시지 key는 업무 로직이나 메시지 Produce / Consume 시, 분산 성능 영향을 고려하여 생성특정 Key 값을 가지는 메시지는 특정 파티션으로 고정되어 전송된다.특정 Key 값을 가지는 메시지는 단일 파티션 내에서 전송 순서가 보장..

Producer의 객체 직렬화(Serializer) 전송의 이해

Producer와 Cunsumer 간의 Serialized Message 전송Producer가 메시지(객체)를 Serializer하여, Byte Array 형식으로 Broker에 전송Consumer가 Byte Array를 받아서 Deseializer를 통해, 메시지(객체) 형태로 변환자바 객체의 Serialization객체를 객체의 유형, 데이터의 포맷, 적용 시스템에 상관없이 이동/저장/복원을 자유롭게 하기 위해서 바이트 배열 형태로 저장하는 것객체는 Serialization과 Deserialization을 통해서 System to System 또는 서로 다른 저장 영역에 이동/저장/복원을 자유롭게 수행한다.Serialization을 통해서 객체가 바이트 스트림으로 변환되어 네트워크를 통해 손쉽게 데이..

Producer와 Consumer

Producer와 Consumerproducer는 Topic에 메시지를 보냄(메시지 write)Producer는 성능/로드밸런싱/가용성/업무 정합성을 고려하여 어떤 브로커의 파티션으로 메시지를 보내야 할지 전략적으로 결정됨Consumer는 Topic에서 메시지를 읽어 들임여러 개의 Consumer들로 구성될 경우 어떤 브로커의 파티션에서 메시지를 읽어 들일지 전략적으로 결정함Producer 상세Consumer 상세Kafka Cunsumer는 poll() 메서드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져옴메시지를 성공적으로 가지고 왔으면 Commit()을 통해서, __consumer_offset에 다음에 읽을 offset 위치를 기재한다.Consumer의 auto.offset.resetc..

Topic과 Partition, 카프카 병렬 분산 처리

TopicTopic은 여러 개의 Partition으로 구성된 일련의 로그 파일RDBMS의 Table과 유사한 기능Topic은 Key와 Value 기반의 메시지 구조이며, Value로 어떤 타입의 메시지도 가능하다.문자열, 숫자값, 객체, JSON.. 등로그 파일과 같이 연속적으로 발생하는 데이터를 저장하는 구조Topic의 특징Topic은 시간의 흐름에 따라 메시지가 순차적으로 물리적인 파일에 Write 된다.Topic과 PartitionTopic은 1개 이상의 파티션을 가질 수 있다.Topic의 Partition은 Kafka의 병렬 성능과 가용성 기능의 핵심 요소이며, 메시지는 병렬 성능과 가용성을 고려한 개별 파티션에 분산 저장된다Topic과 Partition, Offset개별 파티션은 정렬되고 변경할..

발표

스프링 시큐리티 기본 구성인증 필터가 요청을 가로챈다.인증 책임이 인증 관리자에게 위임된다.인증 관리자는 인증 논리를 구현하는 인증 공급자를 이용한다.인증 공급자는 사용자 세부 정보 서비스로 사용자를 찾고 암호 인코더로 암호를 검증한다.인증 결과가 필터에 반환된다.인증된 엔티티에 관한 세부 정보가 보안 컨텍스트에 저장된다.사용자 세부 정보 서비스사용자 관리: UserDetailsService, UserDetailsManager 인터페이스 이용더보기사용자 인증하는 기능만 필요한 경우 UserDetailsService를 구현하고, 사용자 관리하는 기능이 필요한 경우 UserDetailsManager를 구현하면 된다.UserDetailsServicepublic interface UserDetailsServic..

Ch12. OAuth2가 작동하는 방법

OAuth2 프레임워크권한 부여 프레임워크라고 부르는 경우가 많으며, 타사 웹사이트나 웹이 리소스에 접근할 수 있게 허용하는 것이 주된 목적이다.OAuth2는 특정 구현이나 라이브러리가 아니다.더보기참고) Http Basic 문제점: 모든 요청에 자격 증명을 보내야 한다 네트워크를 통해 자격 증명이 자주 공유된다.클라이언트가 자격 증명을 저장해 인증 및 권한 부여 요청과 함께 자격 증명을 서버에 보낼 수 있게 한다.자격 증명을 관리하는 책임을 시스템의 한 구성 요소에 격리한다면 관리하기 쉬워진다.OAuth2 인증 아키텍처의 구성요소구성 요소리소스 서버: 사용자가 소유한 리소스를 호스팅 하는 서버. 리소스는 사용자의 데이터이거나 사용자가 수행할 수 있는 작업일 수 있다.사용자: 리소스 서버가 노출하는 리소..