반응형 도커8 [Redis] Redis를 이용한 동시성 이슈 해결 실습해보기 - SETNX 사용 방법 동시성 문제란?여러개의 프로세스나 스레드가 동시에 같은 리소스, 예를 들자면 데이터베이스나 캐시, 파일 등에 접근 할 때 예상 치 못한 데이터 충돌, 중복 실행, 무결성 문제가 발생하는 상황이다. 대표적인 예시로는 재고 감소, 중복 결제 방지, 특정 작업의 중복 실행 방지 등이 필요 할 때 동시성 제어가 필요하다. Redis를 이용한 동시성 해결 방법 Redis를 활용하여 분산 락(distributed lock)을 사용하면, 하나의 작업이 끝날 때까지 다른 프로세스가 동일한 리소스를 변경하지 못하도록 막을 수 있다. Redis를 이용한 대표적인 동시성 해결 기법은 다음과 같다SETNX (SET if Not Exists) 사용Redlock 알고리즘 (분산 락 강화 버전) 사용이 두가지 방법을 nodejs.. 2025. 2. 20. [Docker] Docker compose docker compose는 다중 컨테이너 도커 애플리케이션을 정의하고 실행하기 위한 도구이다. 레디스와 node.js를 둘 다 사용하는 서버를 만들어보고 docker compose로 실행해보자 도커 클라이언트로 레디스 서버를 위한 컨테이너를 실행시키고 먼저 express 세팅을 해준 뒤 index.js를 다음과 같이 작성한다. const express = require("express"); const redis = require("redis"); //레디스 클라이언트 생성 const client = redis.createClient({ // url: 'redis://redis:6379' // or socket: { port: 6379, host: 'redis-container' } }); const a.. 2023. 12. 27. [Docker] 기본적인 도커 클라이언트 명령어 알아보기 (2) 컨테이너 중지 도커에서 실행 중인 컨테이너를 중지할 때에는 docker stop과 docker kill로 중지할 수 있다. docker stop docker kill 이름이 아닌 아이디로도 중지할 수 있다. stop과 kill은 둘 다 실행 중인 컨테이너를 중지시킨다. 차이점은 stop 같은 경우에는 그 동안 하던 작업들을 완료하고 컨테이너를 중지 시킨다. 이 정리하는 기간에 sigterm을 주어 정리하는 시간을 주는 것이다. 반대로 kill 같은 경우에는 stop과는 달리 어떠한 것도 기다리지 않고 바로 컨테이너를 중지 시킨다. 컨테이너 삭제 중지된 컨테이너를 삭제하고 싶다면 docker rm 명령어로 삭제 할 수 있다. docker rm 실행 중인 컨테이너는 먼저 중지한 후에 삭제가 가능하다. 도커 .. 2023. 12. 20. [Docker] 기본적인 도커 클라이언트 명령어 알아보기 저번 포스팅에 나왔던 docker run hello-world 명령어를 뜯어보면 다음과 같다. docker run 이미지 이름(예:hello-world) 도커 클라이언트 언급 컨테이너 생성 및 실행 이 컨테이너를 위한 이미지 작동 순서는 다음과 같았다. 해당 명령어를 도커 클라이언트에 명령어 입력 후 도커 서버로 보낸다. 도커 서버에서는 컨테이너를 위한 이미지가 이미 캐쉬가 되어 있는지 확인하고 없으면 도커 허브에서 다운을 받아오고 있으면 이미 가지고 있는 이미지로 컨테이너를 생성한다. 그리고 이미지로 컨테이너를 생성 하는데 먼저 파일 스냅샷 되있는 것을 컨테이너의 하드 디스크 부분에 올리고 시작 커맨드를 이용해서 어플리케이션을 실행한다. 그럼 이미지 내부 파일 시스템 구조를 보기 위한 명령어를 알아보자.. 2023. 12. 20. 이전 1 2 다음 반응형