KR101748913B1 - 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 - Google Patents

분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 Download PDF

Info

Publication number
KR101748913B1
KR101748913B1 KR1020140113560A KR20140113560A KR101748913B1 KR 101748913 B1 KR101748913 B1 KR 101748913B1 KR 1020140113560 A KR1020140113560 A KR 1020140113560A KR 20140113560 A KR20140113560 A KR 20140113560A KR 101748913 B1 KR101748913 B1 KR 101748913B1
Authority
KR
South Korea
Prior art keywords
gateway
affinity
gateways
client
repositories
Prior art date
Application number
KR1020140113560A
Other languages
English (en)
Other versions
KR20160025994A (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 네이버 주식회사
Priority to KR1020140113560A priority Critical patent/KR101748913B1/ko
Publication of KR20160025994A publication Critical patent/KR20160025994A/ko
Application granted granted Critical
Publication of KR101748913B1 publication Critical patent/KR101748913B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • 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]
    • 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]

Abstract

분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템이 개시된다. 복수의 저장소를 포함하는 데이터 저장 시스템에 대해 복수의 저장소 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고, 데이터 저장 시스템은, 클라이언트로부터의 연산의 요청을 복수의 복제 저장소들 중 하나로 전달하는 복수의 게이트웨이를 더 포함할 수 있다. 이때, 클러스터 관리 방법은, 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간의 연산 친화 정보를 확인하는 단계; 및 연산 친화 정보를 이용하여 클라이언트에서 요청하고자 하는 연산이 적용될 저장소와 연산 친화도의 값이 가장 높은 게이트웨이를 복수의 게이트웨이 중에서 선택하는 단계를 포함할 수 있다.

Description

분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템{CLUSTER MANAGEMENT METHOD AND DATA STORAGE SYSTEM FOR SELECTING GATEWAY IN DISTRIBUTED STORAGE ENVIRONMENT}
본 발명의 실시예들은 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템에 관한 것이다.
네트워크를 통해 연결된 장치들에서 데이터의 분산된 저장소는 비용 효율이 높고, 많은 양의 데이터에 대한 신뢰성 있는 저장소로 이용되고 있다. 이러한 분산된 데이터 저장 시스템에서, 일시적 또는 영구적 데이터 손실에 대한 데이터 가용성과 같은 데이터 일관성(consistency)을 보장하기 위해, 분산된 데이터 저장 시스템에서 동일한 데이터 항목을 네트워크를 통해 연결된 다수의 기기에 복사하는 방법이 개발되었다. 이와 같이, 다수의 기기를 통해 동일한 데이터를 복사하여 저장하는 것을 데이터 복제라 한다. 이러한 데이터 복제는 기기의 고장, 장애 또는 일시적/영구적 데이터 손실의 위험에 대비하기 위해 이용될 수 있다.
한국등록특허 제10-0985166호(분산 저장 시스템에서 파일을 동기화하는 장치 및 방법)에서는 분산 저장된 파일의 동기화를 위해, 클라이언트에 의해 요청되는 파일의 조회수를 집계하고, 소정의 집계 기간 동안 집계된 조회수가 핫파일 선정 임계값 이상인 경우 해당 파일을 핫파일로 선정하며, 상기 핫파일로 선정된 파일을 적어도 하나의 다른 분산 저장 시스템으로 복사하여 동기화하는 구성을 개시하고 있다.
클라이언트가 특정 키에 대한 연산의 비용이 최소화될 수 있도록 게이트웨이를 선택할 수 있는 클러스터 관리 방법 및 데이터 저장 시스템을 제공한다.
복수의 저장소를 포함하는 데이터 저장 시스템의 클러스터 관리 방법에 있어서, 상기 복수의 저장소 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함하고, 상기 데이터 저장 시스템은, 클라이언트로부터의 연산의 요청을 상기 복수의 복제 저장소들 중 하나로 전달하는 복수의 게이트웨이를 더 포함하고, 상기 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간의 연산 친화 정보를 확인하는 단계; 및 상기 연산 친화 정보를 이용하여 상기 클라이언트에서 요청하고자 하는 연산이 적용될 저장소와 연산 친화도의 값이 가장 높은 게이트웨이를 상기 복수의 게이트웨이 중에서 선택하는 단계를 포함하는 것을 특징으로 하는 클러스터 관리 방법이 제공된다.
데이터 저장 시스템에 있어서, 서로 복제 관계를 갖는 복수의 복제 저장소들을 각각 포함하는 복수의 저장소; 요청된 연산을 상기 복수의 복제 저장소들 중 하나로 전달하는 복수의 게이트웨이; 및 상기 복수의 게이트웨이 중 선택된 게이트웨이로 상기 연산을 요청하는 클라이언트를 포함하고, 상기 클라이언트는, 상기 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간의 연산 친화 정보를 확인하고, 상기 연산 친화 정보를 이용하여 상기 연산이 적용될 저장소와 연산 친화도의 값이 가장 높은 게이트웨이를 상기 복수의 게이트웨이 중에서 선택하는 것을 특징으로 하는 데이터 저장 시스템이 제공된다.
클라이언트가 특정 키에 대한 연산의 비용이 최소화될 수 있도록 게이트웨이를 선택할 수 있다.
도 1은 본 발명의 일실시예에 있어서, 설정 마스터의 전체 구조의 예를 도시한 도면이다.
도 2는 본 발명의 일실시예에 있어서, 파티션 그룹 서버들간의 복제 관계의 예를 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 있어서, 복제로그의 예를 도시한 도면이다.
도 4는 본 발명의 일실시예에 있어서, 클러스터 데이터 분할 방식의 예를 도시한 도면이다.
도 5는 본 발명의 일실시예에 있어서, 쓰기 연산에 대해 친화도(affinity)가 존재하는 경우의 연산의 처리 흐름의 예를 도시한 도면이다.
도 6은 본 발명의 일실시예에 있어서, 클러스터 관리 방법을 도시한 흐름도이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명의 실시예들은 데이터 저장 시스템에서 연산 친화 정보를 힌트로 이용하는 클라이언트의 게이트웨이 선택 방법에 관한 것으로, 클라이언트가 특정 키(key)에 대한 연산의 비용이 최소화될 수 있도록 게이트웨이를 선택하는 방식에 대해 설명한다.
연산 친화 정보는 클라이언트가 게이트웨이를 선택하는 경우에 특정 키에 대한 연산을 처리함에 따른 비용을 최소화하기 위해 이용되는 힌트로서 사용될 뿐, 이러한 연산 친화 정보의 사용과는 무관하게 클러스터에 대한 연산이 잘못 동작하는 경우는 없다.
도 1은 본 발명의 일실시예에 있어서, 전체 시스템의 구성요소를 개괄적으로 도시한 도면이다. 본 실시예에서 설명하는 전체 시스템은 네트워크를 통해 연결된 복수의 장치들을 통해 데이터를 분산 저장하기 위한 데이터 저장 시스템(100)일 수 있다. 이러한 데이터 저장 시스템(100)은 도 1에 도시된 바와 같이, 클라이언트(Client, 110), 설정 마스터(Configuration Master, 120) 및 클러스터(Cluster, 130)를 포함할 수 있다.
클라이언트(110)는 클러스터(130)에 저장된 데이터에 대한 생성, 삭제, 변경, 조회 등의 연산을 요청하고, 연산 수행 결과를 수신하는 사용자의 단말장치를 의미할 수 있다. 클라이언트(110)는 구동 시 설정 마스터(120)로부터 클러스터(130)의 게이트웨이 목록을 얻고, 이 목록에 대한 변경 사항을 모니터링할 수 있다. 도 1에서는 하나의 클라이언트(110)만을 나타내고 있으나, 복수의 클라이언트들이 존재할 수 있다.
클러스터(130)는 적어도 하나의 게이트웨이들을 포함할 수 있다. 도 1의 실시예에서는 두 개의 게이트웨이들(제1 게이트웨이(131) 및 제2 게이트웨이(132))을 포함하는 예를 나타내고 있으나, 하나 혹은 셋 이상의 게이트웨이들이 포함될 수도 있다.
클러스터(130)가 포함하는 복수의 게이트웨이들 각각은, 클라이언트(110)의 요청을 받아 요청을 처리하기 위한 파티션 그룹 서버를 찾고, 해당 파티션 그룹 서버에 연산을 요청하는 프록시의 역할을 수행할 수 있다. 이러한 복수의 게이트웨이들 각각은 구동 시, 설정 마스터(120)에서 클러스터(130)의 키(key) 분산 정보를 받을 수 있으며, 클러스터(130)의 확장 및/또는 변경 시에 설정 마스터(120)의 중재 하에 클러스터(130)의 키 분산 정보 변경 작업을 진행할 수 있다.
또한, 클러스터(130)는 복수의 파티션 그룹 서버들을 포함할 수 있다. 이때, 복수의 파티션 그룹 서버들은 복수의 파티션 그룹으로 분류될 수 있다. 도 1에서 클러스터(130)는 복수의 파티션 그룹 서버들을 포함하는 N개의 파티션 그룹들을 도시하고 있다. 예를 들어, 제1 파티션 그룹(133)은 m 개의 파티션 그룹 서버(파티션 그룹 서버 1 부터 파티션 그룹 서버 m까지)를 포함하고 있다. 이때, 일례로, 동일한 파티션 그룹에 포함된 복수의 파티션 그룹 서버들은, 네트워크를 통해 연결된 복수의 장치들 중 둘 이상의 장치들에 구현될 수 있다.
파티션 그룹 서버는, 클러스터(130)에 저장되는 전체 데이터 중 담당하는 부분의 데이터를 저장할 수 있다. 또한, 파티션 그룹 서버는, 키로 구분되는 데이터에 대한 연산을 수행할 수 있다. 이러한 파티션 그룹 서버는, 체크포인트데이터와 복제로그를 통한 복구가 가능한 상태기기 기반의 저장소일 수 있다.
상태기기는 컴퓨터 사이언스(computer science)에서 정의되는 계산 모델로서, 본 발명의 실시예들에서는 다음과 같은 속성을 만족하는 메모리저장소를 의미할 수 있다.
1. 메모리저장소의 상태는 저장된 데이터의 상태 집합을 의미한다.
2. 메모리저장소에서 제공하는 연산의 수행에 의해서 상태의 전이가 확정적으로(deterministic) 일어나며, 연산의 수행 결과도 동일하다.
하나의 파티션 그룹 서버는, 각각 하나의 메모리저장소를 포함할 수 있다. 이때, 메모리저장소에 대한 연산을 순차적으로 수행하면, 상태기기의 정의에 의해서 동일한 파티션 그룹에서 서로 복제 관계에 있는 파티션 그룹 서버들의 메모리저장소들은 데이터(상태)가 동일하게 된다. 본 발명의 실시예들에서는 적어도 둘 이상의 메모리저장소에 수행되는 명령어를 선입선출(First In First Out, FIFO) 방식으로 동일하게 수행함으로써, 적어도 둘 이상의 메모리저장소의 데이터(상태)를 복제할 수 있다.
이때, 본 발명의 실시예들에서 제공하는 메모리저장소의 변경에 대한 일관성은 순차 일관성(sequential consistency)일 수 있다. 이는, 데이터 저장 시스템(100)에서 수행된 모든 연산의 결과가 특정한 명령어들의 순차실행에 의해 수행된 결과와 동일하다는 것을 의미할 수 있다. 예를 들어, 클라이언트(110)는 메모리저장소에 수행한 변경 연산(일례로, 쓰기(write) 연산)의 결과를 (읽기 연산을 통해) 바로 읽을(read) 수 있다. 하나의 파티션 그룹에 포함된 파티션 그룹 서버들 중 적어도 하나는, 복제 관계에서 마스터의 역할을, 나머지 파티션 그룹 서버들은 슬레이브의 역할을 수행하여 복제 관계를 맺을 수 있으며, 메모리저장소에 저장된 데이터(상태)를 서로 동일하게 유지할 수 있다. 이러한 복제 관계에 대해서는 이후 도 2를 통해 더욱 자세히 설명한다.
설정 마스터(120)는 클러스터(130)에 대한 데이터 분산 정보를 저장 및 관리할 수 있으며, 클러스터(130)로 유입되는 연산에 대한 처리를 하는 게이트웨이 목록을 저장 및 관리할 수 있다. 또한, 설정 마스터(120)는 클러스터(130)의 확장/축소에 의해서 클러스터(130)에 대한 데이터 분산 정보가 바뀌는 경우, 게이트웨이(제1 게이트웨이(131) 및 제2 게이트웨이(132))와의 협업을 통해서 데이터 분산 정보를 일괄적으로 관리하는 중재자 역할을 수행할 수 있다.
도 2는 본 발명의 일실시예에 있어서, 파티션 그룹 서버들간의 복제 관계의 예를 설명하기 위한 도면이다. 도 2에서 데이터 저장 시스템(100)은 설정 마스터(Configuration Master, 120)와 마스터 저장부(210) 및 슬레이브 저장부(220)를 도시하고 있다. 여기서, 마스터 저장부(210)와 슬레이브 저장부(220)는 각각 마스터 역할을 수행하는 파티션 그룹 서버와 슬레이브 역할을 수행하는 파티션 그룹 서버에 대응할 수 있다. 예를 들어, 마스터 저장부(210)와 슬레이브 저장부(220)는 동일한 파티션 그룹에 속하면서 서로 다른 장치에 구현될 수 있다.
데이터 저장 시스템(100)은 이미 설명한 바와 같이 데이터를 분산 저장하는 시스템으로, 데이터를 분산 저장하는 장치들에서 전원 공급 중단 등의 장애에 따라 데이터가 유실되는 것을 방지하기 위한 저장부들(210 및 220)을 포함할 수 있다.
저장부들(210 및 220)은 도 2에 도시된 바와 같이, 마스터 역할을 수행하기 위한 마스터 저장부(210)와 슬레이브 역할을 수행하기 위한 슬레이브 저장부(220)로 구성될 수 있다. 이때, 슬레이브 저장부(220)는 동일한 구성을 갖는 복수의 저장부들로 구현될 수도 있다. 예를 들어, 데이터 저장 시스템(100)은 복수의 저장부들을 포함할 수 있고, 그 중 하나의 저장부가 마스터 저장부(210)가 될 수 있으며, 둘 이상의 나머지 저장부들이 각각 슬레이브 저장부들로서 구현될 수 있다. 이때, 복수의 저장부들은 동일한 파티션 그룹에 속할 수 있으며, 각각 서로 다른 장치에 구현될 수 있다. 예를 들어, 저장부들(210 및 220)은 각각 하나의 저장 기기로서 구현될 수 있다. 이 경우, 저장부들(210 및 220)은 개별 전원을 갖는 별도의 저장 기기들이 네트워크를 통해 통신하는 형태로 구현될 수 있다.
또한, 저장부들(210 및 220)은 도 2에 도시된 바와 같이, 리플리케이터(Replicator, 마스터 리플리케이터(211) 및 슬레이브 리플리케이터(221)), 클라이언트 라이브러리(Client Library, 212 및 222), 메모리저장소(213 및 223), 복제로그(214 및 224) 및 체크포인트데이터(215 및 225)를 포함할 수 있다. 클라이언트 라이브러리(212 및 222)는 메모리저장소(213 및 223)에 내장된 형태로 구현될 수 있으며, 체크포인트데이터(215 및 225)는 데이터의 복구를 위한 것으로, 선택적으로 저장부들(210 및 220)에 포함될 수 있다.
마스터 리플리케이터(211)는 메모리저장소(213 및 223)에서 수행할 연산(명령어)을 선입선출 순서로 결정할 수 있다. 이때, 결정된 연산은 마스터 저장부(210)의 복제로그(214)와 슬레이브 저장부(220)의 복제로그(224)에 저장될 수 있다. 이미 설명한 바와 같이, 슬레이브 역할을 수행하기 위한 다수의 저장부들이 존재하는 경우, 저장부들 각각이 슬레이브 리플리케이터와 복제로그를 포함할 수 있다. 이 경우, 마스터 리플리케이터(211)에 의해 결정된 연산은 슬레이브 리플리케이터들의 복제로그들 각각에 저장될 수 있다.
슬레이브 저장부(220)의 클라이언트 라이브러리(222)는 메모리저장소(223)에서 수행할 연산을 마스터 리플리케이터(211)로 전달하고, 수행될 복제로그(224)의 부분에 대한 정보를 로컬 리플리케이터(221)로부터 전달받아 복제로그(224)에서 수행할 연산을 읽어들여 메모리저장소(223)에서 처리할 수 있다. 여기서, "로컬"은 동일한 저장부에 포함된 구성요소를 의미할 수 있다. 예를 들어, 클라이언트 라이브러리(222)의 "로컬 리플리케이터"는 리플리케이터(221)를 의미할 수 있고, 클라이언트 라이브러리(212)의 "로컬 메모리저장소"는 메모리저장소(213)를 의미할 수 있다.
설정 마스터(120)는 리플리케이터들(211 및 221)의 상태 감시와 리플리케이터들(211 및 221)의 장애 발생시 복제관계 재설정을 위한 처리를 수행할 수 있다. 이러한 설정 마스터(120)에 대해서는 이후 더욱 자세히 설명한다.
메모리저장소(213 및 223)는 이미 설명한 바와 같이 상태기기로 정의되는 저장소로서 모든 상태를 메모리상에 상주시킬 수 있다.
복제로그(214 및 224)는 리플리케이터들(211 및 221)로 전달된 연산과 수행하기 위한 연산의 위치에 대한 정보가 저장된 데이터를 의미할 수 있다. 이러한 복제로그(214 및 224)에 대해서는 이후 더욱 자세히 설명한다.
체크포인트데이터(215 및 225)는 메모리저장소(213 및 223)의 시점 데이터를 디스크상의 데이터로 저장할 것을 의미할 수 있다.
마스터 리플리케이터(211)에서 슬레이브 리플리케이터(221)로 전송되는 모든 데이터는 복제로그(224)에 저장될 수 있다. 복제로그(224)는 고정크기의 파일로 구성될 수 있으며, 크게 데이터가 저장되는 부분과 메타데이터가 저장되는 부분으로 구성될 수 있다.
도 3은 본 발명의 일실시예에 있어서, 복제로그의 예를 도시한 도면이다. 도 3은 복제로그(300)가 데이터 부분(310)과 메타데이터 부분(320)으로 구성된 파일들(330 및 340)의 집합으로 구현된 예를 나타내고 있다. 데이터 부분(310)은 복제데이터 자체가 저장되는 부분일 수 있고, 메타데이터 부분(320)은 메타데이터에 대한 체크섬(checksum) 및 복제로그(300)상에서 복제데이터가 어느 위치까지 저장되어 있는가에 대한 정보를 포함할 수 있다.
이때, 복제로그(300)가 포함하는 각 파일들(330 및 340)의 크기가 고정되어 있기 때문에 복제 상에서 임의의 메시지의 위치를 숫자로 나타낼 수 있다. 이 숫자를 로그 시퀀스 넘버(Log Sequence Number, LSN)라 부를 수 있다. 복제로그(300)가 포함하는 파일들(330 및 340)의 이름은 데이터 부분이 시작하는 LSN으로 정의될 수 있다. 따라서, 임의의 메시지의 위치를 나타내는 LSN이 복제로그(300)의 어느 파일의 어느 위치에 저장되어 있는지 역으로 파악이 가능해진다.
복제로그(300)에 저장되는 데이터는 복제로그(300)와 동일한 저장부에 포함된 클라이언트 라이브러리에 의해 요청된 연산 전송의 목적 이외에 복제 프로토콜 상의 메시지를 포함할 수 있다. 아래 표 1은 복제로그(300)에 저장되는 데이터에 대한 정보를 나타내고 있다.
메시지 타입 필드 설명
REP_DATA· ·NID: 리플리케이터의 식별자
·LENGTH: 연산 길이
·DATA: 연산 데이터
DATA 필드 값이 연산의 내용임.
REP_COMMIT ·COMMIT_LSN: 수용된 LSN 복제 프로토콜에서 가용성이 확보된 복제로그의 일련번호를 나타내며, COMMIT_LSN에 명시된 LSN 부분까지 메모리저장소에서 수행됨.
도 4는 본 발명의 일실시예에 있어서, 클러스터 데이터 분할 방식의 예를 도시한 도면이다. 본 발명의 실시예들에서는 키(key)와 값(value)으로 식별되는 저장소(파티션 그룹 서버)를 가정한다. 설정 마스터(120)는 데이터 분산 방식에 대한 정보로서 파티션 넘버(partition number), 파티션 그룹 및 파티선 그룹 서버에 대한 정보를 유지할 수 있다.
파티션 넘버: 파티션 넘버 또는 슬롯 넘버(slot number)는 키 값에 해당하는 데이터가 저장된 파티션 그룹을 식별하기 위한 값을 의미할 수 있다. 예를 들어, 키 값에 대해 해쉬 함수(일례로, 도 4의 CRC16() 함수)의 값을 구하고, 이 값에 특정 값으로 모듈러(modular) 연산(도 4의 "%")을 적용한 결과값을 파티션 넘버 또는 슬롯 넘버라고 할 수 있다. 보다 구체적인 예로, 도 4에서와 같이 모듈러 연산에 적용되는 특정 값이 8192라면, 파티션 넘버는 0과 8191 사이의 값이 될 수 있다. 이 과정을 통해 모든 키들은 파티션 넘버로 분류될 수 있다.
파티션 그룹: 전체 파티션 넘버는 파티션 그룹과 중복 없이 나뉘어 매칭될 수 있다. 예를 들어, 특정 파티션 넘버는 하나의 파티션 그룹에만 속하게 되며(하나의 파티션 그룹이 복수의 파티션 넘버를 포괄할 수는 있음), 파티션 그룹 전체는 파티션 넘버 전체를 포괄할 수 있다.
파티션 그룹 서버: 특정 파티션 그룹에 속하는 키와 값을 저장하는 저장소로서, 하나의 파티션 그룹에는 둘 이상의 파티션 그룹 서버가 복제 관계로 구성되어 일관성 및 가용성이 보장될 수 있다.
다시 도 1을 참조하면, 클러스터(130)가 포함하는 게이트웨이들 각각은 초기 구동 시 설정 마스터(120)와 연동하여 클러스터(130)의 데이터 분할 정보를 얻어올 수 있다. 이러한 데이터 분할 정보는 게이트웨이에 의해 임의로 변경되지 않으며, 파티션 그룹 서버 또는 게이트웨이의 업그레이드나 클러스터(130)의 확장/축소 시에 설정 마스터(120)의 주도 하에 변경될 수 있다.
연산 처리 비용과 연산 친화 정보와의 관계
클라이언트(110)의 연산 처리 요청 과정은 이미 설명한 바와 같이 다음 (1) 내지 (5)의 과정을 걸쳐 수행될 수 있다.
(1) 클라이언트(110)가 게이트웨이(일례로, 제1 게이트웨이(131) 또는 제2 게이트웨이(132))에 연산을 요청하는 과정
(2) 게이트웨이가 연산이 처리되는 파티션 그룹 서버를 찾아 해당 연산을 요청하는 과정
(3) 파티션 그룹 서버에서 복제를 통해 해당 연산에 대한 일관성을 확보하는 과정
(4) 파티션 그룹 서버에서 연산이 수행되고 연산의 수행 결과가 게이트웨이로 전송되는 과정
(5) 게이트웨이가 연산의 수행 결과를 클라이언트(110)로 전송하는 과정
이때, 특정 키의 값은 하나의 파티션 그룹으로 사상되며, 파티션 그룹으로 사상되는 데이터는 여러 파티션 그룹 서버에 의해 복제될 수 있다. 만약, 특정 키 값에 대한 요청이 해당 파티션 그룹 서버에 네트워크 상으로 인접한 경우(일례로, 같은 기기에 존재하는 경우) 네트워크 전송 대역폭(bandwidth)의 사용 및 전송 지연을 줄일 수 있다.
쓰기(write) 연산
도 5는 본 발명의 일실시예에 있어서, 쓰기 연산에 대해 친화도(affinity)가 존재하는 경우의 연산의 처리 흐름의 예를 도시한 도면이다. 이때, 쓰기 연산이 파티션 그룹 1에서 처리되는 것을 가정한다.
과정 1에서 클라이언트(110)는 선택된 게이트웨이 1에 쓰기 연산에 대한 요청을 전송할 수 있다.
과정 2에서 게이트웨이 1은 로컬 커넥션(local connection)으로 파티션 그룹 1로 쓰기 연산을 전송한다.
과정 3에서 파티션 그룹 1의 마스터 파티션 그룹 서버는 복제 데이터를 슬레이브 파티션 그룹 서버로 전송될 수 있다. 이때, 파티션 그룹 1의 파티션 그룹 서버들간에 데이터가 복제되어 일관성이 확보될 수 있다.
과정 4에서 파티션 그룹 1의 마스터 파티션 그룹 서버는 쓰기 연산의 수행 결과를 쓰기 연산에 대한 요청의 응답으로서 게이트웨이 1로 전송할 수 있다.
과정 5에서 게이트웨이 1은 상기 응답을 클라이언트(110)로 전송할 수 있다.
이때, 과정 2에서 게이트웨이 1은 로컬 커넥션을 사용하므로, 외부로의 네트워크 대역폭을 사용하지 않고 빠르게 클라이언트(110)의 요청을 처리할 수 있다.
만약, 클라이언트(110)가 연산 친화 정보를 갖고 있지 않아(친화도(affinity) 없음), 게이트웨이 3을 선택하여 쓰기 연산에 대한 요청을 전송한 경우, 게이트웨이 3은 요청을 파티션 그룹 1의 파티션 그룹 서버로 전달하기 위해 외부로의 네트워크 대역폭을 사용하게 된다. 이때, 최악의 경우, 요청이 전달된 파티션 그룹 서버가 기기 2가 포함하는 파티션 그룹 1의 슬레이브 파티션 그룹 서버라면, 파티션 그룹 1의 슬레이브 파티션 그룹 서버는 복제 순서를 결정하기 위해, 전달된 요청을 다시 기기 1이 포함하는 파티션 그룹 1의 마스터 파티션 그룹 서버로 전달해야 한다. 이때, 파티션 그룹 1의 마스터 파티션 그룹 서버는 파티션 그룹 1의 슬레이브 파티션 그룹 서버로 복제 데이터를 전송할 수 있다. 또한, 파티션 그룹 1의 슬레이브 파티션 그룹 서버는 쓰기 연산의 수행 결과를 요청에 대한 응답으로 생성하여 게이트웨이 3으로 전송할 수 있으며, 게이트웨이 3은 응답을 클라이언트(110)로 전달할 수 있다.
이 경우, 연산 친화 정보를 갖고 있지 않는 경우에는, 연산 친화 정보를 갖고 있는 경우보다 더 많은 외부 네트워크 대역폭을 사용하게 된다. 다시 말해 연산 친화 정보를 이용하는 경우, 외부 네트워크 대역폭의 사용량을 최소화할 수 있으며, 외부 네트워크 대역폭의 사용에 따른 추가적인 전송 지연의 발생을 줄일 수 있다.
읽기(read) 연산
읽기 연산의 경우, 복제를 위해 전송되는 데이터는 연산의 정합성을 맞추기 위한 정보만을 포함하면 된다. 그러나 이 경우에도 쓰기 연산에서와 동일하게 네트워크 전송 지연의 영향을 받을 수 있다.
게이트웨이 연산 친화 정보의 구성
연산 친화 정보는 게이트웨이별로 설정되는 값으로, 다음과 같은 형태로 기술될 수 있다.
연산 친화 정보: (파티션 그룹 식별자, 읽기-친화도, 쓰기-친화도)
여기서, 파티션 그룹 식별자는 파티션 그룹 넘버(partition group number)일 수 있다. 읽기 친화도는 해당 파티션 그룹에 대한 읽기 연산에 대한 친화도 값을 나타낼 수 있으며, 친화도 값이 클수록 해당 파티션 그룹과 읽기 연산에 대한 친화도가 높음을 나타낼 수 있다. 또한, 쓰기 친화도는 해당 파티션 그룹에 대한 쓰기 연산에 대한 친화도 값을 나타낼 수 있으며, 마찬가지로 친화도 값이 클수록 해당 파티션 그룹과 쓰기 연산에 대한 친화도가 높음을 나타낼 수 있다.
게이트웨이별 연산 친화 정보는 설정 마스터(120)의 게이트웨이 목록 정보와 함께 저장될 수 있으며, 클라이언트(110)가 구동할 때, 클라이언트로 읽혀져 설정 마스터(120)가 포함하는 수집부(210)의 와치(watch) 방식에 의해 변경이 감지됨으로써, 클라이언트(110)에서 연산에 따른 게이트웨이가 선택될 수 있다.
연산 친화 정보인 친화도의 값은 다음과 같은 다양한 방식으로 결정될 수 있으며, 아래는 몇 가지 예를 나타내고 있다.
1. 특정 파티션 그룹 서버가 게이트웨이와 같은 장비(기기)에 있으며, 읽기-친화도 및 쓰기-친화도를 1의 값으로 설정하고, 나머지 경우에는 0의 값으로 설정하는 방식.
2. 특정 파티션 그룹 서버와 게이트웨이 사이의 네트워크 홉(hop) 수를 이용하여 (1/홉 수) * 가중치와 같이 설정하는 방식.
2-1. 특정 파티션 그룹 서버와 게이트웨이가 같은 장비에 있는 경우, 홉 수를 0.1의 값으로 설정.
2-2. 읽기-친화도의 경우, 가중치를 1의 값으로 설정.
2-3. 쓰기-친화도의 경우, 가중치를 2의 값으로 설정.
3. 특정 파티션 그룹 서버와 게이트웨이간의 핑(ping) 응답 시간을 이용하여 (1/핑 응답 시간) * 가중치와 같이 설정하는 방식.
3-1. 읽기-친화도의 경우, 가중치를 1의 값으로 설정
3-2. 쓰기-친화도의 경우, 가중치를 10의 값으로 설정
클라이언트의 게이트웨이 선택 방법
클라이언트(110)는 설정 마스터(120)로부터 획득하여 내부적으로 저장하고 있는 친화도 정보를 이용하여 읽기 연산 및/또는 쓰기 연산에 대해 각각 친화도가 높은 게이트웨이를 선택할 수 있다.
게이트웨이의 파티션 그룹 서버 선택 방법
게이트웨이는 특정 키에 대한 파티션 그룹 서버를 선택함에 있어서, 로컬 커넥션으로 접근할 수 있는 파티션 그룹 서버를 우선적으로 선택할 수 있다.
도 6은 본 발명의 일실시예에 있어서, 클러스터 관리 방법을 도시한 흐름도이다. 본 실시예에 따른 클러스터 관리 방법은 복수의 저장소를 포함하는 데이터 저장 시스템에 의해 수행될 수 있다. 여기서, 데이터 저장 시스템은 도 1을 통해 설명한 데이터 저장 시스템(100)에 대응할 수 있으며, 복수의 저장소는 도 1을 통해 설명한 파티션 그룹들에 대응될 수 있다.
또한, 복수의 저장소 각각은, 서로 복제 관계를 갖는 복수의 복제 저장소들을 포함할 수 있다. 여기서, 복수의 복제 저장소들은 도 1을 통해 설명한 복수의 파티션 그룹 서버들에 대응될 수 있다.
또한, 데이터 저장 시스템은 클라이언트로부터의 연산의 요청을 복수의 복제 저장소들 중 하나로 전달하는 복수의 게이트웨이를 더 포함할 수 있다. 복수의 게이트웨이 역시 도 1을 통해 설명한 게이트웨이들(제1 게이트웨이(131) 및 제2 게이트웨이(132))에 대응될 수 있다.
단계(610)에서 데이터 저장 시스템은 복수의 저장소 각각과 복수의 게이트웨이 각각간의 연산 친화 정보를 확인할 수 있다. 예를 들어, 데이터 저장 시스템은, 복수의 게이트웨이에 대한 정보 및 연산 친화 정보를 포함하는 게이트웨이 목록을 저장 및 관리하는 설정 마스터를 더 포함할 수 있다. 여기서, 설정 마스터는 도 1을 통해 설명한 설정 마스터(120)에 대응될 수 있다. 이때, 클라이언트는, 설정 마스터로부터 게이트웨이 목록을 수신하여 연산 친화 정보를 획득할 수 있다.
연산 친화 정보는, 복수의 저장소 각각과 복수의 게이트웨이 각각간에 계산된 연산 친화도의 값을 포함할 수 있다. 이미 연산 친화 정보가 게이트웨이별로 (파티션 그룹 식별자, 읽기-친화도, 쓰기-친화도)의 정보를 포함함을 설명한 바 있다. 파티션 그룹 식별자는, 복수의 저장소의 식별자에 대응될 수 있으며, 앞서 설명한 파티션 넘버가 이용될 수 있다.
이때, 일실시예로 연산 친화도의 값은, 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함되어 있는지 여부에 따라 결정될 수 있다. 이미 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함된 경우, 읽기 연산과 쓰기 연산에 대해 1의 연산 친화도 값을 설정하고, 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함되지 않은 경우, 0의 연산 친화도 값을 설정하는 예를 설명한 바 있다.
다른 실시예로, 연산 친화도의 값은, 저장소가 포함하는 복제 저장소와 게이트웨이 사이의 네트워크 홉(hop) 수를 더 이용하여 결정될 수 있다. 이 경우, 연산 친화도의 값은, 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함된 경우에 가장 큰 값을 갖도록 결정될 수 있다. 예를 들어, 홉 수가 작을수록 더 큰 연산 친화도의 값이 결정될 수 있다.
또 다른 실시예로, 연산 친화도의 값은, 저장소가 포함하는 복제 저장소와 게이트웨이 사이의 핑(ping) 응답 시간을 더 이용하여 결정될 수 있다. 예를 들어, 핑 응답 시간이 짧을수록 더 큰 연산 친화도의 값이 결정될 수 있다.
또 다른 실시예로, 연산은, 읽기 연산 및 쓰기 연산을 포함할 수 있다. 이 경우, 연산 친화도의 값은, 읽기 연산 및 쓰기 연산에 따라 기설정된 서로 다른 가중치를 더 이용하여 결정될 수 있다.
단계(620)에서 데이터 저장 시스템은 연산 친화 정보를 이용하여 클라이언트에서 요청하고자 하는 연산이 적용될 저장소와 연산 친화도의 값이 가장 높은 게이트웨이를 복수의 게이트웨이 중에서 선택할 수 있다.
일례로, 단계(610) 및 단계(620)은 데이터 저장 시스템이 포함하는 클라이언트에서 연산의 요청을 전달하고자 하는 게이트웨이를 선택하기 위해, 클라이언트에 의해 수행될 수 있다.
이와 같이, 본 발명의 실시예들에 따르면, 클라이언트가 특정 키에 대한 연산의 비용이 최소화될 수 있도록 게이트웨이를 선택할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 데이터 저장 시스템의 클러스터 관리 방법에 있어서,
    복수의 게이트웨이에 대한 정보 및 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간의 연산 친화 정보를 포함하는 게이트웨이 목록을 클라이언트로 제공하는 단계;
    상기 연산 친화 정보를 이용하여 상기 클라이언트로부터 선택된 게이트웨이에서, 상기 클라이언트로부터의 연산의 요청을 수신하는 단계; 및
    상기 선택된 게이트웨이에서, 상기 요청된 연산이 적용될 저장소가 포함하는 서로 복제 관계를 갖는 복수의 복제 저장소들 중 하나로 상기 요청된 연산을 전달하는 단계
    를 포함하는 것을 특징으로 하는 클러스터 관리 방법.
  2. 제1항에 있어서,
    상기 연산 친화 정보는, 상기 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간에 계산된 연산 친화도의 값을 포함하고,
    상기 선택된 게이트웨이는, 상기 클라이언트에서 요청하고자 하는 연산이 적용될 저장소에 대한 연산 친화도의 값이 가장 높은 게이트웨이로서 상기 복수의 게이트웨이 중에서 상기 클라이언트에 의해 선택되는 것을 특징으로 하는 클러스터 관리 방법.
  3. 제1항에 있어서,
    상기 연산 친화 정보는, 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함되어 있는지 여부, 저장소가 포함하는 복제 저장소와 게이트웨이 사이의 네트워크 홉(hop) 수 및 저장소가 포함하는 복제 저장소와 게이트웨이 간의 핑(ping) 응답시간 중 적어도 어느 하나를 이용하여 결정되는 것을 특징으로 하는 클러스터 관리 방법.
  4. 제1항에 있어서,
    상기 연산은, 읽기 연산 및 쓰기 연산을 포함하고,
    상기 연산 친화 정보는, 상기 읽기 연산 및 상기 쓰기 연산에 따라 기설정된 서로 다른 가중치를 이용하여 결정되는 것을 특징으로 하는 클러스터 관리 방법.
  5. 제1항 내지 제4항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  6. 데이터 저장 시스템에 있어서,
    서로 복제 관계를 갖는 복수의 복제 저장소들을 각각 포함하는 복수의 저장소; 및
    클라이언트로부터 요청된 연산을 상기 연산이 적용될 저장소가 포함하는 복수의 복제 저장소들 중 하나로 전달하는 복수의 게이트웨이
    를 포함하고,
    상기 연산이 요청될 게이트웨이를 선택할 수 있도록 상기 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간의 연산 친화 정보를 상기 클라이언트에게 제공하는 것을 특징으로 하는 데이터 저장 시스템.
  7. 제6항에 있어서,
    상기 연산 친화 정보는, 상기 복수의 저장소 각각과 상기 복수의 게이트웨이 각각간에 계산된 연산 친화도의 값을 포함하고,
    상기 연산이 요청될 게이트웨이는, 상기 클라이언트에서 요청하고자 하는 연산이 적용될 저장소에 대한 연산 친화도의 값이 가장 높은 게이트웨이로서 상기 복수의 게이트웨이 중에서 상기 클라이언트에 의해 선택되는 것을 특징으로 하는 데이터 저장 시스템.
  8. 제6항에 있어서,
    상기 연산 친화 정보는, 저장소가 포함하는 복제 저장소와 게이트웨이가 물리적으로 동일한 장비에 포함되어 있는지 여부, 저장소가 포함하는 복제 저장소와 게이트웨이 사이의 네트워크 홉(hop) 수 및 저장소가 포함하는 복제 저장소와 게이트웨이 사이의 핑(ping) 응답 시간 중 적어도 어느 하나를 이용하여 결정되는 것을 특징으로 하는 데이터 저장 시스템.
  9. 제6항에 있어서,
    상기 연산은, 읽기 연산 및 쓰기 연산을 포함하고,
    상기 연산 친화 정보는 상기 읽기 연산 및 상기 쓰기 연산에 따라 기설정된 서로 다른 가중치를 이용하여 결정되는 것을 특징으로 하는 데이터 저장 시스템.
  10. 제6항에 있어서,
    상기 복수의 게이트웨이에 대한 정보 및 상기 연산 친화 정보를 포함하는 게이트웨이 목록을 저장 및 관리하는 설정 마스터
    를 더 포함하는 것을 특징으로 하는 데이터 저장 시스템.
KR1020140113560A 2014-08-28 2014-08-28 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 KR101748913B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140113560A KR101748913B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140113560A KR101748913B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템

Publications (2)

Publication Number Publication Date
KR20160025994A KR20160025994A (ko) 2016-03-09
KR101748913B1 true KR101748913B1 (ko) 2017-06-20

Family

ID=55536467

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140113560A KR101748913B1 (ko) 2014-08-28 2014-08-28 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템

Country Status (1)

Country Link
KR (1) KR101748913B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111641698B (zh) * 2020-05-22 2023-04-18 浪潮电子信息产业股份有限公司 一种数据统计方法、系统、设备及存储介质
CN113810357B (zh) * 2021-01-04 2023-06-27 北京沃东天骏信息技术有限公司 分布式网关系统、分布式网关系统的数据交互方法、介质

Also Published As

Publication number Publication date
KR20160025994A (ko) 2016-03-09

Similar Documents

Publication Publication Date Title
US10209893B2 (en) Massively scalable object storage for storing object replicas
US10104175B2 (en) Massively scalable object storage system
US9934242B2 (en) Replication of data between mirrored data sites
US9405781B2 (en) Virtual multi-cluster clouds
US9021137B2 (en) Massively scalable object storage system
CN107018185B (zh) 云存储系统的同步方法和装置
TWI663515B (zh) 用於物聯網設備於資料中心備份的分散式重複資料刪除儲存系統及其達成分散式重複資料刪除方法
CN106873902B (zh) 一种文件存储系统、数据调度方法及数据节点
KR101527634B1 (ko) 샤딩 서비스를 제공하는 방법 및 장치
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템
KR101750601B1 (ko) 장애 내구성을 지닌 클러스터의 상태 감시 및 클러스터의 형상 변경을 위한 클러스터 관리 방법 및 데이터 저장 시스템
KR101748912B1 (ko) 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법
JP6291977B2 (ja) 分散ファイルシステム、バックアップファイル取得方法、制御装置及び管理装置
KR101620219B1 (ko) P2p 기반 중복제거를 이용한 가상머신 이미지 배포, 다운로드하는 방법 및 그 장치

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