분류 전체보기 38

카프카 파티션과 컨슈머 인스턴스

Q  컨슈머 인스턴스 안에 여러 파티션이잇는건가?  컨슈머 인스턴스 여러개는 어떻게 만들까?  A Kafka에서 컨슈머 인스턴스와 파티션의 개념을 이해하는 것이 중요합니다. 각 토픽은 여러 개의 파티션으로 나뉘어져 있으며, 각 파티션은 순서가 보장된 메시지 스트림을 나타냅니다. 컨슈머 그룹 내에서 각 컨슈머 인스턴스는 하나 이상의 파티션을 소비합니다.컨슈머 인스턴스 내 여러 파티션하나의 컨슈머 인스턴스는 여러 파티션으로부터 메시지를 소비할 수 있습니다. 이는 Kafka가 자동으로 관리해 주는 기능입니다. 예를 들어, 만약 하나의 컨슈머 인스턴스가 있고, 하나의 토픽이 3개의 파티션을 가지고 있다면, 그 컨슈머 인스턴스는 3개의 파티션으로부터 메시지를 소비하게 됩니다.여러 컨슈머 인스턴스 생성여러 컨슈머 ..

카테고리 없음 2024.07.01

카프카 토픽 으로 데이터 전송 예시

오늘 알아볼 기능은 특정 게시물에 대한 '좋아요' 이벤트를 Kafka 토픽으로 전송하는 기능 입니다!HTTP POST 요청 처리: /like 엔드포인트로 들어오는 POST 요청을 처리합니다.요청 파라미터 및 바디:@RequestParam String postId: 요청 URL에 포함된 postId 파라미터를 받아옵니다.@RequestBody String likeEvent: 요청 바디에 포함된 likeEvent 데이터를 받아옵니다.Kafka 토픽 구성: postId를 사용하여 동적으로 Kafka 토픽 이름을 생성합니다. 예를 들어, postId가 "123"이라면, 토픽 이름은 "like-topic-123"이 됩니다.메시지 전송: kafkaTemplate.send(topic, likeEvent)를 호출하여 ..

카테고리 없음 2024.07.01

springboot 에서 redis pub sub 활용한 메시지 브로커 설정

1. Redis 의존성 추가먼저 build.gradle 또는 pom.xml 파일에 Redis 관련 의존성을 추가합니다.build.gradlegroovydependencies { implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-websocket' implementation 'org.springframework.boot:spring-boot-starter-redis'}pom.xmlxml org.springframework.boot spring-boot-starter-dat..

카테고리 없음 2024.07.01

spring securtiy + 인증 서버 로그인 로직

인증 과정 흐름클라이언트 요청:사용자가 로그인 폼에 사용자 이름과 비밀번호를 입력합니다.클라이언트(웹 브라우저 또는 모바일 앱)가 이 자격 증명을 포함하여 인증 서버에 로그인 요청을 보냅니다.인증 서버 처리:인증 서버는 요청을 수신하고, 사용자 이름과 비밀번호를 추출합니다.데이터베이스에서 해당 사용자 이름에 대한 정보를 조회합니다.데이터베이스에 저장된 비밀번호(일반적으로 해시된 형태)와 사용자가 입력한 비밀번호를 비교합니다.자격 증명 확인:비밀번호가 일치하면, 사용자가 유효한 자격 증명을 제공한 것으로 간주됩니다.비밀번호가 일치하지 않으면, 인증 실패로 간주하고 적절한 오류 메시지를 반환합니다.JWT 토큰 발급:자격 증명이 유효하다면, 인증 서버는 JWT 토큰을 생성합니다.JWT 토큰에는 사용자 정보와 ..

카테고리 없음 2024.07.01

api gateway 사용시 로그인 url 처리

로그인 경로와 같이 인증이 필요 없는 경로는 별도로 설정해줘야 합니다. 이를 위해 특정 경로를 제외하거나, 인증이 필요 없는 경로를 명시적으로 설정하는 방법을 사용할 수 있습니다.1. 인증이 필요 없는 경로 설정application.yml 파일에서 로그인 경로와 같이 인증이 필요 없는 경로를 별도로 설정합니다.yamlspring: cloud: gateway: routes: - id: login_route uri: http://example-service predicates: - Path=/login # 로그인 경로는 인증 필터를 거치지 않음 - id: example_route uri: http:..

카테고리 없음 2024.07.01

api gateway 흐름

Spring Cloud Gateway를 사용하여 설정하면 모든 요청은 게이트웨이를 거치게 됩니다. 게이트웨이는 클라이언트의 요청을 받아서 적절한 백엔드 서비스로 라우팅하는 역할을 합니다. 게이트웨이에서 인증이 성공하면, 요청은 원래 목표로 삼고 있던 백엔드 서비스로 전달됩니다.게이트웨이 흐름클라이언트 요청: 클라이언트가 게이트웨이로 요청을 보냅니다.필터 적용: 게이트웨이에서 설정한 필터가 적용됩니다. 예를 들어, JwtAuthenticationFilter가 적용되어 JWT 토큰을 검증합니다.인증 결과:성공: 필터를 통과하면, 게이트웨이는 요청을 원래 목적지(백엔드 서비스)로 라우팅합니다.실패: 필터에서 인증이 실패하면, 게이트웨이는 에러 응답을 반환합니다.인증 성공 시의 요청 흐름클라이언트 요청:클라이언..

카테고리 없음 2024.07.01

배치처리

Spring Data JPA에서는 findAllBy와 같은 메서드를 사용하여 데이터를 쉽게 조회할 수 있지만, 대량의 데이터를 처리할 때는 배치 처리를 고려하는 것이 좋습니다. 배치 처리는 메모리 사용을 최적화하고, 성능을 향상시키는 데 도움이 됩니다.Batch 처리의 필요성대량의 데이터를 한 번에 가져오거나 처리하려고 하면 메모리 부족이나 성능 저하 문제가 발생할 수 있습니다. 이를 방지하기 위해 배치 처리 방법을 사용하게 됩니다. 배치 처리는 데이터를 일정한 크기로 나누어 처리하는 방법입니다.Spring Data JPA에서 배치 처리 방법Spring Data JPA에서는 배치 처리를 위해 @Query와 Stream, @Modifying, @Transactional 등을 활용할 수 있습니다.1. Str..

카테고리 없음 2024.06.11