KR20180016479A - 분산 데이터베이스의 부하를 레벨링하는 방법 및 장치 - Google Patents

분산 데이터베이스의 부하를 레벨링하는 방법 및 장치 Download PDF

Info

Publication number
KR20180016479A
KR20180016479A KR1020187000181A KR20187000181A KR20180016479A KR 20180016479 A KR20180016479 A KR 20180016479A KR 1020187000181 A KR1020187000181 A KR 1020187000181A KR 20187000181 A KR20187000181 A KR 20187000181A KR 20180016479 A KR20180016479 A KR 20180016479A
Authority
KR
South Korea
Prior art keywords
load
servers
server
data slice
ranked
Prior art date
Application number
KR1020187000181A
Other languages
English (en)
Other versions
KR102047900B1 (ko
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 텐센트 테크놀로지(센젠) 컴퍼니 리미티드
Publication of KR20180016479A publication Critical patent/KR20180016479A/ko
Application granted granted Critical
Publication of KR102047900B1 publication Critical patent/KR102047900B1/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/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • 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/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • 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/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 개시는 분산 데이터베이스의 부하를 레벨링하는 방법을 제공하며, 상기 방법은, 통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운트하는 단계; 개개의 서버의 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하며, n 개의 최하위 서버를 저부하 서버로 결정하는 단계; 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 소스 데이터 슬라이스로 결정하고, 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 타겟 데이터 슬라이스로서 결정하고, 소스 데이터 슬라이스와 타겟 데이터 슬라이스를 교환하는 단계를 포함하며, n은 양의 정수이다. 본 개시는 분산 데이터베이스의 부하를 레벨링하는 장치를 더 개시한다.

Description

분산 데이터베이스의 부하를 레벨링하는 방법 및 장치
본 출원은 2015년 7월 29일자로 출원된 "분산 데이터베이스의 부하를 레벨링하는 방법 및 장치"라는 명칭의 중국 특허 출원 제201510456585.2호의 우선권을 주장하는 바이며, 그 개시의 내용은 그 전체로서 원용에 의해 본 명세서에 포함된다.
본 개시(disclosure)는 인터넷 기술에 관한 것으로, 더욱 상세하게 말하자면, 분산 데이터베이스의 부하를 레벨링(leveling)하는 방법 및 장치에 관한 것이다.
최근, 데이터양의 급격한 증가에 따라, 분산 데이터베이스 기술 또한 급속히 발전되어 왔다. 분산 데이터베이스 기술은 원래의 중앙 집중화 데이터베이스의 데이터를 다수의 데이터 슬라이스로 분할하고, 이들을 복수의 독립적인 데이터 저장 노드에 분산하여 저장하고, 물리적으로 분산된 복수의 데이터 저장장치(storage) 유닛을 연결하여 논리적으로 통합된 데이터베이스를 형성한다. 분산 데이터베이스 기술은 여러 서버가 저장 장치 부하를 공유하는 데 사용되는 스케일러블 시스템(scalable system) 아키텍처를 사용하며, 이는 시스템 신뢰성(reliability), 가용성 및 액세스 효율성을 향상시킬 뿐만 아니라 확장하기 용이하다. 데이터 슬라이스의 균형된 분산을 유지하기 위해, 전체 분산 데이터베이스 시스템 중 하나의 서버의 데이터 슬라이스 수가 이행 임계값(migration threshold)에 도달하는 경우, 최대 개수의 데이터 슬라이스를 저장하는 서버 상의 데이터 슬라이스를 더 적은 개수의 데이터 슬라이스를 저장하는 서버로 이동시켜야 한다. 예를 들어, 데이터 세트가 서버 A 상의 100개의 데이터 슬라이스 및 서버 B 상의 50개의 데이터 슬라이스를 가지면, 2개의 서버 상의 데이터 집합의 데이터 슬라이스 수가 비슷하거나 동일할 때까지 서버 A의 데이터 슬라이스를 서버 B로 이동해야 한다.
본 개시의 실시 예는 전체 분산 데이터베이스 시스템의 부하를 효과적으로 감소시키기 위해 분산 데이터베이스의 부하를 레벨링하는 방법 및 장치를 제공한다.
본 개시의 실시 예는 분산 데이터베이스의 부하를 레벨링하는 방법을 제공하며, 상기 방법은,
통계 기간(statistical period) 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의(each) 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하는 단계;
개개의(respective) 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지(from the highest to the lowest) 매기고(rank), n 개의 최상위 서버(top-ranked)를 고부하(high-load) 서버로 결정하고, n 개의 최하위(bottom-ranked) 서버를 저부하(low-load) 서버로 결정하는 단계;
상기 고부하 서버와 상기 저부하 서버를 순회하여(traverse), i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진(inversely ranked) 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작(operation); 및 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟(target) 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환(swap)하는 동작을 수행하는 단계를 포함하고, 상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같다.
본 개시의 실시 예는 분산 데이터베이스의 부하를 레벨링하는 장치를 제공하며, 상기 장치는 프로세서 및 메모리를 포함하고, 상기 메모리는 상기 프로세서에 의해 실행가능한 명령을 저장하며, 상기 명령은,
통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하고;
개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며;
상기 고부하 서버와 상기 저부하 서버를 순회하여 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작; 그리고 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작을 수행하도록 실행되며, 상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같다.
본 개시의 실시 예는 컴퓨터 명령을 저장하는 비일시적 저장 매체를 제공하며, 상기 컴퓨터 명령은 프로세서에 의해,
통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하고;
개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며;
상기 고부하 서버와 상기 저부하 서버를 순회하여, i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작; 그리고 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작을 수행하도록 실행가능하며, 상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같다.
본 개시의 실시 예에 따른 분산 데이터베이스 시스템은 서버의 부하에 따라 서버의 순위를 매기고, 고부하 서버 및 저부하 서버를 각각 필터링(filter out)하고, 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스와 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 교환하며, 이에 따라 한편으로는 고부하 서버의 부하를 효과적으로 감소시키고, 다른 한편으로는, 저부하 서버의 데이터 슬라이스의 일부가 교환되기(swap out) 때문에 저부하 서버의 부하 압력의 일부를 감소시키고 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부를 할애(sparing)할 수 있고, 따라서 고부하 서버 상의 데이터 슬라이스가 저부하 서버에서 교환될 때 저부하 서버에 너무 큰 부하를 발생시키는 상황을 방지하고, 전체 분산 데이터베이스 시스템의 부하를 효과적으로 감소시킬 수 있다.
도 1은 본 개시의 실시 예에 따른 분산 데이터베이스의 부하를 레벨링하는 장치가 위치된 전체 시스템의 도이다.
도 2는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제1 실시 예의 흐름도이다.
도 3은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제2 실시 예의 흐름도이다.
도 4는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제3 실시 예의 흐름도이다.
도 5는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제4 실시 예의 흐름도이다.
도 6은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제5 실시 예의 흐름도이다.
도 7은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제6 실시 예의 흐름도이다.
도 8은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 장치의 모듈의 제1 실시 예의 개략도이다.
도 9는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 장치의 모듈의 제2 실시 예의 개략도이다.
본 개시의 목적, 특성 및 장점의 달성(fulfillment)은 실시 예 및 첨부된 도면을 참조하여 상세히 설명될 것이다.
본 명세서에 설명된 상세한 실시 예는 단지 본 개시의 예시이며 본 개시를 제한하는 것으로 의도되지 않는다는 것을 이해해야 한다.
데이터 슬라이스의 분산을 밸런싱(balancing)하는 종래의 방법은 데이터 슬라이스의 용량만을 고려하지만, 데이터 슬라이스에 의해 점유되는 부하를 고려하지 않는다. 그러나 이동될 데이터 슬라이스에 의해 점유되는 부하가 너무 높으면, 데이터 슬라이스가 다른 서버로 이동되는 경우 다른 서버의 부하가 너무 높아질 수 있으며, 이는 분산 데이터베이스 시스템의 전체 효율성에 영향을 미칠 수 있다.
도 1을 참조하면, 도 1은 본 개시의 실시 예에 따른 분산 데이터베이스의 부하를 레벨링하는 장치가 위치된 전체 시스템의 도면이다. 시스템은 CPU와 같은 프로세서(101), 네트워크 인터페이스(104), 사용자 인터페이스(103), 메모리(105) 및 통신 버스(102)를 포함할 수 있다. 통신 버스(102)는 이들 구성 요소들 간의 연결 및 통신을 수행하도록 구성된다. 사용자 인터페이스(103)는 디스플레이, 키보드, 표준 유선 인터페이스 및 표준 무선 인터페이스를 포함할 수 있다. 네트워크 인터페이스(104)는 표준 유선 인터페이스 및 표준 무선 인터페이스(예를 들어, Wi-Fi 인터페이스)를 포함할 수 있다. 메모리(105)는 고속 랜덤 액세스 메모리(Random-access Memory, RAM)일 수 있거나, 자기 디스크 저장 장치(storage)와 같은 비휘발성 메모리 또는 비일시적인 메모리 일 수 있다. 메모리(105)는 또한 상술한 프로세서(101)로부터 멀리 떨어져 위치된 저장 디바이스(storage device)일 수 있다. 컴퓨터 저장 매체로서, 메모리(105)는 운영 체제, 네트워크 통신 모듈, 사용자 인터페이스 모듈 및 분산 데이터베이스의 부하를 레벨링하기 위한 프로그램을 포함할 수 있다.
도 1에 도시된 바와 같이, 분산 데이터베이스의 부하를 레벨링하는 장치가 위치된 시스템에서, 네트워크 인터페이스(104)는 주로 서버 또는 단말에 연결되어 서버 또는 단말과 데이터 통신을 수행하도록 구성되고; 사용자 인터페이스(103)는 주로 사용자 명령을 수신하고 사용자와 상호 작용하도록 구성되며; 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하기 위한 프로그램을 호출하여,
통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하고;
개개의 서버의 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며;
고부하 서버와 저부하 서버를 순회하여 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작; 그리고 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, i번째 소스 데이터 슬라이스와 i번째 타겟 데이터 슬라이스를 교환하는 동작을 수행하는 동작을 수행할 수 있으며, n은 양의 정수이고, i는 양의 정수이며, i는 n보다 작거나 같다.
일 실시 예에서, 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하는 프로그램을 호출하여,
i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하고;
i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하며;
i번째 타겟 데이터 슬라이스와 i번째 소스 데이터 슬라이스가 교환된 후, 개개의 서버들 중에서 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하고; 그리고,
그렇다면, 개개의 서버들 중 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지, i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스 다음의 데이터 슬라이스를 사용하여 i번째 소스 데이터 슬라이스를 업데이트하고, i번째 타겟 데이터 슬라이스와 업데이트된 i번째 소스 데이터 슬라이스가 교환된 후 개개의 서버들 중 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 동작을 수행하며, j는 양의 정수이고, j의 초기 값은 1이고, j는 i번째 순위의 고부하 서버 상의 데이터 슬라이스의 수보다 작거나 같다.
일 실시 예에서, 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하는 프로그램을 호출하여,
i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계값을 초과하는지 결정하고; 그리고
그렇다면, i번째 순위의 고부하 서버 상의 데이터 슬라이스를 사용하여 교환 동작을 수행하는 것을 거부하거나, 그렇지 않다면, i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하는 것을 수행하는 동작을 더 수행한다.
일 실시 예에서, 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하는 프로그램을 호출하여,
현재 통계 기간으로서 다음 통계 기간으로 진입하고, 현재 통계 기간 동안 모든 서버의 부하를 카운트하고;
개개의 서버의 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, 현재 통계 기간의 n개의 최상위 서버를 고부하 서버로 결정하며;
현재 통계 기간의 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지를 결정하고; 그리고
그렇다면, 미리 설정된 부하 비율 임계값을 증가시키고, 현재 통계 기간의 모든 고부하 서버를 다시 레벨링하는, 즉, 고부하 서버 및 저부하 서버를 다시 순회하여 대응하는 동작을 수행하는 동작을 더 수행한다.
일 실시 예에서, 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하는 프로그램을 호출하여,
개개의 서버의 CPU 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n1 개의 최상위 서버를 고부하 서버의 제1 그룹으로 결정하고, n1 개의 최하위 서버를 저부하 서버의 제1 그룹으로 결정하고; 그리고
개개의 서버로부터 고부하 서버의 제1 그룹과 저부하 서버의 제1 그룹을 제외시키고, 나머지 순위의 서버의 트래픽 부하에 따라 나머지 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n2 개의 최상위 서버를 고부하 서버의 제2 그룹으로 결정하며, n2개의 최하위 서버를 저부하 서버의 제2 그룹으로 결정하는 동작을 더 수행하며, n1은 n보다 작은 양의 정수이고, n2는 n보다 작은 양의 정수이고, n1 + n2 = n이다.
일 실시 예에서, 프로세서(101)는 메모리(105)에 저장된 분산 데이터베이스의 부하를 레벨링하는 프로그램을 호출하여,
분산 데이터 시스템으로부터 유휴 서버의 정보를 획득하고;
i번째 소스 데이터 슬라이스를 i번째 순위의 고부하 서버로부터 유휴 서버로 전달하며;
i번째 타겟 데이터 슬라이스를 i번째 역으로 순위가 매겨진 저부하 서버로부터 i번째 순위의 고부하 서버로 전달하고; 그리고
유휴 서버로 전달된 i번째 소스 데이터 슬라이스를 i번째 역으로 순위가 매겨진 저부하 서버로 전달하는 동작을 수행한다.
도 1에 도시된 바와 같은 분산 데이터베이스의 부하를 레벨링하는 장치와 장치가 위치된 분산 데이터베이스 시스템은, 서버의 부하에 따라 서버의 순위를 매기고, 고부하 서버 및 저부하 서버를 각각 필터링하고, 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스와 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 교환하며, 이에 따라 한편으로는 고부하 서버의 부하를 효과적으로 감소시키고, 다른 한편으로는, 저부하 서버의 데이터 슬라이스의 일부가 교환되기 때문에 저부하 서버의 부하 압력의 일부를 감소시키고 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부를 할애할 수 있고, 따라서 고부하 서버 상의 데이터 슬라이스가 저부하 서버에서 교환될 때 저부하 서버에 너무 큰 부하를 발생시키는 상황을 방지하고, 전체 분산 데이터베이스 시스템의 부하를 효과적으로 감소시킬 수 있다.
도 2에 도시된 바와 같이, 도 2는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제1 실시 예의 흐름도이다. 본 실시 예에서 언급된 분산 데이터베이스의 부하를 레벨링하는 방법은 다음과 같은 단계를 포함한다.
단계(S10)에서, 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율이 통계 기간(statistical period ) 동안 카운트된다.
본 실시 예의 분산 데이터베이스 시스템은 복수의 샤드 서버(shard server)를 포함하고, 각각의 서버는 복수의 데이터 슬라이스로 로딩된다. 각각의 서버에서 모니터링 및 보고 프로그램이 미리 배포되어, 다수의 데이터 요청(a number of data requests) 및 데이터 슬라이스가 일정한 간격으로 분산 데이터베이스 시스템의 통계 데이터베이스에 액세스될 때 점유되는 트래픽의 양과 같은 정보를 보고한다. 한편, 시스템은 또한 웹 마스터 서버로부터 현재 통계 기간 동안 개개의 서버의 부하 예를 들어, CPU 부하 및 트래픽 부하를 획득할 수 있다. 현재 통계 기간에 보고된, 특정 데이터 슬라이스의 다수의 데이터 요청 및 액세스 트래픽의 양 그리고 데이터 슬라이스가 위치된 서버의 부하와 같은 정보에 따라, 시스템은 서버의 부하의 데이터 슬라이스의 부하 비율 즉, 서버의 전체 부하에서 서버가 데이터 슬라이스의 액세스 요청(들)을 처리할 때 발생되는 부하의 비율을 획득한다. 통계 기간은 하루 24시간 또는 그 이상일 수 있다. 24시간을 예로 들면, 모니터링 및 보고 프로그램은 5분마다 데이터를 보고할 수 있으며, 24시간에서 데이터 슬라이스에 대한 보고 정보가 288개이다. 통계 작성을 용이하게 하기 위해, 288개의 보고 정보를 긴 보고 정보 체인(long report information chain)으로 병합할 수 있으며, 각각의 데이터 슬라이스는 하나의 보고 정보 체인에 대응한다. 한편, 시스템은 하루 중 고정된 시간, 예를 들어 매일 오전 1시에, 웹 마스터 서버로부터 개개의 서버의 부하를 획득할 수 있다.
단계(S20)에서, 개개의 서버는 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지며, n 개의 최상위 서버가 고부하 서버로 결정되고, n 개의 최하위 서버가 저부하로 결정되며, n은 양의 정수이다.
부하 레벨링을 달성하기 위해, 본 실시 예는 고부하 서버 상의 데이터 슬라이스와 저부하 서버 상의 데이터 슬라이스를 교환한다. 서버는 가장 높은 것에서 가장 낮은 것까지 카운트된 개개의 서버의 부하에 따라 개개의 서버의 순위를 매길 수 있으며, 가장 높은 순위의 서버가 가장 높은 부하를 가지며, 가장 낮은 순위의 서버가 가장 낮은 부하를 갖는다. 그런 다음, 최상위 n 개의 서버가 고부하 서버로 간주되고, 최하위 n 개의 서버가 저부하 서버로 간주된다. 부하 레벨링 동작은 서버의 두 그룹에서 데이터 슬라이스를 교환하는 것이다.
단계(S30)에서, i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스는 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지며, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스는, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지며, i는 양의 정수이며, i는 n보다 작거나 같다.
고부하 서버와 저부하 서버는 미리 그룹으로 쌍을 이룰 수 있다. 본 실시 예에서, 개개의 고부하 서버는 개개의 고부하 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨질 수 있으며, 개개의 저부하 서버는 또한 개개의 저부하 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨질 수 있다. 그런 다음, 고부하 서버의 대기열(queue)의 i번째 순위의 고부하 서버와 저부하 서버의 대기의 i번째 역으로 순위가 매겨진 저부하 서버가 하나의 그룹으로 쌍을 이룰 수 있으며, 예를 들어, 가장 큰 부하를 가지는 고부하 서버와 가장 낮은 부하를 가지는 저부하 서버를 하나의 쌍으로 하고, 두 번째로 큰 부하를 가지는 고부하 서버와 두 번째로 낮은 부하를 가지는 저부하 서버를 하나의 쌍으로 하는 등의 페어링(paring)을 수행한다. 또는 고부하 서버의 대기열의 i번째 순위의 고부하 서버와 저부하 서버의 대기열의 i번째 순위의 저부하 서버, 또는 고부하 서버들과 저부하 서버들이 무작위로 쌍을 이룬다. 고부하 서버 및 저부하 서버가 쌍을 이룬 각각의 그룹에 대해, 서버 상의 개개의 데이터 슬라이스는 개개의 데이터 슬라이스의 부하 비율에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨진다.
단계(S40)에서, i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스가 i번째 소스 데이터 슬라이스로서 결정되고, i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 가지는 데이터 슬라이스가 i번째 타겟 데이터 슬라이스로 결정된다.
단계(S50)에서, i번째 소스 데이터 슬라이스와 i번째 타겟 데이터 슬라이스가 교환된다.
고부하 서버의 부하를 감소시키기 위해, 고부하 서버 상의 데이터 슬라이스(들)가 저부하 서버로 이동될 수 있고, 너무 많은 부하가 저부하 서버로 로딩되어 저부하 서버가 너무 큰 부하를 갖게 되는 것을 방지하기 위해, 본 실시 예는 고부하 서버 상의 상대적으로 높은 부하를 갖는 하나 또는 다수의 데이터 슬라이스를 저부하 서버로 이동시킬 수 있으며, 한편, 저부하 서버 상의 상대적으로 낮은 부하를 갖는 데이터 슬라이스(들)를 고부하 서버로 이동시키며, 두 서버로부터 각각 이동된 슬라이스의 수가 같으며, 이에 따라 고부하 서버와 저부하 서버 사이의 데이터 슬라이스의 교환을 실현할 수 있다. 이와 같이 하면, 고부하 서버의 부하가 효율적으로 감소되며, 그리고 한편 저부하 서버 상의 데이터 슬라이스의 일부가 교환되기 때문에, 저부하 서버의 부하 압력의 일부가 감소되며, 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부가 할애될 수 있으며, 따라서 고부하 서버 상의 데이터 슬라이스(들)가 저부하 서버로 교환될 때 저부하 서버에 너무 큰 부하가 발생하는 상황을 효과적으로 방지할 수 있다.
단계(S60)에서, 모든 고부하 서버가 레벨링되었는지를 결정하고, 즉, 고부하 서버 및 저부하 서버가 모두 순회되었는지(traversed)의 여부가 결정(예를 들어, i가 n과 같은지의 여부를 결정하는 것)되며; 만약 그렇다면, 프로세스는 단계(S61)로 진행하고; 또는 그렇지 않으면 i + 1로 설정하고, 단계(S30)로 리턴한다.
단계(S61)에서, 레벨링이 완료된 것으로 결정되고, 즉, 고부하 서버들 및 저부하 서버들이 순회된 것으로 결정된다.
그룹으로 쌍을 이룬 고부하 서버 및 저부하 서버 상의 소스 데이터 슬라이스 및 타겟 데이터 슬라이스가 교환된 후, 프로세스는 다음 고부하 서버 및 저부하 서버의 그룹으로 진행하여 소스 데이터 슬라이스와 타겟 데이터 슬라이스를 교환하며, 레벨링 프로세스는 쌍을 이룬 고부하 서버 및 저부하 서버의 모든 그룹 상의 소스 데이터 슬라이스와 타겟 데이터 슬라이스가 교환될 때까지 계속된다.
본 실시 예의 분산 데이터베이스 시스템은 서버의 부하에 따라 서버의 순위를 매기고, 고부하 서버 및 저부하 서버를 각각 필터링하고, 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스와 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 교환하며, 이에 따라 한편으로는 고부하 서버의 부하를 효과적으로 감소시키고, 다른 한편으로는, 저부하 서버의 데이터 슬라이스의 일부가 교환되기 때문에 저부하 서버의 부하 압력의 일부를 감소시키고 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부를 할애할 수 있고, 따라서 고부하 서버 상의 데이터 슬라이스가 저부하 서버에서 교환될 때 저부하 서버에 너무 큰 부하를 발생시키는 상황을 방지하고, 전체 분산 데이터베이스 시스템의 부하를 효과적으로 감소시킬 수 있다.
도 3에 도시된 바와 같이, 도 3은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제2 실시 예의 흐름도이다. 본 실시 예는 도 2에 도시된 실시 예의 단계들을 포함하며, 여기서 단계(S40)는 다음의 단계들을 포함한다.
단계(S41)에서, i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스가 i번째 타겟 데이터 슬라이스로 결정된다.
본 실시 예에서, 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨진 저부하 서버의 경우, 앞부분에(in the front) 순위가 매겨진 저부하 서버는 상대적으로 높은 부하를 가지며, 뒷부분에(in the rear) 순위가 매겨진 저부하 서버는 상대적으로 낮은 부하를 갖으며, 한편, 고부하 서버의 경우, 앞부분에 순위가 매겨진 고부하 서버는 상대적으로 높은 부하를 가지고, 뒷부분에 순위가 매겨진 고부하 서버는 상대적으로 낮은 부하를 갖는다. 분산 데이터베이스 시스템의 부하를 가장 효율적으로 레벨링하기 위해, 가장 높은 부하를 갖는 서버가 가장 낮은 부하를 갖는 서버와 쌍을 이룰 수 있으며, 두 번째로 높은 부하를 가지는 서버가 두 번째로 낮은 부하를 가지는 서버와 쌍을 이룰 수 있으며, 즉, i번째 순위의 고부하 서버가 i번째 역으로 순위가 매겨진 저부하 서버와 하나의 그룹으로 쌍을 이룬다.
쌍을 이룬 고부하 및 저부하 서버의 그룹에 대해, 본 실시 예는 단지 고부하 서버 상의 하나의 데이터 슬라이스 및 저부하 서버 상의 하나의 데이터 슬라이스를 교환하고, 다수의 데이터 슬라이스가 교환될 수 있으며, 이 경우, 사용된 방법은 한 쌍의 데이터 슬라이스를 교환하는 것과 동일한 방식으로 추론될(deduced) 수 있다. 타겟 데이터 슬라이스가 저부하 서버 상에서 결정될 수 있고, 고부하 서버의 부하를 상당히 감소시키기 위해, 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스가 타겟 데이터 슬라이스로서 사용된다.
단계(S42)에서, i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스가 i번째 소스 데이터 슬라이스로 결정된다.
소스 데이터 슬라이스가 고부하 서버에서 결정되지만, 결정된 소스 데이터 슬라이스 및 타겟 데이터 슬라이스는 직접 교환되지 않으며, 그러나 선택된 소스 데이터 슬라이스가 적합한 지의 여부는 미리 결정된다. 소스 데이터 슬라이스가 결정되는 경우, j번째 순위의 부하 비율을 갖는 데이터 슬라이스가 소스 데이터 슬라이스로서 사용되며, 여기서 j는 양의 정수이고, j의 초기 값은 1이고, j는 고부하 서버의 데이터 슬라이스 수보다 작거나 같다. 즉, 초기에, 소스 데이터 슬라이스가 가장 높은 부하 비율을 갖는 데이터 슬라이스로부터 시작하여 선택될 수 있고, 미리 결정(predetermination) 후에 소스 데이터 슬라이스가 교환된 경우라도 분산 데이터베이스 시스템의 전체 부하 압력이 여전히 완화될(alleviated) 수 없다면, 다음에 두 번째로 높은 부하 비율을 갖는 데이터 슬라이스가 소스 데이터 슬라이스로서 사용되며, 그리고 그에 따라 결정이 수행된다.
단계(S43)에서, i번째 타겟 데이터 슬라이스와 i번째 소스 데이터 슬라이스가 교환된 후, 개개의 서버들 중에서 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 미리 결정된 부하 비율 임계 값을 초과하는 지의 여부가 미리 결정되며; 그렇다면 j+1로 설정되고, 프로세스가 단계(S42)로 리턴하며, 또는 그렇지 않으면 단계(S50)가 실행된다.
미리 결정을 수행하는 경우, 상기 방법은 타겟 데이터 슬라이스 및 소스 데이터 슬라이스가 교환된 것으로 가정하고, 저부하 서버의 전체 부하 비율에서 타겟 데이터 슬라이스의 부하 비율을 뺀 값을 사용하고, 그 값에 소스 데이터 슬라이스의 부하 비율을 더하고, 그 다음에 계산된 전체 부하 비율이 미리 결정된 부하 비율 임계 값을 초과하는 지의 여부를 비교한다. 그렇다면, 현재 선택된 소스 데이터 슬라이스가 적합하지 않으며, 소스 데이터 슬라이스가 저부하 서버에서 교환되면 저부하 서버의 부하가 너무 높아질 수 있음을 나타내며, 이 경우, 새로운 소스 데이터 슬라이스가 재선택될 필요가 있으며, 소스 데이터 슬라이스는 소스 데이터 슬라이스 다음 순위의 부하 비율을 갖는 데이터 슬라이스를 사용하여 업데이트되고, 다시 미리 결정 동작이 수행된다. 이 프로세스는 개개의 서버들 중 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지 계속되며, 이는 현재 선택된 소스 데이터 슬라이스가 적합함을 나타내며, 그리고 현재 선택된 소스 데이터 슬라이스와 타겟 데이터 슬라이스가 교환되면, 현재 선택된 소스 데이터 슬라이스는 저부하 서버의 부하를 너무 높게 하지 않을 것이다.
본 실시 예에서, 교환이 저부하 서버의 부하를 높게 할 수 있는 지의 여부가 미리 결정되고, 만약 그렇다면, 선택된 소스 데이터 슬라이스가 타겟 데이터 슬라이스와 교환된 후 저부하 서버의 부하를 너무 높게 하지 않을 때까지, 새로운 소스 데이터 슬라이스가 재선택되고 미리 결정이 재수행된다. 이러한 방식으로, 상기 방법은 고부하 서버의 부하를 감소시키는 한편 저부하 서버의 정상 부하를 보증하고(guarantee), 전체 분산 데이터베이스 시스템이 효율적으로 실행되도록 보장한다(ensure).
도 4에 도시된 바와 같이, 도 4는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제3 실시 예의 흐름도이다. 본 실시 예는 도 3에 도시된 실시 예에서의 단계들을 포함하고, 단계 S41 이전에, 상기 방법은 다음의 단계들을 더 포함한다.
단계(S44)에서, i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계 값을 초과하는 지의 여부가 결정되며, 만일 그렇다면, 단계(S45)가 실행되고; 그렇지 않다면, 단계(S41)이 수행된다.
단계(S45)에서, i번째 순위의 고부하 서버 상의 데이터 슬라이스가 교환 동작을 수행하는 데 사용되지 않는다.
본 실시 예에서, 미리 결정 및 데이터 슬라이스 레벨링을 수행하기 전에, 또한 고부하 서버 상의 데이터 슬라이스의 부하 비율이 너무 높은 지의 여부를 결정한다. 부하 비율이 너무 높은 데이터 슬라이스가 저부하 서버로 이동된 후에 저부하 서버의 부하가 너무 높아질 수 있으면, 다음 레벨링 주기를 수행하는 경우 원래의 저부하 서버가 고부하 서버로 결정되고, 부하 비율이 너무 높은 데이터 슬라이스가 다시 재교환(re-swapped out)되어 데이터 슬라이스가 반복적으로 전달된다. 이 경우, 전달 동작을 반복하는 것을 방지하기 위하여, 너무 높은 부하 비율을 갖는 데이터 슬라이스를 가지는 고부하 서버가 다른 방식으로 또는 수동으로 처리된다. 또한, 고부하 서버와 쌍을 이루는 저부하 서버의 경우, 다른 고부하 서버와 쌍을 이룰 수 있으며 또는 다음 레벨링 주기 동안 쌍을 이루도록 예약될 수 있다.
도 5에 도시된 바와 같이, 도 5는 본 개시의 분산 데이터베이스의 부하를 레벨링하는 방법의 제4 실시 예의 흐름도이다. 본 실시 예는 도 2에 도시된 실시 예에서의 단계들을 포함하고, 단계(S61) 후에, 상기 방법은 다음의 단계들을 더 포함한다.
단계(S71)에서 현재 통계 기간으로서 다음 통계 기간이 진입되며, 현재 통계 기간 동안 모든 서버의 부하가 카운트된다.
단계(S72)에서, 개개의 서버는 개개의 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지고, n 개의 최상위 서버는 현재 통계 기간에서 고부하 서버로 결정된다.
단계(S73)에서, 현재 통계 기간의 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지가 결정되고; 만일 그렇다면, 단계(S74)가 실행되며, 또는 그렇지 않으면, 프로세스는 단계(S10)로 리턴한다.
단계(S74)에서, 미리 결정된 부하 비율 임계값이 증가되고, 프로세스는 단계(S10)로 리턴한다.
본 실시 예는 또한 레벨링 정책이 합리적인 지의 여부를 결정하고, 레벨링 저책이 다음 기간에 실행될 때 개개의 서버의 부하를 카운트하고, 이전 레벨링 동작 이후에 개개의 서버의 부하가 개선되었는 지의 여부를 결정한다. 예를 들어, 7일 오전 1시에, 6일 오전 6시부터 7일 오전 1시까지 개개의 서버의 부하가 카운트되고, 제1 레벨링 동작이 서버들에 대해 수행된다. 시스템은 계속 실행되고, 8일 오전 1시에, 8일 오전 7시부터 8일 오전 1시까지의 개개의 서버의 부하가 카운트되며, 7일의 레벨링 동작의 결과가 합리적인지의 여부를 결정하며, 만약 그렇다면, 레벨링 정책이 제2 레벨링 동작을 수행하는 데 사용되며, 또는 그렇지 않으면 레벨링 정책이 조정되고, 새로운 레벨링 정책이 다음 레벨링 동작을 수행하는데 사용된다. 통계 데이터에 따르면 고부하 서버는 서버의 부하에 따라 필터링된다. 통계 기간 동안의 레벨링 및 실행 후, 필터링된 고부하 서버와 레벨링 전의 고부하 서버가 동일하면, 이는 이전 통계 기간의 고부하 서버의 부하 압력이 완화되지 않고, 레벨링 정책이 작동하지 않음을 나타낸다. 이 경우, 예를 들어, 미리 결정된 부하 비율 임계 값을 증가시키는 것과 같이 레벨링 정책을 조정할 필요가 있으며, 상대적으로 큰 부하 비율을 갖는 데이터 슬라이스가 고부하 서버 상에서 선택되는 경우, 고부하 서버 상의 상대적으로 큰 부하 비율이 저부하 서버로 전달될 수 있으며, 이는 레벨링 정책이 효과적임을 보장한다.
도 6에 도시된 바와 같이, 도 6은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 방법의 제5 실시 예의 흐름도이다. 본 실시 예는 도 2에 도시된 실시 예의 단계들을 포함하며, 상기 방법에서, 단계(S20)는 다음을 포함한다.
단계(S21)에서, 개개의 서버는 개개의 서버의 CPU 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지며, n1 개의 최상위 서버가 고부하 서버의 제1 그룹으로 결정되고, n1 개의 최하위 서버가 저부하 서버의 제1 그룹으로 결정되며, 여기서 n1은 n보다 작은 양의 정수이다.
단계(S22)에서, 고부하 서버의 제1 그룹 및 저부하 서버의 제1 그룹은 개개의 서버로부터 제외되고, 나머지 서버는 가장 높은 순위에서 가장 낮은 순위까지 서버의 트래픽 부하에 따라 순위가 매겨지며, n2 개의 최상위 서버는 고부하 서버의 제2 그룹으로 결정되고 n2 개의 최하위 서버는 저부하 서버의 제2 그룹으로 결정되며, n2는 n보다 작은 양의 정수이고 n1 + n2 = n이다.
본 실시 예에서, 고부하 서버 및 저부하 서버가 필터링되는 경우, 서버는 CPU 부하 및 트래픽 부하 측면에서 순위가 매겨질 수 있으며, CPU 부하 및 트래픽 부하의 우선순위(priority)는 미리 구성될 수 있다. 본 실시 예에서, 예를 들면, CPU 부하의 우선순위가 트래픽 부하의 우선순위보다 높다. 그 다음에, 먼저, 시스템의 서버가 그 CPU 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지고, 고부하 서버의 제1 세트 및 저부하 서버의 제1 세트가 필터링되며, 그 다음 고부하 서버의 제2 세트 및 저부하 서버의 제2 세트를 필터링하기 위하여, 필터링 동작이 나머지 서버들에 대해 수행되어, 트래픽 부하에 따라 나머지 서버들의 순위가 가장 높은 순위에서 가장 낮은 순위까지 매겨진다. 페어링 동작을 수행하는 경우, 고부하 서버의 제1 세트는 저부하 서버의 제1 세트와 일대일로 쌍을 이루며, 고부하 서버의 제2 세트는 저부하 서버의 제2 세트와 일대일로 쌍을 이룬다. 데이터 슬라이스들이 교환되는 경우, 고부하 서버의 제1 세트와 저부하 서버의 제1 세트 사이 그리고 고부하 서버의 제2 세트와 저부하 서버의 제2 세트 사이에서 데이터 슬라이스가 교환된다. 본 실시 예는 CPU 부하 측면 및 트래픽 부하 측면에서 각각 교환될 필요가 있는 데이터 슬라이스를 갖는 서버를 필터링하기 때문에, 데이터 슬라이스의 교환이 보다 목표가 되며, 이는 레벨링 정책을 더욱 효과적으로 만들고, 분산 데이터베이스의 전체 부하를 감소시키는데 유리하다.
도 7에 도시된 바와 같이, 도 7은 본 개시의 분산 데이터베이스의 부하를 레벨링하는 방법의 제6 실시 예의 흐름도이다. 본 실시 예는 도 2에 도시된 실시 예의 단계들을 포함하고, 단계(S50)는 다음의 단계를 포함한다.
단계(S51)에서, 유휴(idle) 서버의 정보가 분산 데이터 시스템으로부터 획득된다.
단계(S52)에서, i번째 소스 데이터 슬라이스가 i번째 순위의 고부하 서버로부터 유휴 서버로 전달된다.
단계(S53)에서, i번째 타겟 데이터 슬라이스가 i번째 역으로 순위가 매겨진 저부하 서버로부터 i번째 순위의 고부하 서버로 전달된다.
단계(S54)에서, 유휴 서버로 전달된 i번째 소스 데이터 슬라이스가 i번째 역으로 순위가 매겨진 저부하 서버로 전달된다.
본 실시 예에서, 저부하 서버가 프리(free)하지 않은 경우 소스 데이터 슬라이스가 저부하 서버로 전달되면 저부하 서버의 부하가 너무 높아지고 데이터 전달의 효율에 영향을 미칠 수 있다는 점을 방지하기 위해, 분산 데이터베이스 시스템이 여유 자원(free resources)의 일부, 즉 유휴 서버를 위해 예약되고, 소스 데이터 슬라이스가 먼저 고부하 서버에서 유휴 서버로 전달되며, 그 다음에 타겟 데이터 슬라이스가 저부하 서버에서 고부하 서버로 전달되고, 소스 데이터 슬라이스가 저부하 서버로 전달된다. 그러나 저부하 서버가 프리하면, 소스 데이터 슬라이스가 고부하 서버에서 저부하 서버로 직접 전달되며, 그 다음에 타겟 데이터 슬라이스가 저부하 서버에서 고부하 서버로 전달된다. 저부하 서버가 프리인지의 여부가 미리 결정될 수 있고, 그렇다면 교환 동작이 직접 수행되며, 또는 그렇지 않으면, 프리 서버를 통해 수행되어, 데이터 슬라이스의 전달 효율을 향상시키고, 부하 레벨링이 효율적으로 수행되는 것을 보장한다.
도 8에 도시된 바와 같이, 도 8은 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 장치의 모듈의 제1 실시 예의 개략도이다. 본 실시 예에 따라 제공되는 분산 데이터베이스의 부하를 레벨링하는 장치는,
통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운트하는 통계 모듈(10);
개개의 서버의 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며; 그리고 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 순위 매김(ranking) 모듈(20) - n은 양의 정수이고, i는 양의 정수이며, i는 n보다 작거나 같음 -; 및
i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, i번째 소스 데이터 슬라이스와 i번째 타겟 데이터 슬라이스를 교환하는 조정 모듈(30)을 포함하며, 조정 모듈(30)의 프로세스는 모든 고부하 서버가 레벨링될 때까지 즉, 모든 고부하 서버 및 저부하 서버가 순회될 때까지 계속된다.
본 실시 예의 분산 데이터베이스 시스템은 복수의 샤드 서버를 포함하고, 각각의 서버는 복수의 데이터 슬라이스로 로딩된다. 각각의 서버에서 모니터링 및 보고 프로그램이 미리 배포되어, 다수의 데이터 요청 및 데이터 슬라이스가 일정한 간격으로 분산 데이터베이스 시스템의 통계 데이터베이스에 액세스될 때 점유되는 트래픽의 양과 같은 정보를 보고한다. 한편, 시스템은 또한 웹 마스터 서버로부터 현재 통계 기간 동안 개개의 서버의 부하 예를 들어, CPU 부하 및 트래픽 부하를 획득할 수 있다. 현재 통계 기간에 보고된, 특정 데이터 슬라이스의 다수의 데이터 요청 및 액세스 트래픽의 양 그리고 데이터 슬라이스가 위치된 서버의 부하와 같은 정보에 따라, 시스템은 서버의 부하의 데이터 슬라이스의 부하 비율 즉, 서버의 전체 부하에서 서버가 데이터 슬라이스의 액세스 요청(들)을 처리할 때 발생되는 부하의 비율을 획득한다. 통계 기간은 하루 24시간 또는 그 이상일 수 있다. 24시간을 예로 들면, 모니터링 및 보고 프로그램은 5분마다 데이터를 보고할 수 있으며, 24시간에서 데이터 슬라이스에 대한 보고 정보가 288개이다. 통계 작성을 용이하게 하기 위해, 288개의 보고 정보를 긴 보고 정보 체인으로 병합할 수 있으며, 각각의 데이터 슬라이스는 하나의 보고 정보 체인에 대응한다. 한편, 시스템은 하루 중 고정된 시간, 예를 들어 매일 오전 1시에, 웹 마스터 서버로부터 개개의 서버의 부하를 획득할 수 있다.
부하 레벨링을 달성하기 위해, 본 실시 예는 고부하 서버 상의 데이터 슬라이스와 저부하 서버 상의 데이터 슬라이스를 교환한다. 서버는 가장 높은 순위에서 가장 낮은 순위까지 개개의 서버의 부하에 따라 개개의 서버의 순위를 매길 수 있으며, 가장 높은 순위의 서버가 가장 높은 부하를 가지며, 가장 낮은 순위의 서버가 가장 낮은 부하를 갖는다. 그리고, 최상위 n 개의 서버가 고부하 서버로 간주되며, 최하위 n 개의 서버가 저부하 서버로 간주된다. 부하 레벨링 동작은 두 개의 서버 그룹에서 데이터 슬라이스를 교환하는 것이다.
고부하 서버와 저부하 서버는 미리 하나의 그룹으로 쌍을 이룰 수 있다. 본 실시 예에서, 개개의 고부하 서버는 개개의 고부하 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨질 수 있으며, 개개의 저부하 서버는 개개의 저부하 서버의 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨질 수 있다. 그런 다음, 고부하 서버의 대기열의 i번째 순위의 고부하 서버와 저부하 서버의 대기열의 i번째 역으로 순위가 매겨진 저부하 서버가 하나의 그룹으로 쌍을 이룰 수 있으며, 예를 들어, 가장 큰 부하를 갖는 고부하 서버와 가장 납은 부하를 갖는 저부하 서버가 쌍을 이루고, 두 번째로 큰 부하를 갖는 고부하 서버와 두 번째로 낮은 부하를 갖는 저부하 서버가 쌍을 이룰 수 있다. 또는, 고부하 서버의 대기열의 i번째 순위의 고부하 서버와 저부하 서버의 대기열의 i번째 순위의 저부하 서버; 또는 고부하 서버들과 저부하 서버들이 무작위로 쌍을 이룬다. 한 쌍의 고부하 서버 및 저부하 서버의 각각의 그룹에 대해, 서버 상의 개개의 데이터 슬라이스는 개개의 데이터 슬라이스의 부하 비율에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨진다.
고부하 서버의 부하를 감소시키기 위해, 고부하 서버 상의 데이터 슬라이스(들)가 저부하 서버로 이동될 수 있고, 너무 많은 부하가 저부하 서버로 로딩되어 저부하 서버가 너무 큰 부하를 갖게 되는 것을 방지하기 위해, 본 실시 예는 고부하 서버 상의 상대적으로 높은 부하를 갖는 하나 또는 다수의 데이터 슬라이스를 저부하 서버로 이동시킬 수 있으며, 한편, 저부하 서버 상의 상대적으로 낮은 부하를 갖는 데이터 슬라이스(들)를 고부하 서버로 이동시키며, 두 서버로부터 각각 이동된 슬라이스의 수가 같으며, 이에 따라 고부하 서버와 저부하 서버 사이의 데이터 슬라이스의 교환을 실현할 수 있다. 이와 같이 하면, 고부하 서버의 부하가 효율적으로 감소되며, 그리고 한편 저부하 서버 상의 데이터 슬라이스의 일부가 교환되기 때문에, 저부하 서버의 부하 압력의 일부가 감소되며, 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부가 할애될 수 있으며, 따라서 고부하 서버 상의 데이터 슬라이스(들)이 저부하 서버로 교환될 때 저부하 서버에 너무 큰 부하가 발생하는 상황을 효과적으로 방지할 수 있다.
그룹으로 쌍을 이룬 고부하 서버 및 저부하 서버 상의 소스 데이터 슬라이스 및 타겟 데이터 슬라이스가 교환된 후, 프로세스는 쌍을 이룬 고부하 서버 및 저부하 서버의 다음 그룹으로 진행하여, 소스 데이터 슬라이스 및 타겟 데이터 슬라이스를 교환하며, 상기 레벨링 프로세스는 고부하 서버와 저부하 서버가 쌍을 이룬 모든 그룹의 소스 데이터 슬라이스와 타겟 데이터 슬라이스가 교환될 때까지 계속된다.
본 실시 예의 분산 데이터베이스 시스템은 서버의 부하에 따라 서버의 순위를 매기고, 고부하 서버 및 저부하 서버를 각각 필터링하고, 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스와 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 교환하며, 이에 따라 한편으로는 고부하 서버의 부하를 효과적으로 감소시키고, 다른 한편으로는, 저부하 서버의 데이터 슬라이스의 일부가 교환되기 때문에 저부하 서버의 부하 압력의 일부를 감소시키고 새롭게 교환된 데이터 슬라이스에 대한 부하 공간의 일부를 할애할 수 있고, 따라서 고부하 서버 상의 데이터 슬라이스가 저부하 서버에서 교환될 때 저부하 서버에 너무 큰 부하를 발생시키는 상황을 방지하고, 전체 분산 데이터베이스 시스템의 부하를 효과적으로 감소시킬 수 있다.
도 9에 도시된 바와 같이, 도 9는 본 개시에 따른 분산 데이터베이스의 부하를 레벨링하는 장치의 모듈의 제2 실시 예의 개략도이다. 본 실시 예는 도 8에 도시된 실시 예의 모듈들을 포함하고, 결정 모듈(40)을 더 포함한다.
조정 모듈(30)은 추가로, i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하고, i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하도록 구성되며, j는 양의 정수이고, j의 초기 값은 1이고, j는 i번째 순위의 고부하 서버 상의 데이터 슬라이스의 수보다 작거나 같다.
결정 모듈(40)은 i번째 타겟 데이터 슬라이스와 i번째 소스 데이터 슬라이스가 교환된 후, 개개의 서버들 중에서 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는 지의 여부를 미리 결정하도록 구성된다.
조정 모듈(30)은 추가로, 결정 모듈(40)이 개개의 서버들 중에서 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 경우, i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스 다음의 데이터 슬라이스를 사용하여 i번째 소스 데이터 슬라이스를 업데이트하도록 구성된다.
결정 모듈(40)은 추가로, i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지, i번째 타겟 데이터 슬라이스와 업데이트된 i번째 소스 데이터 슬라이스가 교환된 후 개개의 서버들 중 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값을 초과하는지의 여부를 미리 결정하도록 구성된다.
본 실시 예에서, 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨진 저부하 서버의 경우, 앞부분에 순위가 매겨진 저부하 서버가 상대적으로 높은 부하를 가지며, 뒷부분에 순위가 매겨진 저부하 서버가 상대적으로 낮은 부하를 갖는다. 한편, 고부하 서버의 경우, 앞부분에 순위가 매겨진 고부하 서버는 상대적으로 높은 부하를 가지며 뒷부분에 순위가 매겨진 고부하 서버는 상대적으로 낮은 부하를 가진다. 분산 데이터베이스 시스템의 부하를 가장 효율적으로 레벨링하기 위해, 가장 높은 부하를 가지는 서버가 가장 낮은 부하가 갖는 서버와 쌍을 이룰 수 있으며, 두 번째로 큰 부하를 갖는 서버가 두 번째로 가장 낮은 부하를 갖는 서버와 쌍을 이룰 수 있으며, 즉, i번째 순위의 고부하 서버가 i번째 역으로 순위가 매겨진 저부하 서버와 하나의 그룹으로 쌍을 이룬다.
한 쌍의 고부하 및 저부하 서버 쌍에 대해, 본 실시 예는 단지 고부하 서버 상의 하나의 데이터 슬라이스 및 저부하 서버 상의 하나의 데이터 슬라이스를 교환하며, 다수의 데이터 슬라이스가 교환될 수 있으며, 이 경우, 사용된 방법은 한 쌍의 데이터 슬라이스를 교환하는 것과 동일한 방식으로 추론될 수 있다. 타겟 데이터 슬라이스는 저부하 서버 상에서 결정될 수 있고, 고부하 서버의 부하를 상당히 감소시키기 위해, 저부하 서버 상에서 가장 낮은 부하 비율을 갖는 데이터 슬라이스가 타겟 데이터 슬라이스로서 사용된다.
소스 데이터 슬라이스가 고부하 서버에서 결정되지만, 결정된 소스 데이터 슬라이스 및 타겟 데이터 슬라이스는 직접 교환되지 않으며, 그러나 선택된 소스 데이터 슬라이스가 적합한 지의 여부는 미리 결정된다. 소스 데이터 슬라이스가 결정되는 경우, j번째 순위의 부하 비율을 갖는 데이터 슬라이스가 소스 데이터 슬라이스로서 사용되며, 여기서 j는 양의 정수이고, j의 초기 값은 1이고, j는 고부하 서버의 데이터 슬라이스 수보다 작거나 같다. 즉, 초기에, 소스 데이터 슬라이스가 가장 높은 부하 비율을 갖는 데이터 슬라이스로부터 시작하여 선택될 수 있고, 미리 결정 후에 소스 데이터 슬라이스가 교환된 경우라도 분산 데이터베이스 시스템의 전체 부하 압력이 여전히 완화될 수 없다면, 다음에 두 번째로 높은 부하 비율을 갖는 데이터 슬라이스가 소스 데이터 슬라이스로서 사용되며, 그리고 그에 따라 결정이 수행된다.
미리 결정을 수행하는 경우, 상기 방법은 타겟 데이터 슬라이스 및 소스 데이터 슬라이스가 교환된 것으로 가정하고, 저부하 서버의 전체 부하 비율에서 타겟 데이터 슬라이스의 부하 비율을 뺀 값을 사용하고, 그 값에 소스 데이터 슬라이스의 부하 비율을 더하고, 그 다음에 계산된 전체 부하 비율이 미리 결정된 부하 비율 임계 값을 초과하는 지의 여부를 비교한다. 그렇다면, 현재 선택된 소스 데이터 슬라이스가 적합하지 않으며, 소스 데이터 슬라이스가 저부하 서버에서 교환되면 저부하 서버의 부하가 너무 높아질 수 있음을 나타내며, 이 경우, 새로운 소스 데이터 슬라이스가 재선택될 필요가 있으며, 소스 데이터 슬라이스는 소스 데이터 슬라이스 다음 순위의 부하 비율을 갖는 데이터 슬라이스를 사용하여 업데이트되고, 다시 미리 결정 동작이 수행된다. 이 프로세스는 개개의 서버들 중 저부하 서버의 전체 부하 비율이 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지 계속되며, 이는 현재 선택된 소스 데이터 슬라이스가 적합함을 나타내며, 그리고 현재 선택된 소스 데이터 슬라이스와 타겟 데이터 슬라이스가 교환되면, 현재 선택된 소스 데이터 슬라이스는 저부하 서버의 부하를 너무 높게 하지 않을 것이다.
본 실시 예에서, 교환이 저부하 서버의 부하를 높게 할 수 있는 지의 여부가 미리 결정되고, 만약 그렇다면, 선택된 소스 데이터 슬라이스가 타겟 데이터 슬라이스와 교환된 후 저부하 서버의 부하를 너무 높게 하지 않을 때까지, 새로운 소스 데이터 슬라이스가 재선택되고 미리 결정이 재수행된다. 이러한 방식으로, 상기 방법은 고부하 서버의 부하를 감소시키는 한편 저부하 서버의 정상 부하를 보증하고, 전체 분산 데이터베이스 시스템이 효율적으로 실행되도록 보장한다.
또한, 결정 모듈(40)은 추가로, i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계 값을 초과하는 지의 여부를 결정하도록 구성된다.
그렇다면, 조정 모듈(30)은 추가로, i번째 순위의 고부하 서버 상의 데이터 슬라이스를 사용하여 교환 동작을 수행하는 것을 거부하도록 구성되거거나; 그렇지 않다면, 조정 모듈(30)은 추가로 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하도록 구성된다.
본 실시 예에서, 미리 결정 및 데이터 슬라이스 레벨링을 수행하기 전에, 또한 고부하 서버 상의 데이터 슬라이스의 부하 비율이 너무 높은 지의 여부를 결정한다. 부하 비율이 너무 높은 데이터 슬라이스가 저부하 서버로 이동된 후에 저부하 서버의 부하가 너무 높아질 수 있으면, 다음 레벨링 주기를 수행하는 경우 원래의 저부하 서버가 고부하 서버로 결정되고, 부하 비율이 너무 높은 데이터 슬라이스가 다시 재교환되어 데이터 슬라이스가 반복적으로 전달된다. 이 경우, 전달 동작을 반복하는 것을 방지하기 위하여, 너무 높은 부하 비율을 갖는 데이터 슬라이스를 가지는 고부하 서버가 다른 방식으로 또는 수동으로 처리된다. 또한, 고부하 서버와 쌍을 이루는 저부하 서버의 경우, 다른 고부하 서버와 쌍을 이룰 수 있으며 또는 다음 레벨링 주기 동안 쌍을 이루도록 예약될 수 있다.
또한, 통계 모듈(10)은 추가로 현재 통계 기간으로서 다음 통계 기간으로 진입하고, 현재 통계 기간 동안 모든 서버의 부하를 카운트하도록 구성된다.
순위 매김 모듈(20)은 추가로, 개개의 서버의 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, 현재 통계 기간의 n 개의 최상위 서버를 고부하 서버로 결정하도록 구성된다.
결정 모듈(40)은 현재 통계 기간의 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지를 결정하도록 구성된다.
그렇다면, 조정 모듈(30)은 추가로, 미리 결정된 부하 비율 임계 값을 증가시키고, 현재의 통계 기간의 모든 고부하 서버를 재레벨링 즉, 고부하 서버 및 저부하 서버를 다시 순회하여 대응하는 동작을 수행하도록 구성된다.
본 실시 예는 또한 레벨링 정책이 합리적인 지의 여부를 결정하고, 레벨링 저책이 다음 기간에 실행될 때 개개의 서버의 부하를 카운트하고, 이전 레벨링 동작 이후에 개개의 서버의 부하가 개선되었는 지의 여부를 결정한다. 예를 들어, 7일 오전 1시에, 6일 오전 6시부터 7일 오전 1시까지 개개의 서버의 부하가 카운트되고, 제1 레벨링 동작이 서버들에 대해 수행된다. 시스템은 계속 실행되고, 8일 오전 1시에, 8일 오전 7시부터 8일 오전 1시까지의 개개의 서버의 부하가 카운트되며, 7일의 레벨링 동작의 결과가 합리적인지의 여부를 결정하며, 만약 그렇다면, 레벨링 정책이 제2 레벨링 동작을 수행하는 데 사용되며, 또는 그렇지 않으면 레벨링 정책이 조정되고, 새로운 레벨링 정책이 다음 레벨링 동작을 수행하는데 사용된다. 통계 데이터에 따르면 고부하 서버는 서버의 부하에 따라 필터링된다. 통계 기간 동안의 레벨링 및 실행 후, 필터링된 고부하 서버와 레벨링 전의 고부하 서버가 동일하면, 이는 이전 통계 기간의 고부하 서버의 부하 압력이 완화되지 않고, 레벨링 정책이 작동하지 않음을 나타낸다. 이 경우, 예를 들어, 미리 결정된 부하 비율 임계 값을 증가시키는 것과 같이 레벨링 정책을 조정할 필요가 있으며, 상대적으로 큰 부하 비율을 갖는 데이터 슬라이스가 고부하 서버 상에서 선택되는 경우, 고부하 서버 상의 상대적으로 큰 부하 비율이 저부하 서버로 전달될 수 있으며, 이는 레벨링 정책이 효과적임을 보장한다.
또한, 순위 매김 모듈(20)은,
개개의 서버의 CPU 부하에 따라 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n1 개의 최상위 서버를 고부하 서버의 제1 그룹으로 결정하고, n1 개의 최하위 서버를 저부하 서버의 제1 그룹으로 결정하고; 그리고
개개의 서버로부터 고부하 서버의 제1 그룹과 저부하 서버의 제1 그룹을 제외시키고, 나머지 순위의 서버의 트래픽 부하에 따라 나머지 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n2 개의 최상위 서버를 고부하 서버의 제2 그룹으로 결정하며, n2개의 최하위 서버를 저부하 서버의 제2 그룹으로 결정하도록 구성되며, n1은 n보다 작은 양의 정수이고, n2는 n보다 작은 양의 정수이고, n1 + n2 = n이다.
본 실시 예에서, 고부하 서버 및 저부하 서버가 필터링되는 경우, 서버는 CPU 부하 및 트래픽 부하 측면에서 순위가 매겨질 수 있으며, CPU 부하 및 트래픽 부하의 우선순위(priority)는 미리 구성될 수 있다. 본 실시 예에서, 예를 들면, CPU 부하의 우선순위가 트래픽 부하의 우선순위보다 높다. 그 다음에, 먼저, 시스템의 서버가 그 CPU 부하에 따라 가장 높은 순위에서 가장 낮은 순위까지 순위가 매겨지고, 고부하 서버의 제1 세트 및 저부하 서버의 제1 세트가 필터링되며, 그 다음 고부하 서버의 제2 세트 및 저부하 서버의 제2 세트를 필터링하기 위하여, 필터링 동작이 나머지 서버들에 대해 수행되어, 트래픽 부하에 따라 나머지 서버들의 순위가 가장 높은 순위에서 가장 낮은 순위까지 매겨진다. 페어링 동작을 수행하는 경우, 고부하 서버의 제1 세트는 저부하 서버의 제1 세트와 일대일로 쌍을 이루며, 고부하 서버의 제2 세트는 저부하 서버의 제2 세트와 일대일로 쌍을 이룬다. 데이터 슬라이스들이 교환되는 경우, 고부하 서버의 제1 세트와 저부하 서버의 제1 세트 사이 그리고 고부하 서버의 제2 세트와 저부하 서버의 제2 세트 사이에서 데이터 슬라이스가 교환된다. 본 실시 예는 CPU 부하 측면 및 트래픽 부하 측면에서 각각 교환될 필요가 있는 데이터 슬라이스를 갖는 서버를 필터링하기 때문에, 데이터 슬라이스의 교환이 보다 목표가 되며, 이는 레벨링 정책을 더욱 효과적으로 만들고, 분산 데이터베이스의 전체 부하를 감소시키는데 유리하다.
또한, 조정 모듈(30)은, 분산 데이터 시스템으로부터 유휴 서버의 정보를 획득하고; i번째 소스 데이터 슬라이스를 i번째 순위의 고부하 서버로부터 유휴 서버로 전달하며; i번째 타겟 데이터 슬라이스를 i번째 역으로 순위가 매겨진 저부하 서버로부터 i번째 순위의 고부하 서버로 전달하고; 그리고 유휴 서버로 전달된 i번째 소스 데이터 슬라이스를 i번째 역으로 순위가 매겨진 저부하 서버로 전달하도록 구성된다.
본 실시 예에서, 저부하 서버가 프리하지 않은 경우 소스 데이터 슬라이스가 저부하 서버로 전달되면 저부하 서버의 부하가 너무 높아지고 데이터 전달의 효율에 영향을 미칠 수 있다는 점을 방지하기 위해, 분산 데이터베이스 시스템이 여유 자원의 일부, 즉 유휴 서버를 위해 예약되고, 소스 데이터 슬라이스가 먼저 고부하 서버에서 유휴 서버로 전달되며, 그 다음에 타겟 데이터 슬라이스가 저부하 서버에서 고부하 서버로 전달되고, 소스 데이터 슬라이스가 저부하 서버로 전달된다. 그러나 저부하 서버가 프리하면, 소스 데이터 슬라이스가 고부하 서버에서 저부하 서버로 직접 전달되며, 그 다음에 타겟 데이터 슬라이스가 저부하 서버에서 고부하 서버로 전달된다. 저부하 서버가 프리인지의 여부가 미리 결정될 수 있고, 그렇다면 교환 동작이 직접 수행되며, 또는 그렇지 않으면, 프리 서버를 통해 수행되어, 데이터 슬라이스의 전달 효율을 향상시키고, 부하 레벨링이 효율적으로 수행되는 것을 보장한다.
본 명세서에서, "제1" 및 "제2"와 같은 용어는 하나의 엔티티 또는 동작을 다른 것과 구별하기 위해서만 사용되지만, 이들 엔티티들간 또는 동작들간의 임의의 실질적인 관계 또는 순서를 나타내는 데 반드시 사용되는 것은 아니라는 것을 유의해야한다. 또한, "포함하다", "함유하다(contain)"와 같은 용어, 또는 용어의 임의의 변형은 "포함함"을 의미하지만, 이에 한정되지 않는다. 그러므로 일련의 엘리먼트를 포함하는 프로세스, 방법, 객체(object) 또는 디바이스는 이들 엘리먼트를 포함할 뿐만 아니라 명시적으로 지정되지 않은 다른 엘리먼트를 포함하거나 프로세스, 방법, 객체 또는 디바이스의 고유 엘리먼트를 더 포함할 수 있다. 더이상의 제한이 없는 경우 "하나를 포함한다"로 지정된 엘리먼트의 컨텍스트에서, 지정된 요소를 포함하는 프로세스, 방법, 객체 또는 디바이스는 다른 동일한 요소를 포함할 수 있다.
본 개시의 실시 예의 시퀀스 번호는 단지 설명을 위한 것이며, 실시 예의 우위(superiority) 또는 하위(inferiority)에 대한 제한으로 해석되어서는 안된다.
실시 예의 설명을 통하여, 당업자는 전술한 실시 예에서의 방법이 필요한 일반 하드웨어 플랫폼을 갖는 소프트웨어에 의해 구현될 수 있고 또한 하드웨어에 의해 구현될 수 있다는 것을 알 것이다. 그러나 대부분의 경우, 이전의 것이 바람직하다. 이러한 이해에 기초하여, 종래 기술에 기여하는 본 개시의 기술적 해결 방안의 일부는 소프트웨어 제품으로서 구체화될 수 있으며, 컴퓨터 소프트웨어 제품은 저장 매체(예를 들어, ROM / RAM, 자기 디스크 또는 광 디스크)에 저장되며, 단말 디바이스(예를 들어, 이동 전화, 컴퓨터, 서버, 또는 네트워크 디바이스)가 본 개시의 다양한 실시 예의 방법을 수행할 수 있도록 하는 몇몇 명령을 포함한다.
전술한 설명은 본 개시의 예시적인 실시 예에 불과하지만, 본 개시의 보호 범위를 제한하려는 것은 아니다. 본 개시의 사상 및 원리를 벗어나지 않는 한 임의의 수정, 동등한 대체 또는 개선은 본 개시의 보호 범위 내에 있다.

Claims (18)

  1. 분산 데이터베이스의 부하(load)를 레벨링(leveling)하는 방법으로서,
    통계 기간(statistical period) 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의(each) 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하는 단계;
    개개의(respective) 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지(from the highest to the lowest) 매기고(rank), n 개의 최상위 서버(top-ranked)를 고부하(high-load) 서버로 결정하고, n 개의 최하위(bottom-ranked) 서버를 저부하(low-load) 서버로 결정하는 단계;
    상기 고부하 서버와 상기 저부하 서버를 순회하여(traverse), i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진(inversely ranked) 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작(operation); 및 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟(target) 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환(swap)하는 동작을 수행하는 단계
    를 포함하고,
    상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같은, 방법.
  2. 제1항에 있어서
    상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하는 것은,
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 단계;
    상기 i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 소스 데이터 슬라이스로 결정하는 단계;
    상기 i번째 타겟 데이터 슬라이스와 상기 i번째 소스 데이터 슬라이스가 교환된 후, 상기 개개의 서버들 중에서 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 단계; 및
    그렇다면, 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지, 상기 i번째 순위의 고부하 서버 상의 상기 j번째 순위의 부하 비율을 갖는 데이터 슬라이스 다음의 데이터 슬라이스를 사용하여 상기 i번째 소스 데이터 슬라이스를 업데이트하고, 상기 i번째 타겟 데이터 슬라이스와 상기 업데이트된 i번째 소스 데이터 슬라이스가 교환된 후 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 단계
    를 포함하며,
    상기 j는 양의 정수이고, 상기 j의 초기 값은 1이고, 상기 j는 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스의 수보다 작거나 같은, 방법.
  3. 제2항에 있어서
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 단계 이전에,
    상기 방법은,
    상기 i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계값을 초과하는지 결정하는 단계; 및
    그렇다면, 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스를 사용하여 교환(swapping) 동작을 수행하는 것을 거부하거나, 그렇지 않다면, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 단계를 수행하는 단계
    를 더 포함하는 방법.
  4. 제2항 또는 제3항에 있어서
    상기 고부하 서버 및 상기 저부하 서버를 순회하여 동작을 수행하는 단계 후에, 상기 방법은,
    현재 통계 기간으로서 다음 통계 기간으로 진입하고, 상기 현재 통계 기간 동안 모든 서버의 부하를 카운트하는 단계;
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, 상기 현재 통계 기간의 n개의 최상위 서버를 고부하 서버로 결정하는 단계;
    상기 현재 통계 기간의 상기 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지를 결정하는 단계; 및
    그렇다면, 상기 미리 설정된 부하 비율 임계값을 증가시키고, 상기 현재 통계 기간의 모든 고부하 서버를 다시 레벨링하는, 즉, 고부하 서버 및 저부하 서버를 다시 순회하여 대응하는 동작을 수행하는 단계
    를 더 포함하는 방법.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하는 단계는,
    상기 개개의 서버의 CPU 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n1 개의 최상위 서버를 고부하 서버의 제1 그룹으로 결정하고, n1 개의 최하위 서버를 저부하 서버의 제1 그룹으로 결정하는 단계; 및
    상기 개개의 서버로부터 상기 고부하 서버의 제1 그룹과 상기 저부하 서버의 제1 그룹을 제외시키고, 나머지 순위의 서버의 트래픽 부하에 따라 상기 나머지 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n2 개의 최상위 서버를 고부하 서버의 제2 그룹으로 결정하며, n2개의 최하위 서버를 저부하 서버의 제2 그룹으로 결정하는 단계
    를 포함하며,
    상기 n1은 상기 n보다 작은 양의 정수이고, 상기 n2는 상기 n보다 작은 양의 정수이고, n1 + n2 = n인, 방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작은,
    상기 분산 데이터 시스템으로부터 유휴 서버(idle server)의 정보를 획득하는 단계;
    상기 i번째 소스 데이터 슬라이스를 상기 i번째 순위의 고부하 서버로부터 상기 유휴 서버로 전달(transfer)하는 단계;
    상기 i번째 타겟 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로부터 상기 i번째 순위의 고부하 서버로 전달하는 단계; 및
    상기 유휴 서버로 전달된 상기 i번째 소스 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로 전달하는 단계
    를 포함하는 방법.
  7. 분산 데이터베이스의 부하를 레벨링하는 장치로서,
    프로세서; 및
    메모리
    를 포함하고,
    상기 메모리는 상기 프로세서에 의해 실행가능한 명령을 저장하며,
    상기 명령은,
    통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하고;
    개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며;
    상기 고부하 서버와 상기 저부하 서버를 순회하여 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작; 그리고 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작을 수행하도록 실행되며,
    상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같은, 장치.
  8. 제7항에 있어서
    상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하는 것은,
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하고;
    상기 i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 소스 데이터 슬라이스로 결정하며;
    상기 i번째 타겟 데이터 슬라이스와 상기 i번째 소스 데이터 슬라이스가 교환된 후, 상기 개개의 서버들 중에서 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하고; 그리고,
    그렇다면, 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지, 상기 i번째 순위의 고부하 서버 상의 상기 j번째 순위의 부하 비율을 갖는 데이터 슬라이스 다음의 데이터 슬라이스를 사용하여 상기 i번째 소스 데이터 슬라이스를 업데이트하고, 상기 i번째 타겟 데이터 슬라이스와 상기 업데이트된 i번째 소스 데이터 슬라이스가 교환된 후 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 것
    을 포함하며,
    상기 j는 양의 정수이고, 상기 j의 초기 값은 1이고, 상기 j는 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스의 수보다 작거나 같은, 장치.
  9. 제8항에 있어서
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하기 이전에,
    상기 i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계값을 초과하는지 결정하고; 그리고
    그렇다면, 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스를 사용하여 교환 동작을 수행하는 것을 거부하거나, 그렇지 않다면, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 것을 수행하는 것
    을 더 포함하는 장치.
  10. 제8항 또는 제9항에 있어서
    상기 고부하 서버 및 상기 저부하 서버를 순회하여 동작을 수행한 후에,
    현재 통계 기간으로서 다음 통계 기간으로 진입하고, 상기 현재 통계 기간 동안 모든 서버의 부하를 카운트하고;
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, 상기 현재 통계 기간의 n개의 최상위 서버를 고부하 서버로 결정하며;
    상기 현재 통계 기간의 상기 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지를 결정하고; 그리고
    그렇다면, 상기 미리 설정된 부하 비율 임계값을 증가시키고, 상기 현재 통계 기간의 모든 고부하 서버를 다시 레벨링하는, 즉, 고부하 서버 및 저부하 서버를 다시 순회하여 대응하는 동작을 수행하는 것
    를 더 포함하는 장치.
  11. 제7항 내지 제9항 중 어느 한 항에 있어서
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하는 것은,
    상기 개개의 서버의 CPU 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n1 개의 최상위 서버를 고부하 서버의 제1 그룹으로 결정하고, n1 개의 최하위 서버를 저부하 서버의 제1 그룹으로 결정하고; 그리고
    상기 개개의 서버로부터 상기 고부하 서버의 제1 그룹과 상기 저부하 서버의 제1 그룹을 제외시키고, 나머지 순위의 서버의 트래픽 부하에 따라 상기 나머지 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n2 개의 최상위 서버를 고부하 서버의 제2 그룹으로 결정하며, n2개의 최하위 서버를 저부하 서버의 제2 그룹으로 결정하는 것
    을 포함하며,
    상기 n1은 상기 n보다 작은 양의 정수이고, 상기 n2는 상기 n보다 작은 양의 정수이고, n1 + n2 = n인, 장치.
  12. 제7항 내지 제9항 중 어느 한 항에 있어서,
    상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 것은,
    상기 분산 데이터 시스템으로부터 유휴 서버의 정보를 획득하고;
    상기 i번째 소스 데이터 슬라이스를 상기 i번째 순위의 고부하 서버로부터 상기 유휴 서버로 전달하며;
    상기 i번째 타겟 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로부터 상기 i번째 순위의 고부하 서버로 전달하고; 그리고
    상기 유휴 서버로 전달된 상기 i번째 소스 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로 전달하는 것
    을 포함하는 장치.
  13. 컴퓨터 명령을 저장하는 비일시적 저장 매체로서,
    상기 컴퓨터 명령은 프로세서에 의해,
    통계 기간 동안 분산 데이터베이스 시스템의 모든 서버의 부하 및 각각의 서버 상의 각각의 데이터 슬라이스의 부하 비율을 카운팅하고;
    개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하며;
    상기 고부하 서버와 상기 저부하 서버를 순회하여, i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라, 상기 i번째 순위의 고부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 부하 비율에 따라 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 개개의 데이터 슬라이스의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기는 동작; 그리고 상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하며, 상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작을 수행하도록 실행가능하며,
    상기 n은 양의 정수이고, 상기 i는 양의 정수이며, 상기 i는 상기 n보다 작거나 같은, 저장 매체.
  14. 제13항에 있어서
    상기 i번째 순위의 고부하 서버 상의 높은 부하 비율을 갖는 데이터 슬라이스를 i번째 소스 데이터 슬라이스로 결정하고, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 낮은 부하 비율을 갖는 데이터 슬라이스를 i번째 타겟 데이터 슬라이스로 결정하는 것은,
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하고;
    상기 i번째 순위의 고부하 서버 상의 j번째 순위의 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 소스 데이터 슬라이스로 결정하며;
    상기 i번째 타겟 데이터 슬라이스와 상기 i번째 소스 데이터 슬라이스가 교환된 후, 상기 개개의 서버들 중에서 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이, 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하며; 그리고
    그렇다면, 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값보다 작거나 같아질 때까지, 상기 i번째 순위의 고부하 서버 상의 상기 j번째 순위의 부하 비율을 갖는 데이터 슬라이스 다음의 데이터 슬라이스를 사용하여 상기 i번째 소스 데이터 슬라이스를 업데이트하고, 상기 i번째 타겟 데이터 슬라이스와 상기 업데이트된 i번째 소스 데이터 슬라이스가 교환된 후 상기 개개의 서버들 중 상기 i번째 역으로 순위가 매겨진 저부하 서버의 전체 부하 비율이 상기 미리 설정된 부하 비율 임계값을 초과하는지 미리 결정하는 것
    을 포함하며,
    상기 j는 양의 정수이고, 상기 j의 초기 값은 1이고, 상기 j는 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스의 수보다 작거나 같은, 저장 매체.
  15. 제14항에 있어서
    상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 것 이전에,
    상기 i번째 순위의 고부하 서버 상의 가장 높은 부하 비율을 갖는 데이터 슬라이스의 부하 비율이 미리 결정된 부하 비율 임계값을 초과하는지 결정하고; 그리고
    그렇다면, 상기 i번째 순위의 고부하 서버 상의 데이터 슬라이스를 사용하여 교환 동작을 수행하는 것을 거부하거나, 그렇지 않다면, 상기 i번째 역으로 순위가 매겨진 저부하 서버 상의 가장 낮은 부하 비율을 갖는 데이터 슬라이스를 상기 i번째 타겟 데이터 슬라이스로 결정하는 것을 수행하는 것
    을 더 포함하는 저장 매체.
  16. 제14항 또는 제15항에 있어서
    상기 고부하 서버 및 상기 저부하 서버를 순회하여 동작을 수행한 후에,
    현재 통계 기간으로서 다음 통계 기간으로 진입하고, 상기 현재 통계 기간 동안 모든 서버의 부하를 카운트하고;
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, 상기 현재 통계 기간의 n개의 최상위 서버를 고부하 서버로 결정하며;
    상기 현재 통계 기간의 상기 n 개의 고부하 서버가 이전 통계 기간의 n 개의 고부하 서버와 동일한지를 결정하고; 그리고
    그렇다면, 상기 미리 설정된 부하 비율 임계값을 증가시키고, 상기 현재 통계 기간의 모든 고부하 서버를 다시 레벨링하는, 즉, 고부하 서버 및 저부하 서버를 다시 순회하여 대응하는 동작을 수행하는 것
    을 더 포함하는 저장 매체.
  17. 제13항 내지 제15항 중 어느 한 항에 있어서
    상기 개개의 서버의 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n 개의 최상위 서버를 고부하 서버로 결정하고, n 개의 최하위 서버를 저부하 서버로 결정하는 것은,
    상기 개개의 서버의 CPU 부하에 따라 상기 개개의 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n1 개의 최상위 서버를 고부하 서버의 제1 그룹으로 결정하고, n1 개의 최하위 서버를 저부하 서버의 제1 그룹으로 결정하고; 그리고
    상기 개개의 서버로부터 상기 고부하 서버의 제1 그룹과 상기 저부하 서버의 제1 그룹을 제외시키고, 나머지 순위의 서버의 트래픽 부하에 따라 상기 나머지 서버의 순위를 가장 높은 순위에서 가장 낮은 순위까지 매기고, n2 개의 최상위 서버를 고부하 서버의 제2 그룹으로 결정하며, n2개의 최하위 서버를 저부하 서버의 제2 그룹으로 결정하는 것
    을 포함하며,
    상기 n1은 상기 n보다 작은 양의 정수이고, 상기 n2는 상기 n보다 작은 양의 정수이고, n1 + n2 = n인, 저장 매체.
  18. 제13항 내지 제15항 중 어느 한 항에 있어서,
    상기 i번째 소스 데이터 슬라이스와 상기 i번째 타겟 데이터 슬라이스를 교환하는 동작은,
    상기 분산 데이터 시스템으로부터 유휴 서버의 정보를 획득하고;
    상기 i번째 소스 데이터 슬라이스를 상기 i번째 순위의 고부하 서버로부터 상기 유휴 서버로 전달하며;
    상기 i번째 타겟 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로부터 상기 i번째 순위의 고부하 서버로 전달하고; 그리고
    상기 유휴 서버로 전달된 상기 i번째 소스 데이터 슬라이스를 상기 i번째 역으로 순위가 매겨진 저부하 서버로 전달하는 것
    을 포함하는 저장 매체.
KR1020187000181A 2015-07-29 2016-07-28 분산 데이터베이스의 부하를 레벨링하는 방법 및 장치 KR102047900B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510456585.2A CN106713377B (zh) 2015-07-29 2015-07-29 分布式数据库负载调平的方法和装置
CN201510456585.2 2015-07-29
PCT/CN2016/092005 WO2017016499A1 (zh) 2015-07-29 2016-07-28 分布式数据库负载调平的方法和装置

Publications (2)

Publication Number Publication Date
KR20180016479A true KR20180016479A (ko) 2018-02-14
KR102047900B1 KR102047900B1 (ko) 2019-12-04

Family

ID=57884113

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000181A KR102047900B1 (ko) 2015-07-29 2016-07-28 분산 데이터베이스의 부하를 레벨링하는 방법 및 장치

Country Status (8)

Country Link
US (1) US10554737B2 (ko)
EP (1) EP3331218B1 (ko)
JP (1) JP6615342B2 (ko)
KR (1) KR102047900B1 (ko)
CN (1) CN106713377B (ko)
AU (1) AU2016299084A1 (ko)
CA (1) CA2990753A1 (ko)
WO (1) WO2017016499A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107408359B (zh) 2015-02-04 2020-06-05 富士胶片株式会社 图像显示装置
CN107360067B (zh) * 2017-06-29 2021-08-10 青岛恒金源电子科技有限公司 一种智能家居系统中的网络负载均衡方法
US10324662B2 (en) * 2017-08-28 2019-06-18 International Business Machines Corporation Rebalancing of the first extents of logical volumes among a plurality of ranks
CN108600341A (zh) * 2018-04-09 2018-09-28 广州悦世界信息科技有限公司 一种业务节点分配方法、决策节点及服务器集群
CN110933701B (zh) * 2019-12-12 2022-07-26 新华三大数据技术有限公司 网络负载状态检测方法及装置
CN111193788A (zh) * 2019-12-24 2020-05-22 视联动力信息技术股份有限公司 一种音视频流负载均衡方法和装置
CN117271138B (zh) * 2023-10-27 2024-03-01 山东三木众合信息科技股份有限公司 一种基于数据中心的数据处理方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281106B1 (en) * 2005-03-23 2007-10-09 Emc Corporation Method and apparatus for selective volume swapping in a data storage device based on merging multiple sets of candidate storage devices
JP2014186364A (ja) * 2013-03-21 2014-10-02 Kddi Corp 分散システム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62235646A (ja) * 1986-04-04 1987-10-15 Nec Corp 資源管理方式
US6965651B1 (en) * 2001-05-11 2005-11-15 Micrel, Inc. Method and apparatus for delay adjustment and channel reordering in baseband communication receiving system
JP2005209055A (ja) * 2004-01-26 2005-08-04 Hitachi Ltd ストレージの負荷分散方法
US7457930B2 (en) * 2004-11-19 2008-11-25 International Business Machines Corporation Method for application transparent autonomic data replication improving access performance for a storage area network aware file system
US7281105B1 (en) * 2005-03-23 2007-10-09 Emc Corporation Method and apparatus for selecting data storage devices for participating in logical volume exchange process based on aggregated workload statistics
US9632872B2 (en) * 2012-06-05 2017-04-25 International Business Machines Corporation Reprioritizing pending dispersed storage network requests
US9026758B2 (en) * 2005-09-30 2015-05-05 Cleversafe, Inc. Memory device utilization in a dispersed storage network
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US8375180B2 (en) * 2010-02-05 2013-02-12 International Business Machines Corporation Storage application performance matching
US9606867B2 (en) * 2014-06-05 2017-03-28 International Business Machines Corporation Maintaining data storage in accordance with an access metric
US8886781B2 (en) * 2011-12-13 2014-11-11 Microsoft Corporation Load balancing in cluster storage systems
US8930746B1 (en) * 2012-06-30 2015-01-06 Emc Corporation System and method for LUN adjustment
US8949483B1 (en) * 2012-12-28 2015-02-03 Emc Corporation Techniques using I/O classifications in connection with determining data movements
JP6209863B2 (ja) * 2013-05-27 2017-10-11 富士通株式会社 ストレージ制御装置、ストレージ制御方法およびストレージ制御プログラム
CN103327094A (zh) * 2013-06-19 2013-09-25 成都市欧冠信息技术有限责任公司 数据分布式存储方法与系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7281106B1 (en) * 2005-03-23 2007-10-09 Emc Corporation Method and apparatus for selective volume swapping in a data storage device based on merging multiple sets of candidate storage devices
JP2014186364A (ja) * 2013-03-21 2014-10-02 Kddi Corp 分散システム

Also Published As

Publication number Publication date
CN106713377B (zh) 2019-09-13
CN106713377A (zh) 2017-05-24
EP3331218A1 (en) 2018-06-06
CA2990753A1 (en) 2017-02-02
AU2016299084A1 (en) 2018-01-18
US20180097875A1 (en) 2018-04-05
WO2017016499A1 (zh) 2017-02-02
JP2018521439A (ja) 2018-08-02
EP3331218A4 (en) 2018-07-04
JP6615342B2 (ja) 2019-12-04
KR102047900B1 (ko) 2019-12-04
EP3331218B1 (en) 2022-04-20
US10554737B2 (en) 2020-02-04

Similar Documents

Publication Publication Date Title
KR20180016479A (ko) 분산 데이터베이스의 부하를 레벨링하는 방법 및 장치
US10862957B2 (en) Dissemination of node metrics in server clusters
US10671447B2 (en) Method, apparatus, and network-on-chip for task allocation based on predicted traffic in an extended area
EP3487149B1 (en) Data shard storage method, device and system
CN104238712B (zh) 分布式功率输送
US9225668B2 (en) Priority driven channel allocation for packet transferring
US10713223B2 (en) Opportunistic gossip-type dissemination of node metrics in server clusters
US9594801B2 (en) Systems and methods for allocating work for various types of services among nodes in a distributed computing system
US20210117093A1 (en) Data verification method and apparatus, and storage medium
KR101426673B1 (ko) 검색 시스템에서 시계열 데이터의 효율적 분석을 위한 분산 인덱싱 및 검색 방법
CN111338801B (zh) 一种实现元数据负载均衡的子树迁移方法、装置
CN107995286A (zh) 基于dubbo平台的服务自动启停方法、服务器及存储介质
CN113760549A (zh) 一种pod部署方法及装置
EP2983105B1 (en) Electronic device, on-chip memory and method of operating the on-chip memory
US20140126481A1 (en) Block Scheduling Method For Scalable And Flexible Scheduling In A HSUPA System
US10193790B2 (en) Systems and methods for an intelligent, distributed, autonomous, and scalable resource discovery, management, and stitching
CN112748850B (zh) 用于存储管理的方法、设备和计算机程序产品
CN107480229B (zh) 用于对象检索的分布式计算机数据库系统及其检索方法
CN114064226A (zh) 容器集群的资源调协方法、调协装置及存储介质
CN111240577A (zh) 基于mpp数据库的数据多分片存储方法及装置
CN117873380A (zh) 一种时序数据库集群的动态重平衡策略
JP3064920B2 (ja) 加入者収容負荷自動調整方式
US20210235289A1 (en) Cellular telecommunications network
CN113886059A (zh) 一种数据库数据处理方法、装置、设备及存储介质
CN117851050A (zh) 多核异构新能源芯负载均衡方法、装置和计算机设备

Legal Events

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