KR102192442B1 - 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템 - Google Patents

쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템 Download PDF

Info

Publication number
KR102192442B1
KR102192442B1 KR1020200015831A KR20200015831A KR102192442B1 KR 102192442 B1 KR102192442 B1 KR 102192442B1 KR 1020200015831 A KR1020200015831 A KR 1020200015831A KR 20200015831 A KR20200015831 A KR 20200015831A KR 102192442 B1 KR102192442 B1 KR 102192442B1
Authority
KR
South Korea
Prior art keywords
leader
node
reader
cluster
container
Prior art date
Application number
KR1020200015831A
Other languages
English (en)
Inventor
응웬딘응웬
김태홍
Original Assignee
충북대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 충북대학교 산학협력단 filed Critical 충북대학교 산학협력단
Priority to KR1020200015831A priority Critical patent/KR102192442B1/ko
Application granted granted Critical
Publication of KR102192442B1 publication Critical patent/KR102192442B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

쿠버네티스 클러스터에서의 리더 분산 방법 및 쿠버네티스 클러스터에서의 리더 분산 시스템이 개시된다. 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 방법은, 쿠버네티스 플랫폼을 실행하여 클러스터를 구성하는 단계와, 어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 상기 클러스터 내의 노드에 배포하는 단계와, 타 어플리케이션과 연관되어 기 배포된 메인 컨테이너 중에서 리더(Leader)로 선정된 리더 컨테이너의 수를, 상기 노드 별로 카운트하는 단계, 및 상기 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값을 넘는지를 고려하여, 상기 어플리케이션과 연관된 리더 컨테이너를, 상기 클러스터 내의 노드에 배포한 메인 컨테이너 중에서 선정하는 단계를 포함한다.

Description

쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템{BALANCED LEADER DISTRIBUTION METHOD AND SYSTEM IN KUBERNETES CLUSTER}
본 발명은 쿠버네티스 플랫폼 기술에 연관되며, 보다 특정하게는 쿠버네티스 플랫폼 환경에서 리더 분산을 통한 처리 성능 개선에 연관된다.
쿠버네티스는 컨테이너 오케스트레이션 분야의 대표적인 오픈소스 프로젝트로서, 컨테이너 기반의 응용서비스를 배포, 확장, 관리할 수 있는 오케스트레이션 플랫폼이다.
쿠버네티스 플랫폼에 의해 구축된 쿠버네티스 클러스터 환경에서는 동일한 응용서비스를 제공하는 다수의 복제본(replica)를 여러 개의 노드에 배포하고, 주어진 정책(랜덤 방식, 라운드로빈 방식, 별도 로드밸런싱 모듈 적용 방식)에 따라 사용자의 요청을 각 노드에 위치한 복제본에게 전달하게 된다.
현재 쿠버네티스 플랫폼에서는 리더로 선정된 노드 만이 추가/삭제 등의 쓰기(write) 동작을 수행하여 복제본 간의 일관성을 유지하는 정책이 실시되고 있다.
따라서 클러스터 내 특정 노드에 다수의 리더가 집중될 경우, 리더가 많은 노드에 다른 노드보다 높은 연산 부하가 집중될 수 있으며, 이로 인한 노드 간 작업 부하 불균형 문제 및 전체 쿠버네티스 클러스터 시스템의 성능 저하 문제가 발생할 수 있다.
이에 따라 본 발명에서는 상술한 기존의 리더 선정 알고리즘의 문제를 해소하여 쿠버네티스 클러스터의 성능을 개선하기 위해, 클러스터 내 노드 전체에 리더를 분산 배치하는 방식으로 리더를 선정하는 리더 분산 알고리즘을 제안하고자 한다.
[특허문헌 1] 등록번호 제10-1997978호 [특허문헌 2] 출원번호 제10-2017-0057153호
본 발명의 실시예는 쿠버네티스 클러스터에 배포된 어플리케이션의 리더 분포 현황을 고려하려 새롭게 배포되는 어플리케이션의 리더를 선정함으로써, 쿠버네티스 클러스터의 각 노드에 균형 있게 리더가 분산 배치하는 것을 목적으로 한다.
쿠버네티스 어플리케이션은 포드(Pod)라고 불리는 하나 이상의 컨테이너를 갖는 객체 단위로 구현되며, 특히 상태 기반 서비스(Stateful Service)에서는 각 포드가 메인 컨테이너와 리더 선정 컨테이너를 함께 포함할 수 있다. 또한, 응용서비스의 고확장성 및 고가용성을 위하여, 어플리케이션 별로 하나 이상의 포드(응용 서비스를 제공하는 복제본들)를 갖게 되는데, 이때, 분산 시스템의 일관성 유지 정책으로 인하여 리더 역할을 하는 포드가 데이터스토어의 추가/변경 등의 처리를 담당하게 된다. 즉 리더 역할을 하는 포드 만이 데이터스토어의 변경 권한을 가지고 있으므로, 메인 컨테이너에서 사용자 요청을 받을 때 리더 선정 컨테이너의 상태(리더인지 또는 팔로어인지)를 참고해서 직접 처리할지, 아니면 리더 상태를 갖고 있는 다른 노드에 배포된 컨테이너에게 전달할지를 결정하게 된다.
이러한 데이터스토어의 일관성 유지 정책으로 인해 리더 역할을 하는 포드로의 사용자 집중현상이 발생하고, 나머지 포드들은 유휴한 상태를 유지하는 병목 현상이 일어날 수 있으나, 본 발명은 다수 어플리케이션의 리더들을 쿠버네티스 클러스터에 속한 각각의 노드 상에 균형 있게 배포함으로써, 사용자 요청을 분산 처리해 시스템 전체적인 성능을 개선하는 것을 목적으로 한다.
본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 방법은, 쿠버네티스 플랫폼을 실행하여 클러스터를 구성하는 단계와, 어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 상기 클러스터 내의 노드에 배포하는 단계와, 타 어플리케이션과 연관되어 기 배포된 메인 컨테이너 중에서 리더(Leader)로 선정된 리더 컨테이너의 수를, 상기 노드 별로 카운트하는 단계, 및 상기 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값을 넘는지를 고려하여, 상기 어플리케이션과 연관된 리더 컨테이너를, 상기 클러스터 내의 노드에 배포한 메인 컨테이너 중에서 선정하는 단계를 포함할 수 있다.
또한, 본 발명의 실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템은, 쿠버네티스 플랫폼을 실행하여 클러스터를 구성하는 구성부와, 어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 상기 클러스터 내의 노드에 배포하는 생성부와, 타 어플리케이션과 연관되어 기 배포된 메인 컨테이너 중에서 리더로 선정된 리더 컨테이너의 수를, 노드 별로 카운트하는 카운트부, 및 상기 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값을 넘는지를 고려하여, 상기 어플리케이션과 연관된 리더 컨테이너를, 상기 클러스터 내의 노드에 배포한 메인 컨테이너 중에서 선정하는 선정부를 포함할 수 있다.
본 발명의 일실시예에 따르면, 쿠버네티스 클러스터 내 노드를 n개(상기 n은 2 이상의 자연수), 쿠버네티스 클러스터에서 운영되는 어플리케이션을 m개(상기 m은 2 이상의 자연수)라고 할 때, 각 어플리케이션 별로 1개씩 선정되는 m개의 리더를, n개의 노드 상에 균형되게 분산시킬 수 있다.
본 발명의 일실시예에 따르면, 이미 m-1개의 어플리케이션이 배포가 완료되어, m-1개의 리더가 클러스터 내의 n개의 노드에 분산된 상황에서, m번째 어플리케이션을 배포할 경우, 메인 컨테이너와 리더 선정 컨테이너로 이루어진 포드(Pod)가 상기 클러스터 내의 n개의 노드에 배포되며, 리더 분산 알고리즘에 따라, n개의 노드에 배포된 각 메인 컨테이너 중에서 어느 하나를 리더로서 선정할 수 있다. 상기 리더로 선정된 메인 컨테이너는 '리더 컨테이너'로 지칭한다.
여기서, 각각의 메인 컨테이너는 m번째 어플리케이션의 복제본을 유지하고, 리더 선정 컨테이너는 상기 메인 컨테이너가 리더인지 또는 팔로어인지를 나타내는 상태 정보를 가질 수 있다. 이에 따라 메인 컨테이너는 사용자의 요청을 받으면, 자신의 포드 내에 있는 리더 선정 컨테이너의 상태 정보(리더 또는 팔로어인지 여부)를 바탕으로, 서비스 제공 여부를 결정할 수 있다.
본 발명에서 제안하는 리더 분산 알고리즘에 따르면, 이미 배포된 m-1개의 어플리케이션과 관련하여 노드 별로 보유 중인 리더 수가 설정된 임계값 이내인 경우에, 상기 m번째 어플리케이션과 관련하여 각 노드에 배포된 메인 컨테이너에 대해 리더 컨테이너로의 변환을 허용할 수 있다.
본 발명의 일실시예에 따르면, 클러스터 내의 n개의 노드에 배포된 m번째 어플리케이션을 위한 복제본들 중, '보유한 리더 수가 임계값을 넘지 않는 노드' 내의 복제본을 리더로 선정함으로써, m개의 리더들이 각 노드에 분산되도록 할 수 있다.
본 발명의 일실시예에 따르면, 다수의 어플리케이션과 연관된 리더 컨테이너를 쿠버네티스 클러스터를 구성하는 각 노드에 균형되게 분산되도록 선정함으로써, 특정 노드로 연산 부하가 집중되지 않도록 작업량을 분산시키고 쿠버네티스 시스템 전체의 성능을 개선할 수 있다.
본 발명의 일실시예에 따르면, 리더 분산 기반의 쿠버네티스 플랫폼 환경에서 일관성 유지 메커니즘을 적용함으로써, 상태 기반 서비스의 데이터 불일치 문제를 해결할 수 있다.
도 1은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템의 구성을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 일관성 유지 메커니즘을 도시한 개념도이다.
도 3은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 선정 알고리즘의 개요를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 분산 알고리즘의 개요를 도시한 도면이다.
도 5a는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 노드 정보를 기록한 엔드포인트를 도시한 도면이다.
도 5b는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 노드 별 리더의 수를 기록한 엔드포인트를 도시한 도면이다.
도 6a 내지 도 6b은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 분산 알고리즘의 프로그래밍 코드를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 방법의 순서를 도시한 흐름도이다.
도 8은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 특정 노드에 집중된 리더를 분산하는 과정을 설명하기 위한 도면이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템의 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템(100)은 구성부(110), 생성부(120), 카운트부(130) 및 선정부(140)를 포함하여 구성할 수 있다. 또한, 실시예에 따라 쿠버네티스 클러스터에서의 리더 분산 시스템(100)은 기록부(150), 갱신부(160) 및 처리부(170)를 각각 추가하여 구성할 수 있다.
구성부(110)는 쿠버네티스 플랫폼을 실행하여 클러스터(180)를 구성한다.
클러스터(180)는 n개(상기 n은 2이상의 자연수)의 노드(181) 및 엔드포인트(Endpoint, EP)(184)로 이루어질 수 있다.
n개의 노드(181)에는 메인 컨테이너(182)와 리더 선정 컨테이너(미도시)로 이루어진 포드(Pod)가 배포될 수 있다.
메인 컨테이너(182)는 쿠버네티스 플랫폼을 통해 배포할 어플리케이션의 복제본을 유지하고, 클라이언트 단말로부터의 서비스 요청을 상기 복제본을 통해 처리할 수 있다.
n개의 노드(181)에 배포된 메인 컨테이너(182) 중 어느 하나가 상기 어플리케이션과 연관된 리더로 선정되고, 나머지는 팔로어로 선정될 수 있다. 이하에서는 리더로 선정된 메인 컨테이너(182)를 '리더 컨테이너'로서 지칭한다.
각각의 복제본은 PVC(Persistant Volume Claim) 요청을 통해 자신 만의 영구적인 데이터베이스(183)를 가질 수 있다.
상기 리더 선정 컨테이너는 같은 포드 내의 메인 컨테이너(182)가 리더로 선정된 리더 컨테이너인지 또는 팔로어인지를 나타내는 상태 정보를 가질 수 있다.
메인 컨테이너(182)는 클라이언트 단말로부터의 서비스 요청이 오면, 상기 리더 선정 컨테이너 내의 상태 정보(리더/팔로어)를 확인하고, 상기 서비스 요청을 자신이 처리할지 아니면 다른 노드의 메인 컨테이너로 재전달할지를 결정할 수 있다.
엔드포인트(184)에는 리더 노드에 관한 정보와, 노드(181) 별 리더의 수가 기록되어, 리더 분산 및 데이터베이스(183)의 동기화에 이용될 수 있다.
생성부(120)는 쿠버네티스 플랫폼을 통해 배포할 어플리케이션이 지정되면, 어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너(182)를, 포드(Pod) 단위로 클러스터(180) 내의 노드(181)에 배포한다. 상기 포드에는 메인 컨테이너(182)가 리더 컨테이너인지 또는 팔로어인지의 상태 정보를 유지하는 리더 선정 컨테이너가 포함될 수 있다.
생성부(120)는 쿠버네티스 플랫폼을 통해 다른 어플리케이션이 배포될 때 마다, 해당 어플리케이션의 응용서비스를 제공하는 메인 컨테이너(182)를 포드 단위로 클러스터(180) 내의 노드(181)에 배포할 수 있다.
이에 따라, 클러스터(180) 내의 각 노드(181)는 배포된 어플리케이션의 수에 비례하여 다수의 포드를 포함하게 될 수 있다.
클러스터(180) 내의 노드(181)에 다수의 어플리케이션이 배포되었을 때, 각각의 어플리케이션과 연관된 리더 컨테이너가 n개의 노드(181)에 적절히 분산되지 않고 특정 노드에 몰려 있으면, 클라이언트 단말로부터의 서비스 요청이 해당 노드로 집중되어 연산 부하가 생길 수 있다.
따라서 어플리케이션의 배포 과정에서 리더 컨테이너를 선정할 때, 클러스터(180) 내의 각각의 노드가 현재 보유 중인 리더 컨테이너의 수가 설정된 임계값을 초과하는 노드에 대해서는 리더 컨테이너를 추가할 수 없도록 제한할 필요가 있다.
이를 위해 카운트부(130)는 타 어플리케이션과 연관되어 상기 각각의 노드(181)에 기 배포된 메인 컨테이너 중에서 리더(Leader)로 선정된 리더 컨테이너의 수를, 노드 별로 카운트한다. 즉 카운트부(130)는 노드 별 각 어플리케이션의 포드 수를 카운트할 수 있다.
실시예에 따라 카운트부(130)는 클러스터(180) 내 엔드포인트(Endpoint, EP)(184)에 기록되어 있는 노드(181) 별 리더의 수를 확인할 수도 있다.
선정부(140)는 노드(181) 별로 카운트한 상기 리더 컨테이너의 수가, 설정된 임계값을 넘는지를 고려하여, 각 노드에 배포한 메인 컨테이너(182) 중에서 상기 어플리케이션과 연관된 리더를 선정한다.
일례로 선정부(140)는 쿠버네티스에서 제공하는 API를 통하여 클러스터(180) 내 노드의 수(totalWorkderNodes) 'n'을 확인하고, 클러스터(180) 내 총 리더 수(totalLeader)를 상기 'n'으로 나누어, 리더의 균일한 배치를 위한 임계값을 계산할 수 있다.
[수식]
임계값 = (totalLeader + 1)/totalWorkerNode)
즉 상기 수식에 따라 클러스터(180)에 균형 있게 리더를 분산하기 위해 각 노드(181)가 가질 수 있는 리더의 수에 대한 임계값이 계산될 수 있다.
선정부(140)는 상기 카운트한 노드 별 리더의 수에, '1'을 더했을 때, 상기 임계값을 초과하지 않는 노드 내의 메인 컨테이너(182)를, 리더 컨테이너로 선정할 수 있다.
여기서 상기 임계값의 초과 여부 확인을 위해, 대상 노드의 리더 수가 임계값 보다 작을 경우에만 참(true)으로 결과값을 반환하는 checkBLD() 함수가 이용될 수 있다.
선정부(140)는 각 노드(181)에 배포한 메인 컨테이너(182) 중 어느 하나가 상기 어플리케이션과 연관된 리더 컨테이너로 선정되면, 상기 리더 컨테이너로 선정되지 못한 나머지의 메인 컨테이너를 상기 어플리케이션과 연관된 팔로어로 선정할 수 있다.
예를 들어, 선정부(140)는 노드 별 리더의 수가 설정된 임계값(예, '2개')을 초과하는 제1 노드 내의 메인 컨테이너(181)를 상기 리더 선정 시 제외하고, 노드 별 리더의 수가 임계값 이내인 제2 노드 내의 메인 컨테이너(181) 중 어느 하나를 상기 리더 컨테이너로 선정할 수 있다.
선정부(140)는 상기 리더 컨테이너에 대해, 상기 어플리케이션과 관련한 쓰기(Write) 기능 및 읽기(Read) 기능을 모두 허용하고, 상기 팔로어로 선정된 메인 컨테이너(181)에 대해서는, 상기 어플리케이션과 관련한 읽기(Read) 기능 만을 허용할 수 있다.
이에 따라, 리더 컨테이너 내의 복제본을 통해서만, 데이터 추가, 데이터 삭제, 및 데이터 수정 중 어느 하나의 쓰기(Write) 기능을 처리해 데이터베이스(183)이 변경되도록 할 수 있다.
실시예에 따라, 쿠버네티스 클러스터에서의 리더 분산 시스템(100)은 기록부(150) 및 갱신부(160)를 포함하여 구성할 수 있다.
기록부(150)는 상기 리더 컨테이너를 보유하고 있는 노드를, 상기 어플리케이션과 연관된 리더 노드로서 지정하고, 상기 리더 노드에 관한 이름, 리더 유지 기간, 리더 종료 잔여 시간, 기록 시간 및 갱신 시간 중 적어도 하나의 정보를, 클러스터(180) 내의 엔드포인트(184)에 기록한다.
일례로 리더 노드 정보에는, 리더 노드의 이름('holderIdentity')과, 현재의 리더가 리더십을 갱신할 수 있는 리더 유지 기간('leaseDurationSeconds'), 팔로어가 리더십을 획득하기 위해 대기해야 하는 리더 종료 잔여 시간, 및 리더가 EP에 리더 기록을 갱신한 시간('renewTime')이 저장될 수 있다.
도 5a에 예시되어 있는 리더 노드에 관한 정보(501)에 따르면, 현재 리더의 이름은 "Pod A1"이고, 리더 유지 기간은 "10초" 남았으며, 가장 최근의 리더 기록의 갱신 시점은 "2019-08-19T01:09:23Z"임을 알려주고 있다.
갱신부(160)는 상기 리더 종료 잔여 시간 이내에, 상기 리더 노드로부터 리더 갱신 요청이 수신되면, 엔드포인트(184)에 기록된 상기 리더 유지 기간 및 상기 리더 종료 잔여 시간이 일정치 증가하도록 갱신한다.
만일 상기 리더 종료 잔여 시간 이내에, 상기 리더 노드로부터 상기 리더 갱신 요청이 수신되지 않으면, 선정부(140)는 상기 리더 컨테이너를 팔로어로 전환할 수 있으며, 상기 팔로어 중 리더십을 요청하는 어느 하나의 메인 컨테이너(181)를, 리더 컨테이너로 전환할 수 있다.
실시예에 따라 카운트부(130)는 노드(181) 별로 상기 리더 컨테이너의 수(리더의 수)를 카운트하고, 기록부(150)는 노드(181) 별로 카운트한 상기 리더 컨테이너의 수를 엔드포인트(184)에 기록할 수 있다.
선정부(140)는 엔드포인트(184)를 참조하여, 노드 별 상기 리더 컨테이너의 수가 균형된 분포를 나타낼 수 있도록, 어느 하나의 노드 내 메인 컨테이너(182)를 리더 컨테이너로 선정할 수 있다.
가령, 선정부(140)는 엔드포인트(184)를 참조하여, 상기 리더 컨테이너의 수가 가장 적은 노드에 배포된 메인 컨테이너(182)를, 상기 어플리케이션과 연관된 리더 컨테이너로 선정할 수 있다.
즉 선정부(140)는 현재까지 노드 별로 보유하고 있는 리더의 수가 가장 작은 노드에 배포된 메인 컨테이너를 리더 컨테이너로 선정해서, 리더가 특정 노드에 집중되지 않도록 함으로써, 쿠버네티스 클러스터의 처리 성능이 저하되는 문제를 해소할 수 있다.
이하에서는 도 8을 참조하여 리더를 분산하는 과정을 설명한다.
도 8은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 특정 노드에 집중된 리더를 분산하는 과정을 설명하기 위한 도면이다.
도 8에는 기존의 리더 선정 알고리즘에 따른 노드 별 리더 분포(810) 및 본 발명에서 제안하는 리더 분산 알고리즘(Balanced Leader Distribution algorithm, BLD algorithm)에 따른 노드 별 리더 분포(820)의 일례가 도시되어 있다.
기존의 리더 선정 알고리즘에 따르면, 쿠버네티스 플랫폼에 의해 다수의 어플리케이션을 배포할 경우, 각 어플리케이션과 연관된 리더의 선정 과정이 독립적으로 이루어지기 때문에, 노드 별 리더 분포(810)와 같이, 특정 노드 'Worker Node 1' 내에 다수의 리더(811, 812, 813)가 집중될 가능성이 있다.
쿠버네티스 클러스터에서는 리더 기반 일관성 유지 정책에 따라, 리더 만이 데이터베이스(813)의 추가/삭제 등의 변경을 전담하기 때문에, 다수의 리더(811, 812, 813)를 보유하는 노드 'Worker Node 1'는 팔로어만 보유하는 'Worker Node 2, 3'에 비해 상당히 높은 연산 부하를 가지게 되어, 전체 쿠버네티스 클러스터 시스템의 성능 저하 문제가 발생할 수 있다.
이에 따라, 본 발명의 리더 분산 시스템은 특정 노드 'Worker Node 1'로 다수의 리더(811, 812, 813)가 집중되지 않도록, 리더 선정 과정에서 노드 별로 보유하고 있는 리더의 수를 확인할 수 있다.
예를 들어 생성부(120)는 어플리케이션 A의 복제본을 유지하는 메인 컨테이너를 각 노드 'Worker Node 1, 2, 3'에 하나씩 저장하고, 카운트부(130)는 다른 어플리케이션과 연관되어 각 노드 'Worker Node 1, 2, 3'에 기 배포된 리더의 수를 카운트할 수 있다.
선정부(140)는 'Worker Node 1'에 0개, 'Worker Node 2'에 1개, 'Worker Node 3'에 1개의 리더가 기 배포된 되어 있다면, 각 노드의 리더의 분포가 균형을 이룰 수 있도록, 'Worker Node 1'에 배포된 메인 컨테이너를, 리더 컨테이너로 선정할 수 있다.
이처럼 본 발명의 리더 분산 알고리즘에 따르면, 클러스터에 속한 각 노드는 배포된 어플리케이션 마다 균형 잡힌 리더 분포(820)를 나타내게 되므로, 클라이언트 단말로부터의 쓰기 요청을 서로 다른 노드에서 처리되도록 할 수 있어, 전체 쿠버네티스 클러스터 시스템의 성능을 개선할 수 있다.
이하에서는 리더 분산 기반 일관성 유지 기법을 설명한다.
실시예에 따라, 쿠버네티스 클러스터에서의 리더 분산 시스템(100)은 처리부(170)를 더 포함하여 구성할 수 있다.
처리부(170)는 클라이언트 단말(미도시)로부터 상기 어플리케이션과 연관된 서비스 요청이 입력되면, 클러스터(180)에 속한 각각의 노드(181) 중에서 상기 서비스 요청을 처리할 수행 노드를, 랜덤 방식, 라운드로빈 방식 및 로드밸런싱 방식 중 어느 하나에 따라 결정한다.
처리부(170)는 상기 쿠버네티스 플랫폼을 통해, 상기 서비스 요청을 상기 수행 노드에 전달하여, 상기 수행 노드에 배포된 메인 컨테이너에 의해 상기 서비스 요청이 처리되면, 처리한 결과값을, 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환한다.
이때 상기 서비스 요청이 데이터 읽기(Read) 요청인 경우, 모든 메인 컨테이너(181) 내의 복제본에서 처리 가능하지만, 데이터 추가, 데이터 삭제 및 데이터 수정과 같은 쓰기(Write) 요청이라면, 데이터 일관성 유지 정책에 따라 리더 컨테이너 만이 처리 가능하다.
따라서 처리부(170)는 상기 서비스 요청이, 데이터 추가, 데이터 삭제, 및 데이터 수정 중 적어도 하나와 연관되는 쓰기(Write) 요청이지만, 상기 수행 노드가 보유하는 메인 컨테이너(181)가 상기 리더 컨테이너가 아니라면, 즉 쓰기(Write) 기능이 허용되지 않은 팔로어라면, 상기 리더 노드를 클러스터(180)에서 탐색하고, 탐색된 리더 노드로 상기 쓰기 요청을 전달하여, 상기 리더 컨테이너에 의해 상기 쓰기 요청을 처리한 결과값을, 상기 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환할 수 있다.
이때 상기 쓰기 요청이 처리됨에 따라, 상기 리더 노드와 연관된 데이터베이스(183)가 변경되면, 처리부(170)는 데이터베이스(183)에서의 변경사항을, 클러스터(180)에 속한 다른 노드들로 전달하여, 각각의 노드와 연관된 데이터베이스를 일시에 갱신하여 동기화 할 수 있다.
도 2는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 일관성 유지 메커니즘을 도시한 개념도이다.
도 2를 참조하면, 본 발명의 쿠버네티스 클러스터에서의 리더 분산 시스템(200)은 쿠버네티스 환경에서 상태 기반 서비스의 일관성을 유지할 수 있다.
상태 기반 서비스란, 서비스 요청 처리를 위해 데이터베이스 또는 키 값 저장소(Key-value store)와 같은 영구 데이터 저장소(persistent data store)를 사용해야 하는 응용프로그램 또는 응용서비스(어플리케이션)를 지칭할 수 있다.
쿠버네티스에서는 응용서비스의 복제본이 포드(Pod)라고 불리는 서비스 단위로 관리/운영될 수 있다.
상태 기반 서비스에서는 각각의 포드(Pod)가 PVC(Persistent Volume Claim)라는 요청을 통해 영구적인 데이터스토어를 자체적으로 생성할 수 있다. 상기 데이터스토어는 도 1에 도시된 데이터베이스(183)에 해당될 수 있다.
예를 들어, 2개의 복제본이 있는 상태 기반 서비스는 2개의 포드를 생성하고, 총 2개의 PVC를 가지며 각 포드에 자체 영구 데이터 저장소가 마련될 수 있다.
각 복제본은 자체 데이터스토어를 사용하므로, 분산된 데이터스토어 간의 불일치 문제를 처리해야 한다.
이에 따라 본 발명의 쿠버네티스 클러스터에서의 리더 분산 시스템(200)은 쿠버네티스의 리더 선정 알고리즘 및 BLD 알고리즘을 기반으로 복제본 사이의 일관성을 유지하기 위한 기법을 제안한다.
상태 기반 서비스는 다수의 복제본으로 구성되는 쿠버네티스 StatefulSet을 통하여 배포될 수 있다. 이때 각 복제본에는 읽기 및 쓰기 작업을 통하여 데이터를 저장하거나 검색할 수 있는 자체적인 데이터스토어가 유지/관리될 수 있다.
리더 기반 일관성 유지 모델에 따르면, 응용서비스를 구성하는 다수의 복제본 중 하나의 복제본을 '리더(leader)'로, 나머지 복제본을 '팔로어(follower)'로 선정해야 한다.
이를 위해 응용프로그램을 구성하는 포드는 도 2에 도시된 것처럼 메인 컨테이너(Main container)와 리더 선정 컨테이너(leader election container)로 구성될 수 있다.
리더 선정 컨테이너는 쿠버네티스에서 리더 선정 기능을 제공하기 위해 자체적으로 제공하는 컨테이너 또는 리더 분산 알고리즘(BLD 알고리즘)이 구현되어 있는 컨테이너일 수 있으며, 또한 Raft나 Zookeeper 등의 기타 알고리즘 기반의 컨테이너가 사용될 수 있다.
메인 컨테이너는 사용자(클라이언트 단말)로부터의 서비스 요청을 처리하고, 리더 선정 컨테이너는 응용서비스 또는 응용프로그램의 복제본 사이의 리더 선정 과정을 수행한다.
리더 선정 컨테이너는 현재의 식별자 정보를 표시하고 있는 JSON 오브젝트를 반환하도록 웹 서버 기능을 제공할 수 있으며, 이에 따라 동일한 포드 내의 메인 컨테이너는 지정된 주소(예, "http://127.0.0.1:40")를 통하여 현재 리더 컨테이너로 선정된 노드를 탐색할 수 있다.
이에 따라, 메인 컨테이너는 쿠버네티스 클러스터 내 본제본들의 역할, 즉 리더인지 팔로어인지를 쉽게 파악할 수 있으며, 해당 역할에 따라 사용자의 서비스 요청을 처리하게 된다.
즉 외부의 사용자는 쿠버네티스를 통하여 상태 기반 서비스 또는 응용프로그램에 서비스 요청을 전달할 수 있으며, 서비스 요청을 받은 복제본은 자신의 역할(리더 또는 팔로어) 및 요청 동작(읽기 또는 쓰기)에 따라 다르게 처리될 수 있다.
예를 들어 읽기(Read) 동작이 요청된 경우는 리더/팔로어의 역할에 관계 없이 서비스 요청을 수신한 모든 복제본(포드)에 의해 처리 가능하다.
반면 쓰기(Write) 동작이 요청된 경우는 리더 컨테이너에 의해서만 처리될 수 있다.
이에 따라 서비스 요청을 수신한 포드가 팔로어일 경우, 해당 포드는 리더 역할을 하는 포드로 쓰기 요청을 전달(redirection)하고, 해당 포드 내 리더 컨테이너에서 쓰기 요청을 처리하고, 그에 따른 데이터스토어의 변경사항을 다른 노드들로 전송해 동기화하여 데이터스토어의 일관성을 유지할 수 있다.
도 3은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 선정 알고리즘의 개요를 도시한 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템은 응용서비스 개발자의 편의를 제공하고 개발 비용을 낮추기 위하여, 쿠버네티스 자체적으로 개발된 리더 선정 알고리즘(Leader election algorithm)(300)을 컨테이너 이미지 형식으로 제공하여 리더 선정 기능을 수행할 수 있다. 한편 쿠버네티스 클러스터에서의 리더 분산 시스템은 Raft, Zookeeper와 같이 잘 알려진 리더 선정 알고리즘을 사용하여 리더를 선정할 수도 있다.
쿠버네티스의 리더 선정 알고리즘(300)에서는 리더 선정에 필요한 정보를 보관하기 위하여 쿠버네티스 엔드포인트(Kubernetes Endpoint)(EP)라는 객체에 주석(annotation)을 이용할 수 있다. 이에 관해서는 도 5a에서 후술한다.
쿠버네티스의 리더 선정 알고리즘의 개요는 도 3에 나타나 있다.
팔로어(Follower)는 리더(Leader)로 전환하기 위하여, 주기적으로 TryAcquireOrRenew() 함수를 호출하여 EP의 리더 기록을 확인한다(단계 301).
상기 리더 기록은, 현재 리더 컨테이너를 보유하고 있는 리더 노드에 관한 정보로서, 리더 노드의 이름(holderIdentity), 리더 유지 기간(leaseDuration), 리더 종료 잔여 시간 및 기록 시간/갱신 시간(renewTime)을 포함할 수 있다.
리더 노드는 주기적으로 TryAcquireOrRenew() 함수를 호출하고(단계 305), EP의 리더 기록을 갱신하여 현재 리더십을 유지한다(단계 303).
만약, 현재의 리더가 EP의 기록을 갱신하지 못한 채 리더 유지 기간(leaseDuration)이 만료되면(단계 302), 다른 팔로어가 EP에 리더 기록을 변경함으로써 새로운 리더가 될 수 있다(단계 304).
한편, 쿠버네티스 클러스터에 다수의 응용서비스를 배포할 경우, 쿠버네티스의 리더 선정 컨테이너는 개별 응용서비스 별로 독립적으로 동작하게 된다. 즉 리더 선정 과정에서 클러스터의 노드 상태 정보(어떤 노드에 리더가 선정되었는지 등)를 파악하지 않기 때문에, 특정 노드에 다수의 리더가 집중되어 선정될 가능성이 높다.
또한 앞서 설명한 리더 기반 일관성 유지 정책에 따라, 통산 리더가 데이터스토어의 추가/삭제 등 변경 기능을 전담하고 있어 팔로어에 비해 높은 연산 부하를 갖는다.
즉 클러스터 내 특정 노드에 다수의 리더가 집중될 경우, 리더가 많은 노드가 다른 노드보다 높은 연산 부하가 집중될 수 있으며 노드 간 작업 부하 불균형 문제 및 전체 쿠버네티스 클러스터 시스템의 성능저하 문제가 발생할 수 있다.
이에 따라, 본 발명의 쿠버네티스 클러스터에서의 리더 분산 시스템은 도 3에 도시된 쿠버네티스의 리더 선정 알고리즘(300)의 성능을 개선할 수 있는 BLD(Balanced Leader Distribution) 알고리즘을 제안한다.
도 4는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 분산 알고리즘의 개요를 도시한 도면이다.
도 4에 도시된 리더 분산 알고리즘(BLD algorithm)(400)에 따르면, 팔로어가 리더로 전환되기 위해 추가적인 리더 분산 조건(BLD condition)을 만족해야 하며, 이는 checkBLD() 함수를 통하여 확인할 수 있다.
리더 분산 알고리즘(400)에서는 클러스터 내 각 노드에 선정된 리더 수 정보를 관리하는 LEMP(Leader Management)라는 Endpoint 개체를 이용할 수 있다. 이에 관해서는 도 5b에서 후술한다.
각 응용서비스를 구성하는 다수의 복제본은 클러스터 노드들에 분산 배치되어 있으며, 각 복제본은 포드(Pod) 단위로 구현되어 있다. 각 포드는 팔로어로 초기화되어 있으며, TryAcquireOrRenew() 함수를 주기적으로 호출함으로써 리더의 상태를 확인한다(단계 401).
본 단계(401)에서 각 포드는 먼저 EP의 존재 여부를 확인하는데, EP의 이름은 리더 선정 구성 파일에 정의되어 있다. 만일 EP가 존재하지 않을 경우 포드는 새로운 EP를 생성한다.
이때 새로운 EP의 주석에 저장되는 리더 정보(리더 노드 정보)는 현재 리더 선정에 참여하는 포드(elector, 선거인)가 된다. 만일 EP가 존재하고 있을 경우, 현재 선거인은 주석의 EP로부터 리더 레코드(leaderRecord)를 획득하고, 자신이 갖고 있는 관찰자 레코드(observerRecord)와 비교하게 된다(단계 402).
즉 각 복제본은 관찰자 레코드(observerRecord)와 관찰자 시간(observerTime)을 유지하고 있으며, 관찰자 기록은 가장 최근의 리더 선정 정보를 관리하는 데에 사용된다. 만일 획득한 리더 레코드(leaderRecord)가 업데이트되었을 경우, observerRecord 정보를 업데이트하며, 관찰자 시간(observerTime)은 관찰자 기록이 업데이트된 시간을 기록한다(단계 403).
만일 해당 포드(선거인)가 리더일 경우, EP에 리더 기록을 갱신함으로써, 리더 상태를 유지한다(단계 406)
반대로 해당 포드(선거인)이 팔로어일 경우, 관찰자 시간에서 현재시간까지의 총 경과시간을 계산하여 시간 초과 여부를 확인하고, 이 값이 EP의 리더 유지 기간(leaseDuration) 보다 클 경우, checkBLD() 함수를 호출하여 리더 분산을 위한 추가 조건(BLD condition)을 만족하는지 여부를 파악한다(단계 404).
checkBLD() 함수에서는 LMEP가 존재하는지 확인하고(LMEP의 이름은 구성 파일에 정의됨), LMEP가 존재하지 않을 경우 새로운 LMEP를 생성하고 주석에 리더 수 정보를 저장한다.
LMEP가 존재할 경우에는, LMEP의 주석으로부터 LMEP 레코드(LMEP Record)를 얻을 수 있다. 해당 포드(선거인)는 이 정보로부터 임계값(threshold)를 계산하고 BLD 조건을 파악할 수 있다.
만일 BLD(리더 균등 배포) 조건이 충족되면(단계 405), EP의 리더 기록을 업데이트하면서 리더로 전환될 수 있고, 동시에, LMEP에 기록되어 있는 노드 별 리더 수 정보를 업데이트 한다(단계 406). 이후, 해당 포드는 주기적으로 EP의 리더 레코드를 갱신하게 된다.
나머지 팔로어들을 위의 절차를 반복함으로써, 기존 리더가 리더 유지 기간 동안 리더십을 갱신하는 데에 실패할 경우 리더십을 획득하게 된다.
상술한 리더 분산 알고리즘(400)은 도 6a 내지 도 6b에 도시된 프로그래밍 코드에 의해 구현될 수 있다.
도 5a 내지 5b에는 엔드포인트(EP)의 일례들이 도시되어 있다.
도 5a는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 리더 노드 정보를 기록한 엔드포인트를 도시한 도면이다.
도 5a를 참조하면, 본 발명의 쿠버네티스 클러스터에서의 리더 분산 시스템은 리더 컨테이너를 보유하는 노드를, 리더 노드로서 지정하고, 지정한 리더 노드에 관한 정보(501)을 클러스터에 속한 모든 노드가 접근 가능한 엔드포인트(EP) 내 'epA' 객체에 기록할 수 있다.
리더 노드 정보(501)에는 'holderIdentity', 'leaseDurationSeconds' 및 'renewTime'이 저장될 수 있다.
'holderIdentity'은 리더 노드의 이름을 나타내고, 'leaseDurationSeconds'은 리더 유지 기간 또는 리더 종료 잔여 시간을 나타내며, 'renewTime'은 리더 노드 정보의 기록 시간 또는 갱신 시간을 나타낼 수 있다.
즉 'leaseDurationSeconds'는 현재의 리더가 리더십을 갱신하거나, 팔로어가 리더십을 획득하기 위해 기다려야 하는 시간으로 볼 수 있으며, 'renewTime'은 리더가 EP에 리더 기록을 갱신한 시간을 의미한다.
도 5a에 예시되어 있는 리더 노드에 관한 정보(501)에 따르면, 현재 리더의 이름은 "Pod A1"이고, 리더 유지 기간은 "10초" 남았으며, 가장 최근의 리더 기록의 갱신 시점은 "2019-08-19T01:09:23Z"임을 알려주고 있다.
도 5b는 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 시스템에서, 노드 별 리더의 수를 기록한 엔드포인트를 도시한 도면이다.
도 5b를 참조하면, 본 발명의 쿠버네티스 클러스터에서의 리더 분산 시스템은 클러스터에 속한 노드 각각으로, 보유하고 있는 리더의 수를 카운트하고, 카운트한 리더의 수(502)를, 노드 별로 엔드포인트(EP) 내 'LEMP' 객체에 기록할 수 있다.
상세히 설명하면, 쿠버네티스 클러스터에서의 리더 분산 시스템은 클러스터 내 각 노드에 선정된 리더 수 정보를 관리하는 LEMP라는 엔드포인트 객체를 생성하고, 기존의 쿠버네티스 리더 선정 알고리즘에서 사용하는 EP 사용 방법과 유사하게, LMEP의 주석(Annotations)을 사용하여 필요한 정보를 저장하게 된다.
도 5b에 예시된 것처럼, LEMP 객체에는 노드 별 리더의 수(502)가 기록되어 있다.
쿠버네티스 클러스터에서의 리더 분산 시스템은 상기 LEMP 객체를 통하여, 노드 별 리더 수(numberOfLeadersInNode) 정보 및 클러스터 내 총 리더 수(totalLeader)를 알 수 있으며, 또한 쿠버네티스에서 제공하는 API를 통하여 클러스터 내의 노드 수(totalWorkderNodes) 정보를 알 수 있다.
상기 노드 별 리더 수(numberOfLeadersInNode)와 클러스터 내 총 리더 수(totalLeader)에 관한 정보를 이용하여 클러스터에 균형 있게 리더를 분산하기 위해, 쿠버네티스 클러스터에서의 리더 분산 시스템은 checkBLD() 함수를 이용하여 각 노드가 가질 수 있는 리더 수에 대한 임계값(threshold)를 계산할 수 있다.
다시 말하면, 쿠버네티스 클러스터에서의 리더 분산 시스템은 LMDP의 주석으로부터 각 노드(LMEPRecord)의 리더 수를 얻고, (totalLeader + 1)/totalWorkerNode)의 수식을 통하여 리더의 균일한 배치를 위한 임계값을 계산할 수 있다.
checkBLD() 함수는 대상 노드의 리더 수가 임계값보다 작을 경우에만 참(true)으로 결과값을 반환할 수 있다.
따라서 쿠버네티스 클러스터에서의 리더 분산 시스템은 기존 리더 선정 알고리즘에서의 리더 전환 조건 이외에도, checkBLD() 함수를 통하여 해당 복제본이 소속된 노드에 임계값 이하의 리더가 선정된 상태에서만, 리더 후보자(팔로어)를 리더로 전환할 수 있으며, 이에 따라 쿠버네티스 클러스터 내 각 노드의 리더 수를 제한할 수 있다. 참고로 기존 리더 선정 알고리즘에서의 리더 전환 조건이란, 주기적인 EP 상태 정보 확인 및 기존 리더의 리더십 갱신 실패를 말할 수 있다.
도 5b에 예시된 LEMP에 따르면, 노드 1이 2개의 리더를 가지고, 노드 2와 노드 3이 각각 1개의 리더를 가지고 있어, 3개의 노드에 리더가 고르게 분산된 분포를 나타내고 있다.
이처럼 본 발명의 리더 분산 시스템은 클러스터 내의 엔드포인트(Endpoint, EP)에 기록되는 리더 노드의 정보(501) 및 각각의 노드가 보유하는 리더의 수(502)를 참조하여, 특정 노드에 집중되는 리더를 효율적으로 분산할 수 있으며, 리더가 적절히 분산된 쿠버네티스 클러스터를 이용하여, 클라이언트 단말로부터의 서비스 요청을 신속하게 처리하여 쿠버네티스 클러스터의 성능을 개선할 수 있다.
또한 본 발명의 리더 분산 시스템은 클라이언트 단말로부터의 서비스 요청(쓰기 요청)을 처리한 후에는 상기 클러스터 내의 엔드포인트를 이용하여 데이터베이스의 동기화를 실시해 일관성을 유지할 수 있다.
이하, 도 7에서는 본 발명의 실시예들에 따른 리더 분산 시스템(100)의 작업 흐름을 상세히 설명한다.
도 7은 본 발명의 일실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 방법의 순서를 도시한 흐름도이다.
본 실시예에 따른 쿠버네티스 클러스터에서의 리더 분산 방법은, 상술한 리더 분산 시스템(100)에 의해 수행될 수 있다.
도 7을 참조하면, 단계(710)에서 리더 분산 시스템(100)은 쿠버네티스 플랫폼을 실행하여 클러스터를 구성한다. 상기 클러스터는 2 이상의 노드를 포함하도록 구성될 수 있다.
단계(720)에서 리더 분산 시스템(100)은 쿠버네티스 플랫폼을 통해 배포할 어플리케이션이 지정되면, 상기 어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 포드 단위로 상기 클러스터 내의 노드에 저장한다.
이에 따라 각 노드는 메인 컨테이너를 보유하게 되며, 각 노드 내의 메인 컨테이너 중 어느 하나가 리더 컨테이너로서 선정되어, 해당 리더 컨테이너 만이 쓰기 기능을 수행할 수 있다.
상기 메인 컨테이너가 리더 컨테이너인지 팔로어인지를 나타내는 상태 정보가, 상기 포드 내 리더 선정 컨테이너에 유지될 수 있다.
단계(730)에서 리더 분산 시스템(100)은 타 어플리케이션과 연관되어 상기 각각의 노드에 기 배포된 컨테이너 중, 리더 컨테이너의 수를 카운트한다.
단계(740)에서 리더 분산 시스템(100)은 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값 이내인지를 고려해 상기 각 노드에 배포된 메인 컨테이너 중에서 상기 어플리케이션과 연관된 리더 컨테이너를 선정한다.
일례로 리더 분산 시스템(100)은 상기 리더 컨테이너의 수가 임계값 이내인 노드에 배포된 메인 컨테이너 중에서 상기 리더 컨테이너를 선정하게 되며, 상기 리더 컨테이너의 수가 임계값을 초과하는 노드에 배포된 메인 컨테이너는 상기 리더 선정 시 제외함으로써, 특정 노드에 다수의 리더 컨테이너가 집중되지 않도록 할 수 있다.
리더 분산 시스템(100)은 쿠버네티스 클러스터 내의 노드에 새로운 어플리케이션을 배포하려 할 때, 응용서비스를 제공하는 메인 컨테이너와 리더 선정 컨테이너를 포함한 포드를 각 노드에 배포하고, 각 노드에 배포한 메인 컨테이너 중에서 쓰기 기능을 허용할 리더 컨테이너를 선정할 시, 이전에 배포된 다른 어플리케이션들과 연관된 리더 컨테이너의 노드 별 분포를 고려함으로써, 클러스터 내에서 개별 어플리케이션들의 리더 컨테이너가 분산되도록 할 수 있다.
단계(750)에서, 리더 분산 시스템(100)은 클라이언트 단말로부터의 서비스 요청을 상기 클러스터 내의 노드로 전달하여 처리한다.
리더 분산 시스템(100)은 클라이언트 단말로부터 서비스 요청이 입력되면, n개의 노드 중에서 서비스 요청을 처리할 수행 노드를, 랜덤 방식, 라운드로빈 방식 및 로드밸런싱 방식 중 어느 하나에 따라 결정하고, 쿠버네티스 플랫폼을 통해, 상기 서비스 요청을 수행 노드에 전달하여, 수행 노드에 배포된 메인 컨테이너 내의 복제본에 의해 상기 서비스 요청을 처리한 결과값을, 쿠버네티스 플랫폼을 통해, 클라이언트 단말에 반환할 수 있다.
이때 상기 서비스 요청이, 데이터 추가, 데이터 삭제, 및 데이터 수정 중 적어도 하나와 연관되는 쓰기(Write) 요청이지만, 상기 수행 노드가 보유하는 메인 컨테이너가, 리더 컨테이너가 아니면, 리더 분산 시스템(100)은 리더 컨테이너를 보유하는 리더 노드를 상기 클러스터에서 탐색하고, 탐색된 리더 노드로 상기 쓰기 요청을 재전달하여, 상기 리더 컨테이너에서 상기 쓰기 요청을 처리하게 할 수 있다.
또한 리더 분산 시스템(100)은 상기 쓰기 요청을 처리하는 동안의 데이터베이스의 변경사항을 상기 클러스터에 속한 다른 노드들로 전달하여 동기화함으로써, 일관성을 유지할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100: 리더 분산 시스템
110: 구성부
120: 생성부
130: 카운트부
140: 선정부
150: 기록부
160: 갱신부
170: 처리부
180: 클러스터
181: 노드
182: 메인 컨테이너
183: 데이터베이스
184: 엔드포인트(EP)

Claims (15)

  1. 쿠버네티스 플랫폼을 실행하여 클러스터를 구성하는 단계;
    어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 상기 클러스터 내의 노드에 배포하는 단계;
    타 어플리케이션과 연관되어 기 배포된 메인 컨테이너 중에서 리더(Leader)로 선정된 리더 컨테이너의 수를, 상기 노드 별로 카운트하는 단계;
    상기 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값을 넘는지를 고려하여, 상기 어플리케이션과 연관된 리더 컨테이너를, 상기 클러스터 내의 노드에 배포한 메인 컨테이너 중에서 선정하는 단계;
    상기 선정에 따라 상기 리더 컨테이너를 보유하는 노드를, 상기 어플리케이션과 연관된 리더 노드로서 지정하는 단계;
    상기 리더 노드에 관한 이름, 리더 유지 기간, 리더 종료 잔여 시간, 기록 시간 및 갱신 시간 중 적어도 하나의 정보를, 상기 클러스터 내의 엔드포인트에 기록하는 단계; 및
    상기 리더 종료 잔여 시간 이내에, 상기 리더 노드로부터 리더 갱신 요청이 수신되면, 상기 엔드포인트에 기록된 상기 리더 유지 기간 및 상기 리더 종료 잔여 시간이 일정치 증가하도록 갱신하는 단계
    를 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  2. 제1항에 있어서,
    상기 노드 별로 카운트한 상기 타 어플리케이션과 연관된 리더 컨테이너의 수를, 상기 클러스터 내의 엔드포인트(Endpoint, EP)에 기록하는 단계; 및
    상기 엔드포인트를 참조하여, 상기 리더 컨테이너의 수가 가장 적은 노드에 배포된 메인 컨테이너를, 상기 어플리케이션과 연관된 리더 컨테이너로 선정하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  3. 제1항에 있어서,
    상기 클러스터 내의 노드에 배포한 메인 컨테이너 중 어느 하나가 상기 어플리케이션과 연관된 리더 컨테이너로 선정되면,
    상기 리더 컨테이너로 선정되지 못한 나머지의 메인 컨테이너를 상기 어플리케이션과 연관된 팔로어로 선정하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  4. 제3항에 있어서,
    상기 리더 컨테이너에 대해, 상기 어플리케이션과 관련한 쓰기(Write) 기능 및 읽기(Read) 기능을 허용하는 단계; 및
    상기 팔로어로 선정된 메인 컨테이너에 대해, 상기 어플리케이션과 관련한 읽기 기능을 허용하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  5. 삭제
  6. 제1항에 있어서,
    상기 리더 종료 잔여 시간 이내에, 상기 리더 노드로부터 상기 리더 갱신 요청이 수신되지 않으면,
    상기 리더 컨테이너를, 팔로어로 전환하는 단계; 및
    상기 팔로어 중 리더십을 요청하는 어느 하나의 메인 컨테이너를, 상기 리더 컨테이너로 전환하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  7. 제1항에 있어서,
    클라이언트 단말로부터 서비스 요청이 입력되면,
    상기 클러스터에 속한 각각의 노드 중에서 상기 서비스 요청을 처리할 수행 노드를, 랜덤 방식, 라운드로빈 방식 및 로드밸런싱 방식 중 어느 하나에 따라 결정하는 단계;
    상기 쿠버네티스 플랫폼을 통해, 상기 서비스 요청을 상기 수행 노드에 전달하는 단계; 및
    상기 수행 노드가 보유하는 메인 컨테이너에 의해 상기 서비스 요청을 처리한 결과값을, 상기 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  8. 제7항에 있어서,
    상기 서비스 요청이 데이터 추가, 데이터 삭제, 및 데이터 수정 중 적어도 하나와 연관되는 쓰기(Write) 요청이고,
    상기 수행 노드가 보유하는 메인 컨테이너가, 상기 어플리케이션과 연관된 리더 컨테이너가 아닐 경우,
    상기 리더 컨테이너를 보유하는 리더 노드를, 상기 클러스터에서 탐색하는 단계; 및
    상기 리더 노드로 상기 쓰기 요청을 재전달하여, 상기 리더 컨테이너에 의해 상기 쓰기 요청을 처리한 결과값을, 상기 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  9. 제8항에 있어서,
    상기 쓰기 요청이 처리됨에 따라, 상기 리더 노드와 연관된 데이터베이스가 변경되면,
    상기 데이터베이스에서의 변경사항을, 상기 클러스터에 속한 다른 노드로 전달하여, 각각의 노드와 연관된 데이터베이스를 갱신함으로써, 동기화 하는 단계
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 방법.
  10. 제1항 내지 제4항, 제6항 내지 제9항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
  11. 쿠버네티스 플랫폼을 실행하여 클러스터를 구성하는 구성부;
    어플리케이션과 연관된 응용서비스를 제공하는 메인 컨테이너를, 상기 클러스터 내의 노드에 배포하는 생성부;
    타 어플리케이션과 연관되어 기 배포된 메인 컨테이너 중에서 리더로 선정된 리더 컨테이너의 수를, 노드 별로 카운트하는 카운트부;
    상기 노드 별로 카운트한 상기 리더 컨테이너의 수가 설정된 임계값을 넘는지를 고려하여, 상기 어플리케이션과 연관된 리더 컨테이너를, 상기 클러스터 내의 노드에 배포한 메인 컨테이너 중에서 선정하는 선정부;
    상기 선정에 따라 상기 리더 컨테이너를 보유하는 노드를, 상기 어플리케이션과 연관된 리더 노드로서 지정하고, 상기 리더 노드에 관한 이름, 리더 유지 기간, 리더 종료 잔여 시간, 기록 시간 및 갱신 시간 중 적어도 하나의 정보를, 상기 클러스터 내의 엔드포인트에 기록하는 기록부; 및
    상기 리더 종료 잔여 시간 이내에, 상기 리더 노드로부터 리더 갱신 요청이 수신되면, 상기 엔드포인트에 기록된 상기 리더 유지 기간 및 상기 리더 종료 잔여 시간이 일정치 증가하도록 갱신하는 갱신부
    를 포함하는 쿠버네티스 클러스터에서의 리더 분산 시스템.
  12. 삭제
  13. 제11항에 있어서,
    클라이언트 단말로부터 서비스 요청이 입력되면,
    상기 클러스터에 속한 각각의 노드 중에서 상기 서비스 요청을 처리할 수행 노드를, 랜덤 방식, 라운드로빈 방식 및 로드밸런싱 방식 중 어느 하나에 따라 결정하고, 상기 쿠버네티스 플랫폼을 통해, 상기 서비스 요청을 상기 수행 노드에 전달하고, 상기 수행 노드가 보유하는 메인 컨테이너에 의해 상기 서비스 요청을 처리한 결과값을, 상기 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환하는 처리부
    를 더 포함하는 쿠버네티스 클러스터에서의 리더 분산 시스템.
  14. 제13항에 있어서,
    상기 서비스 요청이, 데이터 추가, 데이터 삭제, 및 데이터 수정 중 적어도 하나와 연관되는 쓰기(Write) 요청이고,
    상기 수행 노드가 보유하는 메인 컨테이너가, 상기 어플리케이션과 연관된 리더 컨테이너가 아닐 경우,
    상기 처리부는,
    상기 리더 컨테이너를 보유하는 리더 노드를, 상기 클러스터에서 탐색하고,
    상기 리더 노드로 상기 쓰기 요청을 재전달하여, 상기 리더 컨테이너에 의해 상기 쓰기 요청을 처리한 결과값을, 상기 쿠버네티스 플랫폼을 통해, 상기 클라이언트 단말에 반환하는
    쿠버네티스 클러스터에서의 리더 분산 시스템.
  15. 제14항에 있어서,
    상기 쓰기 요청이 처리됨에 따라, 상기 리더 노드와 연관된 데이터베이스가 변경되면,
    상기 처리부는,
    상기 데이터베이스에서의 변경사항을, 상기 클러스터에 속한 다른 노드들로 전달하여, 각각의 노드와 연관된 데이터베이스를 갱신함으로써, 동기화 하는
    쿠버네티스 클러스터에서의 리더 분산 시스템.
KR1020200015831A 2020-02-10 2020-02-10 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템 KR102192442B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200015831A KR102192442B1 (ko) 2020-02-10 2020-02-10 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200015831A KR102192442B1 (ko) 2020-02-10 2020-02-10 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템

Publications (1)

Publication Number Publication Date
KR102192442B1 true KR102192442B1 (ko) 2020-12-17

Family

ID=74089911

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200015831A KR102192442B1 (ko) 2020-02-10 2020-02-10 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템

Country Status (1)

Country Link
KR (1) KR102192442B1 (ko)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220092444A (ko) * 2020-12-24 2022-07-01 서울여자대학교 산학협력단 네이티브 클라우드 컴퓨팅 환경에서의 실시간 시뮬레이션 방법
KR20220142844A (ko) 2021-04-15 2022-10-24 이용장 취약점의 자동 분석이 가능한 쿠버네티스 관리 시스템 및 그 방법
KR20230053345A (ko) 2021-10-14 2023-04-21 한국전자통신연구원 엣지 서버 클러스터 환경의 동적 자원 관리 방법 및 장치
CN116340431A (zh) * 2023-05-24 2023-06-27 阿里云计算有限公司 一种分布式系统、数据同步方法、电子设备及存储介质
KR20240000141A (ko) 2022-06-23 2024-01-02 주식회사 이노그리드 쿠버네티스 기반 가상머신과 컨테이너의 통합관리 시스템 및 방법
KR102643204B1 (ko) * 2023-07-27 2024-03-05 주식회사 시큐브 컨테이너 기반 클라우드 접근통제 시스템 및 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170057153A (ko) 2015-11-16 2017-05-24 아즈빌주식회사 패널 계기의 장착 브래킷
KR20180123228A (ko) * 2017-05-08 2018-11-16 충북대학교 산학협력단 Sdn 컨트롤러 클러스터 환경에서의 분산 데이터 스토어 로드 밸런싱 시스템 및 방법
KR101997978B1 (ko) 2017-09-29 2019-07-08 충북대학교 산학협력단 분산 데이터스토어 성능 개선 장치 및 방법
US20190370113A1 (en) * 2018-05-29 2019-12-05 EMC IP Holding Company LLC Group-based container checkpoint generation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170057153A (ko) 2015-11-16 2017-05-24 아즈빌주식회사 패널 계기의 장착 브래킷
KR20180123228A (ko) * 2017-05-08 2018-11-16 충북대학교 산학협력단 Sdn 컨트롤러 클러스터 환경에서의 분산 데이터 스토어 로드 밸런싱 시스템 및 방법
KR101997978B1 (ko) 2017-09-29 2019-07-08 충북대학교 산학협력단 분산 데이터스토어 성능 개선 장치 및 방법
US20190370113A1 (en) * 2018-05-29 2019-12-05 EMC IP Holding Company LLC Group-based container checkpoint generation

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220092444A (ko) * 2020-12-24 2022-07-01 서울여자대학교 산학협력단 네이티브 클라우드 컴퓨팅 환경에서의 실시간 시뮬레이션 방법
KR20220142844A (ko) 2021-04-15 2022-10-24 이용장 취약점의 자동 분석이 가능한 쿠버네티스 관리 시스템 및 그 방법
KR20220142971A (ko) 2021-04-15 2022-10-24 이용장 취약점의 자동 분석이 가능한 쿠버네티스 관리 방법
KR20230053345A (ko) 2021-10-14 2023-04-21 한국전자통신연구원 엣지 서버 클러스터 환경의 동적 자원 관리 방법 및 장치
KR20240000141A (ko) 2022-06-23 2024-01-02 주식회사 이노그리드 쿠버네티스 기반 가상머신과 컨테이너의 통합관리 시스템 및 방법
CN116340431A (zh) * 2023-05-24 2023-06-27 阿里云计算有限公司 一种分布式系统、数据同步方法、电子设备及存储介质
CN116340431B (zh) * 2023-05-24 2023-09-01 阿里云计算有限公司 一种分布式系统、数据同步方法、电子设备及存储介质
KR102643204B1 (ko) * 2023-07-27 2024-03-05 주식회사 시큐브 컨테이너 기반 클라우드 접근통제 시스템 및 방법

Similar Documents

Publication Publication Date Title
KR102192442B1 (ko) 쿠버네티스 클러스터에서의 리더 분산 방법 및 리더 분산 시스템
US10691716B2 (en) Dynamic partitioning techniques for data streams
US10795905B2 (en) Data stream ingestion and persistence techniques
US9971823B2 (en) Dynamic replica failure detection and healing
US9794135B2 (en) Managed service for acquisition, storage and consumption of large-scale data streams
US9276959B2 (en) Client-configurable security options for data streams
US10635644B2 (en) Partition-based data stream processing framework
US9639589B1 (en) Chained replication techniques for large-scale data streams
CA2930026C (en) Data stream ingestion and persistence techniques
US9471585B1 (en) Decentralized de-duplication techniques for largescale data streams
US9053167B1 (en) Storage device selection for database partition replicas
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
EP2419845B1 (en) Policy-based storage structure distribution
JP5998206B2 (ja) クラスタデータグリッドにおける拡張可能な中央集中型動的リソース分散
JP7389793B2 (ja) 分散型異種ストレージシステムにおけるデータ一貫性のリアルタイムチェックのための方法、デバイス、およびシステム
Rajalakshmi et al. An improved dynamic data replica selection and placement in cloud
US20160078065A1 (en) Policy-based Storage Structure Distribution
Du et al. Cost-effective strong consistency on scalable geo-diverse data replicas
Liu et al. Replication in distributed storage systems: State of the art, possible directions, and open issues
US10979303B1 (en) Segmentation of maintenance on distributed systems
US20210278991A1 (en) Method and distributed storage system for aggregating statistics
US11119994B1 (en) Record-by-record live migration using segmentation
Eberhardt et al. Smac: State management for geo-distributed containers
US20230283663A1 (en) Randomization of heartbeat communications among multiple partition groups
Yang et al. Pyxis+: A Scalable and Adaptive Data Replication Framework

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant