KR20230038719A - 분산 네트워크에서 계산 유닛의 마이그레이션 - Google Patents

분산 네트워크에서 계산 유닛의 마이그레이션 Download PDF

Info

Publication number
KR20230038719A
KR20230038719A KR1020237003375A KR20237003375A KR20230038719A KR 20230038719 A KR20230038719 A KR 20230038719A KR 1020237003375 A KR1020237003375 A KR 1020237003375A KR 20237003375 A KR20237003375 A KR 20237003375A KR 20230038719 A KR20230038719 A KR 20230038719A
Authority
KR
South Korea
Prior art keywords
subnet
unit
node
subnets
implemented method
Prior art date
Application number
KR1020237003375A
Other languages
English (en)
Inventor
얀 카메니쉬
안드레아 세룰리
데이비드 데를러
마누 더리버즈
로만 카시친
도미니크 윌리엄스
Original Assignee
디피니티 스티프텅
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 디피니티 스티프텅 filed Critical 디피니티 스티프텅
Publication of KR20230038719A publication Critical patent/KR20230038719A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • G06F9/4862Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate
    • G06F9/4875Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration the task being a mobile agent, i.e. specifically designed to migrate with migration policy, e.g. auction, contract negotiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0895Configuration of virtualised networks or elements, e.g. virtualised network function or OpenFlow elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • H04L41/0897Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities by horizontal or vertical scaling of resources, or by migrating entities, e.g. virtual resources or entities

Landscapes

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

Abstract

본 발명의 제 1 양태의 실시예에 따르면, 분산 네트워크를 동작시키는 컴퓨터 구현 방법이 제공된다. 분산 네트워크는 복제된 컴퓨팅 클러스터로서 구현된 복수의 서브넷을 포함한다. 이 방법은, 복수의 서브넷 중 제 1 서브넷으로부터 복수의 서브넷 중 제 2 서브넷으로 계산 유닛을 마이그레이트하는 단계를 더 포함한다. 마이그레이트하는 단계는, 제 1 서브넷의 계산 유닛을 마이그레이트되어야 하는 마이그런트 계산 유닛으로서, 제 1 서브넷 및 제 2 서브넷에 시그널링하는 단계를 포함한다. 마이그레이트하는 단계는, 마이그런트 계산 유닛을 제 1 서브넷으로부터 제 2 서브넷으로 전달하는 단계와, 마이그런트 계산 유닛을 제 2 서브넷에 인스톨하는 단계와, 마이그런트 계산 유닛을 제 2 서브넷에서 활성화하고 실행하는 단계를 더 포함한다.
본 발명의 추가의 양태는 대응하는 분산 네트워크, 노드, 컴퓨터 프로그램 제품 및 소프트웨어 아키텍처에 관한 것이다.

Description

분산 네트워크에서 계산 유닛의 마이그레이션
본 발명은 복수의 서브넷을 포함하는 분산 네트워크를 동작시키는 방법에 관한 것이다. 각각의 서브넷은 복수의 노드를 포함한다.
추가 양태는 대응하는 분산 네트워크, 분산 네트워크의 노드, 대응하는 컴퓨터 프로그램 제품 및 비일시적 매체에 인코딩된 소프트웨어 아키텍처에 관한 것이다.
분산 네트워크에서는 복수의 노드가 분산 방식으로 배열된다. 분산 네트워크 컴퓨팅에서, 소프트웨어와 데이터는 복수의 노드에 걸쳐 분산된다. 노드는 컴퓨팅 리소스를 확립하고 분산 네트워크는 분산 컴퓨팅 기술을 사용할 수 있다.
분산 네트워크의 예는 블록체인 네트워크이다. 블록체인 네트워크는 블록에 기초한 합의 기반 전자 원장(consensus-based, electronic ledger)이다. 각각의 블록은 트랜잭션 및 다른 정보를 포함한다. 뿐만 아니라, 각각의 블록은 이전 블록의 해시를 포함해서, 블록들은 함께 체이닝되어서, 블록체인에 기입된 모든 트랜잭션의 영구적이고 변경할 수 없는 기록을 생성한다. 트랜잭션은 예를 들어, 스마트 계약이라고 하는 작은 프로그램들을 포함할 수 있다.
트랜잭션이 블록체인에 기입되기 위해서는, 트랜잭션은 네트워크에서 "검증"되어야 한다. 다시 말해, 네트워크 노드는 블록체인에 기입될 블록에 대한 동의(consent)를 얻어야 한다. 이러한 동의는 다양한 합의 프로토콜에 의해 달성될 수 있다.
합의 프로토콜의 하나의 유형은 작업 증명 합의 프로토콜(proof-of-work consensus protocol)이다. 작업 증명 합의 프로토콜은 보통 컴퓨터에 의한 처리 시간에 대응하는, 일반적으로 합의 프로토콜에 참가하는 당사자로부터의 일부 작업을 필요로 한다. 비트코인과 같은 작업 증명 기반 암호 화폐 시스템에는 계산 집약적인 퍼즐을 풀어 트랜잭션을 검증하고 새로운 블록을 생성하는 것이 수반된다.
합의 프로토콜의 다른 유형은 지분 증명 합의 프로토콜(proof-of-stake-consensus protocol)이다. 이러한 지분 증명 프로토콜은 시간 소모적이고 에너지 집약적인 컴퓨팅을 필요로 하지 않는다는 이점이 있다. 지분 증명 기반 블록체인 네트워크에서 예를 들어, 다음 블록의 생성자는 네트워크의 각 노드의 지분 조합뿐만 아니라 랜덤 선택을 통해 선택된다.
분산 네트워크는 암호화폐 외에도, 다양한 다른 애플리케이션에 사용될 수 있다. 특히, 이들은 비집중(decentralized) 및 분산 컴퓨팅 기능 및 서비스를 제공하는데 사용될 수있다.
따라서, 기능이 강화된 분산 네트워크가 필요하다.
따라서, 본 발명의 일 양태의 목적은, 기능이 강화된 분산 네트워크를 제공하는 것이다.
본 발명의 제 1 양태의 실시예에 따르면, 분산 네트워크를 동작시키기 위한 컴퓨터 구현 방법이 제공된다. 분산 네트워크는 복수의 서브넷을 포함하고, 복수의 서브넷 각각은 하나 이상의 할당된 노드를 포함한다. 이 방법은 계산 유닛의 세트를 실행하는 단계와, 계산 유닛 각각을 서브넷-할당에 따라서 복수의 서브넷 중 하나에 할당하는 단계를 포함한다. 이로써 서브넷 각각에 대해서 계산 유닛의 세트의 할당된 서브셋을 생성한다. 이 방법은, 계산 유닛의 할당된 서브셋을 복수의 서브넷의 각각의 노드에서 실행하는 단계와, 복수의 서브넷의 노드에 의해, 서브넷에 걸쳐서 결정적이고(deterministic) 복제된(replicated) 방식으로 계산을 실행해서, 실행 상태의 체인을 트래버스(traverse)하는 단계를 포함할 수 있다. 이 방법은 복수의 서브넷 중 제 1 서브넷으로부터 복수의 서브넷 중 제 2 서브넷으로 계산 유닛을 마이그레이트하는 단계를 더 포함한다. 마이그레이트하는 단계는, 제 1 서브넷의 계산 유닛을 마이그레이트될 마이그런트 계산 유닛으로서, 제 1 서브넷 및 제 2 서브넷에 시그널링하는 단계를 포함한다. 마이그레이트하는 단계는, 마이그런트 계산 유닛을 제 1 서브넷으로부터 제 2 서브넷으로 전달하는 단계와, 마이그런트 계산 유닛을 제 2 서브넷에 인스톨하는 단계와, 마이그런트 계산 유닛을 제 2 서브넷에서 활성화하고 실행하는 단계를 더 포함한다.
이러한 구현된 방법은, 복제된 방식으로 서브넷을 동작시키는, 분산 네트워크에 대해 강화된 동작 유연성을 제공한다. 실시예에 따르면, 서브넷은 또한 복제된 컴퓨팅 클러스터로서 표기될 수도 있다. 이러한 복제된 컴퓨팅 클러스터에서, 각각의 서브넷에 할당된 계산 유닛은 서브넷의 각 노드에서 실행되므로 서브넷 전체에 복제되어서 동일한 실행 상태의 체인을 트래버스한다.
본 발명의 실시예에 따른 방법은 하나의 서브넷으로부터 다른 서브넷으로의 계산 유닛의 마이그레이션을 가능하게 한다. 이로써, 특히 서브넷 및 이들의 할당된 노드의 부하 및 용량 관리의 측면에서 네트워크의 유연성을 향상시킨다.
이러한 계산 유닛의 마이그레이션은, 이러한 분산 네트워크의 실행 상태가 서브넷의 노드들에 의해 일단 동의되면 더 이상 제거될 수 없기 때문에 변경할 수 없는 것으로 간주될 수 있으므로 이러한 복제된 설정에서 한눈에(on the first sight) 반직관적인 것으로 관찰될 수 있다(observed as counterintuitive).
그러나, 본 발명의 발명자들은 이러한 편견을 극복하고, 복제된 컴퓨팅 클러스터들/서브넷들 사이에서의 계산 유닛의 마이그레이션을 가능하게 하는, 복제된 컴퓨팅 클러스터를 형성하는 서브넷을 가진 분산 네트워크를 설계했다.
일 실시예에 따르면, 이 방법은, 제 1 서브넷에 의해, 마이그레이션을 위한 마이그런트 계산 유닛을 준비하는 단계를 더 포함한다.
또 다른 실시예에 따르면, 이 방법은, 특히 마이그레이션을 위한 마이그런트 계산 유닛을 준비하는 단계는, 마이그레이션 시간을 스케줄링하는 단계를 포함할 수 있다. 마이그레이션 시간은 다양한 방법으로 스케줄링될 수 있다. 일부 실시예에 따르면, 이는 중앙 제어 유닛에 의해 스케줄링될 수 있다. 다른 실시예에 따르면, 중앙 제어 유닛은 각각의 서브넷에, 특히 제 1 서브넷 및 제 2 서브넷에, 계산 유닛이 마이그레이트되어야 한다고 시그널링하기만 하면 된다. 실시예에 따르면, 중앙 제어 유닛은 중앙 레지스트리에서 업데이트를 행할 수 있다. 이후, 제 1 서브넷은, 예를 들어 제 1 서브넷의 계산 유닛 관리자는 레지스트리의 변경을 관찰하고, 대응하는 마이그레이션 시간을 스케줄링할 수 있다. 마이그레이션 시간은 특히, 마이그런트 계산 유닛에 대한 메시지 수락을 중지하고, 마이그레이션 시간 이후에는 마이그런트 계산 유닛의 실행을 중지하고 및/또는 마이그런트 계산 유닛의 유닛 상태를 수정하는 시점을 정의한다. 즉, 마이그레이션 시간 이후에, 각각 계산 유닛의 유닛 상태는 고정되거나 혹은 환언하면 동결되어서(frozen) 더 이상 수정되지 않는다. 그리고, 고정되어 있으므로, 그 상태를 포함하는 계산 유닛도 마이그레이션 준비가 된다.
실시예에 따르면, 복수의 서브넷은 연속 방식으로 블록을 실행하도록 구성되며, 마이그레이션 시간은 제 1 서브넷에 의해 처리될 마지막 블록을 정의하는 블록 높이이다. 실시예에 따르면, 블록은 비동기 방식으로 처리될 수 있고, 따라서 블록 높이는 마이그레이션 시간으로서 특정한 캘린더 시간을 미리 정의하는 것이 아니라, 특정 블록 높이의 관점에서 시간을 정의한다는 점에 유의해야 한다. 이러한 점에서 마이그레이션 시간이라는 용어는 넓은 의미로 이해되어야 한다.
실시예에 따르면, 마이그런트 계산 유닛을 획득하는 단계는, 제 2 서브넷의 노드에 의해서, 제 1 서브넷에 조인하는 단계를 포함한다. 이는, 제 2 서브넷의 노드에 의해서, 제 1 서브넷의 계산 유닛을 실행하는 것을 포함할 수 있다. 제 1 서브넷을 조인함으로써, 제 2 서브넷의 노드는 제 1 서브넷의 계산 유닛, 특히 마이그런트 계산 유닛의 유닛 상태/실행 상태를 관찰할 수 있다. 이 조인은 특히 마이그레이션 시간 이전에 발생할 수 있다. 이로써, 제 2 서브넷의 노드는 마이그런트 계산 유닛의 유닛 상태에 대한 신뢰를 사전에 획득할 수 있다. 또한, 가동 중지 시간(downtime)을 사전에 줄이기 위해서 마이그런트 계산 유닛의 상태의 일부를 획득하기 시작할 수 있다. 이것은 효율적인 전달을 가능하게 한다.
일 실시예에 따르면, 제 2 서브넷의 노드는 리스닝 모드에서 수동적으로 제 1 서브넷에 조인할 수 있다. 리스닝 모드는 특히 제 1 서브넷의 모든 아티팩트를 확인(verify)하되 자체적으로 아티팩트를 생성하지는 않는 것을 포함할 수 있다. 이러한 점에서, 아티팩트는 제 1 서브넷의 노드들 사이에서 교환되는 모든 정보일 수 있다. 일 실시예에 따라서 제 2 서브넷의 노드는 이 제 2 서브넷에 대한 태스크의 서브셋만을 수행할 수 있다. 예를 들어, 이들은 블록의 제안(proposal) 및 공증(notarization)에는 참여하지 않고, 각각의 블록을 확인해서 유효한 경우 실행할 수 있다.
실시예에 따라서, 제 1 서브넷으로부터 제 2 서브넷으로 마이그런트 계산 유닛을 전달하는 단계는, 제 1 서브넷의 복제본과 제 2 서브넷의 복제본 사이에서 마이그런트 계산 유닛의 노드 내부 전송을 수행하는 단계를 포함하되, 제 1 서브넷의 복제본과 제 2 서브넷의 복제본은 동일한 노드 상에서 실행된다.
복제본은, 노드에서 실행되고 동일한 서브넷에 할당되는 계산 유닛의 세트로 형성된다.
이러한 실시예에 따르면, 제 1 서브넷에 조인한 제 2 서브넷의 노드는 2개의 복제본, 즉 제 1 서브넷에 대한 제 1 복제본 및 제 2 서브넷에 대한 제 2 복제본을 실행한다. 두 복제본이 동일한 노드에서 실행되므로, 이들은 동일한 신뢰 도메인에 있으며, 특히 수동 복제본일 수도 있는 제 1 복제본이, 마이그런트 계산 유닛의 상태를 포함한 제 1 서브넷의 계산 유닛의 상태를 관찰하므로, 마이그런트 계산 유닛의 이 상태는 노드 내에서 전달될 수 있고, 그러므로 제 1 복제본으로부터 제 2 복제본으로, 그리고 이에 따라서 제 1 서브넷으로부터 제 2 서브넷으로, 동일한 신뢰 도메인 내에서 전달될 수 있다.
일 실시예에 따르면, 마이그런트 계산 유닛을 전달하는 단계는, 제 2 서브넷의 각각의 노드에 의해, 마이그런트 계산 유닛을 제 1 서브넷의 노드로부터 메시징 프로토콜을 통해 획득하는 단계를 포함한다.
이러한 실시예에 따르면, 제 2 서브넷의 노드는 제 1 서브넷의 일부가 아니며, 즉 환언하면 제 1 서브넷에 조인되지 않았다. 마이그레이션 높이에 도달한 이후에 제 1 서브넷은 마이그레이션을 위한 마이그런트 계산 유닛을 준비한다. 이는, 특히 예를 들어, 제 1 서브넷의 노드에 의해 마이그런트 계산 유닛에 대해 조인트 서명(joint signature)을 수행함으로써, 마이그레이션 블록 높이에서 마이그런트 계산 유닛의 상태를 인증하는 것을 포함할 수 있다. 그 후, 인증된 마이그런트 계산 유닛은 메시징 프로토콜을 통해 제 2 서브넷의 노드에 송신될 수 있다.
실시예에 따르면, 메시징 프로토콜을 통해 마이그런트 계산 유닛을 전달하는 단계는, 제 1 서브넷의 노드에 의해, 마이그런트 계산 유닛을 하나 이상의 청크로 분할하는 단계와, 마이그런트 계산 유닛의 하나 이상의 청크를 메시징 프로토콜을 통해 제 1 서브넷으로부터 제 2 서브넷으로 전달하는 단계를 포함한다. 이는, 특히 대역폭의 측면에서 효율적인 전달을 가능하게 한다.
실시예에 따르면, 메시징 프로토콜은 제 1 서브넷의 노드의 마이그레이션 계산 유닛과 제 2 서브넷의 노드에 인스톨된 대응하는 마이그런트 계산 유닛 사이의 상태를 동기화시키기 위한 상태 동기화 프로토콜을 포함할 수 있다.
실시예에 따르면 제 1 서브넷은 마이그레이션 시간/마이그레이션 블록 높이 이후에 마이그런트 계산 유닛에 대한 메시지를 거절할 수 있다. 이것은 메시지의 발신자에 의한, 각각의 메시지의 재라우팅을 가능하게 한다.
실시예에 따르면, 제 2 서브넷의 노드는, 특히 합의 프로토콜을 수행함으로써, 마이그런트 계산 유닛의 활성화에 동의할 수 있다. 이러한 단계는 제 2 서브넷의 충분한 수의 노드가 사용 가능한 계산 유닛을 갖는 것을 보장할 수 있고, 따라서 동의 후에 계산 유닛이 동작할 수 있게 보장할 수 있다. 또한, 이것은 대응하는 노드가 마이그런트 계산 유닛을 동시에 실행하기 시작하는 것을 보장해서 결정론적 처리를 용이하게 할 수 있다.
본 발명의 제 2 양태의 실시예에 따르면, 분산 네트워크를 동작시키는 다른 컴퓨터 구현 방법이 제공된다. 분산 네트워크는 복수의 서브넷을 포함하고, 복수의 서브넷 각각은 하나 이상의 할당된 노드를 포함한다. 이 방법은, 계산 유닛의 세트를 실행하는 단계와, 계산 유닛 각각을 서브넷-할당에 따라서 복수의 서브넷 중 하나에 할당해서, 서브넷 각각에 대해서 계산 유닛의 세트의 할당된 서브셋을 생성하는 단계를 포함한다. 이 방법은 또한, 계산 유닛의 할당된 서브셋을 복수의 서브넷의 각각의 노드에서 실행하는 단계와, 복수의 서브넷의 노드에 의해, 서브넷에 걸쳐서 결정적이고(deterministic) 복제된(replicated) 방식으로 계산을 실행하는 단계를 더 포함한다. 컴퓨터 구현 방법은 복수의 서브넷 중 제 1 서브넷으로부터 복수의 서브넷 중 제 2 서브넷으로 계산 유닛을 마이그레이트하는 단계를 포함한다. 이 실시예에 따르면, 제 2 서브넷은 사전 존재하지 않으며, 즉 제 2 서브넷은 새롭게 생성되어야 한다. 마이그레이트하는 단계는, 제 1 서브넷의 계산 유닛을 마이그레이트될 마이그런트 계산 유닛으로서, 제 1 서브넷에 시그널링하는 단계를 포함한다. 시그널링에 응답해서, 제 1 서브넷은 새로운 제 2 서브넷을 생성해서 시작한다. 이후, 마이그런트 계산 유닛이 제 1 서브넷으로부터 제 2 서브넷으로 내부적으로 즉, 각각의 노드들 내에서 복제본들 사이에서 마이그레이트된다. 이는, 이러한 전달이 각각의 노드들의 동일한 신뢰 도메인 내에서 발생한다는 장점이 있다.
추가 단계는, 제 1 서브넷과 제 2 서브넷의 노드에 의해, 제 2 서브넷에 마이그런트 계산 유닛을 인스톨하는 단계와, 제 1 서브넷과 제 2 서브넷의 노드에 의해, 제 2 서브넷에서 마이그런트 계산 유닛을 활성화하고 실행하는 동작을 포함한다.
마이그런트 계산 유닛을 활성화하고 실행하기 이전에, 특히 합의 프로토콜에 의해 활성화에 동의하는 단계가 수행될 수 있다.
제 2 양태의 또 다른 실시예에 따르면, 제 1 서브넷의 일부가 아닌 제 2 서브넷에, 추가 노드가 추가될 수 있다. 이들 추가 노드는 예를 들어, 재개 가능성(Resumability) 또는 상태 복구 프로토콜을 통해 마이그런트 계산 유닛의 상태를 따라잡을(catch up with) 수 있는 새로운 노드이다.
추가 단계는 제 2 서브넷으로부터 제 1 서브넷의 노드를 제거하는 단계를 포함할 수 있다.
이로써, 마이그런트 계산 유닛은 제 1 서브넷의 노드로부터 다른 새 노드의 세트로 완전히 마이그레이트되었다.
실시예에 따르면, 상술한 혹은 이하 설명하는 방법 중 하나로 복수의 계산 유닛은 제 1 서브넷으로부터 제 2 서브넷으로 마이그레이트될 수 있다.
본 발명의 다른 양태의 실시예에 따르면, 본 발명의 제 1 양태의 방법 단계를 수행하도록 구성된 분산 네트워크가 제공된다.
본 발명의 다른 양태의 실시예에 따르면, 본 발명의 제 2 양태의 방법 단계를 수행하도록 구성된 분산 네트워크가 제공된다.
본 발명의 다른 양태의 실시예에 따르면, 분산 네트워크의 노드가 제공된다.
본 발명의 다른 양태의 실시예에 따르면, 분산 네트워크를 동작시키기 위한 컴퓨터 프로그램 제품이 제공된다. 컴퓨터 프로그램 제품은, 프로그램 명령어가 내장된 컴퓨터 판독가능 저장 매체를 포함하며, 프로그램 명령어는, 분산 네트워크의 복수의 노드 중 하나 이상에 의해 실행되어서, 복수의 노드 중 하나 이상으로 하여금 본 발명의 방법 양태의 단계를 수행하게 한다.
본 발명의 다른 양태의 실시예에 따르면, 분산 네트워크의 노드를 동작시키기 위한 컴퓨터 프로그램 제품이 제공된다.
본 발명의 다른 양태의 실시예에 따르면, 비일시적 컴퓨터 판독가능 매체에 인코딩된 소프트웨어 아키텍처가 제공된다. 소프트웨어 아키텍처는 분산 네트워크의 하나 이상의 노드를 동작시키도록 구성된다. 인코딩된 소프트웨어 아키텍처는, 복수의 노드 중 하나 이상으로 하여금 본 발명의 방법 양태의 단계를 포함하는 방법을 수행하게 하기 위해, 복수의 노드 중 하나 이상에 의해 실행가능한 프로그램 명령어를 포함한다.
본 발명의 한 양태의 특징 및 이점은 적절하게 본 발명의 다른 양태에 적용될 수 있다.
다른 바람직한 실시예는, 종속 청구항에 나열되어 있고 아래의 설명에도 나열되어 있다.
다음의 상세한 설명으로부터 본 발명이 보다 잘 이해될 것이며, 위에서 제시한 목적 이외의 목적이 명백해질 것이다. 이러한 설명은 첨부 도면을 참조한다.
도 1은 본 발명의 실시예에 따른 분산 네트워크의 예시적인 블록도를 도시한다.
도 2는 네트워크의 노드에서 실행되는 계산 유닛을 보다 상세하게 도시한다.
도 3a 내지 도 3d는 마이그런트 계산 유닛을 제 1 서브넷으로부터 제 2 서브넷으로 마이그레이트하는 방법의 단계를 도시한다.
도 3e는 마이그런트 계산 유닛을 마이그레이트하는 또 다른 메커니즘을 도시한다.
도 4a 내지 도 4g는 계산 유닛을 제 1 서브넷으로부터, 사전 존재하지 않는 제 2 서브넷으로 마이그레이트하는 컴퓨터 구현 방법의 단계를 도시한다.
도 5는 본 발명의 실시예에 따른 네트워크의 각 노드에서 실행되는 주요 프로세스를 도시한다.
도 6은 서브넷 프로토콜 클라이언트의 프로토콜 컴포넌트의 개략 블록도를 도시한다.
도 7은 메시징 프로토콜과 합의 프로토콜 및 관련 컴포넌트의 워크플로우의 예시적인 시각화를 도시한다.
도 8은 인터-서브넷(inter-subnet) 메시지 교환 및 인트라-서브넷(intra-subnet) 메시지의 교환에 참여하는 메인 계층을 예시하는 계층 모델을 도시한다.
도 9는 본 발명의 예시적인 실시예에 따른, 합의 컴포넌트에 의한 입력 블록의 생성을 예시한다.
도 10은 계산 유닛의 마이그레이션의 타이밍도를 도시한다.
도 11은 계산 유닛의 보다 상세한 예시를 도시한다.
도 12는 네트워킹 컴포넌트를 보다 상세하게 도시한다.
도 13은 상태 관리자 컴포넌트를 보다 상세하게 도시한다.
도 14는 분산 네트워크를 실행하기 위한 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도를 도시한다.
도 15는 제 1 서브넷으로부터 제 2 서브넷으로 계산 유닛을 마이그레이트하는 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도를 도시한다.
도 16은 제 1 서브넷으로부터 제 2 서브넷으로 계산 유닛을 마이그레이트하는 다른 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도를 도시한다.
도 17은 본 발명의 실시예에 따른 노드의 예시적인 실시예를 나타낸다.
먼저, 본 발명의 실시예의 몇몇 일반적인 양태 및 용어를 소개한다.
실시예에 따르면, 분산 네트워크는 분산 방식으로 배열된 복수의 노드를 포함한다. 이러한 분산 네트워크 컴퓨팅에서, 소프트웨어와 데이터는 복수의 노드에 분산된다. 노드는 컴퓨팅 리소스를 확립하고 분산 네트워크는 특히 분산 컴퓨팅 기법을 사용할 수 있다.
실시예에 따르면, 분산 네트워크는 특히 블록체인 네트워크로서 구현될 수 있다. "블록체인"이라는 용어는 모든 형태의 전자, 컴퓨터 기반의 분산 원장을 포함할 것이다. 몇몇 실시예에 따르면, 블록체인 네트워크는 작업 증명(proof-of-work) 블록체인 네트워크로서 구현될 수 있다. 다른 실시예에 따르면, 블록체인 네트워크는 지분 증명(proof-of-stake) 블록체인 네트워크로서 구현될 수 있다.
계산 유닛은, 분산 네트워크의 노드에서 실행되고 자체의 유닛 상태를 갖는 소프트웨어의 조각으로서 정의될 수 있다. 유닛 상태는 실행 상태로 표시될 수도 있다.
각각의 서브넷은 계산 유닛의 세트, 특히 계산 유닛의 상태를 서브넷 전체에 복제하도록 구성된다. 결과적으로, 각각의 계산 유닛은 정직하게(honestly) 동작한다면, 동일한 유닛/실행 상태의 체인을 항상 트래버스(traverse)한다. 계산 유닛은 계산 유닛의 코드와 계산 유닛의 유닛 상태/실행 상태를 포함한다.
메시징 프로토콜은 유닛-대-유닛 메시지의 교환을 관리하는 프로토콜로서 정의될 수 있다. 특히, 메시징 프로토콜은 송신 서브넷으로부터 수신 서브넷으로 유닛-대-유닛 메시지를 라우팅하도록 구성될 수 있다. 이를 위해 메시징 프로토콜은 각각의 서브넷 할당을 사용한다. 서브넷 할당은, 각각의 통신의 계산 유닛의 제각각의 위치/서브넷을 메시징 프로토콜에 나타낸다.
도 1은 본 발명의 일 실시예에 따른 분산 네트워크(100)의 예시적인 블록도를 도시한다.
분산 네트워크(100)는 복수의 노드(10)를 포함하며, 이는 또한 네트워크 노드(10)로서 표시될 수 있다. 복수의 노드(10)는 복수의 서브넷(11)에 분산되어 있다. 도 1의 예에서, SNA, SNB, SNC 및 SND로 표시된 4개의 서브넷(1)이 제공된다.
복수의 서브넷(11) 각각은 각각의 서브넷(11)의 개개의 노드(10)에서 한 세트의 계산 유닛을 실행하도록 구성된다. 실시예에 따르면 계산 유닛은 소프트웨어의 한 조각으로서 이해되어야 하며, 특히 자체의 유닛의 상태 즉 환언하면 실행 상태를 포함하거나 혹은 갖는 소프트웨어의 한 조각으로서 이해되어야 한다.
네트워크(100)는, 각각의 서브넷(11) 내의 인트라-서브넷 통신을 위한, 특히 인트라-서브넷 유닛-대-유닛 메시지가 동일한 서브넷에 할당된 계산 유닛들 사이에서 교환되게 하는 통신 링크(12)를 포함한다.
또한, 네트워크(100)는, 각각의 서브넷(11) 사이의 인터-서브넷 통신을 위한, 특히 인트라-서브넷 유닛-대-유닛 메시지가 각각의 서브넷에 할당된 계산 유닛들 사이에서 교환되게 하는 통신 링크(13)를 포함한다.
따라서, 통신 링크(12)는 또한 인트라-서브넷 통신 링크 또는 피어-투-피어(Peer-to-Peer, P2P) 통신 링크로서 표기될 수 있고, 통신 링크(13)는 또한 인터-서브넷 또는 서브넷-대-서브넷(SN2SN) 통신 링크로서 표기될 수 있다.
실시예에 따르면, 유닛 상태는 계산 유닛에 의해 사용되는 모든 데이터 또는 정보, 특히 계산 유닛이 변수에 저장하는 데이터뿐만 아니라 계산 유닛이 원격 호출로부터 획득하는 데이터로서 이해되어야 한다. 유닛 상태는 특히, 각각의 노드의 개개의 메모리 위치에서의 저장 위치를 나타낼 수 있다. 실시예에 따르면, 이들 메모리 위치의 컨텐츠는, 계산 유닛의 실행의 임의의 주어진 지점에서 유닛 상태라고 불린다. 계산 유닛은 특히 상태 저장 계산 유닛으로서 구현될 수 있는데, 즉 실시예에 따르면, 계산 유닛은, 선행했던 이벤트 또는 사용자 상호작용을 기억하도록 설계된다.
본 발명의 실시예에 따르면, 서브넷(11)은, 계산 유닛의 세트를 각각의 서브넷(11)에 복제하도록 구성된다. 보다 구체적으로, 서브넷(11)은 각각의 서브넷(11)에 계산 유닛의 유닛 상태를 복제하도록 구성된다.
네트워크(100)는 특히 지분 증명 블록체인 네트워크일 수 있다.
지분 증명(PoS)은, 블록체인 네트워크가, 어느 노드가 블록체인의 다음 블록을 생성할 수 있는지에 관한 분산 합의에 도달하는 방법을 설명한다. PoS 방법은 가중 랜덤 선택을 사용할 수 있으며, 이로써 개개의 노드의 가중치는 특히, 각 노드의 자산("지분")에 의존하여 결정될 수 있다.
도 2는 네트워크(100)의 노드(10)에서 실행되는 계산 유닛(15)을 보다 상세하게 예시한다. 네트워크(100)는, 네트워크(100)에서 실행되는 각각의 계산 유닛을 복수의 서브넷 중 하나에 할당하도록 구성되며, 이 예에서는 서브넷 할당에 따라서 서브넷 중 하나(SNA, SNB, SNC 또는 SND)에 할당한다. 분산 네트워크(100)의 서브넷-할당은, 서브넷(SNA, SNB, SNC 및 SND) 각각에 대한 전체 계산 유닛의 세트의 할당된 서브셋을 생성한다.
보다 구체적으로, 도 2는 좌측(201)에 도 1의 서브넷(SNA)의 노드(10)를 나타낸다. 분산 네트워크(100)의 서브넷 할당은 서브넷(SNA)에 4개의 계산 유닛(15)의 서브셋을 할당했으며, 특히 계산 유닛의 서브셋(CUA1, CUA2, CUA3 및 CUA4)을 할당했다. 계산 유닛의 할당된 서브셋(CUA1, CUA2, CUA3 및 CUA4)은 서브넷(SNA)의 각 노드(10)에서 실행된다. 또한, 계산 유닛의 할당된 서브셋(CUA1, CUA2, CUA3 및 CUA4)은 전체 서브넷(SNA)에 복제되어서, 각각의 계산 유닛(CUA1, CUA2, CUA3 및 CUA4)은 동일한 유닛 상태의 체인을 트래버스한다. 이는, 특히 서브넷(SNA)의 노드(10) 각각에서 계산 유닛(CUA1, CUA2, CUA3 및 CUA4)의 유닛 상태의 공간에서 능동 복제(active replication)를 수행함으로써 구현될 수 있다.
또한, 도 2는 우측(202)에, 도 1의 서브넷(SNB)의 노드(10)를 도시하고 있다. 분산 네트워크(100)의 서브넷 할당은 서브넷(SNB)에 2개 계산 유닛(15)의 서브셋을, 특히 계산 유닛(CUB1, CUB2)의 할당된 서브셋을 할당했다. 계산 유닛(CUB1, CUB2)의 할당된 서브셋은 서브넷(SNB)의 각각의 노드(10)에서 실행된다. 또한 계산 유닛(CUB1, CUB2)의 할당된 서브셋은 전체 서브넷(SNB)에 복제되어서, 각각의 계산 유닛(CUB1, CUB2)이 동일한 유닛 상태/실행 상태를 트래버스한다(예를 들어, 위에서 언급한 바와 같이 유닛 상태의 공간에서 능동 복제를 수행함으로써).
도 2는 서브넷(SNA)과 서브넷(SNB) 사이의 계산 유닛의 마이그레이션의 전반적인 예를 예시한다. 보다 구체적으로, 서브넷(SNA)의 노드가 이미 4개의 계산 유닛을 실행해야 하는 반면, 서브넷(SNB)은 2개의 계산 유닛만 있기 때문에, 분산 네트워크는 예를 들어, 부하 밸런싱 또는 기타 이유로, 계산 유닛(CUA4)을 서브넷(SNA)으로부터 서브넷(SNB)으로 마이그레이트하는 것으로 결정할 수 있다.
도 1에 도시된 바와 같이, 분산 네트워크(100)는 중앙 제어 유닛(CCU)(20)을 포함한다. 중앙 제어 유닛(20)은 네트워크의 노드에 네트워크 제어 정보를 제공하는 중앙 레지스트리(21)를 포함할 수 있다. 중앙 제어 유닛(20)은 마이그레이트될 마이그런트 계산 유닛(CUA4)의 마이그레이션을 트리거할 수 있다. 이것은, 예를 들어, 중앙 레지스트리(21)에서 업데이트를 수행하고 마이그런트 계산 유닛(CUA4)을 마이그레이팅 상태로 설정함으로써 수행될 수 있다. 서브넷(SNA, SNB, SNC 및 SND)의 계산 유닛 관리자(명시적으로 도시되지는 않음)는 중앙 레지스트리(21)에서 이러한 레지스트리 변경을 관찰하고 계산 유닛(CUA4)의 마이그레이션을 트리거할 수 있다.
실시예에 따르면, 중앙 제어 유닛은 서브넷에 의해 확립될 수 있다.
이제 도 10을 참조하면, 본 발명의 실시예에 따른 계산 유닛의 이러한 마이그레이션의 타이밍도가 예시된다.
먼저, 중앙 제어 유닛(20)은 각각의 마이그런트 계산 유닛을 레지스트리(21)의 마이그레이션 상태로 설정할 수 있다.
블록 높이 N에 대응하는 시점(tN)에, 제 1 서브넷(SNA)은, 예를 들어, 제 1 서브넷(SNA)의 계산 유닛 관리자는 계산 유닛(CUA4)이 마이그레이트되어야 한다는 것을 표시/시그널링하는 중앙 레지스트리(21)의 변경을 관찰할 수 있다.
이 후, 계산 유닛 관리자는 마이그레이션 시간/마이그레이션 블록 높이를 스케줄링/트리거할 수 있으며, 이 예에서, 마이그레이션 블록 높이(N+K)는 마이그레이션 시간(tN+K)에 대응한다.
마이그레이션 시간은 제 1 서브넷(SNA)에 의해 처리될 마지막 블록의 블록 높이를 정의하며, 마이그런트 계산 유닛은 여전히 이 제 1 서브넷(SNA)의 일부이다.
다시 도 1을 참조하면, 네트워크(100)는 서브넷 할당에 기초한 메시징 프로토콜을 통해서 네트워크의 계산 유닛들 사이에서 유닛-대-유닛 메시지를 교환하도록 구성된다.
실시예에 따르면, 분산 네트워크는 특히 메시징 프로토콜을 통해 서브넷(SNA, SNB, SNC 및 SND)들 사이에서 인터-서브넷 메시지(16)를 교환하도록 구성될 수 있다. 인터-서브넷 메시지(16)는 특히, 서브넷 할당에 따라서 각각의 서브넷에 할당된 계산 유닛들 사이에서 교환되는 인터-서브넷 유닛-대-유닛 메시지(16a)로서 구현될 수 있다. 예로서, 분산 네트워크(100)는 서브넷(SNA)에서 실행되는 송신 계산 유닛으로서의 계산 유닛(CUA1)과 서브넷(SNB)에서 실행되는 수신 계산 유닛으로서의 계산 유닛(CUB2) 사이에서 유닛-대-유닛 메시지(M1, 16a)를 교환하도록 구성될 수 있다. 나아가, 인터-서브넷 메시지(16)는 시그널링 메시지(16b)로서 구현될 수 있다. 시그널링 메시지(16b)는, 예를 들어, 유닛-대-유닛 메시지의 수락 또는 수신을 확인응답하도록(acknowledge) 구성된 확인응답 메시지(ACK) 또는 유닛-대-유닛 메시지의 수락을 미확인해서(not-acknowledge)(거절에 대응하는) 전송 실패를 나타내도록 구성된 미확인 메시지(NACK)를 포함한다.
네트워크(100)는 특히 계산 유닛(10)의 서브넷-할당을 네트워크 구성 데이터로서, 예를 들어 도 12에 도시된 네트워킹 컴포넌트(1200)에, 특히 크로스넷 컴포넌트(1230)에 저장하도록 구성될 수 있다. 이 정보는 중앙 레지스트리에 저장될 수도 있다.
추가 실시예에 따르면, 네트워크(100)는 메시징 프로토콜 및 합의 프로토콜을 통해 서브넷간 메시지(16)를 교환하도록 구성될 수 있다. 합의 프로토콜은 각각의 수신 서브넷에서 인터-서브넷 메시지(16)의 선택 및/또는 처리 순서에 대한 합의에 도달하도록 구성될 수 있다.
예를 들어 서브넷(SNB)을 참조하면, 서브넷(SNA, SNC 및 SND)으로부터 인터-서브넷 메시지(16)를 수신한다. 합의 프로토콜은 이들 인터-서브넷 메시지(16)를 수신해서 처리하고, 수신한 인터-서브넷 메시지(16)의 선택 및/또는 처리 순서에 대한 합의에 도달하기 위해 미리 정의된 합의 알고리즘 또는 합의 메커니즘을 수행한다.
이제 도 3a 내지 도 3d를 참조해서, 계산 유닛을 제 1 서브넷으로부터 제 2 서브넷으로 마이그레이트하기 위한 컴퓨터 구현 방법을 설명한다.
보다 구체적으로, 도 3a 내지 도 3d는 제 1 서브넷(SNA)의 다수의 노드(N1, N2 및 N3) 및 제 2 서브넷(SNB)의 다수의 노드(N4, N5 및 N6)를 나타낸다. 제 1 서브넷(SNA)은 4개의 계산 유닛, 특히 계산 유닛(CUA1, CUA2, CUA3 및 CUA4)의 할당된 서브셋을 실행하도록 구성되고, 제 2 서브넷(SNB)는 2개의 계산 유닛, 특히 계산 유닛(CUB1 및 CUB2)의 할당된 서브셋을 실행하도록 구성된다. 노드에서 실행되는 할당된 계산 유닛의 각각의 세트는 각각의 노드에 서브셋의 복제본을 형성하고, 즉 노드(N1, N2 및 N3)에 복제본 SNA(310)을 형성하고, 노드(N4, N5 및 N6)에 복제본 SNB(320)을 형성한다. 이러한 복제본은 서브넷의 노드에서 할당된 계산 유닛의 서브셋에 대한 파티션으로서 간주될 수 있다. 환언하면, 복제본은, 노드에서 실행되고 동일한 서브넷에 할당되는 계산 유닛의 세트에 의해 구성된다.
도 3a의 예에서, 서브넷(SNA)은 블록 높이(N)에서 동작하는 것으로 가정한다. 서브넷(SNB)은 설명의 편의를 위해 도 3a 내지 도 3e에는 도시하지 않은 다른 블록 높이에서 동작할 수도 있다. 도 3a 내지 도 3d의 예에서, 기본(underlying) 분산 네트워크가 로드 밸런싱을 위해서 계산 유닛(CUA4)을 제 1 서브넷(SNA)으로부터 제 2 서브넷(SNB)으로 마이그레이트한다고 가정한다. 마이그레이션 프로세스를 시작하기 위해, 중앙 제어 유닛(20)은 예를 들어 계산 유닛(CUA4)을 마이그레이션 상태로 설정하는 레지스트리 업데이트에 의해서, 의도하는 마이그레이션을 제 1 서브넷(SNA) 및 제 2 서브넷(SNB)로 시그널링한다.
이후, 일단 관찰되면, 서브넷(SNA)의 계산 유닛 관리자는 마이그레이션 시간/마이그레이션 블록 높이를 스케줄링할 수 있다. 이 예에서, 마이그레이션 블록 높이는 블록 높이(N+K)이며, 여기서 N은 제 1 서브넷/소스 서브넷(SNA)가 레지스트리 변경을 관찰하는 높이이다. 수 K는 분산 네트워크의 각각의 구성에 의존하여 선택될 수 있고, 각각의 분산 네트워크의 필요에 맞게 구성될 수 있다. 예로서, K는 예를 들어 10, 100일 수도 있고 또는 심지어 1000 또는 이상의 블록 높이일 수 있다. K가 높을수록, 관련 서브넷이 계산 유닛(CUA4)의 전달을 준비하는 각각의 리드 타임(lead time)이 높아진다.
도 3b는 서브넷(SNA)의 중간 블록 높이(N+X)에서의 서브넷(SNA 및 SNB)의 노드를 보여주며, 여기서 X<K이고, 즉 마이그레이션 블록 높이(N+K)에 도달하지 않아서, 계산 유닛(CUA4)은 여전히 서브넷(SNA)에 의해 처리될 것이다.
그 동안, 제 2 서브넷(SNB)의 노드(N4, N5 및 N6)는 제 1 서브넷(SNA)에 조인했고, 계산 유닛(CUA1, CUA2, CUA3 및 CUA4)을 로컬 복제본(330)으로서 실행하기 시작했다. 환언하면, 노드(N4, N5 및 N6)는 서브넷(SNA)의 계산 유닛을 실행하는 데 사용되는 새로운 파티션을 생성했다.
제 2 서브넷(SNB)의 노드는 특히 서브넷(SNA)의 복제본(310)을 수동 복제로서 실행할 수 있다. 환언하면, 서브넷(SNA)에 완전히 참여하지 않고, 서브넷(SNA)의 제한된 동작 세트만 수행한다. 특히, 복제본(310)은, 계산 유닛(CUA1, CUA2, CUA3 CUA4)의 상태를 최신으로 유지하기 위해, 계산 유닛(CUA1, CUA2, CUA3 CUA4)의 유닛 상태/실행 상태를 주로 관찰하도록 구성될 수 있다. 이 수동의 조이닝은 특히 계산 유닛(CUA4)의 유닛 상태에 대한 내부 신뢰 도메인을 생성하는 데 사용될 수 있다. 환언하면, 노드(N4, N5 및 N6)는 서브넷(SNA)을 관찰하고 여기에 부분적으로 참여함으로써, 시그널링 높이(N)와 마이그레이션 높이(N+K) 사이의 리드 타임을 사용해서 계산 유닛(CUA4)의 상태를 신뢰 방식으로 자체 내부 도메인 및 신뢰 도메인으로 사전에 이미 전달했으므로, 나중에 마이그레이션 높이에서 이 상태에 도달하기 위해서는 유효한 블록의 실행만 따라가면 된다.
도 3c는 서브넷(SNA)의 블록 높이(N+K+1)에서의 서브넷(SNA 및 SNB)의 노드를 예시한다. 마이그런트 계산 유닛(CUA4)의 처리를 인수하기 위해서, 노드(N4, N5 및 N6)는 수동 복제본(330)에서 사용할 수 있는 마이그레이션 블록 높이(N+K)에서 계산 유닛(CUA4)의 최종 상태를 내부적으로 전달할 수 있다. 보다 구체적으로, 수동 복제본(330)은 정지될 수 있고, 블록 높이(N+K)에서의 계산 유닛(CUA4)의 최종 상태는 내부 저장 공간으로 전달될 수 있으며, 예를 들어 인바운드(inbound) 계산 유닛에 할당된 노드(N4, N5 및 N6)의 디렉토리(340)에 전달될 수 있다.
이후, 서브넷(SNB)의 복제본(320)은, 몇몇 내부의 신뢰되는 통신 메커니즘(350)을 통해서 내부 디렉토리(340)로부터 계산 유닛(CUA4)의 상태를 수신하거나 획득할 수 있다. 그 후, 복제본(320)은 계산 유닛(CUA4)을 활성화하는 것에 동의하고, 서브넷(SNB), 특히 서브넷(SNB)에 대한 노드(N4, N5 및 N6)의 대응하는 복제본(320)에서 계산 유닛(CUA4)을 실행하기 시작할 수 있다.
일부 트랜지션 시간 동안에, 제 1 서브넷(SNA)의 노드는 여전히 계산 유닛(CUA4)의 카피를 포함할 수 있다. 이 카피는 단지 수동 카피일 수 있으며, 즉 계산 유닛(CUA4)은 더 이상 노드(N1, N2 및 N3)의 복제본(SNA)에 의해 능동적으로 실행되지 않는다. 이는 도 3c에 계산 유닛(CUA4)의 점선으로 표시되어 있다.
도 3d는 블록 높이(N+K+2)에서의 서브넷(SNA 및 SNB)의 노드를 예시한다.
이제, 제 1 서브넷(SNA)의 노드는 계산 유닛(CUA4)을 완전히 삭제하고 계산 유닛(CUA1, CUA2 및 CUA3)으로 서브넷(SNA)의 복제본(SNA)(310)만 실행한다.
또한, 계산 유닛(CUA4)은 서브넷(SNB)에 완전히 통합되었으며, 노드(N4, N5 및 N6)의 복제본(SNB)(320)에 의해 실행된다. 마이그런트 계산 유닛은 도 3d에 도시되어 있으며, CU(B3/A4)는 이전 계산 유닛(CUA4)이 이제 서브넷(SNB)에서 제 3 계산 유닛으로서 실행된다는 것을 나타낸다.
이제 도 3e를 참조해서, 마이그런트 계산 유닛(CUA4)을 전달하는 또 다른 메커니즘을 설명한다. 도 3e에 도시된 예는 도 3a에 도시된 바와 같은 초기 설정으로부터 시작한다. 도 3e는 블록 높이(N+K+1)에서의 노드(N1-N6)를 나타낸다. 블록(N+K)은 노드(N1, N2 및 N3)에 의해 처리된 이후에, 마이그런트 계산 유닛(CUA4) 및 이에 대응하는 최종 상태는 노드(N1, N2 및 N3) 내에서 복제본(SNA)(310)으로부터 전용 저장 공간으로, 예를 들어 아웃바운드 계산 유닛에 할당된, 노드(N1, N2 및 N3)의 디렉토리(360)로 전달된다.
그 후, 서브넷(SNB)의 복제본(320)은, 서브넷(SNA 및 SNB) 사이에 인터-서브넷 통신 메커니즘을 확립하는 메시징 프로토콜(370)을 통해서 디렉토리(360)로부터 계산 유닛(CUA4)의 상태를 수신하거나 획득할 수 있다. 이러한 실시예에 따르면, 제 2 서브넷(SNB)의 노드(N4, N5 및 N6)는 제 1 서브넷에 조인하지 않았다. 마이그레이션 높이(N+K)에 도달한 이후에, 제 1 서브넷(SNA)은 마이그레이션을 위해 마이그런트 계산 유닛(CUA4)을 준비하고 이를 디렉토리(360)에 배치한다. 실시예에 따르면, 디렉토리(360)에 배치되는 마이그레이션 블록 높이(N+K)에서의 계산 유닛(CUA4)은 노드(N1, N2 및 N3)에 의해, 예를 들어, 조인트 서명에 의해 인증될 수 있다. 인증된 계산 유닛(CUA4)을 수신한 이후에, 복제본(320)은 활성화에 동의하고 서브넷(SNB)에서 계산 유닛(CUA4)을 실행하기 시작할 수 있다. 결과적으로, 노드(N4, N5 및 N6)는 이들의 서브넷(SNB)의 일부로서 계산 유닛(CUB3/A4)을 처리할 수 있다.
이제 도 4a 내지 도 4g를 참조해서, 본 발명의 다른 실시예에 따른 계산 유닛을 제 1 서브넷으로부터 제 2 서브넷으로 마이그레이트하는 컴퓨터 구현 방법을 설명한다.
도 4a는 제 1 서브넷(SNA)의 다수의 노드(N1, N2 및 N3)를 나타낸다. 제 1 서브넷(SNA)는 3개의 계산 유닛, 특히 계산 유닛(CUA1, CU A2 및 CUA3)의 할당된 서브셋을 실행하도록 구성된다.
도 4a 내지 도 4g에 예시된 실시예에 따르면, 분산 네트워크는 제 1 서브넷(SNA)의 계산 유닛(CUA4)을, 기존에 존재하지 않는 서브넷(SNB)으로, 즉 새롭게 생성되어야 하는 서브넷(SNB)으로 마이그레이트하도록 동작된다.
마이그레이션 프로세스를 시작하기 위해, 중앙 제어 유닛(20)은 예를 들어 계산 유닛(CUA3)을 마이그레이션 상태로 설정하는 레지스트리 업데이트에 의해서, 의도하는 마이그레이션을 제 1 서브넷(SNA)로 시그널링한다. 따라서, 계산 유닛(CUA3)은 다시 마이그런트 계산 유닛으로 표기될 수 있다. 더욱이, 예를 들어 중앙 제어 유닛(20) 또는 서브넷(SNA) 또는 다른 엔티티의 계산 유닛 관리자 또는 메커니즘은 마이그레이션 시간/마이그레이션 블록 높이를 스케줄링한다.
이후, 도 4b에 도시된 바와 같이, 제 1 서브넷(SNA)의 노드(N1, N2 및 N3)는 새로운 제 2 서브넷(SNB)을 생성하고, 새로운 제 2 서브넷(SNB)의 실행을 시작한다. 이는 노드(N1, N2 및 N3)에 제 2 서브넷(SNB)에 대한 새로운 파티션을 생성하는 것을 포함한다. 따라서, 노드(N1, N2 및 N3) 각각은 서브넷(SNB)에 대한 새로운 복제본(SNB)(420)을 생성했다. 이후, 노드(N1, N2 및 N3)는 제 1 서브넷(SNA)에서 마이그런트 계산 유닛의 실행을 중지할 수 있다.
다음 단계로서, 도 4c에 도시된 바와 같이, 노드(N1, N2 및 N3)는 마이그런트 계산 유닛(CUA3/B1)을 활성화하고, 제 1 서브넷(SNA)의 마이그런트 계산 유닛(CUA3/B1)을 실행하기 시작하며, 이는 제 1 계산 유닛으로서 새로운 서브넷(SNB)에 전달될 것이다. 따라서, 마이그런트 계산 유닛은 이하에서 CUA3/B1으로 표기된다.
노드(N1, N2 및 N3)가 서브넷(SNA 및 SNB) 모두를 실행함에 따라서, 계산 유닛(CUA3)의 상태는 동일한 노드 내의 계산 유닛(CUA3/B1)으로 내부적으로 전달될 수 있으며, 따라서 동일한 신뢰 도메인 내에서 복제본(SNA)(410)으로부터 복제본(SNB)(420)으로 전달될 수 있다.
두 복제본(SNA 및 SNB)이 동일한 노드에서 실행되므로, 복제본(SNB)은 실시예에 따라서 제 1 복제본(SNA)이 마이그레이션 블록 높이(N+K)에서 계산 유닛(CUA3)의 최종 상태에 동의할 때까지만 대기한다. 이후, 복제본(SNB)은 노드 내부 통신 메커니즘(430)을 통해서 동일 노드의 제 1 복제본(SNA)으로부터 계산 유닛(CUA3)의 이러한 상태를 수신할 수 있다. 예를 들어, 복제본(SNA)은 계산 유닛(CUA3)을 각각의 노드의 파일 시스템의 전용 디렉토리에 둘 수 있으며, 이 디렉토리는 복제본(SNB)에 의해 픽업될 수 있다. 일단 마이그런트 계산 유닛(CUA3/B1)이 내부 통신 또는 전달 메커니즘(430)을 통해 전달되면, 노드(N1, N2 및 N3)는 새롭게 생성된 제 2 서브넷(SNB)에 마이그런트 계산 유닛(CUA3/B1)을 인스톨하고, 활성화하고 실행하는 것으로 동의할 수 있다.
도 4d는, 계산 유닛(CUA3)이 비활성 모드에서 복제본(SNA)(410)에 의해 여전히 유지되는 동시에, 마이그런트 계산 유닛(CUA3/B1)이 새로운 복제본(SNB)(420)에서 이미 실행되고 있는, 트랜지션 기간을 예시한다.
도 4e는 노드(N1, N2 및 N3)를 도시하며, 여기서 마이그런트 계산 유닛(CUA3)은 복제본(SNA)으로부터 제거되는 반면, 마이그런트 계산 유닛(CUA3/B1)은 노드(N1, N2 및 N3)의 새로운 복제본(SNB)에서 실행된다.
도 4f는, 제 2 서브넷(SNB)에 추가되어서, 제 2 서브넷(SNB)의 각각의 복제본(SNB)에서 마이그런트 계산 유닛(CUA3/B1)을 실행하기 시작한, 추가 또는 새로운 노드(N4, N5 및 N6)를 포함하는, 새로운 노드의 세트를 도시한다. 새로운 또는 신규(fresh) 노드(N4, N5 및 N6)는 노드(N1, N2 및 N3)로부터 전달 메커니즘(450)을 통해서 마이그런트 계산 유닛(CUA3/B1)을 수신할 수 있다. 이러한 마이그런트 계산 유닛의 전달은 노드들 사이의 몇몇 메시징 프로토콜, 예를 들어 상태 동기화 프로토콜에 의해 수행될 수 있다. 이러한 계산 유닛(CUA3/B1)의 전달이 서로 다른 노드들 사이에서, 즉 2개의 서로 다른 신뢰 도메인들 사이에서 발생하므로, 계산 유닛(CUA3/B1)의 상태는 인증되는 방식으로, 예를 들어 노드(N1, N2 및 N3)의 조인트 서명과 함께 전달된다.
실시예에 따르면, 신규 노드를 추가하는 이러한 메커니즘은, 서브넷에 조인하고 서브넷의 전체 상태를 따라잡기 위한 프로토콜에 의존할 수 있다.
도 4g는 노드(N1, N2 및 N3)를 예시하며, 여기서 마이그런트 계산 유닛(CUA3)은 복제본(SNA)으로부터 제거되는 반면, 마이그런트 계산 유닛(CUA3/B1)은 이제 추가의 또는 신규한 노드(N4, N5 및 N6)의 새로운 복제본(SNB)에서만 실행된다.
도 4a 내지 도 4g를 참조하여 설명한 바와 같은 메커니즘은, 마이그런트 계산 유닛을 마이그레이트하기 위한 일종의 "스핀-오프" 방식을 사용한다. 우선, 마이그런트 계산 유닛을 먼저 실행하는 노드는, 별도의 파티션으로서 새로운 서브넷을 자체적으로 시작한다. 이후, 이들은 마이그런트 계산 유닛을 노드 내에서 내부적으로, 새롭게 생성한 서브넷을 확립하는 새롭게 생성한 파티션으로 전달한다. 이러한 전달은 동일한 신뢰 도메인 내에서 발생한다. 이후, 새로운 노드가 새롭게 생성한 제 2 서브넷에 추가되고, 이는 이후에 새롭게 생성한 제 2 서브넷의 동작을 인수할 수 있는 반면, 제 1 서브넷의 이전 노드는 제 2 서브넷을 떠날 수 있다. 이 방식은, 제 1 서브넷으로부터 제 2 서브넷으로의 마이그런트 계산 유닛의 초기 전달이, 대응하는 노드 내에서 내부적으로 발생하므로, 동일한 신뢰 도메인 내에서 발생된다는, 이점이 있다. 더욱이, 마이그런트 계산 유닛(CUA3/B1)만이 네트워크를 통해 상이한 노드들 사이에서 전달 메커니즘(450)을 통해 전달되어야 한다. 이로써 마이그런트 계산 유닛의 원활하고 효율적이며 신속한 전달을 가능하게 할 수 있다.
도 5는, 본 발명의 실시예에 따른 네트워크(100)의 각 노드(10)에서 실행될 수 있는 주요 프로세스를 예시한다. 본 발명의 실시예에 따른 네트워크의 네트워크 클라이언트는, 노드(10)가 네트워크에 참여하는데 필요한 프로토콜 컴포넌트의 세트이다. 실시예에 따르면, 각각의 노드(10)는 메인넷(mainnet)의 멤버이다. 또한 각각의 노드는 하나 이상의 서브넷의 멤버일 수 있다.
노드 관리자(50)는 메인넷 프로토콜 클라이언트(51), 서브넷 프로토콜 클라이언트(52) 및 보안 어플리케이션(53)을 시작, 재시작 및 업데이트하도록 구성된다. 다른 실시예에 따르면, 중앙 제어 유닛(20)은 메인넷 프로토콜 클라이언트 대신 사용될 수 있다(도 1 참조). 실시예에 따르면, 다수의 서브넷 프로토콜 클라이언트가 사용될 수 있으며, 이에 따라 다수의 복제본을 구현할 수 있다.
실시예에 따르면, 복수의 서브넷(11) 각각은, 자신의 대응하는 노드(10)에서 개개의 서브넷 프로토콜 클라이언트(52)를 실행하도록 구성된다. 메인넷 프로토콜 클라이언트(51)는 특히 복수의 서브넷(11)에 구성 데이터를 분배하고, 그리고 복수의 서브넷(11) 사이에서 구성 데이터를 분배하도록 구성된다. 메인넷 프로토콜 클라이언트(51)는 특히 시스템 계산 유닛만을 실행하고, 사용자 제공 계산 유닛은 실행하지 않도록 구성될 수 있다. 메인넷 프로토콜 클라이언트(51)는 메인넷의 로컬 클라이언트이고, 서브넷 프로토콜 클라이언트(52)는 서브넷의 로컬 클라이언트이다.
보안 어플리케이션(53)은 노드(10)의 비밀키를 저장하고, 이를 이용해서 대응 동작을 수행한다.
노드 관리자(50)는 예를 들어, 제어 유닛(20)의 레지스트리(21)를 모니터할 수 있고, 노드에게 서브넷에 참여하도록 지시할 수 있으며, 계산 유닛을 제 2 서브넷에 참여하는 노드의 파티션으로 이동시킬 수 있고, 및/또는 노드에게 서브넷에의 참여를 중지하도록 지시할 수 있다.
도 6은 서브넷 프로토콜 클라이언트, 예를 들어 도 5의 서브넷 프로토콜 클라이언트(52)의 프로토콜 컴포넌트들(600)의 개략 블록도를 도시한다.
도 6의 실선 화살표는 유닛-대-유닛 메시지 및 인그레스 메시지와 관련된다. 파선 화살표는 시스템 정보와 관련된다.
프로토콜 컴포넌트(600)는, 메시징 프로토콜을 실행하도록 구성된 메시징 컴포넌트(61) 및 실행 메시지, 특히 유닛-대-유닛 메시지 및/또는 인그레스 메시지를 실행하기 위한 실행 프로토콜을 실행하도록 구성된 실행 컴포넌트(62)를 포함한다. 프로토콜 컴포넌트(600)는 합의 프로토콜을 실행하도록 구성된 합의 컴포넌트(63), 네트워킹 프로토콜을 실행하도록 구성된 네트워킹 컴포넌트(64), 상태 관리자 프로토콜을 실행하도록 구성된 상태 관리자 컴포넌트(65), 크로스-서브넷 전달 프로토콜을 실행하도록 구성된 X-Net 컴포넌트(66) 및 네트워크의 외부 사용자로부터 수신한 인그레스 메시지를 핸들링하도록 구성된 인그레스 메시지 핸들러 컴포넌트(67)를 더 포함한다. 프로토콜 컴포넌트(600)는 추가적으로 암호화-컴포넌트(68)를 포함한다. 암호화-컴포넌트(68)는 보안 컴포넌트(611)와 함께 동작하며, 보안 컴포넌트(611)는 예를 들어 도 5를 참조하여 설명된 바와 같이 보안 애플리케이션(53)으로서 구현될 수 있다. 또한, 서브넷-프로토콜 클라이언트(52)는 판독기 컴포넌트(610)와 함께 동작할 수 있고, 판독기 컴포넌트(610)는 도 5를 참조하여 설명한 바와 같이 메인넷 프로토콜 클라이언트(51)의 일부일 수도 있다. 판독기 컴포넌트(610)는, 메인넷에 의해 저장되고 분배되는 정보를 각각의 서브넷 프로토콜 클라이언트(52)에 제공할 수 있다. 이는, 서브넷으로의 노드의 할당, 노드 공개 키, 서브넷으로의 계산 유닛의 할당 등을 포함한다.
메시징 컴포넌트(61) 및 실행 컴포넌트(62)는, 이들 컴포넌트 내의 모든 계산, 데이터 및 상태가 각각의 서브넷의 모든 노드에 복제되도록, 특히 각각의 서브넷의 모든 정직한(honest) 노드에 동일하게 복제되도록 구성된다. 이것은 이러한 컴포넌트의 물결 배경으로 도시되어 있다.
이러한 동일한 복제는, 실시예에 따라서, 한편으로는 메시징 컴포넌트(61)에 대한 입력의 스트림이 각각의 서브넷에 의해 동의되고 따라서 모든 노드, 특히 모든 정직한 노드에 대해 동일한 것을 보장하는, 합의 컴포넌트(63)에 의해 달성된다. 다른 한편으로는, 이것은, 메시징 컴포넌트(61) 및 실행 컴포넌트(62)가 결정론적인(deterministic) 복제된 계산을 수행하도록 구성됨으로써 달성된다.
X-Net 전달 컴포넌트(66)는 메시지 스트림을 다른 서브넷으로 송신하고, 다른 서브넷으로부터 메시지 스트림을 수신한다.
대부분의 컴포넌트는 암호화 컴포넌트(68)에 액세스해서 암호화 알고리즘을 실행하고, 메인넷 판독기(70)에 액세스해서 구성 정보를 판독한다.
실행 컴포넌트(62)는 메시징 컴포넌트(61)로부터 계산 유닛의 유닛 상태 및 계산 유닛에 대한 입수(incoming) 메시지를 수신하고, 발신(outgoing) 메시지 및 계산 유닛의 업데이트된 유닛 상태를 리턴한다. 실행을 수행하는 동안, 처리된 메시지(질의)의 가스(gas) 소비량도 측정할 수 있다.
메시징 컴포넌트(61)는 합의 컴포넌트(63)로부터 수신한 입력 블록에 의해 클로킹된다. 즉, 각 입력 블록마다, 메시징 컴포넌트(61)는 다음과 같은 단계를 수행한다. 각각의 입력 블록을 파싱하여 계산 유닛에 대한 메시지를 획득한다. 또한 메시지를 각각의 계산 유닛의 각각의 입력 큐로 라우팅하고, 각각의 계산 유닛에 할당된 용량에 따라 실행될 메시지를 스케줄링한다. 이후, 실행 컴포넌트(62)를 사용하여 대응하는 계산 유닛에 의해 메시지를 처리하고, 그 결과 송신될 메시지가 각각의 계산 유닛의 출력 큐에 추가된다. 그러나, 메시지가 동일한 서브넷의 계산 유닛으로 향하는 경우 대응하는 계산 유닛의 입력 큐에 직접 넣을 수도 있다. 메시징 컴포넌트(61)는 최종적으로, 계산 유닛의 출력 큐의 메시지를, 수신 계산 유닛이 위치된 서브넷에 대한 메시지 스트림으로 라우팅하고, 이들 메시지 스트림을 인증될, 즉 각각의 서브넷에 의해 서명될 상태 관리자 컴포넌트(65)에 전달한다.
상태 관리자 컴포넌트(65)는 인증 컴포넌트(65a)를 포함한다. 인증 컴포넌트(65a)는 각각의 서브넷의 출력 스트림을 인증하도록 구성된다. 이것은 예를 들어, 이것은 예를 들어 각각의 서브넷의 계산 유닛의 임계값-서명(threshold-signature), 다중-서명(multi-signature) 또는 개개의 서명의 집합에 의해 수행될 수 있다.
도 7은 메시징 프로토콜, 합의 프로토콜 및 관련 컴포넌트, 예를 들어, 도 6의 메시징 컴포넌트(61) 및 합의 컴포넌트(63)의 워크플로우(700)의 예시적인 시각화를 도시한다. 보다 구체적으로, 도 7은 서브넷(SNB)과 서브넷(SNA 및 SNC) 사이에서 교환되는 인터-서브넷 메시지의 워크플로우를 시각화한 것이다. 또한, 서브넷(SNB)은 복수의 사용자(U)와 인그레스 메시지를 교환한다.
도 7의 우측 하단부터 시작하면, 복수의 입력 스트림(701, 702 및 703)이 합의 컴포넌트(63)에 의해 수신된다. 합의 컴포넌트(63)는 서브넷(SNB)의 서브넷 클라이언트에 의해 실행되는 서브넷 합의 컴포넌트이다. 입력 스트림(701)은 서브넷(SNA)으로부터 서브넷(SNB)으로의 인터-서브넷 메시지(711)를 포함한다. 입력 스트림(702)은 서브넷(SNC)으로부터 서브넷(SNB)으로의 인터-서브넷 메시지(712)를 포함한다. 입력 스트림(703)은 복수의 사용자(U)로부터 서브넷(SNB)으로의 인그레스 메시지(713)를 포함한다.
인터-서브넷 메시지(711 및 712)는, 상이한 서브넷의 계산 유닛들 사이에서 교환될 인터-서브넷 유닛-대-유닛 메시지 및 시그널링 메시지를 포함한다. 시그널링 메시지는 유닛-대-유닛 메시지의 수신을 확인응답(acknowledge)하거나 미확인(not acknowledge)하는 데 사용된다. 메시징 컴포넌트(61)는 시그널링 메시지를 수신 서브넷으로부터 대응하는 송신 서브넷으로, 즉, 이 예에서는 서브넷(SNB)에서 서브넷(SNA 및 SNC)으로 송신하도록 구성된다. 메시징 컴포넌트(61)는 이 예에 따라 각각의 인터-서브넷 유닛-대-유닛 메시지에 대한 확인 메시지가 수신될 때까지 전송된 유닛 대 유닛 메시지를 저장하도록 구성된다. 이것은 전달을 보장한다.
합의 컴포넌트(63)는 서브넷(SNA, SNC)의 인터-서브넷 메시지(711, 712) 및 사용자(U)의 인그레스 메시지(713)를 수신 및 처리하고 대응하는 합의 프로토콜에 의해 실행되는 사전정의된 합의 메커니즘에 따라 인터-서브넷 메시지(711, 712) 및 인그레스 메시지(713)로부터 입력 블록(720)의 큐를, 생성하도록 구성된다. 합의에 의해 생성된 각각의 입력 블록(720)은 인그레스 메시지(713)의 세트, 인터-서브넷 메시지(711, 712)의 세트 및 실행 파라미터(714)(EP)를 포함한다. 실행 파라미터(714)(EP)는 특히 랜덤 시드, 지정된 실행 시간 및/또는 높이 인덱스를 포함할 수 있다. 합의 컴포넌트(63)는 또한 서브넷의 현재 부하에 기초하여 모든 입력 블록의 메시지 수를 변경할 수 있다.
합의 컴포넌트(63)는 그 다음에 입력 블록(720)의 큐를 메시징 프로토콜을 실행하고 입력 블록(720)을 처리하도록 구성된 메시징 컴포넌트(61)에 제공한다.
메시징 프로토콜 및 메시징 컴포넌트(61)는 합의 컴포넌트(63)로부터 수신된 입력 블록(720)에 의해 클로킹된다.
수신한 입력 블록을 처리하기 전에, 메시징 컴포넌트(61)는 하나 이상의 입력 체크를 포함하는 하나 이상의 전처리 단계를 수행할 수 있다. 입력 체크는 입력 체크 컴포넌트(740)에 의해 수행될 수 있다.
입력 체크가 성공적으로 통과된 경우, 각각의 입력 블록(720)의 메시지는 메시징 컴포넌트(61)에 의해 추가로 처리될 수 있고 대응하는 메시지는 유도 풀 컴포넌트(731)의 유도 풀에 있는 대응하는 큐에 부가될 수 있다. 메시징 컴포넌트(61)의 유도 풀 컴포넌트(731)는 입력 체크 컴포넌트(740)를 성공적으로 통과했고 그에 따라 추가 처리를 위해 메시징 컴포넌트(61)에 의해 수락된 입력 블록 및 입력 메시지를 수신한다.
일반적으로, 메시징 컴포넌트(61)는 인그레스 메시지, 시그널링 메시지 및 인터-서브넷 메시지를 적절하게 유도 풀 컴포넌트(731)에 배치함으로써 입력 블록(720)을 전처리한다. 서브넷 스트림의 시그널링 메시지는 제거될 수 있는 출력 큐의 메시지의 확인응답으로서 처리된다.
이 예에서, 유도 풀 컴포넌트(731)는 서브넷-대-유닛 큐(SNA-B1, SNC-B1, SNA-B2 및 SNC-B2) 및 사용자-대-유닛 큐(U-B1 및 U-B2)를 포함한다.
이들 전처리 단계에 이어, 메시징 컴포넌트(61)는 단일 실행 사이클 동안 가능한 한 많은 유도 풀을 실행하기 위해 실행 컴포넌트(62)(도 6 참조)를 호출하여 지정된 실행 시간과 랜덤 시드를 추가 입력으로서 제공한다. 실행 사이클에 이어, 출력 메시지라고도 할 수 있는, 결과적인 메시지의 출력 큐가 출력 큐 컴포넌트(733)에 공급된다. 초기에 출력 큐 컴포넌트(733)는 유닛-대-유닛 및 유닛-대-사용자 출력 큐, 이 예에서 유닛-대-유닛 출력 큐(B1-A1, B1-C2, B2-A2 및 B2-C3) 및 유닛-대-사용자 출력 큐(B1-U1 및 B2-U4)를 포함한다. 예로서, 메시지(B1-A1)는 서브넷(SNB)의 계산 유닛(B1)으로부터 서브넷(SNA)의 계산 유닛(A1)으로의 메시지를 나타낸다. 다른 예로서, 메시지(B1-U1)는 서브넷(SNB)의 계산 유닛(B1)에서 사용자(U1)로의 메시지를 나타낸다.
출력 큐 컴포넌트(733)는 예컨대, 도 6에 도시된 바와 같이 인증 컴포넌트(65a)에 의해 인증되고 다른 컴포넌트에 의해 전파될 서브넷별 출력 스트림의 세트를 형성함으로써 출력 메시지의 결과 출력 큐를 후처리한다. 이 예에서, 서브넷별 출력 스트림(SNB-SNA, SNB-SNC 및 SNB-U)이 제공된다.
따라서, 메시징 컴포넌트(61)는 각각의 서브넷의 계산 유닛의 상태/유닛 상태를, 이 예에서 서브넷(SNB)의 계산 유닛(B1 및 B2)의 상태를 저장하도록 구성된 상태 저장 컴포넌트(732)를 더 포함한다. 해당 유닛 상태는 각각의 계산 유닛의 작업 메모리이다.
메시징 컴포넌트(61)는 소정의 시스템 상태를 결정론적으로 변경하는 것을 다룬다. 각 라운드에서, 실행 컴포넌트(62)는 각각의 계산 유닛의 상태를 판독하고 업데이트함으로써, 유도 풀로부터 소정 메시지를 실행하고 실행된 계산 유닛이 전송하고자 하는 임의의 발신 메시지를 리턴할 것이다. 이들 발신 메시지 즉 환언하면 출력 메시지는, 네트워크의 계산 유닛들 사이의 유닛-대-유닛 메시지를 초기에 포함하는, 출력 큐 컴포넌트(733)로 이동한다. 동일한 서브넷의 계산 유닛들 사이의 인터-서브넷 메시지는 각각의 서브넷 내에서 내부적으로 라우팅 및 배포될 수 있는 반면, 인터-서브넷 메시지는 서브넷 목적지에 의해 분류된 출력 스트림으로 라우팅된다.
나아가, 실시예에 따라, 어떤 메시지가 처리되었는지를 시스템의 나머지 부분에 알리기 위해 두 가지 상태가 유지될 수 있다. 제 1 상태는 인터-서브넷 메시지에 대해 유지되고 제 2 상태는 인그레스 메시지에 대해 유지될 수 있다.
이하, 메인넷 프로토콜 클라이언트(51)와 서브넷 프로토콜 클라이언트(52) 사이의 상호작용을 더 자세하게 설명한다(도 5 참조). 메인넷 프로토콜 클라이언트(51)는 서브넷에 대한 구성 정보를 포함하는 다수의 레지스트리를 관리한다. 이들 레지스트리는 메인넷 상의 계산 유닛에 의해 구현된다. 언급된 바와 같이, 다른 실시예에 따라서, 메인넷 대신에 중앙 레지스트리가 사용될 수 있다.
도 8은 인터-서브넷 메시지의 교환 및 인트라-서브넷 메시지의 교환에 수반되는 주요 계층을 예시하는 계층 모델(800)을 도시한다. 계층 모델(800)은 인터-서브넷 통신을 위한 상위 계층으로서 기능하도록 구성된 메시징 계층(51)을 포함한다. 보다 구체적으로, 메시징 계층(51)은 서로 다른 서브넷의 계산 유닛들 사이에서 인터-서브넷 메시지를 라우팅하도록 구성된다. 또한, 메시징 계층(51)은 네트워크의 사용자로부터 네트워크의 계산 유닛으로 인그레스 메시지를 라우팅하도록 구성된다.
계층 모델(800)은, 상이한 서브넷으로부터의 인터-서브넷 메시지는 물론 인그레스 메시지를 수신하고, 특히 처리 순서에 동의함으로써 이후에 각각의 서브넷에 의해 추가 처리되는 일련의 입력 블록에 이들을 구조화하도록(organize) 구성된 복수의 합의 계층(52)을 더 포함한다. 나아가, 계층 모델(800)은 단일 서브넷의 노드들 사이의 통신을 구조화하고 구동하도록 구성된 P2P(peer-to-peer) 계층(53)을 포함한다.
실시예에 따르면, 네트워크는 복수의 추가 계층, 특히 네트워크의 계산 유닛에서 실행 메시지를 실행하도록 구성된 실행 계층을 포함할 수 있다.
도 9를 참조하면, 본 발명의 실시예에 따른 분산 네트워크에서의 블록 생성이 예시되어 있다. 블록들은 특히 도 7에 도시된 입력 블록(720)일 수 있는데 이는 합의 프로토콜, 특히 로컬 서브넷 합의 프로토콜을 실행하는 합의 컴포넌트(63)에 의해 생성된다.
이 예시적인 실시예에서 3개의 입력 블록(901, 902 및 903)이 도시된다. 블록(901)은 복수의 트랜잭션, 즉 트랜잭션(tx1.1, tx1.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 블록(902)은 또한 복수의 트랜잭션, 즉 트랜잭션(tx2.1, tx2.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 블록(903)은 또한 복수의 트랜잭션, 즉 트랜잭션(tx3.1, tx3.2) 및 가능하게는 점으로 표시된 추가 트랜잭션을 포함한다. 입력 블록(901, 902 및 903)은 함께 연쇄되어 있다. 보다 구체적으로, 블록 각각은 이전 블록의 블록 해시를 포함한다. 이것은 현재 블록을 이전 블록(들)에 암호화 방식으로 연결한다.
실시예에 따르면 트랜잭션은 인터-서브넷 메시지, 인그레스 메시지 및 시그널링 메시지일 수 있다.
실시예에 따르면, 입력 블록(1801, 1802 및 1803)은 지분 증명 합의 프로토콜에 의해 생성될 수 있다.
그러나, 합의 컴포넌트에 의해 생성된 입력 블록은 실시예에 따라 함께 연쇄될 필요가 없다는 점에 유의해야 한다. 오히려, 수신된 메시지의 처리 순서에 대해 서브넷의 노드 간에 일종의 합의에 도달하는 임의의 합의 프로토콜이 실시예에 따라 사용될 수 있다.
도 11은 본 발명의 일 실시예에 따른 계산 유닛(1100)의 보다 상세한 예시를 도시한다.
계산 유닛(1100)은 입력 큐(1101), 출력 큐(1102), 애플리케이션 상태(1103) 및 시스템 상태(1104)를 포함한다.
계산 유닛(1100)은 일반적으로 계산 유닛의 코드 및 계산 유닛의 유닛 상태/실행 상태를 포함한다.
도 12은 네트워킹 프로토콜을 실행하도록 구성된 네트워킹 컴포넌트(1200)의 보다 상세한 도면을 도시한다. 네트워킹 컴포넌트(1200)는 예를 들어, 도 6에 도시된 네트워킹 컴포넌트(64)의 보다 상세한 실시예일 수 있다. 네트워킹 컴포넌트(1200)는 노드-대-노드 통신을 수행하도록 구성된 유니캐스트 컴포넌트(1210), 인트라-서브넷 통신을 수행하도록 구성된 브로드캐스트 컴포넌트(1220) 및 인터-서브넷 통신을 수행하도록 구성된 크로스넷 컴포넌트(1230)를 포함한다. 크로스넷 컴포넌트(1230)는 계산 유닛의 서브넷-할당을 네트워크 구성 데이터로서 저장하거나 중앙 레지스트리로부터 판독할 수 있다.
도 13은 상태 관리자 컴포넌트(1300)의 보다 상세한 실시예, 예를 들어 도 6의 상태 관리자 컴포넌트(65)의 실시예를 도시한다.
상태 관리자 컴포넌트(1300)는 저장 컴포넌트(1310), 인증 컴포넌트(1320) 및 동기화 컴포넌트(1330)를 포함한다. 저장 컴포넌트(1310)는 유닛 상태, 유닛 상태의 인증된 변수, 인바운드 마이그런트 계산 유닛 및 아웃바운드 마이그런트 계산 유닛을 각각 저장하기 위한 디렉토리(1311, 1312, 1313 및 1314)를 포함한다. 상태 관리자 컴포넌트(1330)는 또한 출력 스트림을 유지하고 인증할 수 있다.
실시예에 따르면, 인증 컴포넌트(1320)는 저장 컴포넌트(1310)의 일부분을 인증하기 위해 임계값-서명 또는 다중-서명 알고리즘을 실행하도록 구성된다. 특히, 인증 컴포넌트(1320)는 다른 서브넷으로 마이그레이트될 마이그런트 계산 유닛을 인증할 수 있고, 아웃바운드 마이그런트 계산 유닛에 대한 디렉토리(1314)에 배치될 수 있다.
도 14는 본 발명의 실시예에 따른 복수의 서브넷을 포함하는 분산 네트워크를 실행하기 위한 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도(1400)를 도시한다. 분산 네트워크는 예를 들어 도 1에 도시된 바와 같이 네트워크(100)로 구현될 수 있다.
단계 1410에서, 복수의 서브넷의 각각의 서브넷은 자신의 노드에서 한 세트의 계산 유닛을 실행하며, 여기서 계산 유닛 각각은 자신의 유닛 상태를 포함한다.
단계 1420에서, 네트워크는 각각의 서브넷에 계산 유닛의 세트를 복제한다.
도 15는 본 발명의 실시예에 따른 분산 네트워크의 제 1 서브넷으로부터 제 2 서브넷으로 계산 유닛을 마이그레이트하는 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도(1500)를 도시한다. 분산 네트워크는 예를 들어 도 1에 도시된 바와 같이 네트워크(100)로 구현될 수 있다.
단계 1510에서, 중앙 제어 유닛(20)은 제 1 서브넷(SNA) 및 제 2 서브넷(SNB)에, 마이그레이트되어야 할 마이그런트 계산 유닛으로서 제 1 서브넷의 계산 유닛을 시그널링한다.
단계 1520에서, 제 1 서브넷(SNA)은 마이그레이션을 위해 마이그런트 계산 유닛을 준비한다.
이 단계 1520는 예를 들어, 계산 유닛 관리자에 의해 마이그레이션 시간/마이그레이션 블록 높이를 스케줄링하는 것을 포함할 수 있다. 단계 1520는, 제 1 서브넷(SNA)이 마이그레이션 시간/마이그레이션 블록 높이 이후에는 마이그런트 계산 유닛에 대한 메시지를 수락하는 것을 중지하는 것 및 제 1 서브넷(SNA)이 마이그레이션 시간/마이그레이션 블록 높이 이후에 마이그런트 계산 유닛을 실행하는 것을 중지하고 및/또는 마이그런트 계산 유닛의 유닛 상태를 수정하는 것을 더 포함할 수 있다.
단계 1530에서, 마이그레이션 블록 높이의 마이그런트 계산 유닛이 제 1 서브넷으로부터 제 2 서브넷으로 전달된다. 이는 예를 들어 도 3a 내지 도 3e를 참조해서 설명된 바와 같은, 다양한 전달 메커니즘에 의해 수행될 수 있다.
단계 1540에서, 제 2 서브넷(SNB)의 노드는 마이그런트 계산 유닛을 인스톨한다.
단계 1550에서, 제 2 서브넷(SNB)의 노드는 마이그런트 계산 유닛의 활성화에 동의한다. 이는 특히 합의 프로토콜을 수행함으로써 수행될 수 있다.
마지막으로, 단계 1560에서, 제 2 서브넷의 노드는 전달되는 마이그런트 계산 유닛을 제 2 서브넷(SNB)에서 활성화하고 실행한다.
도 16은 본 발명의 일 실시예에 따른 분산 네트워크의 제 1 서브넷으로부터 제 2 서브넷으로 계산 유닛을 마이그레이트하는 컴퓨터 구현 방법의 방법 단계를 포함하는 흐름도(1600)를 도시한다. 분산 네트워크는 예를 들어 도 1에 도시된 바와 같이 네트워크(100)로 구현될 수 있다.
단계 1610에서, 중앙 제어 유닛(20)은, 아직 존재하지 않으므로 새롭게 생성해야 하는 제 2 서브넷으로 마이그레이트되여야 하는 마이그런트 계산 유닛으로서 제 1 서브넷의 계산 유닛을 제 1 서브넷(SNA)에 시그널링한다.
단계 1620에서, 제 1 서브넷의 노드는, 자신의 노드에 새로운 복제본에 대한 파티션을 생성함으로써, 새로운 제 2 서브넷을 생성하고 시작한다.
단계 1630에서, 마이그런트 계산 유닛은 내부적으로, 즉 제 1 서브넷(SNA)의 각각의 노드 내에서 제 1 서브넷으로부터 제 2 서브넷으로 전달된다. 전달 이전에, 마이그런트 계산 유닛은 마이그레이팅 상태로 전환될 수 있다.
단계 1640에서, 제 2 서브넷을 또한 실행하는 제 1 서브넷의 노드는, 제 2 서브넷에 마이그런트 계산 유닛을 인스톨한다.
이후, 노드는 활성화에 동의하는 단계를 수행할 수 있다.
단계 1650에서, 제 1 및 제 2 서브넷의 노드는 제 2 서브넷에서 마이그런트 계산 유닛을 활성화하고 실행하기 시작한다.
단계 1660에서, 제 1 서브넷의 일부가 아닌 제 2 서브넷에 추가 노드가 추가될 수 있다.
단계 1670에서, 제 1 서브넷의 노드는 제 2 서브넷으로부터 제거될 수 있다. 이로써 마이그레이션이 완료되었다.
이제 도 17을 참조하면, 본 발명의 실시예에 따라 예컨대, 도 1의 네트워크(100)의 네트워크 노드(10)의 보다 상세한 블록도가 도시된다. 네트워크 노드(10)는 컴퓨팅 기능을 수행할 수 있고 따라서 일반적으로 컴퓨팅 시스템 또는 컴퓨터로서 구현될 수 있는 컴퓨팅 노드를 확립한다. 네트워크 노드(10)는 예를 들어, 서버 컴퓨터일 수 있다. 네트워크 노드(10)는 다수의 다른 범용 또는 특수 목적 컴퓨팅 시스템 환경이나 또는 구성으로 동작할 수도 있다.
네트워크 노드(10)는, 컴퓨터 시스템에 의해 실행되는 프로그램 모듈과 같은, 컴퓨터 시스템-실행가능 명령어의 일반적인 맥락으로 서술될 수 있다. 일반적으로, 프로그램 모듈은 특정 작업을 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 로직, 데이터 구조 등을 포함할 수 있다. 네트워크 노드(10)는 범용 컴퓨팅 디바이스의 형태로 도시된다. 네트워크 노드(10)의 컴포넌트는 하나 이상의 프로세서 또는 프로세싱 유닛(1715), 시스템 메모리(1720), 및 시스템 메모리(1720)를 비롯한 다양한 시스템 컴포넌트를 프로세서(1715)에 연결하는 버스(1716)를 포함할 수 있지만, 이들로 제한되는 것은 아니다.
버스(1716)는 여러 유형의 버스 구조 중 임의의 하나 이상을 나타낸다.
네트워크 노드(10)는 통상적으로 다양한 컴퓨터 시스템 판독가능 매체를 포함한다.
시스템 메모리(1720)는, 랜덤 액세스 메모리(random access memory)(RAM)(1721) 및/또는 캐시 메모리(1722)와 같은 휘발성 메모리의 형태의 컴퓨터 시스템 판독가능 매체를 포함할 수 있다. 네트워크 노드(10)는 다른 착탈식/비착탈식의 휘발성/비휘발성 컴퓨터 시스템 저장 매체를 더 포함할 수 있다. 단지 예로서, 비착탈식의 비휘발성 자기 매체(도시되지 않았으며 전형적으로 "하드 드라이브"라고 호칭함)를 판독하고 이에 기록하기 위한 저장 시스템(1723)이 제공될 수 있다. 아래에서 추가로 도시되고 설명되는 바와 같이, 메모리(1720)는 본 발명의 실시예의 기능을 수행하도록 구성된 한 세트(예를 들어, 적어도 하나의) 프로그램 모듈을 갖는 적어도 하나의 컴퓨터 프로그램 제품을 포함할 수 있다.
제한이 아닌 예로서 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈 및 프로그램 데이터뿐만 아니라, 한 세트(적어도 하나)의 프로그램 모듈(1731)을 갖는 프로그램/유틸리티(1730)가 메모리(1720)에 저장될 수 있다. 각각의 운영 체제, 하나 이상의 애플리케이션 프로그램, 다른 프로그램 모듈, 및 프로그램 데이터 또는 이들의 일부 조합은 네트워킹 환경의 구현을 포함할 수 있다. 프로그램 모듈(1731)은 일반적으로 본 명세서에 설명된 바와 같은 본 발명의 실시예의 기능 및/또는 방법론을 수행한다. 프로그램 모듈(1731)은 분산 네트워크를 동작시키는 컴퓨터-구현 방법의 하나 이상의 단계를 수행할 수 있으며, 특히 예를 들어 위에서 설명한 바와 같은 방법의 하나 이상의 단계를 수행할 수 있다.
네트워크 노드(10)는 또한 키보드 또는 포인팅 디바이스와 같은 하나 이상의 외부 디바이스(1717) 및 디스플레이(1718)와 통신할 수 있다. 이러한 통신은 입출력(input/output)(I/O) 인터페이스(1719)를 통해 발생할 수 있다. 또한, 네트워크 노드(10)는 네트워크 어댑터(1741)를 통해 근거리 네트워크(local area network)(LAN), 일반 광역 네트워크(wide area network)(WAN) 및/또는 공중 네트워크(예를 들어, 인터넷)와 같은 하나 이상의 네트워크(1740)와 통신할 수 있다. 실시예에 따르면, 네트워크(1740)는 특히 복수의 네트워크 노드(10)를 포함하는 분산 네트워크, 예를 들어 도 1에 도시된 바와 같은 네트워크(100)일 수 있다.
본 발명의 양태는 시스템으로서, 특히 복수의 서브넷, 방법 및/또는 컴퓨터 프로그램 제품을 포함하는 분산 네트워크로서 구현될 수 있다. 컴퓨터 프로그램 제품은, 프로세서로 하여금 본 발명의 양태를 수행하게 하는 컴퓨터 판독가능 프로그램 명령어를 갖는 컴퓨터 판독가능 저장 매체(또는 매체들)를 포함할 수 있다.
컴퓨터 판독 가능 저장 매체는 명령어 실행 디바이스에 의해 사용하기 위한 명령어를 보유하고 저장할 수 있는 유형의 디바이스일 수 있다. 컴퓨터 판독 가능 저장 매체는, 예를 들어, 이것으로 제한되는 것은 아니지만, 전자 저장 디바이스, 자기 저장 디바이스, 광학 저장 디바이스, 전자기 저장 디바이스, 반도체 저장 디바이스 또는 전술한 것의 임의의 적합한 조합일 수 있다. 본 명세서에서 사용된 바와 같은 컴퓨터 판독 가능 저장 매체는 전파 또는 다른 자유롭게 전파하는 전자기파, 도파관 또는 다른 전송 매체를 통해 전파하는 전자기파(예를 들어, 광섬유 케이블을 통과하는 광 펄스) 또는 전선을 통해 전송되는 전기 신호와 같은, 일시적 신호 그 자체인 것으로 해석되지 않아야 한다.
본 명세서에서 설명된 컴퓨터 판독 가능 프로그램 명령어는 컴퓨터 판독 가능 저장 매체로부터 각자의 컴퓨팅/프로세싱 디바이스로, 또는 네트워크, 예를 들어, 인터넷, 근거리 네트워크, 광역 네트워크 및/또는 무선 네트워크를 통해 외부 컴퓨터 또는 외부 저장 디바이스로 다운로드될 수 있다. 네트워크는 구리 전송 케이블, 광학 전송 섬유, 무선 전송, 라우터, 방화벽, 스위치, 게이트웨이 컴퓨터 및/또는 에지 서버를 포함할 수 있다.
본 발명의 동작을 수행하기 위한 컴퓨터 판독 가능 프로그램 명령어는 어셈블러 명령어, 명령어 집합 아키텍처(instruction-set-architecture)(ISA) 명령어, 머신 명령어, 머신 종속 명령어, 마이크로코드, 펌웨어 명령어, 상태 설정 데이터, 또는 Smalltalk, C++ 등과 같은 객체 지향 프로그래밍 언어 및 "C" 프로그래밍 언어 또는 유사한 프로그래밍 언어와 같은 통상의 절차적 프로그래밍 언어를 비롯한 하나 이상의 프로그래밍 언어의 임의의 조합으로 작성된 소스 코드 또는 객체 코드일 수 있다.
본 발명의 양태는 본 발명의 실시예에 따른 방법, 네트워크, 장치(시스템) 및 컴퓨터 프로그램 제품의 흐름도 예시 및/또는 블록도를 참조하여 본 명세서에서 설명된다.
본 발명의 실시예에 따른 컴퓨터 판독 가능 프로그램 명령어는 범용 컴퓨터, 특수 목적 컴퓨터, 또는 다른 프로그래머블 데이터 프로세싱 장치의 프로세서에 제공되어 머신을 생성하여, 컴퓨터 또는 다른 프로그래머블 데이터 프로세싱 장치의 프로세서를 통해 실행되는 명령어가 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용을 구현하기 위한 수단을 생성하도록 할 수 있다. 이러한 컴퓨터 판독 가능 프로그램 명령어는 또한 컴퓨터, 프로그래머블 데이터 프로세싱 장치 및/또는 다른 디바이스에게 특정 방식으로 기능하도록 지시할 수 있는 컴퓨터 판독 가능 매체에 저장되어, 명령어가 저장된 컴퓨터 판독 가능 저장 매체는 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용의 양태를 구현하는 명령어를 포함하는 제조 물품을 포함하도록 할 수 있다.
컴퓨터 판독 가능 프로그램 명령어는 또한 컴퓨터, 다른 프로그래머블 데이터 프로세싱 장치 또는 다른 디바이스에 로딩되어 일련의 동작 단계가 컴퓨터, 다른 프로그래머블 장치 또는 다른 디바이스에서 수행되게 하여, 컴퓨터, 다른 프로그래머블 장치 또는 다른 디바이스에서 실행되는 명령어가 흐름도 및/또는 블록도의 블록 또는 블록들에서 명시된 기능/작용을 구현하도록 할 수 있다.
도면에서 흐름도 및 블록도는 본 발명의 다양한 실시예에 따른 네트워크, 시스템, 방법 및 컴퓨터 프로그램 제품의 가능한 구현의 아키텍처, 기능성 및 동작을 예시한다. 이와 관련하여, 흐름도 또는 블록도에서 각각의 블록은 명시된 논리적 기능(들)을 구현하기 위한 하나 이상의 실행 가능한 명령어를 포함하는 명령어의 모듈, 세그먼트 또는 부분을 나타낼 수 있다. 일부 대안의 구현예에서, 블록에서 언급된 기능은 도면에서 언급된 순서를 벗어나 발생할 수 있다. 예를 들어, 연속적으로 도시된 2개의 블록은 사실상 실질적으로 동시에 실행될 수도 있고, 또는 블록은 관련 기능성에 따라 때로는 역순으로 실행될 수도 있다.
본 발명의 바람직한 실시예가 지금 도시되고 설명되었지만, 본 발명은 이것으로 제한되지 않고, 그와 달리 다음의 청구 범위의 범주 내에서 다양하게 구현되고 실시될 수 있다는 것을 명백히 이해해야 한다.

Claims (28)

  1. 분산 네트워크를 동작시키는 컴퓨터 구현 방법으로서 - 상기 분산 네트워크는 복수의 서브넷을 포함하고, 상기 복수의 서브넷 각각은 하나 이상의 할당된 노드를 포함함 - ,
    계산 유닛의 세트를 실행하는 단계와,
    상기 계산 유닛 각각을 서브넷-할당에 따라서 상기 복수의 서브넷 중 하나에 할당해서, 상기 서브넷 각각에 대해서 상기 계산 유닛의 세트의 할당된 서브셋을 생성하는 단계와,
    상기 계산 유닛의 할당된 서브셋을 상기 복수의 서브넷의 각각의 노드에서 실행하는 단계와,
    상기 각각의 서브넷에 걸쳐서 상기 계산 유닛의 할당된 서브셋을 복제하는 단계와,
    상기 복수의 서브넷 중 제 1 서브넷으로부터 상기 복수의 서브넷 중 제 2 서브넷으로 계산 유닛을 마이그레이트하는 단계(migrating)
    를 포함하되,
    상기 마이그레이트하는 단계는,
    상기 제 1 서브넷의 계산 유닛을 마이그레이트될 마이그런트(migrant) 계산 유닛으로서, 상기 제 1 서브넷 및 상기 제 2 서브넷에 시그널링하는 단계와,
    상기 마이그런트 계산 유닛을 상기 제 1 서브넷으로부터 상기 제 2 서브넷으로 전달하는 단계와,
    상기 마이그런트 계산 유닛을 상기 제 2 서브넷에 인스톨하는 단계와,
    상기 마이그런트 계산 유닛을 상기 제 2 서브넷에서 활성화하고 실행하는 단계
    를 포함하는,
    컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 제 1 서브넷에 의해서, 마이그레이션을 위한 상기 마이그런트 계산 유닛을 준비하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 마이그레이션을 위한 상기 마이그런트 계산 유닛을 준비하는 단계는,
    마이그레이션 시간을 스케줄링하는 단계와,
    상기 마이그레이션 시간 이후에는 상기 마이그런트 계산 유닛에 대한 메시지 수락을 중지하는 단계와,
    상기 마이그레이션 시간 이후에는 상기 마이그런트 계산 유닛의 실행을 정지하고 및/또는 상기 마이그런트 계산 유닛의 상기 유닛 상태를 수정하는 단계
    를 포함하는,
    컴퓨터 구현 방법.
  4. 제 3 항에 있어서,
    상기 복수의 서브넷은 연속 방식으로 블록을 실행하도록 구성되고,
    상기 마이그레이션 시간은, 상기 제 1 서브넷에 의해 처리될 마지막 블록을 정의하는 블록 높이(block height)인
    컴퓨터 구현 방법.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 마이그런트 계산 유닛을 획득하는 것은,
    상기 제 2 서브넷의 상기 노드에 의해 상기 제 1 서브넷에 조인하는 것
    을 더 포함하는,
    컴퓨터 구현 방법.
  6. 제 5 항에 있어서,
    상기 제 2 서브넷의 상기 노드는, 상기 제 1 서브넷을 리스닝 모드에서 수동적으로 조인하고,
    상기 리스닝 모드는, 상기 제 1 서브넷의 모든 아티팩트를 확인하되 어떠한 아티팩트도 자체적으로 생성하지는 않는 것을 포함하는,
    컴퓨터 구현 방법.
  7. 제 5 항 또는 제 6 항에 있어서,
    상기 조인하는 것은 상기 마이그레이션 시간 이전에 수행되는,
    컴퓨터 구현 방법.
  8. 제 5 항 내지 제 7 항 중 어느 한 항에 있어서,
    상기 마이그런트 계산 유닛을 상기 제 1 서브넷으로부터 상기 제 2 서브넷으로 전달하는 단계는,
    상기 제 1 서브넷의 복제본과 상기 제 2 서브넷의 복제본 사이에서 상기 마이그런트 계산 유닛의 노드 내부 전송을 수행하는 단계
    를 포함하고,
    상기 제 1 서브넷의 복제본과 상기 제 2 서브넷의 복제본은 동일한 노드에서 실행되는,
    컴퓨터 구현 방법.
  9. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 마이그런트 계산 유닛을 전달하는 단계는,
    상기 제 2 서브넷의 각각의 노드에 의해, 상기 마이그런트 계산 유닛을 상기 제 1 서브넷의 노드로부터 상기 메시징 프로토콜을 통해서 획득하는 단계
    를 포함하는,
    컴퓨터 구현 방법.
  10. 제 9 항에 있어서,
    상기 마이그런트 계산 유닛을 전달하는 단계는,
    상기 제 1 서브넷의 상기 노드에 의해, 상기 마이그런트 계산 유닛을 하나 이상의 청크(chunk)로 분할하는 단계와,
    상기 마이그런트 계산 유닛의 상기 하나 이상의 청크를 상기 메시징 프로토콜을 통해 상기 제 1 서브넷으로부터 상기 제 2 서브넷으로 전달하는 단계
    를 포함하는,
    컴퓨터 구현 방법.
  11. 제 9 항에 있어서,
    상기 메시징 프로토콜은 상태 동기화 프로토콜을 포함하는,
    컴퓨터 구현 방법.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 제 1 서브넷에 의해, 상기 마이그레이션 시간 이후에는, 상기 마이그런트 계산 유닛에 대한 메시지를 거부해서, 상기 각각의 메시지의 재라우팅을 가능하게 하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 제 2 서브넷의 상기 노드에 의해, 합의 프로토콜(consensus protocol)을 수행해서 상기 마이그런트 계산 유닛의 상기 활성화에 동의하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에 있어서,
    상기 분산 네트워크는 중앙 제어 유닛을 포함하고,
    상기 제어 유닛은,
    상기 마이그런트 계산 유닛의 상기 마이그레이션을 트리거하는 단계
    를 수행하도록 구성되는,
    컴퓨터 구현 방법.
  15. 제 1 항 내지 제 14 항 중 어느 한 항에 있어서,
    상기 복수의 노드 각각은 노드 매니저를 포함하고,
    상기 노드 매니저는
    상기 제어 유닛의 레지스트리를 모니터하는 단계,
    상기 노드에게 서브넷에 참여하도록 지시하는 단계,
    상기 계산 유닛을, 상기 제 2 서브넷에 참여하는 상기 노드의 파티션으로 이동시키는 단계, 및/또는
    서브넷에의 참여를 중지하도록 노드에 지시하는 단계
    를 수행하도록 구성되는,
    컴퓨터 구현 방법.
  16. 분산 네트워크를 동작시키는 컴퓨터 구현 방법으로서 - 상기 분산 네트워크는 복수의 서브넷을 포함하고, 상기 복수의 서브넷 각각은 하나 이상의 할당된 노드를 포함함 - ,
    계산 유닛의 세트를 실행하는 단계와,
    상기 계산 유닛 각각을 서브넷-할당에 따라서 상기 복수의 서브넷 중 하나에 할당해서, 상기 서브넷 각각에 대해서 상기 계산 유닛의 세트의 할당된 서브셋을 생성하는 단계와,
    상기 계산 유닛의 할당된 서브셋을 상기 복수의 서브넷의 각각의 노드에서 실행하는 단계와,
    상기 복수의 서브넷의 상기 노드에 의해, 상기 서브넷에 걸쳐서 결정적이고(deterministic) 복제된(replicated) 방식으로 계산을 실행하는 단계와,
    상기 복수의 서브넷 중 제 1 서브넷으로부터 상기 복수의 서브넷 중 제 2 서브넷으로 계산 유닛을 마이그레이트하는 단계 - 상기 제 2 서브넷은 사전 존재하지 않음 -
    를 포함하되,
    상기 마이그레이트하는 단계는,
    상기 제 1 서브넷의 계산 유닛을 마이그레이트될 마이그런트 계산 유닛으로서, 상기 제 1 서브넷에 시그널링하는 단계와,
    상기 제 1 서브넷의 노드에 의해, 상기 제 2 서브넷을 시작하는 단계와,
    상기 제 1 서브넷 및 상기 제 2 서브넷의 노드에 의해, 상기 마이그런트 계산 유닛을 상기 제 1 서브넷으로부터 상기 제 2 서브넷으로 내부적으로 마이그레이트하는 단계와,
    상기 제 1 서브넷 및 상기 제 2 서브넷의 노드에 의해, 상기 제 2 서브넷에 상기 마이그런트 계산 유닛을 인스톨하는 단계와,
    상기 제 1 서브넷 및 상기 제 2 서브넷의 노드에 의해, 상기 마이그런트 계산 유닛을 상기 제 2 서브넷에서 활성화하고 실행하는 단계
    를 포함하는,
    컴퓨터 구현 방법.
  17. 제 16 항에 있어서,
    상기 제 1 서브넷의 일부가 아닌 상기 제 2 서브넷에 추가 노드를 추가하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  18. 제 16 항 또는 제 17 항에 있어서,
    상기 제 2 서브넷으로부터 상기 제 1 서브넷의 상기 노드를 제거하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  19. 제 16 항 내지 제 18 항 중 어느 한 항에 있어서,
    상기 제 1 서브넷에 의해, 마이그레이션을 위한 상기 마이그런트 계산 유닛을 준비하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  20. 제 16 항 내지 제 19 항 중 어느 한 항에 있어서,
    마이그레이션 시간을 스케줄링하는 단계와,
    상기 마이그레이션 시간 이후에는 상기 마이그런트 계산 유닛에 대한 메시지 수락을 중지하는 단계와,
    상기 마이그레이션 시간 이후에는 상기 마이그런트 계산 유닛의 실행을 정지하고 및/또는 상기 마이그런트 계산 유닛의 상기 유닛 상태를 수정하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  21. 제 20 항에 있어서,
    상기 복수의 서브넷은 연속 방식으로 블록을 실행하도록 구성되고,
    상기 마이그레이션 시간은, 상기 제 1 서브넷에 의해 처리될 마지막 블록을 정의하는 블록 높이인
    컴퓨터 구현 방법.
  22. 제 16 항 내지 제 21 항 중 어느 한 항에 있어서,
    상기 제 2 서브넷의 상기 노드에 의해서, 합의 프로토콜을 수행해서 상기 마이그런트 계산 유닛의 상기 활성화에 동의하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  23. 제 16 항 내지 제 22 항 중 어느 한 항에 있어서,
    상기 제 1 서브넷에 의해, 상기 마이그레이션 시간 이후에는, 상기 마이그런트 계산 유닛에 대한 메시지를 거부해서, 상기 각각의 메시지의 재라우팅을 가능하게 하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  24. 제 16 항 내지 제 23 항 중 어느 한 항에 있어서,
    상기 분산 네트워크는 중앙 제어 유닛을 포함하고,
    상기 제어 유닛은,
    상기 마이그런트 계산 유닛의 상기 마이그레이션을 트리거하는 단계
    를 수행하도록 구성되는,
    컴퓨터 구현 방법.
  25. 제 16 항 내지 제 24 항 중 어느 한 항에 있어서,
    상기 복수의 노드는 각각 노드 매니저를 포함하고,
    상기 노드 매니저는,
    상기 제어 유닛의 레지스트리를 모니터하는 단계,
    상기 노드에게 서브넷에 참여하도록 지시하는 단계,
    상기 계산 유닛을, 상기 제 2 서브넷에 참여하는 상기 노드의 파티션으로 이동시키는 단계, 및/또는
    서브넷에의 참여를 중지하도록 노드에 지시하는 단계
    를 수행하도록 구성되는,
    컴퓨터 구현 방법.
  26. 분산 네트워크로서,
    상기 분산 네트워크는 복수의 서브넷을 포함하고,
    상기 복수의 서브넷 각각은 복수의 할당된 노드를 포함하며,
    상기 분산 네트워크는 제 1 항 내지 제 25 항 중 어느 한 항에 따른 컴퓨터 구현 방법의 단계를 수행하도록 구성되는,
    분산 네트워크.
  27. 제 26 항에 따른 분산 네트워크의 노드로서,
    상기 노드는 제 1 항 내지 제 25 항 중 어느 한 항에 따른 컴퓨터 구현 방법에 참여하도록 구성되는,
    노드.
  28. 분산 네트워크를 동작시키는 컴퓨터 프로그램 제품으로서,
    상기 분산 네트워크는 복수의 서브넷을 포함하고,
    상기 컴퓨터 프로그램 제품은, 프로그램 명령어가 내장된 컴퓨터 판독가능 저장 매체를 포함하고,
    상기 프로그램 명령어는 상기 복수의 노드 중 하나 이상으로 하여금 제 1 항 내지 제 25 항 중 어느 한 항에 따른 컴퓨터 구현 방법을 수행하게 하도록 상기 복수의 노드 중 하나 이상에 의해 실행 가능한,
    컴퓨터 프로그램 제품.
KR1020237003375A 2020-06-30 2020-12-21 분산 네트워크에서 계산 유닛의 마이그레이션 KR20230038719A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063046444P 2020-06-30 2020-06-30
US63/046,444 2020-06-30
PCT/EP2020/087406 WO2022002427A1 (en) 2020-06-30 2020-12-21 Migration of computational units in distributed networks

Publications (1)

Publication Number Publication Date
KR20230038719A true KR20230038719A (ko) 2023-03-21

Family

ID=74175805

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237003375A KR20230038719A (ko) 2020-06-30 2020-12-21 분산 네트워크에서 계산 유닛의 마이그레이션

Country Status (6)

Country Link
US (1) US20230266994A1 (ko)
EP (1) EP4172764A1 (ko)
JP (1) JP2023550885A (ko)
KR (1) KR20230038719A (ko)
CN (1) CN116057505A (ko)
WO (1) WO2022002427A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023134799A1 (de) 2023-03-24 2024-09-26 Hl Mando Corporation Fahrzeuglenksäule

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114866560B (zh) * 2022-04-29 2023-12-01 蚂蚁区块链科技(上海)有限公司 区块链节点迁移的方法、装置、电子设备及可读存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014014477A1 (en) * 2012-07-20 2014-01-23 Hewlett-Packard Development Company, L.P. Migrating applications between networks
US11159376B2 (en) * 2018-05-24 2021-10-26 International Business Machines Corporation System and method for network infrastructure analysis and convergence

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102023134799A1 (de) 2023-03-24 2024-09-26 Hl Mando Corporation Fahrzeuglenksäule

Also Published As

Publication number Publication date
WO2022002427A1 (en) 2022-01-06
JP2023550885A (ja) 2023-12-06
EP4172764A1 (en) 2023-05-03
US20230266994A1 (en) 2023-08-24
CN116057505A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
KR20200099541A (ko) 블록체인 트랜잭션의 보안-강화된 발원
KR20230038719A (ko) 분산 네트워크에서 계산 유닛의 마이그레이션
US11902429B2 (en) Distributed secure multi party computation
CN115328645A (zh) 计算任务调度方法、计算任务调度装置及电子设备
Fu et al. Resource allocation for blockchain-enabled distributed network function virtualization (NFV) with mobile edge cloud (MEC)
Pagar et al. Load balancing of fog computing centre and its security using elliptic curve cryptography
US20220383304A1 (en) Distributed network with consensus mechanism
De la Rocha et al. Hierarchical consensus: A horizontal scaling framework for blockchains
JP7469826B2 (ja) 分散ネットワークにおけるメッセージング
KR20230075456A (ko) 분산 결정론적 네트워크의 작동
Xu et al. A mathematical model and dynamic programming based scheme for service function chain placement in NFV
US20230179409A1 (en) Verification key generation in distributed networks
US12058201B2 (en) Read access for computational results of a distributed network
Krajecki et al. Focus on the communication scheme in the middleware CONFIIT using XML-RPC
US20240154820A1 (en) Multi-party computations in a distributed network
Tejasvi et al. Vermillion: A High-Performance Scalable IoT Middleware for Smart Cities
CN116684139A (zh) 去中心化的互联互通方法、装置、设备和存储介质
Nandi et al. Secured Mobile Collaborative Application in Cloud Environments
CN116471193A (zh) 区块链动态组网方法及装置
Bergström et al. A Distributed, Parallel and Fault Tolerant BGP Routing Daemon
Aschenbrenner Introduction to Service Broker