반응형

📝세마포어(semaphore)

세마포어(semaphore)는 멀티프로세스나 멀티스레드 환경에서 공유 자원에 접근하는 순서를 제어하는 동기화 도구로 여러 명이 동시에 들어가면 안 되는 방에 몇 명까지 들어갈 수 있는지 문 앞에서 카운트하는 관리인 역할을 한다

 

📝Nexsus Repository

Sonatype에서 만든 패키지 관리 시스템으로 따로 라이브러리를 회사에서 관리합니다 유료와 무료가 있습니다

 

📝라운드로빈

라운드로빈이란 순회하면서 차례로 일을 처리하는 방식으로 돌아가며 한번씩 기회를 주는 방식입니다

 

  • CPU 스케줄링 (멀티프로세스/스레드)
    • 1개 CPU가 여러 프로세스를 조금의 시간씩 할애하며 돌아가며 처리
  • 큐 처리 (라운드로빈 큐)
    • 여러 작업대기열에 넣고 한 작업 조금하고 넘어가고 조금하고 넘어가고를 반복하며 처리

 

📝레디스 (Redis)

메모리 기반의 NoSQL 데이터베이스로 Key-Value 구조로 데이터를 저장 합니다.

 

 

❤️장점

  • 빠른 성능
    • 모든 데이터를 메모리에 저장 → 밀리초(ms) 단위 응답 가능
  • 분산/확장성
    • 클러스터링, 샤딩(sharding) 지원 → 대규모 서비스 확장 가능
  • Pub/Sub 기능 제공
    • 메시지 브로커처럼 사용 가능 (Kafka까지는 아니어도 간단한 이벤트 처리 가능)

 

⚠️단점

  • 메모리 기반
    • 메모리에 데이터를 저장하기 때문에 용량이 제한적 (RAM 크기에 의존)
  • 데이터 영속성 한계
    • 휘발성이기 때문에 완벽한 영속성 보장은 어렵다
  • 비용 문제
    • 메모리를 많이 쓰면 서버 비용 ↑ (특히 클라우드 환경에서 비용이 큼)

 

🔎예시

  • 세션 저장소
  • 캐싱
  • 실시간 랭킹 / 카운팅
  • 메시지 큐 (Pub/Sub)
    • kafka처럼 pub/sub기능을 제공해 메시징처리가 가능하지만 메세지 유실 등 kafka에 비해 낮은 메시지 정합성을 가집니다.

길게 저장하고 있지 않고 빠르게 처리해야하는 것들에 사용하기 적합합니다.

 

📝Jedis, Lettuce, Redisson

위 3개는 Java에서 쓸 수 있는 Redis 라이브러리입니다.

 

  • Jedis
    • 동기식 API처리로 심플하고 가볍다 (러닝커브 낮음)
    • 블로킹방식으로 대규모 / 비동기 처리에는 한계가 있다.
    • 소규모 간단한 캐시 조회
  • Lettuce
    • Netty 기반 비동기/논블로킹 클라이언트
    • 동기 + 비동기 + Reactive API 모두 지원
    • Jedis보다 러닝커브가 있음
    • 대규모 트래픽, Reactive 필요
  • Redisson
    • 동기/비동기/Reactive 지원
    • 분산 자료구조/락/동시성 툴킷까지 제공
    • 기능이 풍부하지만 무겁고 순수한 Redis 명령어 제어에는 과한 경우도 존재
    • 분산 락, 랭킹, 동시성 제어 필요
반응형