찾다
데이터 베이스RedisRedis 분산 잠금을 기반으로 작업 스케줄링을 구현하는 방법

분산된 대규모 데이터 수집 과정에서는 정보 소스 관리가 특히 중요합니다. 동일한 작업이 동시에 하나의 수집기에서만 처리될 수 있도록 하려면 작업 예약의 고유성이 보장되어야 합니다. 일반적으로 분산 데이터 수집을 수행할 때는 일반적으로 수집 작업을 배포하고 작업의 고유성을 보장하는 일을 담당하는 일정 관리 모듈이 있습니다.

분산되어 여러 서버(다중 시스템)가 포함되므로 각 서버에는 여러 수집기(다중 프로세스)가 포함되고 각 수집기는 여러 스레드가 포함될 수 있으므로 작업 예약 모듈 잠금 메커니즘이 특히 중요합니다. 애플리케이션의 구현 아키텍처에 따라 잠금 구현 방법은 일반적으로 다음 유형으로 나눌 수 있습니다.

  • 핸들러가 단일 프로세스 및 다중 스레드인 경우 Python에서는 스레딩 모듈의 Lock 개체를 사용할 수 있습니다. 공유를 제한하기 위해 변수에 대한 동기식 액세스를 통해 스레드 안전성을 달성합니다.

  • 단일 머신과 다중 프로세스의 경우 Python에서는 다중 처리의 Lock 개체를 사용하여 처리할 수 있습니다.

  • 다중 머신 및 다중 프로세스 배포의 경우 분산 동기화 잠금을 구현하려면 타사 구성 요소(스토리지 잠금 개체)를 사용해야 합니다.

스케줄링 모듈은 다중 시스템, 다중 프로세스 및 다중 스레드 처리 메커니즘이므로 세 번째 방법과 일치합니다.

분산 잠금 구현 방법

현재 주류 분산 잠금 구현 방법은 다음과 같습니다.

  • mysql 등 데이터베이스 기반

  • redis 등 캐시 기반

  • 구현 기반 on Zookeeper

각 구현 방법에는 고유한 장점이 있으므로 종합적으로 고려한 결과 Redis가 가장 적합한 선택입니다. 주된 이유는 다음과 같습니다.

  • redis는 메모리를 기반으로 작동하며 액세스 속도가 데이터베이스보다 빠릅니다. 높은 동시성에서는 잠금 후 성능이 크게 떨어지지 않습니다.

  • redis는 생존 시간을 설정할 수 있습니다. (TTL)

  • redis는 사용이 간편하고 전체 구현 오버헤드가 낮습니다

그러나 Redis를 사용하여 구현된 분산 잠금은 다음 조건도 충족해야 합니다.

  1. 만 가능합니다. 스레드는 잠금을 점유하고 다른 스레드는 잠금이 해제될 때까지 기다려야 합니다

  2. 잠금 작업은 원자성을 충족해야 합니다

  3. 예를 들어, 잠금을 획득한 스레드는 교착 상태가 발생하지 않습니다. 잠금을 해제하기 전에 잠금이 갑자기 비정상적으로 종료되어 다른 스레드가 잠금이 해제될 때까지 계속 루프에서 대기하게 됩니다

  4. 잠금 추가 및 해제는 동일한 스레드에서 설정해야 합니다

우리는 데이터의 일관성을 보장하기 위해 Redis를 사용하여 분산 동기화 잠금을 구현합니다. 다음 요구 사항 기능:

  • 상호 배타성을 충족하며 동시에 하나의 스레드만 잠금을 획득할 수 있습니다

  • Redis는 교착 상태가 발생하지 않도록 보장하지만 잠금 만료도 발생시킵니다. 여러 스레드가 동시에 잠금을 점유하는 문제를 방지하려면 잠금 만료 시간을 합리적으로 설정해야 합니다.

  • 잠금의 고유성을 사용하세요. 실수로 잠금이 삭제되는 일이 없도록


실제로 하고 있습니다. 그 과정에서 스케줄링 모듈을 전체 수집 시스템에서 분리하고 Java 클라이언트 Jredis(JRedis는 고급 클라이언트)를 기반으로 했습니다. Redis 분산 해시 키-값 데이터베이스에 연결하는 데 사용되는 성능 Java 클라이언트입니다. Spring Boot를 사용하여 동기 및 비동기 기능을 구현하므로 다른 수집기가 HTTP를 통해 처리할 수집 작업을 요청할 수 있습니다.

  • 수집자는 HTTP를 통해 디스패치 센터에 작업 요청을 보냅니다.

  • 디스패치 센터는 잠금이 있는지 확인하고, 잠금이 있으면 바로 빈 세트를 반환합니다. 잠금이 존재하지 않으면 요청을 잠근 다음 소스 규칙에 따라 해당 수집 작업을 획득합니다.

  • Return 작업을 가져온 다음(보류 중인 작업이 없으면 비어 있음 반환) 잠금을 삭제합니다. scheding 스케줄링 모듈의 코드 구현은 대략적으로 다음과 같습니다. ;Object> result = new ArrayList();

  •   try {
  •   String dicNameLock = "Dispatcher_Task_Lock";//작업 예약 잠김 , lockKeyValue ,

  •                DateUtil.getYMDHMS());
ㅋㅋㅋ                                 // 작업 논리 처리

 

                                                                      ....


                                                        ; Else {// Lock이 이미 존재함

System.out.println ("작업을 처리하는 중, 일시적으로 빈 컬렉션으로 돌아갑니다 ...")

죄송합니다. 다시 작성해야 하고 수행할 수 없는 원래 단어를 제공하지 않았습니다. Rewrite

} catch (

Exception e) {e.printStackTrace();

}

return result;

}

실제 작업 과정에서 잠금을 추가할 때 잠금에

만료 시간

을 추가해야 합니다. 그렇지 않으면 알 수 없는 예외가 발생하면 잠금이 해제되지 않고 수집기가 수집 작업을 얻을 수 없게 됩니다.

위 내용은 Redis 분산 잠금을 기반으로 작업 스케줄링을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 亿速云에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Redis : 기능과 기능을 탐색합니다Redis : 기능과 기능을 탐색합니다Apr 19, 2025 am 12:04 AM

Redis는 고속, 다양성 및 풍부한 데이터 구조로 인해 두드러집니다. 1) Redis는 문자열, 목록, 컬렉션, 해시 및 주문 컬렉션과 같은 데이터 구조를 지원합니다. 2) 메모리를 통해 데이터를 저장하고 RDB 및 AOF 지속성을 지원합니다. 3) Redis 6.0에서 시작하여 멀티 스레드 I/O 작업이 도입되어 동시 동시성 시나리오에서 성능이 향상되었습니다.

Redis는 SQL 또는 NOSQL 데이터베이스입니까? 대답이 설명되었습니다Redis는 SQL 또는 NOSQL 데이터베이스입니까? 대답이 설명되었습니다Apr 18, 2025 am 12:11 AM

redisisclassifiedasanoSqldatabaseBecauseItuseSakey-valuedatamodelinsteadofThraditionalRelationalDatabasemodel.Itoffersspeedandflexibility, makingIdealforreal-timeApplicationsandcaching, butitmaynotbesuitableforscenariosrequiringstrictaintetaintetaintetaintetaintetaintetaintegry

REDIS : 응용 프로그램 성능 및 확장 성 향상REDIS : 응용 프로그램 성능 및 확장 성 향상Apr 17, 2025 am 12:16 AM

Redis는 데이터를 캐싱하여 분산 잠금 및 데이터 지속성을 구현하여 응용 프로그램 성능 및 확장 성을 향상시킵니다. 1) 캐시 데이터 : Redis를 사용하여 데이터 액세스 속도를 향상시키기 위해 자주 액세스하는 데이터를 캐시합니다. 2) 분산 잠금 : Redis를 사용하여 분산 된 잠금 장치를 구현하여 분산 환경에서 작동의 보안을 보장합니다. 3) 데이터 지속성 : 데이터 손실을 방지하기위한 RDB 및 AOF 메커니즘을 통한 데이터 보안을 보장합니다.

Redis : 데이터 모델과 구조 탐색Redis : 데이터 모델과 구조 탐색Apr 16, 2025 am 12:09 AM

Redis의 데이터 모델 및 구조에는 5 가지 주요 유형이 포함됩니다. 1. 문자열 : 텍스트 또는 이진 데이터를 저장하는 데 사용되며 원자 연산을 지원합니다. 2. 목록 : 정렬 된 요소 컬렉션, 대기열 및 스택에 적합합니다. 세트 : 세트 작동을 지원하는 비 순차 고유 요소 세트. 4. 순서 세트 (SortedSet) : 순위에 적합한 점수가있는 고유 한 요소 세트. 5. 해시 테이블 (HASH) : 객체를 저장하는 데 적합한 키 값 쌍 모음.

REDIS : 데이터베이스 접근 방식을 분류합니다REDIS : 데이터베이스 접근 방식을 분류합니다Apr 15, 2025 am 12:06 AM

Redis의 데이터베이스 방법에는 메모리 인 데이터베이스 및 키 값 저장소가 포함됩니다. 1) Redis는 메모리에 데이터를 저장하고 빠르게 읽고 쓰고 있습니다. 2) 키 값 쌍을 사용하여 데이터를 저장하고 캐시 및 NOSQL 데이터베이스에 적합한 목록, 컬렉션, 해시 테이블 및 주문 컬렉션과 같은 복잡한 데이터 구조를 지원합니다.

왜 Redis를 사용합니까? 혜택과 장점왜 Redis를 사용합니까? 혜택과 장점Apr 14, 2025 am 12:07 AM

Redis는 빠른 성능, 풍부한 데이터 구조, 고 가용성 및 확장 성, 지속성 기능 및 광범위한 생태계 지원을 제공하기 때문에 강력한 데이터베이스 솔루션입니다. 1) 매우 빠른 성능 : Redis의 데이터는 메모리에 저장되며 동시성이 높고 대기 시간이 낮은 응용 프로그램에 적합한 빠른 읽기 및 쓰기 속도를 가지고 있습니다. 2) 풍부한 데이터 구조 : 다양한 시나리오에 적합한 목록, 컬렉션 등과 같은 여러 데이터 유형을 지원합니다. 3) 고 가용성 및 확장 성 : 마스터 슬레이브 복제 및 클러스터 모드를 지원하여 고 가용성 및 수평 확장 성을 달성합니다. 4) 지속성 및 데이터 보안 : 데이터 지속성은 RDB 및 AOF를 통해 달성되어 데이터 무결성 및 신뢰성을 보장합니다. 5) 광범위한 생태계 및 지역 사회 지원 : 거대한 생태계와 활동적인 커뮤니티,

NOSQL 이해 : Redis의 주요 기능NOSQL 이해 : Redis의 주요 기능Apr 13, 2025 am 12:17 AM

Redis의 주요 기능에는 속도, 유연성 및 풍부한 데이터 구조 지원이 포함됩니다. 1) 속도 : Redis는 메모리 내 데이터베이스이며, 읽기 및 쓰기 작업은 거의 순간적이며 캐시 및 세션 관리에 적합합니다. 2) 유연성 : 복잡한 데이터 처리에 적합한 문자열, 목록, 컬렉션 등과 같은 여러 데이터 구조를 지원합니다. 3) 데이터 구조 지원 : 다양한 비즈니스 요구에 적합한 문자열, 목록, 컬렉션, 해시 테이블 등을 제공합니다.

REDIS : 기본 기능을 식별합니다REDIS : 기본 기능을 식별합니다Apr 12, 2025 am 12:01 AM

Redis의 핵심 기능은 고성능 인 메모리 데이터 저장 및 처리 시스템입니다. 1) 고속 데이터 액세스 : Redis는 메모리에 데이터를 저장하고 마이크로 초 수준 읽기 및 쓰기 속도를 제공합니다. 2) 풍부한 데이터 구조 : 문자열, 목록, 컬렉션 등을 지원하며 다양한 응용 프로그램 시나리오에 적응합니다. 3) 지속성 : RDB 및 AOF를 통해 디스크에 데이터를 지속하십시오. 4) 구독 게시 : 메시지 대기열 또는 실시간 통신 시스템에서 사용할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.