콘텐츠로 이동
Leader 문서0.4

Redis Redisson 백엔드

최신 안정판 Leader 0.4.0 릴리스 기준

라이브러리 모듈

Redisson lock/semaphore로 단일·그룹·전략 선출을 구현하며 블로킹과 코루틴 API를 제공합니다.

이미 Redisson을 Redis client로 쓰고 직접 Lua script보다 distributed-object API를 선호할 때 선택합니다.

Maven 좌표: io.github.bluetape4k.leader:bluetape4k-leader-redis-redisson

dependencies {
implementation(platform("io.github.bluetape4k:bluetape4k-dependencies:<version>"))
implementation("io.github.bluetape4k.leader:bluetape4k-leader-redis-redisson")
}

acquire할 때 항상 명시적인 leaseTime을 넘기므로 Redisson native watchdog은 꺼집니다. 자동 연장을 켜면 Core의 LeaderLeaseAutoExtender만 동작합니다.

val elector = RedissonLeaderElector(redissonClient)
elector.runIfLeader("webhook-poller") { pollWebhooks() }

blocking/suspend 단일·group·전략 elector와 factory를 사용합니다. 그룹 선출은 semaphore 방식 permit에 대응합니다.

호출자 소유 client 하나, 안정적인 lock name, 명시적인 lease 크기, 멱등 본문을 사용하세요. Shared autoExtend 사용 여부도 의도적으로 정합니다.

Spring factory는 RedissonClient를 사용합니다. redisson-watchdog 예제에서 native watchdog과 라이브러리 extender의 차이를 설명합니다.

wait/lease/minimum lease, auto-extension, group size와 Redis topology, client timeout, retry, codec을 각각 설정합니다.

경쟁은 null입니다. Interrupt, Redis/client 장애, 소유권 상실, extend/release 오류는 백엔드 분류에 따라 예외로 드러납니다.

Redis 지연, connection 상태, lock TTL, permit 사용량, extension 실패, skip 비율, failover를 관측하세요. Native watchdog이 갱신했다고 가정하면 안 됩니다.

두 client, 명시적 lease 만료, shared extender, owner-safe release, group permit, 전략 registry, failover, suspend 취소를 검증합니다.

운영 적용 전에 redisson-watchdog를 실행하고 rate-limiter와 strategic-election 예제로 이어가세요.

명시적 lease는 긴 pause 중 만료될 수 있습니다. Redisson 소유권도 다른 저장소의 쓰기를 fence하지 못합니다.

아래 그림은 0.4.0 배포본의 README 자산을 해당 배포 커밋에서 직접 불러옵니다. 이후 SNAPSHOT이 아니라 이 매뉴얼 버전의 구조와 실행 흐름을 보여 줍니다. 미리보기를 누르면 같은 배포 커밋의 SVG 원본이 열립니다.

leader redis redisson 클래스 구조도

배포본 README: leader-redis-redisson/README.ko.md

1 — acquire/release crash recovery 다이어그램

섹션 제목: “1 — acquire/release crash recovery 다이어그램”

1 — acquire/release crash recovery 다이어그램

배포본 README: leader-redis-redisson/README.ko.md

2 — updateLeaseTime minLeaseTime 다이어그램

섹션 제목: “2 — updateLeaseTime minLeaseTime 다이어그램”

2 — updateLeaseTime minLeaseTime 다이어그램

배포본 README: leader-redis-redisson/README.ko.md

Elector · Shared extender delegate · 안정판 안내