KR101952651B1 - 분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 - Google Patents
분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 Download PDFInfo
- Publication number
- KR101952651B1 KR101952651B1 KR1020150065276A KR20150065276A KR101952651B1 KR 101952651 B1 KR101952651 B1 KR 101952651B1 KR 1020150065276 A KR1020150065276 A KR 1020150065276A KR 20150065276 A KR20150065276 A KR 20150065276A KR 101952651 B1 KR101952651 B1 KR 101952651B1
- Authority
- KR
- South Korea
- Prior art keywords
- virtual machine
- index range
- unique identifier
- identifier
- index
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 일 실시예들에 따르면, 제1 가상 머신, 제2 가상 머신 및 식별자 할당 서버를 포함하는 복수의 가상 머신으로 구성된 분산 컴퓨팅 시스템의 고유 식별자 생성 방법에 있어서, 상기 제1 가상 머신이, 상기 식별자 할당 서버로부터 제1 인덱스 범위를 할당 받는 단계, 상기 제2 가상 머신이, 상기 식별자 할당 서버로부터 상기 제1 인덱스 범위와 상이한 제2 인덱스 범위를 할당 받는 단계, 상기 제1 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하는 단계, 상기 제2 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하는 단계를 포함하되, 상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자를 포함할 수 있다.
Description
본 발명은 분산 컴퓨팅 환경(Distributed Computing Environment)에서 가상 머신(Virtual Machine, VM)의 작업 수행에 필요한 고유 식별자(Unique IDentifier, UID)를 생성하기 위한 방법 및 그 장치에 관한 것이다.
하나의 컴퓨팅 장치로 처리하기 곤란한 연산을 네트워크에 연결된 복수 개의 컴퓨팅 장치를 이용하여 처리하기 위한 분산 컴퓨팅 환경이 등장하였다. 이와 같은, 분산 컴퓨팅 환경에서는 각각의 가상 머신에서 수행되는 인스턴스(Instance)는 연산에 필요한 객체(Object)들을 구별하기 위하여, 각각의 객체에 대하여 고유 식별자(UID)를 할당하여야 한다.
수 많은 가상 머신에서 수행되는 수 많은 인스턴스에서 이용하는 수 많은 객체에 대하여, 각각 고유 식별자를 할당하기 위한 방법으로는 범용 고유 식별자(Universally Unique, IDentifier, UUID) 또는 전역 고유 식별자(Globally Unique IDentifier, GUID)를 이용하는 방법이 있다. 그러나, 범용 고유 식별자(UUID) 및 전역 고유 식별자(GUID)는 난수를 이용하여 생성될 수 있는 값의 수가 매우 많기는 하나, 동일한 고유 식별자가 중복되어 생성될 수 있는 한계가 있다. 또한, 중앙의 단일 서버가 고유 식별자를 생성하여 각각의 인스턴스에 제공하는 방법은 중앙의 단일 서버가 모든 고유 식별자의 할당 요청을 처리함에 있어 병목 현상(Bottle-neck)이 발생되는 한계가 있다.
본 발명이 해결하고자 하는 기술적 과제는, 분산 컴퓨팅 환경을 구성하고 있는 각각의 가상 머신에서 자체적으로 고유의 식별자를 생성할 수 있는 방법 및 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해 될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 태양(aspect)은 제1 가상 머신, 제2 가상 머신 및 식별자 할당 서버를 포함하는 복수의 가상 머신으로 구성된 분산 컴퓨팅 시스템의 고유 식별자 생성 방법에 있어서, 상기 제1 가상 머신이, 상기 식별자 할당 서버로부터 제1 인덱스 범위를 할당 받는 단계, 상기 제2 가상 머신이, 상기 식별자 할당 서버로부터 상기 제1 인덱스 범위와 상이한 제2 인덱스 범위를 할당 받는 단계, 상기 제1 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하는 단계, 상기 제2 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하는 단계를 포함하되, 상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 태양은 분산 컴퓨팅 시스템에 있어서, 하이퍼바이저를 통해 제1 가상 머신 및 제2 가상 머신을 구현하는 하나 이상의 컴퓨팅 장치 및 상기 제1 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제1 가상 머신을 위한 제1 인덱스 범위를 할당하고, 상기 제2 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제2 가상 머신을 위한 제2 인덱스 범위를 할당하는 식별자 할당 서버를 포함하되, 상기 제1 가상 머신은, 상기 식별자 할당 서버의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하고, 상기 제2 가상 머신은, 상기 식별자 할당 서버의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하며, 상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 태양은 분산 컴퓨팅 시스템에 있어서, 하이퍼바이저를 통해 제1 가상 머신, 제2 가상 머신 및 제3 가상 머신이 구현되는 하나 이상의 컴퓨팅 장치를 포함하되, 상기 제1 가상 머신은, 상기 제2 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제2 가상 머신을 위한 제1 인덱스 범위를 할당하고, 상기 제3 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제3 가상 머신을 위한 제2 인덱스 범위를 할당하고, 상기 제2 가상 머신은, 상기 제1 가상 머신의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하고, 상기 제3 가상 머신은 상기 제1 가상 머신의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하며, 상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자를 포함할 수 있다.
상술한 바와 같은 본 발명에 따르면, 각각의 가상 머신에서 자체적으로 고유 식별자를 생성함으로써, 각각의 가상 머신에서 수행되는 인스턴스는 객체에 대하여 보다 빠르게 고유 식별자를 할당할 수 있다.
또한, 각각의 가상 머신이 중앙의 단일 서버가 할당한 범위 내에서 고유 식별자를 생성함으로써, 분산 컴퓨팅 환경 전체에서 고유 식별자의 유일성을 보장할 수 있다. 그리고, 중앙의 서버가 모든 고유 식별자의 할당 요청을 처리하지 않음으로써, 병목 현상이 발생되지 않는다.
나아가, 고유 식별자에 고유 식별자의 할당을 요청한 시각을 함께 포함함으로써, 단위 시각 당 일정한 범위 크기만큼의 고유 식별자를 할당할 수 있다.
도 1은 본 발명의 일 실시예에 따른 분산 컴퓨팅 시스템의 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 분산 컴퓨팅 시스템의 구성도이다.
도 3은 종래의 분산 컴퓨팅 시스템에서 고유 식별자 생성 방법을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 고유 식별자 생성 방법을 설명하기 위한 개념도이다.
도 5는 본 발명의 일 실시예에 따른 가상 머신의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 고유 식별자를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따른 식별자 할당 서버의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따른 가상 머신의 블록도이다.
도 9는 본 발명의 일 실시예에 따른 식별자 할당 서버의 블록도이다.
도 10은 본 발명의 일 실시예에 따른 식별자 할당 서버의 하드웨어 구성도이다.
도 2는 본 발명의 다른 실시예에 따른 분산 컴퓨팅 시스템의 구성도이다.
도 3은 종래의 분산 컴퓨팅 시스템에서 고유 식별자 생성 방법을 설명하기 위한 개념도이다.
도 4는 본 발명의 일 실시예에 따른 고유 식별자 생성 방법을 설명하기 위한 개념도이다.
도 5는 본 발명의 일 실시예에 따른 가상 머신의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 6은 본 발명의 일 실시예에 따른 고유 식별자를 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따른 식별자 할당 서버의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 8은 본 발명의 일 실시예에 따른 가상 머신의 블록도이다.
도 9는 본 발명의 일 실시예에 따른 식별자 할당 서버의 블록도이다.
도 10은 본 발명의 일 실시예에 따른 식별자 할당 서버의 하드웨어 구성도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "이루어지다(made of)"는 언급된 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
본 발명의 일 실시예에 대하여 설명하기에 앞서, 몇몇 용어들에 대하여 설명한다.
분산 컴퓨팅 환경(Distributed Computing Environment)은 하나의 컴퓨팅 장치로 처리하기 곤란한 복잡한 연산을 네트워크에 연결된 복수 개의 컴퓨팅 장치의 연산 능력을 이용하여 처리하기 위한 모델이다. 분산 컴퓨팅 환경에서는 네트워크에 연결된 복수 개의 컴퓨팅 장치가 하나의 컴퓨팅 장치인 것처럼 연산을 처리한다. 이러한, 분산 컴퓨팅 환경은 클라우드(Cloud) 내부에 복수 개의 컴퓨팅 장치가 포함된 형태로 표현될 수 있다.
가상 머신(Virtual Machine, VM)은 분산 컴퓨팅 환경을 구성하고 있는 각각의 컴퓨팅 장치를 통하여 연산을 수행하기 위한 애뮬레이터(Emulator)이다. 가상 머신은 하이퍼바이저(Hypervisor)를 통하여 가상화(Virtualization)될 수 있다. 여기서, 하이퍼바이저는 가상 머신에 대하여 컴퓨팅 장치의 리소스 및 기타 자원을 할당하고, 관리 및 모니터링 도구에 대한 인터페이스를 제공하는 플랫폼(Platform)이다. 따라서, 가상 머신은 컴퓨팅 장치의 하드웨어 또는 제조사 등과 독립적으로 연산을 수행할 수 있다.
인스턴스(Instance)는 가상 머신을 통해 연산을 수행하기 위하여 컴퓨팅 장치의 메모리에 로딩되는 실체이다. 하나 이상의 인스턴스는 가상 머신(VM)에 의하여 컴퓨팅 장치의 메모리에 로딩되어 연산을 수행할 수 있다. 예를 들어, 인스턴스에는 컴퓨팅 장치의 메모리에 로딩된 프로세스(Process), 쓰레드(Thread), 함수(Function), 구조체(Structure), 배열(Array), 리스트(List), 스택(Stack), 큐(Queue), 트리(Tree), 그래프(Graph) 또는 클래스(Class) 등이 포함될 수 있으나, 이에 한정되는 것은 아니다.
객체(Object)는 가상 머신을 통해 수행되는 연산의 대상이다. 객체는 연산을 수행하기 위한 명령과 데이터를 포함할 수 있다. 하나 이상의 객체는 인스턴스에 의하여 생성되고 연산에 이용될 수 있다. 예를 들어, 객체에는 프로세스, 쓰레드, 클래스, 사용자 인터페이스(User Interface)를 구성하는 프레임(Frame), 이미지(Image), 문자열(String), 버튼(Button), 다이얼로그 박스(Dailog box), 체크 박스(Check box), 라디오 버튼(Radio button) 또는 시스템 메뉴(Menu) 등이 포함될 수 있으나, 이에 한정되지 않고, 컴퓨팅 장치에 연결된 입력 장치, 출력 장치 또는 보조 기억 장치 등이 포함될 수도 있다.
고유 식별자(Unique IDentifier, UID)는 인스턴스가 연산 수행에 필요한 객체에 대하여 부여한 식별자이다. 즉, 고유 식별자는 하나 이상의 객체를 서로 구별하기 위하여 각각의 객체에 부여된 식별자이다.
특히, 본 발명의 일 실시예에 따른 분산 컴퓨팅 환경을 구성하고 있는 모든 가상 머신에 대한 모든 인스턴스가 이용하는 모든 객체는 서로 다른 고유 식별자를 가진다. 즉, 분산 컴퓨팅 환경에 존재하는 어떠한 두 객체에 부여된 두 고유 식별자는 서로 동일하지 아니하며, 각각의 객체에 부여된 고유 식별자는 분산 컴퓨팅 환경 전체에 대한 유일성(Uniqueness)이 보장된다.
상술한 용어 이 외에, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 다른 정의가 없다면, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또한, 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하, 본 발명에 대하여 첨부된 도면에 따라 보다 상세히 설명한다.
도 1 및 도 2는 본 발명의 몇몇 실시예에 따른 분산 컴퓨팅 시스템의 구성도이다. 도 1 및 도 2에 도시된 분산 컴퓨팅 시스템은 분산 컴퓨팅 환경을 구성하고 있는 각각의 컴퓨팅 장치에서 동작하는 각각의 가상 머신(100) 또는 사용자 가상 머신(300)에서 자체적으로 고유의 식별자를 생성할 수 있는 시스템이다. 이러한, 분산 컴퓨팅 시스템의 각 구성 요소들은 기능적으로 구분되는 기능 요소들을 나타낸 것으로서, 어느 하나 이상의 구성 요소가 실제 물리적 환경에서는 서로 통합되어 구현될 수 있다.
도 1을 참조하면, 컴퓨팅 장치는 분산 컴퓨팅 시스템을 구성하는 장치로, 하이퍼바이저를 통하여 하나 이상의 가상 머신(100)이 구현될 수 있는 물리적인 장치이다. 이러한, 컴퓨팅 장치는 하이퍼바이저를 통해 가상 머신(100)이 구현될 수 있으며, 식별자 할당 서버(200)와 데이터를 송수신할 수 있는 장치라면 어떠한 장치라도 허용될 수 있다. 예를 들어, 본 발명의 일 실시예에 따른 컴퓨팅 장치는 데스크탑(Desktop), 워크스테이션(Workstation) 또는 서버(Server) 등과 같은 고정식 컴퓨팅 장치 또는 랩탑(Laptop), 태블릿(Tablet), 패블릿(Phablet) 등과 같은 모바일 컴퓨팅 장치가 될 수 있으며, 이에 한정되는 것은 아니다.
가상 머신(100)은 인스턴스로부터 고유 식별자의 할당이 요청되면, 식별자 할당 서버(200)의 개입 없이, 기 할당된 인덱스 범위 내의 인덱스(Index)를 이용하여 고유 식별자를 생성하고, 생성된 고유 식별자를 인스턴스에 제공할 수 있다.
여기서, 인덱스 범위는 가상 머신(100)이 고유 식별자를 생성할 때 이용할 수 있는 인덱스(Index)들의 범위이다. 본 발명의 일 실시예에 따른 분산 컴퓨팅 시스템에 존재하는 모든 가상 머신(100)은 서로 상이한 인덱스 범위 내의 값을 이용하여 고유 식별자를 생성할 수 있다. 그리고, 인덱스 범위는 각각의 가상 머신(100)에서 자체적으로 결정할 수 없으며, 식별자 할당 서버(200)로부터 할당 받아 이용할 수 있다. 또한, 인덱스 범위는 고정된 크기를 가질 수 있으나, 이에 한정되지 않고, 필요에 따라 변화될 수도 있다. 예를 들어, 인덱스 범위는 1000개의 값들을 포함하는 0 내지 999와 같은 범위가 될 수 있으나, 이에 한정되는 것은 아니다.
식별자 할당 서버(200)는 분산 컴퓨팅 시스템 내에 존재하는 각각의 가상 머신(100)의 인덱스 범위에 대한 할당 요청에 응답하여, 새로운 인덱스 범위를 할당하고, 할당된 인덱스 범위를 가상 머신(100)에 제공할 수 있다. 식별자 할당 서버(200)는 하나 이상의 가상 머신(100)에 할당한 하나 이상의 인덱스 범위가 서로 중복되지 않도록 관리하기 위하여, 데이터베이스(Database)를 이용하여 인덱스 범위를 관리할 수 있다. 예를 들어, 식별자 할당 서버(200)는 메모리 기반(In-memory)으로 데이터를 처리할 수 있는 레디스(Redis)를 이용하여 인덱스 범위를 관리할 수 있으나, 이에 한정되지 않고, 마이에스큐엘(MySQL)을 이용하여 인덱스 범위를 관리할 수도 있다.
도 2를 참조하면, 컴퓨팅 장치는 분산 컴퓨팅 시스템을 구성하는 장치로, 하이퍼바이저를 통하여 하나 이상의 사용자 가상 머신(300) 및 식별자 할당 가상 머신(400)이 동작할 수 있는 물리적 장치이다.
사용자 가상 머신(300)은 상술한 가상 머신(100)과 동일한 기능을 수행하는 구성으로 중복하여 설명하지 않는다.
그리고, 식별자 할당 가상 머신(400)은 분산 컴퓨팅 시스템 내에 존재하는 각각의 사용자 가상 머신(300)의 인덱스 할당 요청에 응답하여, 새로운 인덱스 범위를 할당하고, 할당된 인덱스 범위를 사용자 가상 머신(300)에 제공할 수 있다. 즉, 식별자 할당 가상 머신(400)은 식별자 할당 서버(200)의 기능을 수행하기 위한 가상 머신(100)이다.
사용자 가상 머신(300) 및 식별자 할당 가상 머신(400)에 대한 설명은 가상 머신(100) 및 식별자 할당 서버(200)에 대한 설명과 중복되는 바, 이하의 설명에서는 가상 머신(100) 및 식별자 할당 서버(200)를 기준으로 설명하기로 한다.
이하, 도 3 및 도 4를 참조하여, 종래의 고유 식별자 생성 방법과 본 발명의 일 실시예에 따른 고유 식별자 생성 방법을 비교하기로 한다. 도 3은 종래의 분산 컴퓨팅 시스템에서 고유 식별자 생성 방법을 설명하기 위한 개념도이다. 그리고, 도 4는 본 발명의 일 실시예에 따른 고유 식별자 생성 방법을 설명하기 위한 개념도이다.
도 3을 참조하면, 종래의 분산 컴퓨팅 시스템에 존재하는 복수 개의 가상 머신의 복수 개의 인스턴스 각각은 객체에 대하여 고유 식별자를 부여하기 위하여, 하나의 티켓 서버에 대하여 고유 식별자의 할당 요청을 전송한다.
티켓 서버는 하나의 고유 식별자 할당 요청이 수신되면, 독점적으로 데이터베이스에 접근하기 위하여 데이터베이스에 락(Lock)을 설정한다. 티켓 서버는 데이터베이스를 이용하여 하나의 새로운 고유 식별자를 할당한다. 티켓 서버는 데이터베이스 설정된 락을 해제한다. 티켓 서버는 할당된 새로운 고유 식별자를 인스턴스에 전송한다. 그리고, 티켓 서버는 다음 고유 식별자의 할당 요청을 처리하기 위하여, 상술한 과정을 반복적으로 수행한다.
따라서, 종래의 분산 컴퓨팅 환경은 하나의 티켓 서버에서 수 많은 인스턴스에 대한 수 많은 고유 식별자 할당 요청을 처리함으로써, 객체에 대하여 고유 식별자를 부여함에 있어 병목 현상(Bottle-neck)이 발생될 수 있다.
그러나, 도 4를 참조하면, 본 발명의 일 실시예에 따른 고유 식별자 생성 방법은 각각의 가상 머신(100)에 존재하는 식별자 생성기(20)가 식별자 할당 서버(200)에 의하여 할당된 인덱스 범위 내에서 고유 식별자를 생성하여 인스턴스(10)에 제공한다.
따라서, 본 발명의 일 실시예에 따른 고유 식별자 생성 방법은 식별자 할당 서버(200)에서 단지 인덱스 범위의 할당 요청만을 처리하고, 각각의 가상 머신에서 자체적으로 고유 식별자를 생성함으로써, 객체에 대하여 보다 빠르게 고유 식별자를 부여할 수 있다.
이러한, 본 발명의 일 실시예에 따른 가상 머신(100)의 고유 식별자 생성 방법에 대하여, 도 5 및 도 6을 참조하여 보다 구체적으로 설명하기로 한다. 도 5는 본 발명의 일 실시예에 따른 가상 머신(100)의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 5를 참조하면, 가상 머신(100)은 인스턴스로부터 고유 식별자의 할당 요청을 수신한다(S110).
가상 머신(100)은 인스턴스로부터 수신된 고유 식별자의 할당 요청이 최초로 요청되었는지 판단한다(S120). 판단 결과, 고유 식별자의 할당 요청이 최초가 아닌 경우, 가상 머신(100)은 식별자 할당 서버(200)에 의하여 기존에 할당된 인덱스 범위 내에서 고유 식별자를 생성할 수 있는지 판단한다(S130).
판단 결과, 고유 식별자의 할당 요청이 최초로 요청되었거나, 기존에 할당된 인덱스 범위 내에서 고유 식별자를 생성할 수 없는 경우, 가상 머신(100)은 식별자 할당 서버(200)에 대하여 새로운 인덱스 범위에 대한 할당 요청을 전송한다(S140). 그리고, 가상 머신(100)은 새로운 인덱스 범위를 수신한다(S150).
본 발명의 일 실시예에 따른 가상 머신(100)이 수신하는 인덱스 범위의 크기는 고정된 크기일 수 있으나, 이에 한정되지 않고, 가변적으로 달라질 수 있다.
보다 구체적으로, 가상 머신(100)은 새로운 인덱스 범위에 대한 할당 요청을 전송함에 있어, 새로운 인덱스 범위에 대한 희망 크기를 함께 전송할 수 있다.
이 때, 희망 크기는 식별자 할당 서버(200)로부터 인덱스 범위가 할당된 후, 할당된 인덱스 범위를 이용하여 고유 식별자를 생성할 수 없게 된 때까지의 소요된 시간을 기초로 결정될 수 있다. 예를 들어, 가상 머신(100)은 식별자 할당 서버(200)로부터 인덱스 범위가 할당된 후, 기 할당된 인덱스 범위를 이용하여 고유 식별자를 생성할 수 없게 될 때까지 소요된 시간이 기 설정된 시간 이내인 경우, 희망 크기를 상대적 크게 결정할 수 있다. 또한, 가상 머신(100)은 식별자 할당 서버(200)로부터 인덱스 범위가 할당된 후, 기 할당된 인덱스 범위를 이용하여 고유 식별자를 생성할 수 없게 될 때까지 소요된 시간이 기 설정된 시간 이후인 경우, 희망 크기를 상대적으로 작게 결정할 수 있다.
또한, 희망 크기는 과거 고유 식별자를 생성한 시간 간격을 기초로 결정될 수 있다. 즉, 희망 크기는 인스턴스로부터 요청된 고유 식별자에 대한 할당 요청의 시간 간격을 기초로 결정될 수 있다. 예를 들어, 가상 머신(100)은 인스턴스로부터 요청된 고유 식별자에 대한 할당 요청의 시간 간격이 점점 짧아지는 경우, 희망 크기를 상대적으로 크게 결정할 수 있다. 또한, 가상 머신(100)은 인스턴스로부터 요청된 고유 식별자에 대한 할당 요청의 시간 간격이 점점 길어지는 경우, 희망 크기를 상대적으로 작게 결정할 수 있다.
또한, 가상 머신(100)은 새로운 인덱스 범위를 수신함에 있어, 새로운 인덱스 범위에 대한 크기를 함께 수신할 수 있다. 이 때, 새로운 인덱스 범위에 대한 크기는 과거 가상 머신에 대하여 인덱스 범위가 할당된 시간 간격을 기초로 식별자 할당 서버(200)에 의하여 결정될 수 있다.
가상 머신(100)은 식별자 할당 서버(200)의 개입 없이, 식별자 할당 서버에 의하여 할당된 인덱스 범위 내의 인덱스를 이용하여 고유 식별자를 생성한다(S160).
보다 구체적으로, 가상 머신(100)은 인덱스 범위에 포함된 인덱스를 1만큼 증가시킨 후, 타임 스탬프와 결합하여 고유 식별자를 생성할 수 있다. 여기서, 타임 스탬프는 인스턴스로부터 고유 식별자의 할당이 요청된 시각을 나타내는 일련의 문자열이다. 타임 스탬프는 협정 세계시(Coordinated Universal Time, UTC)와 같은 형식을 가질 수 있으나, 이에 한정되는 것은 아니다. 또한, 타임 스탬프는 밀리 세컨드(Millisecond) 단위로 표현될 수 있으나 이에 한정되는 것도 아니다. 예를 들어, 인스턴스로부터 고유 식별자의 할당이 요청된 시각이 "2014년 11월 4일 오후 8시 42분 19.825초"인 경우, 타임 스탬프는 "1415101339825"와 같은 문자열로 표현될 수 있으나, 이에 한정되지 않는다.
이와 같이, 본 발명의 일 실시예에 따른 고유 식별자 생성 방법은 고유 식별자를 생성함에 있어 타임 스탬프를 함께 이용함으로써, 가상 머신(100)은 타임 스탬프의 단위 시각 당 인덱스 범위의 크기만큼의 고유 식별자를 생성할 수 있다. 따라서, 인덱스 범위의 크기는 가상 머신(100)이 생성할 수 있는 고유 식별자 수의 총 합이 아닌, 가상 머신(100)이 단위 시각 당 생성할 수 있는 고유 식별자 수의 총 합이 된다.
예를 들어, 타임 스탬프의 단위가 "밀리 세컨드"이며, 인덱스 범위의 크기가 "1000"인 경우, 가상 머신(100)은 1 밀리 세컨드 내에 1000개의 고유 식별자를 생성할 수 있다. 그리고, 가상 머신(100)은 1 밀리 세컨드 내에 1001개 이상의 고유 식별자를 생성하여야 하는 경우, 식별자 할당 서버(200)에 대하여 새로운 인덱스 범위의 할당 요청을 전송하게 된다.
그리고, 가상 머신(100)은 생성된 고유 식별자를 고유 식별자의 할당을 요청한 인스턴스에 대하여 제공한다(S170).
도 6은 본 발명의 일 실시예에 따른 고유 식별자를 설명하기 위한 예시도이다. 도 5의 설명에 앞서, 가상 머신(100)을 통해 연산을 수행하는 인스턴스(10)가 "2014년 11월 4일 오후 8시 42분 19.825초"에 식별자 생성기(20)에 대하여 고유 식별자의 할당을 요청하였으며, 가상 머신(100)의 식별자 생성기(20)가 "1000" 내지 "1999" 사이의 인덱스를 포함하는 인덱스 범위(30)를 식별자 할당 서버(200)로부터 할당 받았다고 가정하자.
도 6을 참조하면, 가상 머신(100)의 식별자 생성기(20)는 인덱스 범위 내의 인덱스를 1만큼 증가시킨 현재 값(40) "1001"과 "2014년 11월 4일 오후 8시 42분 19.825초"를 밀리 세컨드 단위의 협정 세계시(UTC)로 표현한 타임 스탬프인 "1415101339825"를 결합하여 고유 식별자(60)를 생성한다. 그리고, 가상 머신(100)의 식별자 생성기(20)는 생성된 고유 식별자를 인스턴스(10)에 제공한다.
이하, 본 발명의 일 실시예에 따른 식별자 할당 서버(200)의 고유 식별자 생성 방법에 대하여, 도 7을 참조하여 보다 구체적으로 설명하기로 한다. 도 7은 본 발명의 일 실시예에 따른 식별자 할당 서버(200)의 고유 식별자 생성 방법을 설명하기 위한 순서도이다.
도 7을 참조하면, 식별자 할당 서버(200)는 가상 머신(100)으로부터 인덱스 범위에 대한 할당 요청을 수신한다(S210).
식별자 할당 서버(200)는 할당 크기에 따라 인덱스 범위를 할당한다(S220).
본 발명의 일 실시예에 따른 식별자 할당 서버(200)가 할당할 수 있는 인덱스 범위의 할당 크기는 고정된 크기일 수 있으나, 이에 한정되지 않고, 필요에 따라 달라질 수 있다.
보다 구체적으로, 식별자 할당 서버(200)는 고정된 크기의 할당 크기에 따라 인덱스 범위를 할당할 수 있다. 예를 들어, 식별자 할당 서버(200)는 4자리(digit)의 고정된 크기를 가지는 인덱스 범위를 할당 할 수 있다.
또한, 식별자 할당 서버(200)는 인덱스 범위에 대한 할당 요청이 수신될 때, 인덱스 범위에 대한 희망 크기를 함께 수신할 수 있다. 그리고, 식별자 할당 서버(200)는 고정된 할당 크기 대신, 수신된 희망 크기에 따라 인덱스 범위를 할당할 수 있다.
또한, 식별자 할당 서버(200)는 가상 머신(100)으로부터 수신된 인덱스 범위에 대한 할당 요청의 시간 간격을 기초로 할당 크기를 할당 크기를 조정할 수 있다. 예를 들어, 식별자 할당 서버(200)는 각각의 가상 머신(100)에 대한 인덱스 범위의 할당 요청의 누적 히스토리를 기록할 수 있다. 그리고, 식별자 할당 서버(200)는 누적 히스토리를 기초로, 가상 머신(100)으로부터 수신된 인덱스 범위에 대한 할당 요청의 시간 간격이 점점 짧아지는 경우, 할당 크기를 상대적으로 크게 조정할 수 있다. 또한, 식별자 할당 서버(200)는 누적 히스토리를 기초로, 가상 머신(100)으로부터 수신된 인덱스 범위에 대한 할당 요청의 시간 간격이 점점 길어지는 경우, 할당 크기를 상대적으로 작게 조정할 수 있다.
그리고, 식별자 할당 서버(200)는 할당된 인덱스 범위를 가상 머신(100)에 대하여 전송한다(S230). 이 때, 가상 머신(100)에 전송하는 인덱스 범위의 할당 크기가 가변적인 경우, 식별자 할당 서버(200)는 할당된 인덱스 범위에 대한 할당 크기를 함께 전송할 수 있다.
지금까지, 도5 내지 도 7을 참조하여 설명한 본 발명의 실시예에 따른 방법들은 컴퓨터가 읽을 수 있는 코드로 구현된 컴퓨터 프로그램의 실행에 의하여 수행될 수 있다. 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여, 제1 컴퓨팅 장치로부터 제2 컴퓨팅 장치에 전송되어 제2 컴퓨팅 장치에 설치될 수 있고, 이로써 제2 컴퓨팅 장치에서 사용될 수 있다. 여기서, 제1 컴퓨팅 장치 및 제2 컴퓨팅 장치는, 서버(Server), 워크스테이션(Workstation) 또는 데스크탑(Desktop) 등과 같은 고정식 컴퓨팅 장치, 스마트폰, 태블릿, 패블릿 또는 랩탑 등과 같은 모바일 컴퓨팅 장치 및 스마트 와치(Smart Watch), 스마트 안경(Smart Glasses) 또는 스마트 밴드(Smart Band) 등과 같은 웨어러블 컴퓨팅 장치를 모두 포함한다.
이하, 도 8 내지 도 10을 참조하여, 본 발명의 일 실시예에 따른 가상 머신(100) 및 식별자 할당 서버(200)의 논리적 구성에 대하여, 보다 구체적으로 설명하기로 한다.
도 8은 본 발명의 일 실시예에 따른 가상 머신(100)의 블록도이다. 도 7을 참조하면, 가상 머신(100)은 가상 통신부(110), 가상 저장부(120), 식별자 생성부(130) 및 인덱스 범위 관리부(140)를 포함할 수 있다.
각각의 구성 요소에 대하여 구체적으로 설명하면, 가상 통신부(110)는 네트워크를 통하여, 식별자 할당 서버(200)와 데이터를 송수신할 수 있다. 구체적으로, 가상 통신부(110)는 네트워크를 통하여, 인덱스 범위에 대한 할당 요청을 식별자 할당 서버(200)에 전송할 수 있다. 그리고, 가상 통신부(110)는 네트워크를 통하여, 식별자 할당 서버(200)로부터 새로운 인덱스 범위를 수신할 수 있다.
가상 저장부(120)는 가상 머신(100)의 동작에 필요한 데이터를 저장한다. 구체적으로, 가상 저장부(120)는 식별자 관리 DB(123) 및 인덱스 범위 관리 DB(126)을 포함할 수 있다. 이러한, 가상 저장부(120)는 식별자 관리 DB(123) 및 인덱스 범위 관리 DB(126)를 관리하기 위하여, 관계형 데이터베이스(Relational DataBase, RDB), 낫온리에스큐엘(Not Only SQL, NoSQL) 또는 인메모리 데이터 그리드(In-Memory Data Grid, IMDG) 등과 같은 형태의 저장소를 포함할 수 있으나, 이에 한정되는 것은 아니다.
식별자 관리 DB(123)에는 인덱스 범위 내에서 생성된 고유 식별자 및 해당 고유 식별자가 할당된 인스턴스가 매핑되어 저장될 수 있다. 인덱스 범위 관리 DB(126)에는 식별자 할당 서버(200)로부터 수신된 인덱스 범위 및 고유 식별자 생성에 마지막으로 이용된 인덱스가 저장될 수 있다.
식별자 생성부(130)는 식별자 할당 서버(200)에 의해 할당된 인덱스 범위 내에서 고유 식별자를 생성한다. 구체적으로, 식별자 생성부(130)는 인덱스 범위 관리 DB(126)에 저장된 인덱스를 1만큼 증가시킨 후, 타임 스탬프와 결합하여 고유 식별자를 생성할 수 있다. 여기서, 타임 스탬프는 인스턴스로부터 고유 식별자의 할당이 요청된 시각을 나타내는 일련의 문자열이다. 타임 스탬프는 협정 세계시(UTC)와 같은 형식을 가질 수 있으나, 이에 한정되는 것은 아니다. 또한, 타임 스탬프는 밀리 세컨드 단위로 표현될 수 있으나, 이에 한정되는 것도 아니다. 식별자 생성부(130)는 생성된 고유 식별자를 고유 식별자의 할당을 요청한 인스턴스에 제공한다. 그리고, 식별자 생성부(130)는 생성된 고유 식별자 및 해당 고유 식별자가 할당된 인스턴스를 매핑하여 식별자 관리 DB(123)에 저장할 수 있다.
인덱스 범위 관리부(140)는 식별자 할당 서버(200)에 의해 할당된 인덱스 범위를 관리한다. 구체적으로, 인덱스 범위 관리부(140)는 인스턴스로부터 고유 식별자 할당 요청이 최초로 요청되었거나, 인덱스 범위 관리 DB(126)에 저장된 인덱스 범위 내에서 고유 식별자를 생성할 수 없는 경우, 가상 통신부(110)를 통해 새로운 인덱스 범위에 대한 할당 요청을 전송한다. 인덱스 범위 관리부(140)는 가상 통신부(110)를 통해 새로운 인덱스 범위를 수신한다. 그리고, 인덱스 범위 관리부(140)는 새로운 인덱스 범위를 인덱스 범위 관리 DB(126)에 저장할 수 있다.
또한, 인덱스 범위 관리부(140)는 새로운 인덱스 범위에 대한 할당 요청을 전송함에 있어, 새로운 인덱스 범위에 대한 희망 크기를 함께 전송할 수 있다. 이 경우, 희망 크기는 식별자 할당 서버(200)로부터 인덱스 범위가 할당된 후, 할당된 인덱스 범위를 이용하여 고유 식별자를 생성할 수 없게 된 때까지 소요된 시간을 기초로 결정될 수 있다. 또한, 희망 크기는 식별자 생성부(130)를 통하여 과거 고유 식별자를 생성한 시간 간격을 기초로 결정될 수도 있다.
도 9는 본 발명의 일 실시예에 따른 식별자 할당 서버(200)의 블록도이다. 도 9를 참조하면, 식별자 할당 서버(200)는 서버 통신부(210), 서버 저장부(220), 인덱스 범위 할당부(230) 및 할당 크기 관리부(240)를 포함할 수 있다.
각각의 구성 요소에 대하여 구체적으로 설명하면, 서버 통신부(210)는 네트워크를 통하여, 하나 이상의 가상 머신(100)과 데이터를 송수신할 수 있다. 구체적으로, 서버 통신부(210)는 네트워크를 통하여, 가상 머신(100)으로부터 인덱스 범위에 대한 할당 요청을 수신할 수 있다. 그리고, 서버 통신부(210)는 네트워크를 통하여, 가상 머신(100)에 인덱스 범위를 전송할 수 있다.
서버 저장부(220)는 식별자 할당 서버(200)의 동작에 필요한 데이터를 저장한다. 구체적으로, 서버 저장부(220)는 인덱스 범위 관리 DB(223) 및 할당 크기 관리 DB(226)을 포함할 수 있다.
인덱스 범위 관리 DB(223)에는 가상 머신(100)에 할당된 인덱스 범위의 리스트가 저장될 수 있다. 또한, 인덱스 범위 관리 DB(223)에는 인덱스 범위가 할당된 가상 머신(100)의 정보가 추가적으로 저장될 수 있으나, 이에 한정되지 않는다. 그리고, 할당 크기 관리 DB(226)에는 인덱스 범위의 할당 크기가 저장될 수 있다. 할당 크기 관리 DB(226)는 각각의 가상 머신에 대한 할당 크기를 구별하여 저장할 수 있다. 또한, 할당 크기가 가변적으로 달라지는 경우, 할당 크기 관리 DB(226)는 인덱스 범위에 대한 할당 요청의 누적 히스토리를 추가적으로 저장할 수도 있다.
인덱스 범위 할당부(230)는 가상 머신(100)의 요청에 따라 인덱스 범위를 할당한다. 구체적으로, 인덱스 범위 할당부(230)는 할당 크기 관리 DB(226)에 저장된 할당 크기에 따라 인덱스 범위를 할당할 수 있다. 또한, 인덱스 범위 할당부(230)는 가상 머신(100)으로부터 인덱스 범위에 대한 할당 요청이 수신될 때, 인덱스 범위에 대한 희망 크기를 함께 수신하고, 수신된 희망 크기에 따라 인덱스 범위를 할당할 수 있다.
할당 크기 관리부(240)는 인덱스 범위의 크기를 관리한다. 구체적으로, 할당 크기 관리부(240)는 할당 범위의 크기를 고정적으로 유지할 수 있다. 또한, 할당 크기 관리부(240)는 할당 크기 관리 DB(226)에 저장된 누적 히스토리를 기초로 할당 크기를 조정할 수 있다. 예를 들어, 할당 크기 관리부(240)는 누적 히스토리를 기초로, 가상 머신(100)으로부터 수신된 인덱스 범위에 대한 할당 요청의 시간 간격이 점점 짧아지는 경우, 할당 크기를 상대적으로 크게 조정할 수 있다. 또한, 할당 크기 관리부(240)는 누적 히스토리를 기초로, 가상 머신(100)으로부터 수신된 인덱스 범위에 대한 할당 요청의 시간 간격이 점점 길어지는 경우, 할당 크기를 상대적으로 작게 조정할 수 있다.
지금까지, 도 8 및 도 9의 각 구성요소는 소프트웨어(Software) 또는, FPGA(Field-Programmable Gate Array)나 ASIC(Application-Specific Integrated Circuit)과 같은 하드웨어(Hardware)를 의미할 수 있다. 그렇지만, 상기 구성요소들은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, 어드레싱(Addressing)할 수 있는 저장 매체에 있도록 구성될 수도 있고, 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 상기 구성 요소들 안에서 제공되는 기능은 더 세분화된 구성요소에 의하여 구현될 수 있으며, 복수의 구성요소들을 합하여 특정한 기능을 수행하는 하나의 구성요소로 구현될 수도 있다.
도 10은 본 발명의 일 실시예에 따른 식별자 할당 서버(200)의 하드웨어 구성도이다. 도 10을 참조하면, 식별자 할당 서버(200)는 프로세서(250), 메모리(260), 네트워크 인터페이스(270), 시스템 버스(280) 및 스토리지 (290)을 포함할 수 있다.
메모리(260)는 고유 식별자 생성 방법이 구현된 컴퓨터 프로그램 데이터(295a)가 상주될 수 있다. 네트워크 인터페이스(270)는 네트워크를 이용하여 데이터를 송수신할 수 있다. 데이터 버스(280)는 프로세서(250), 메모리(260), 네트워크 인터페이스(270) 및 스토리지(290)와 연결되어, 각 구성 요소간의 데이터를 전달하는 이동 통로이다.
그리고, 스토리지(290)는 컴퓨터 프로그램 실행을 위해 필요한 애플리케이션 프로그래밍 인터페이스(API), 라이브러리(Library) 파일, 리소스(Resource) 파일 등을 저장할 수 있다. 또한, 스토리지(290)는 고유 식별자 생성 방법이 구현된 컴퓨터 프로그램 데이터(295b), 인덱스 범위 관리 DB(223) 및 할당 크기 관리 DB(226)를 저장할 수 있다.
보다 구체적으로는, 스토리지(290)는 네트워크 인터페이스(270)를 통하여, 제1 가상 머신으로부터 고유 식별자를 생성하기 위한 인덱스 범위에 대한 할당 요청을 수신하는 인스트럭션(Instruction), 기 설정된 제1 할당 크기에 따라 제1 인덱스 범위를 할당하는 인스트럭션, 네트워크 인터페이스(270)를 통하여, 제1 인덱스 범위를 제1 가상 머신에 전송하는 인스트럭션, 네트워크 인터페이스(270)를 통하여, 제2 가상 머신으로부터 인덱스 범위에 대한 할당 요청을 수신하는 인스트럭션, 기 설정된 제2 할당 크기에 따라 제2 인덱스 범위를 할당하는 인스트럭션 및 네트워크 인터페이스(270)를 통하여, 제2 인덱스 범위를 제2 가상 머신에 전송하는 인스트럭션을 포함하는 컴퓨터 프로그램이 저장될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해되어야만 한다.
Claims (11)
- 제1 가상 머신, 제2 가상 머신 및 식별자 할당 서버를 포함하는 복수의 가상 머신으로 구성된 분산 컴퓨팅 시스템의 고유 식별자 생성 방법에 있어서,
상기 제1 가상 머신이, 상기 식별자 할당 서버로부터 제1 인덱스 범위를 할당 받는 단계;
상기 제2 가상 머신이, 상기 식별자 할당 서버로부터 상기 제1 인덱스 범위와 상이한 제2 인덱스 범위를 할당 받는 단계;
상기 제1 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하는 단계;
상기 제2 가상 머신이, 상기 식별자 할당 서버의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하는 단계를 포함하되,
상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자인, 고유 식별자 생성 방법. - 제1 항에 있어서,
상기 제1 고유 식별자를 생성하는 단계는,
상기 제1 고유 식별자 할당이 요청된 시각에 따른 타임 스탬프 및 상기 제1 인덱스 범위 내의 인덱스를 결합하여, 상기 제1 고유 식별자를 생성하는 단계를 포함하는, 고유 식별자 생성 방법. - 제2 항에 있어서,
상기 제1 고유 식별자를 생성하는 단계는,
상기 제1 인덱스 범위 내의 인덱스를 1만큼 증가시킨 후, 상기 타임 스탬프와 결합하여, 상기 제1 고유 식별자를 생성하는 단계를 포함하는, 고유 식별자 생성 방법. - 제1 항에 있어서,
상기 제1 고유 식별자를 생성하는 단계는,
상기 제1 인덱스 범위 내의 인덱스를 이용하여 상기 제1 고유 식별자를 생성할 수 없는 경우, 상기 식별자 할당 서버에 새로운 인덱스 범위에 대한 할당 요청을 전송하는 단계를 포함하는, 고유 식별자 생성 방법. - 제4 항에 있어서,
상기 새로운 인덱스 범위에 대한 할당 요청을 전송하는 단계는,
상기 식별자 할당 서버에 상기 새로운 인덱스 범위에 대한 희망 크기를 함께 전송하는 단계를 포함하는, 고유 식별자 생성 방법. - 제5 항에 있어서,
상기 희망 크기를 함께 전송하는 단계는,
상기 식별자 할당 서버로부터 상기 제1 인덱스 범위가 할당된 후, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 상기 제1 고유 식별자를 생성할 수 없게 된 때까지의 소요된 시간을 기초로, 상기 희망 크기를 결정하는 단계를 포함하는, 고유 식별자 생성 방법. - 제5 항에 있어서,
상기 희망 크기를 함께 전송하는 단계는,
상기 제1 고유 식별자를 생성하기 이전, 고유 식별자를 생성한 시간 간격을 기초로, 상기 희망 크기를 결정하는 단계를 포함하는, 고유 식별자 생성 방법. - 제1 항에 있어서,
상기 제1 인덱스 범위를 할당 받는 단계는,
상기 식별자 할당 서버로부터 제1 인덱스 범위에 대한 크기를 함께 수신하는 단계를 포함하는, 고유 식별자 생성 방법. - 제8 항에 있어서,
상기 제1 인덱스 범위에 대한 크기는,
상기 제1 인덱스 범위를 할당 받기 이전, 상기 제1 가상 머신에 대하여 인덱스 범위가 할당된 시간 간격을 기초로 상기 식별자 할당 서버에 의하여 결정된, 고유 식별자 생성 방법. - 분산 컴퓨팅 시스템에 있어서,
하이퍼바이저를 통해 제1 가상 머신 및 제2 가상 머신을 구현하는 하나 이상의 컴퓨팅 장치; 및
상기 제1 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제1 가상 머신을 위한 제1 인덱스 범위를 할당하고, 상기 제2 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제2 가상 머신을 위한 제2 인덱스 범위를 할당하는 식별자 할당 서버를 포함하되,
상기 제1 가상 머신은, 상기 식별자 할당 서버의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하고,
상기 제2 가상 머신은, 상기 식별자 할당 서버의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하며,
상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자인, 분산 컴퓨팅 시스템. - 분산 컴퓨팅 시스템에 있어서,
하이퍼바이저를 통해 제1 가상 머신, 제2 가상 머신 및 제3 가상 머신이 구현되는 하나 이상의 컴퓨팅 장치를 포함하되,
상기 제1 가상 머신은, 상기 제2 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제2 가상 머신을 위한 제1 인덱스 범위를 할당하고, 상기 제3 가상 머신의 인덱스 범위 할당 요청에 응답하여 상기 제3 가상 머신을 위한 제2 인덱스 범위를 할당하고,
상기 제2 가상 머신은, 상기 제1 가상 머신의 개입 없이, 상기 제1 인덱스 범위 내의 인덱스를 이용하여 제1 고유 식별자를 생성하고,
상기 제3 가상 머신은 상기 제1 가상 머신의 개입 없이, 상기 제2 인덱스 범위 내의 인덱스를 이용하여 제2 고유 식별자를 생성하며,
상기 제1 고유 식별자 및 상기 제2 고유 식별자는 상기 분산 컴퓨팅 시스템 전체에 대한 유일성(Uniqueness)이 만족되는 식별자인, 분산 컴퓨팅 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150065276A KR101952651B1 (ko) | 2015-05-11 | 2015-05-11 | 분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 |
US15/148,011 US9697036B2 (en) | 2015-05-11 | 2016-05-06 | Method and apparatus for generating unique identifier for distributed computing environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150065276A KR101952651B1 (ko) | 2015-05-11 | 2015-05-11 | 분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160132581A KR20160132581A (ko) | 2016-11-21 |
KR101952651B1 true KR101952651B1 (ko) | 2019-05-22 |
Family
ID=57276062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150065276A KR101952651B1 (ko) | 2015-05-11 | 2015-05-11 | 분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9697036B2 (ko) |
KR (1) | KR101952651B1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10684894B2 (en) * | 2017-11-10 | 2020-06-16 | Amazon Technologies, Inc. | Capacity management in provider networks using dynamic host device instance model reconfigurations |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130340077A1 (en) | 2012-06-19 | 2013-12-19 | Raytheon Company | Secure cloud hypervisor monitor |
JP2014093550A (ja) | 2012-10-31 | 2014-05-19 | Fujitsu Ltd | 管理サーバ、仮想マシンシステム、プログラム及び接続方法 |
JP2014143560A (ja) | 2013-01-23 | 2014-08-07 | Fujitsu Ltd | マルチテナントシステム、管理装置、管理プログラム、およびマルチテナントシステムの制御方法 |
US20140229933A1 (en) | 2013-02-08 | 2014-08-14 | Biswajit Kanungo | Virtual machine discovery and identification |
US20150106805A1 (en) | 2013-10-15 | 2015-04-16 | Cisco Technology, Inc. | Accelerated instantiation of cloud resource |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120052769A (ko) | 2010-11-16 | 2012-05-24 | 한국전자통신연구원 | 가상머신을 동기화시키기 위한 장치 및 방법 |
CN103229478B (zh) * | 2012-12-13 | 2015-07-29 | 华为技术有限公司 | 一种确定虚拟机漂移的方法和装置 |
US9760390B2 (en) * | 2013-07-16 | 2017-09-12 | Empire Technology Development Llc | Processor identification for virtual machines |
-
2015
- 2015-05-11 KR KR1020150065276A patent/KR101952651B1/ko active IP Right Grant
-
2016
- 2016-05-06 US US15/148,011 patent/US9697036B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130340077A1 (en) | 2012-06-19 | 2013-12-19 | Raytheon Company | Secure cloud hypervisor monitor |
JP2014093550A (ja) | 2012-10-31 | 2014-05-19 | Fujitsu Ltd | 管理サーバ、仮想マシンシステム、プログラム及び接続方法 |
JP2014143560A (ja) | 2013-01-23 | 2014-08-07 | Fujitsu Ltd | マルチテナントシステム、管理装置、管理プログラム、およびマルチテナントシステムの制御方法 |
US20140229933A1 (en) | 2013-02-08 | 2014-08-14 | Biswajit Kanungo | Virtual machine discovery and identification |
US20150106805A1 (en) | 2013-10-15 | 2015-04-16 | Cisco Technology, Inc. | Accelerated instantiation of cloud resource |
Also Published As
Publication number | Publication date |
---|---|
US9697036B2 (en) | 2017-07-04 |
KR20160132581A (ko) | 2016-11-21 |
US20160335112A1 (en) | 2016-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11307890B2 (en) | Methods and apparatus to manage virtual machines | |
US11829742B2 (en) | Container-based server environments | |
US10635664B2 (en) | Map-reduce job virtualization | |
EP3761170B1 (en) | Virtual machine creation method and apparatus | |
CN110612705B (zh) | 一种无服务器架构下业务部署的方法和函数管理平台 | |
US10701139B2 (en) | Life cycle management method and apparatus | |
US10915449B2 (en) | Prioritizing data requests based on quality of service | |
US10873501B2 (en) | Methods, systems and apparatus to propagate node configuration changes to services in a distributed environment | |
US9229759B2 (en) | Virtual machine provisioning using replicated containers | |
US11119813B1 (en) | Mapreduce implementation using an on-demand network code execution system | |
US20220391260A1 (en) | Method and Apparatus for Creating Container, Device, Medium, and Program Product | |
US20140165060A1 (en) | Methods and apparatus to reclaim resources in virtual computing environments | |
US20220188170A1 (en) | Multi-Tenant Control Plane Management on Computing Platform | |
US20210211391A1 (en) | Automated local scaling of compute instances | |
US9092272B2 (en) | Preparing parallel tasks to use a synchronization register | |
WO2012039053A1 (ja) | 計算機システムの運用管理方法、計算機システム及びプログラムを記憶する計算機読み取り可能な媒体 | |
JP2014520346A5 (ko) | ||
US8280197B1 (en) | Managed background loading of image resources in resource-constrained devices | |
CN113051245A (zh) | 用于迁移数据的方法、装置及系统 | |
KR101952651B1 (ko) | 분산 컴퓨팅 환경을 위한 고유 식별자 생성 방법 및 그 장치 | |
US10379973B2 (en) | Allocating storage in a distributed storage system | |
CN111475279A (zh) | 用于备份的智能数据负载平衡的系统和方法 | |
US20220405135A1 (en) | Scheduling in a container orchestration system utilizing hardware topology hints | |
CN112306372B (zh) | 用于处理数据的方法、设备和程序产品 | |
KR101508273B1 (ko) | 클라우드 api 키를 이용한 자원 할당 방법 및 이를 위한 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |