일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ubuntu
- ReactJS
- devops
- 맛집
- Spring
- elasticsearch
- jenkins
- Git
- 요리
- Spring Batch
- laravel
- springboot
- javascript
- AWS
- Spring Boot
- Web Server
- redis
- it
- Oracle
- db
- tool
- JVM
- jsp
- Design Patterns
- Gradle
- IntelliJ
- java
- php
- MySQL
- linux
- Today
- Total
목록Java & Kotlin/Spring (76)
아무거나
@Async 를 활용한 비동기 호출 구현 예제코드예제코드 java-example-code/java11/bkjeon-mybatis-codebase at main · bkjeon1614/java-example-codejava-example-code. Contribute to bkjeon1614/java-example-code development by creating an account on GitHub.github.com @Async 를 사용해야 하는 이유Spring @Async 를 사용하지 않으면 Thread 를 관리할 수 없어서 매우 위험하다. 예를 들어 동시에 1000 개의 호출이 요청된다면 짧은 시간 안에 Thread 를 1000 개를 생성해야 되므로 Thread 를 생성하는 비용은 적지 않기 때문..
Aspect 를 활용한 특정 metric 의 tag 의 여러 value 값 별로 시간단위로 실시간 카운트 저장 예시로 호출시 특정 타입번호기준으로 페이지를 이동하는 기능에 타입번호_시간단위로 카운트를 저장하는 기능을 생성 (참고: https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase) Custom Annotation 생성 [CustomCounter.java] package com.example.bkjeon.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annot..
이전글: https://bkjeon1614.tistory.com/785 [Spring Actuator] Example 5편 - Gauge 이전글: https://bkjeon1614.tistory.com/784 Gauge Counter 타입인 경우 increment 메서드만 제공되지 decrement 메서드가 존재하지 않는다. 그러므로 커졌다 작아졌다 하는 값으로는 Gauge 를 사용하면 된다. 또한 Co bkjeon1614.tistory.com Timer 시간을 측정하는 metric 샘플 Timer [TimerConfig.java] package com.example.bkjeon.base.config.actuator.timer; import io.micrometer.core.instrument.Meter..
이전글: https://bkjeon1614.tistory.com/784 Gauge Counter 타입인 경우 increment 메서드만 제공되지 decrement 메서드가 존재하지 않는다. 그러므로 커졌다 작아졌다 하는 값으로는 Gauge 를 사용하면 된다. 또한 Counter 는 counter 값을 조회시도 하는지 여부와 무관하게 값이 증가될 때마다 내부값 갱신을 해줘야한다. 그러나 Gauge 는 조회시도 할 때만 해당 값을 계산하면 된다. 샘플코드 기본등록 [QueueManager.java] package com.example.bkjeon.base.services.api.v1.actuator.service.gauge; import org.springframework.stereotype.Service;..
이전글: https://bkjeon1614.tistory.com/783 Metrics Tags /actuator/metrics/{메트릭명} 에 접속할 경우 availableTags 에 존재하는 tag 의 values 값에 대한 상세 정보를 보고 싶다면 만약 tag: test, value: bong 이라고 가정해볼경우 /actuator/metrics/{메트릭명}?tag=test:bong (즉, tag={key}:{value} Querystring 형태이다) metrics 에 tag 를 직접 넣어보자. 샘플코드 [TagController.java] package com.example.bkjeon.base.services.api.v1.actuator.controller; import com.example.bk..
이전글: https://bkjeon1614.tistory.com/782 Counter (https://micrometer.io/docs/concepts#_counters) 횟수를 세어 metric 으로 제공 단, 자연수만 가능하며 소수나 음수는 불가능하며 일반적으로는 cache hit 에 대한 누적 counter 및 http request 누적 횟수 등과 같이 지금까지 특정 이벤트가 몇 번 발생했는지 누적값을 제공할 때 Counter 를 사용한다. () 사용법 Counter.builder() [ApplicationRequestManager.java] package com.example.bkjeon.base.actuator.counter; import io.micrometer.core.instrument...
소스코드는: https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 를 참고하시면 됩니다. 개념 Actuator 은 상태정보를 Hateoas(헤이티오스) 를 사용하여 표시한다. (ex: /actuator) Hateoas(헤이티오스) 란 서버가 클라이언트에게 하이퍼 미디어를 통해 정보를 동적으로 제공 (API 에서 리소스에 대해 어떠한 행동을 할 수 있는지 URL 을 전달하여 클라이언트가 참고하고 사용할 수 있도록 하며 해당 리소스의 상태에 따라 링크 정보가 바뀌며 동적으로 리소스를 구성) Actuator Lib (의존성 라이브러리) core lib 는 micrometer 를 사용하고 있다. (중요) micro..
[Redis 시리즈 2편] Lettuce 를 사용한 Read / Write 분리 코드는 https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 참고 부탁드립니다. 원활한 세팅을 위해 기존 1편에서 설치된 Redis 를 제거 후 진행하자. 환경 (Reader DNS 를 통한 Replica Node 들에 분산하는 방법으로 가정) Redis Master 1대 Slave 2대 Docker Compose 로 설치 (with. Docker) $ docker network create app-tier --driver bridge [docker-compose.yml] version: '2' networks: app-tier..
[Redis 시리즈 1편] Spring Boot 에 Redis 라이브러리인 Lettuce 적용 코드는 https://github.com/bkjeon1614/java-example-code/tree/develop/bkjeon-mybatis-codebase 참고 부탁드립니다. Lettuce Lettuce 란 Netty(비동기 이벤트 기반 고성능 네트워크 프레임워크) 기반이며 고성능, 확장가능, 스레드세이프등을 지원한다. Lettuce 를 선택한 이유 주로 java 쪽에서는 Lettuce 말고도 Jedis 도 많이 사용한다고 한다. 그러나 Jedis 에 비해 몇 배 이상의 성능, 빠른 피드백, 심플하게 디자인된 코드, 잘 기재된 공식문서 등의 이유로 Lettuce 를 많이 사용하고 있는 추세라고 한다. 환경 ..
Ehcache3 (Maven) CacheManagerBean 구현을 통한 Ehcache3 적용 Ehcache3 부터는 JSR-107 로 CacheManager 로 구현해야 한다고 한다. JSR-107 호환 캐시를 사용하기 위해선 JCache 구현 필요 구현 ehcache.xml 생성 (resources 경로 - alias: @Cacheable 의 value 값, key: 키값, value-type: cache 로 저장할 값) java.lang.String java.util.ArrayList 30 com.lotteon.display.config.ehcache.CacheEventLogger ASYNCHRONOUS UNORDERED CREATED EXPIRED 10000 1000 Cache Logger [Ca..