일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Heap
- redis
- design pattern
- Data Structure
- 네트워크
- 디자인 패턴
- Algorithm
- 백준
- Kafka
- IT
- JavaScript
- Proxy
- 알고리즘
- C
- spring webflux
- 자바
- mongoDB
- c언어
- MySQL
- 컴퓨터구조
- 운영체제
- MSA
- JPA
- Spring
- Galera Cluster
- 자료구조
- 파이썬
- react
- Java
- OS
- Today
- Total
목록Java, Spring (75)
시냅스

이 글에서는 개인적으로 자주 사용하는 동시성 제어를 위한 Java 의 Locking 기법에 대해 설명합니다. StampedLockStampedLock 은 ReentrantReadWriteLock 과 달리 재진입이 불가능하며 낙관적 읽기가 가능합니다. ReentrantReadWriteLock 은 하나의 thread 에서 동일한 lock 을 여러번 잡을 수 있게 설계되어있습니다.private final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();private final Lock readLock = rwLock.readLock();private final Lock writeLock = rwLock.writeLock();private int va..

이 글에서는 MSA 기반으로 구축하는 배달 시스템에 대한 아이디어를 제공합니다.자세한 코드는 아래 github 을 참고해주세요! https://github.com/taesukang-dev/spring-msa-patterns/tree/master/delivery spring-msa-patterns/delivery at master · taesukang-dev/spring-msa-patternsContribute to taesukang-dev/spring-msa-patterns development by creating an account on GitHub.github.com 이전글https://liltdevs.tistory.com/215 Spring 으로 구현하는 MSA 기반 재고관리 시스템 (+Redis..
@EnableReactiveMongoAuditing@Configurationpublic class MongoConfig extends AbstractReactiveMongoConfiguration { private static final String DB_NAME = "testdb"; @NotNull @Override @Bean public MongoClient reactiveMongoClient( @Value("${spring.data.mongodb.uri}"}) final String mongoUri ) { ConnectionString connection = new ConnectionString(mongoUri); // connection ..

이 글에서는 MSA 기반으로 구축하는 재고 관리 시스템에 대해 아이디어를 제공합니다.자세한 코드는 아래 github 을 참고해주세요! https://github.com/taesukang-dev/spring-msa-patterns/tree/master/stock spring-msa-patterns/stock at master · taesukang-dev/spring-msa-patternsContribute to taesukang-dev/spring-msa-patterns development by creating an account on GitHub.github.com 이전글https://liltdevs.tistory.com/214 Spring 으로 구현하는 선착순 쿠폰 발급 시스템 (+ Redis, K..

이 글에서는 선착순 쿠폰 발급 시스템에 대한 아이디어를 제공합니다.자세한 코드는 아래의 github 을 참고해주세요! https://github.com/taesukang-dev/spring-msa-patterns/tree/master/coupon spring-msa-patterns/coupon at master · taesukang-dev/spring-msa-patternsContribute to taesukang-dev/spring-msa-patterns development by creating an account on GitHub.github.com 선착순 쿠폰 발급 시스템 선착순 쿠폰 발급시스템의 요건은 다음과 같습니다.정해진 수량 만큼만 쿠폰을 발급해야 합니다.들어온 순서 대로 쿠폰을 발급..

ProxySQL ProxySQL 은 MySQL의 proxy middleware 입니다. 로드 밸런싱과 쿼리 라우팅, Read-Write split, 캐싱 등의 기능을 제공하며 고성능, 고가용성을 위해 사용됩니다. 서비스에서 HA를 위해 사용하던 기존 Galera Cluster + HAproxy 에서 MHA + ProxySQL 로 Migration 을 진행 중이었습니다. 이때 WAS 는 Spring WebFlux 를 사용하고 있는데요. 이 글에서는 왜 WebFlux 와 함께 ProxySQL 을 사용하지 못했는지에 대해 설명하겠습니다. 문제 상황 WebFlux 에서는 connection validation failed 에러가 발생했고, ProxySQL 은 아래와 같은 에러가 지속해서 발생하였습니다. MySQ..

Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Spring WebFlux 를 구현하며 알아봅니다. 이전 글 : https://liltdevs.tistory.com/210 Spring WebFlux 이해하기 - Reactor Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Reactor 에 대해 설명합니다. 이전 글 : https://liltdevs.tistory.com/209 Spring WebFlux 이해하기 - Reactive Streams Spring We liltdevs.tistory.com https://liltdevs.tistory.com/189 구현하며 이해하는 Spring MVC Sp..

Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Reactor 에 대해 설명합니다. 이전 글 : https://liltdevs.tistory.com/209 Spring WebFlux 이해하기 - Reactive Streams Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Reactive Streams 에 대해 설명합니다. Reactive Programming 리액티브 프로그래밍은 빠른 반응을 하고자 하는 시스 liltdevs.tistory.com 이전 글에서는 Reactive Streams 에 대하여 알아보았습니다. 이번에는 Spring WebFlux 에서 사용하는 Reactive Streams 의 ..

Spring WebFlux 의 작동방식을 이해하기 위해 단계별로 진행하는 포스팅입니다. 이 글에서는 Reactive Streams 에 대해 설명합니다. Reactive Programming 리액티브 프로그래밍은 빠른 반응을 하고자 하는 시스템입니다. 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화하고 이런 빠른 응답을 바탕으로 유지보수와 확장이 용이한 시스템을 구축하고자 합니다. 리액티브 선언문에 따르면, 리액티브 프로그래밍은 아래 4가지를 만족해야 합니다. 응답성 : 시스템이 가능한한 즉각적으로 응답 탄력성 : 시스템이 장애에 직면하더라도 응답성을 유지하는 것 유연성 : 시스템의 작업량이 변화하더라도 응답성을 유지하는 것 메세지 구동 : 비동기 메세지 전달에 의존하여 구성요소 간 느슨한 ..
정보 관리를 위해 Java/Spring 환경에서의 시스템 변수, 환경변수의 활용에 대한 글을 작성했습니다. Vault 와 같은 툴을 사용할 수도 있지만 그 전에 application level 에서의 이해를 돕기 위해 글을 작성하였습니다. 시스템 중요 정보를 외부에서 할당할 때 정보은닉을 지키며 할당한 데이터를 사용하는 방법에 대해 알아봅니다. 아래에서는 OS 환경 변수, 시스템 변수, 나아가 application.yml 이 어떤 순서로 할당되는지에 대해 알아봅니다. System.getenv JVM 이 실행되는 운영체제의 환경변수를 가져옵니다. 대개 apllication 을 실행하는 OS 의 환경변수 이거나 build time 에 shell / Docker / k8s 등에서 설정하기도 합니다. OS 전..