반응형

Bucket4j를 사용하여 Spring API 속도 제한

1. 개요 이 예제에서는 Bucket4j 를 사용하여 Spring REST API를 제한하는 방법에 중점을 둘 것 입니다. API 속도 제한을 살펴보고 Bucket4j에 대해 학습한 다음 Spring 애플리케이션에서 속도 제한 REST API의 몇 가지 방법을 살펴보겠습니다. 2. API 속도 제한 속도 제한은 API에 대한 액세스를 제한 하는 전략 입니다. 클라이언트가 특정 시간 프레임 내에 만들 수 있는 API 호출 수를 제한합니다. 이는 의도하지 않은 악의적인 남용으로부터 API를 보호하는 데 도움이 됩니다. 속도 제한은 종종 IP 주소를 추적하거나 API 키 또는 액세스 토큰과 같은 보다 비즈니스별 방식으로 API에 적용됩니다. API 개발자로서 클라이언트가 한도에 도달하면 몇 가지 옵션이 있습니..

Spring 2022.12.06

Spring 통합 및 Apache Camel을 사용하는 SEDA

1. 소개 SEDA(Staged Event-Driven Architecture)는 Matt Welsh 박사 가 제안한 건축 스타일입니다 . 논문 . 주요 이점은 확장성, 고도의 동시 트래픽 지원 및 유지 관리 용이성입니다. 이 예제에서는 SEDA를 사용하여 Spring Integration 과 Apache Camel 이라는 두 가지 개별 구현을 사용하여 문장에서 고유한 단어를 계산합니다 . 2. 세다 SEDA는 온라인 서비스에 특정한 몇 가지 비기능적 요구 사항을 해결합니다 . 높은 동시성 : 아키텍처는 가능한 많은 동시 요청을 지원해야 합니다. 동적 콘텐츠 : 소프트웨어 시스템은 종종 복잡한 비즈니스 사용 사례를 지원해야 하며 사용자 요청을 처리하고 응답을 생성하는 데 많은 단계가 필요합니다. 로드에 ..

Spring 2022.12.06

Java에서 중복되지 않는 난수 생성

1. 소개 이 빠른 사용방법(예제)에서는 핵심 Java 클래스를 사용하여 중복 없이 난수를 생성하는 방법을 배웁니다. 먼저 처음부터 몇 가지 솔루션을 구현한 다음 보다 확장 가능한 접근 방식을 위해 Java 8+ 기능을 활용합니다. 2. 작은 범위의 난수 필요한 숫자의 범위가 작은 경우 크기 n 에 도달할 때까지 List에 순차적인 숫자를 계속 추가할 수 있습니다 . 그런 다음 선형 시간 복잡도 를 갖는 Collections.shuffle() 을 호출 합니다. 그런 다음 고유 번호의 무작위 List으로 끝납니다. 이러한 숫자를 생성하고 사용하는 유틸리티 클래스를 만들어 보겠습니다. public class UniqueRng implements Iterator { private List numbers = n..

Spring 2022.12.06

Java의 Unix 타임스탬프에서 날짜 생성

1. 소개 이 빠른 사용방법(예제)에서는 Unix 타임스탬프 에서 날짜 표현을 구문 분석하는 방법을 배웁니다 . Unix 시간 은 1970년 1월 1일 이후 경과된 초 수입니다. 그러나 타임스탬프는 나노초 정밀도까지 시간을 나타낼 수 있습니다. 따라서 사용 가능한 도구를 확인하고 모든 범위의 타임스탬프를 Java 개체로 변환하는 메서드를 만듭니다. 2. 이전 방식(Java 8 이전) Java 8 이전에는 가장 간단한 옵션이 Date 및 Calendar 였습니다. Date 클래스 에는 밀리초 단위의 타임스탬프를 직접 허용하는 생성자가 있습니다. public static Date dateFrom(long input) { return new Date(input); } Calendar 를 사용하면 getInst..

Spring 2022.12.06

Postman을 사용한 기본 인증

1. 개요 이 사용방법(예제)에서는 Postman 을 사용하여 기본 인증으로 보호되는 Endpoints을 테스트하는 방법을 알아봅니다. "Authorization" 탭을 사용하여 원시 자격 증명을 기반으로 헤더를 생성하는 방법을 살펴보겠습니다 . 그런 다음 수동으로 수행하는 방법을 배웁니다. 마지막으로 Postman Interceptor의 작동 방식과 유용성을 알아보겠습니다. 2. 기본 인증 기본 인증은 특수 헤더를 통해 HTTP 요청을 보호하는 방법입니다 . Authorization: Basic 자격 증명 토큰을 생성하려면 세미콜론 문자로 연결된 사용자 이름과 암호를 작성해야 합니다. 그런 다음 결과 문자열을 Base64로 인코딩해야 합니다. 사용자 이름이 " admin "이고 비밀번호가 " baeld..

Spring 2022.12.06

Spring Boot + MySQL + Docker Compose - Spring Boot를 MySQL에 연결할 수 없음

Spring Boot + MySQL + Docker Compose - Spring Boot를 MySQL에 연결할 수 없음 1. 질문(문제점): 저는 백엔드(Spring Boot에서 실행) 컨테이너와 미리 빌드된 MySQL 컨테이너 사이의 연결을 설정하려고 했습니다. 그러나 연결할 수 없습니다. 내 도커 작성 파일은 다음과 같습니다. version: '3.7' services: test-mysql: image: mysql restart: always volumes: - db_data:/var/lib/mysql environment: MYSQL_DATABASE: testdb MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_ROOT_PASSWORD: root backend: de..

Spring 2022.12.06

Spring Cloud Kubernetes 애플리케이션이 포드에서 실행 중일 때 이를 감지하지 못함

Spring Cloud Kubernetes 애플리케이션이 포드에서 실행 중일 때 이를 감지하지 못함 1. 질문(문제점): 예상되는 동작 Spring Cloud Kubernetes 설명서에 따르면 Spring 애플리케이션이 Pod에서 실행 중일 때 이를 감지하는 데 필요한 모든 것은 Spring Cloud Kubernetes를 spring-cloud-kubernetes-all의존성이 있는 클래스 경로에 추가하는 것입니다. 이렇게 하면 두 가지 이벤트가 트리거됩니다. 있는 경우 application-kubernetes.yml프로필이 로드됩니다. Kubernetes 구현은 DiscoveryClientEureka의 기본값 대신 KubeDNS를 활용하여 서비스 검색에 사용됩니다. 이 환경 인식은 https://c..

Spring 2022.12.06

2.4.0으로 업그레이드한 후 Spring 클라우드 구성 클라이언트가 구성 서버에서 구성 파일을 가져오거나 로드하지 않습니다.

2.4.0으로 업그레이드한 후 Spring 클라우드 구성 클라이언트가 구성 서버에서 구성 파일을 가져오거나 로드하지 않습니다. 1. 질문(문제점): spring-cloud-config-client 는 spring-cloud 버전으로 업그레이드한 후 spring-cloud-config-server 에서 구성 파일을 읽을 수 없습니다.2.4.02020.0.0-M6 2. 해결방안: spring-boot 2.4.0 버전부터 부트스트래핑이 기본적으로 활성화되어 있지 않으므로 다음 의존성을 추가해야 합니다.build.gradle implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap' 또는pom.xml org.springframework.c..

Spring 2022.12.06

Spring WebClient에서 응답 json을 얻는 방법

Spring WebClient에서 응답 json을 얻는 방법 1. 질문(문제점): 저는 를 사용하는 방법에 대해 가장 간단한 사용방법(예제)를 따르려고 노력해 왔으며 WebClient, 에 비해 다음으로 가장 훌륭한 것으로 알고 있습니다 RestTemplate. 예: https://www.baeldung.com/spring-5-webclient#4-getting-a-response 그래서 일부 json을 반환해야 하는 https://petstore.swagger.io/v2/pet/findByStatus?status=available 로 동일한 작업을 수행하려고 할 때 , WebClient webClient = WebClient.create(); webClient.get().uri("https://pets..

Spring 2022.12.06

Docker Compose에서 Docker 컨테이너 재구축

1. 개요 이 사용방법(예제)에서는 docker-compose 를 사용하여 다른 컨테이너와 독립적으로 컨테이너를 다시 빌드하는 방법을 살펴봅니다 . 2. 문제 제시 두 개의 컨테이너로 docker-compose.yml 구성 파일을 정의해 보겠습니다 . 하나는 최신 우분투 이미지를 참조하고 다른 하나는 최신 알파인 이미지를 참조합니다. 시작 시 컨테이너가 직접 종료되는 것을 방지하기 위해 " tty: true "를 사용 하여 각각에 대한 의사 터미널을 추가합니다 . version: "3.9" services: ubuntu: image: "ubuntu:latest" tty: true alpine: image: "alpine:latest" tty: true 이제 컨테이너를 빌드하고 시작하겠습니다. 백그라운드에..

Spring 2022.12.05
반응형