KR20230085668A - 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템 - Google Patents

컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템 Download PDF

Info

Publication number
KR20230085668A
KR20230085668A KR1020210174071A KR20210174071A KR20230085668A KR 20230085668 A KR20230085668 A KR 20230085668A KR 1020210174071 A KR1020210174071 A KR 1020210174071A KR 20210174071 A KR20210174071 A KR 20210174071A KR 20230085668 A KR20230085668 A KR 20230085668A
Authority
KR
South Korea
Prior art keywords
peer
optional
string
dfget
supernode
Prior art date
Application number
KR1020210174071A
Other languages
English (en)
Inventor
박진영
최병은
이정헌
Original Assignee
주식회사 나눔기술
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 나눔기술 filed Critical 주식회사 나눔기술
Priority to KR1020210174071A priority Critical patent/KR20230085668A/ko
Publication of KR20230085668A publication Critical patent/KR20230085668A/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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템에 관한 것으로서, 일실시예에 따른 글로벌 이미지 캐싱 시스템은 클라이언트 모듈을 등록하고, 상기 등록된 클라이언트 모듈로부터 다운로드할 파일 또는 이미지에 대한 정보를 수신하는 수퍼 노드를 포함할 수 있다.

Description

컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템{SYSTEM FOR IMPLEMENTING GLOBAL IMAGE CACHE IN BALANCING CLUSTER BASED ON CONTAINER}
본 발명은 글로벌 이미지 캐싱 장치에 관한 것으로서, 보다 상세하게는 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 기술적 사상에 관한 것이다.
일반적으로 대규모의 운영환경에서는 이중화를 위해 여러 대의 물리 호스트로 서버를 구성한다. 또한 클라우드 환경에서는 시스템 규모가 큰 경우, 여러 대의 가상 서버(인스턴스)를 구성하여 이를 한 번에 관리할 수 있어야 한다.
기간계 시스템과 미션 크리티컬한 시스템에는 장애가 발생하게 되면 사업 기회를 놓치는 것뿐만 아니라 기업의 신용도가 크게 하락될 수 있다. 그래서 시스템 일부에 장애가 발생하더라도 시스템 전체에 영향을 미치지 않도록 인프라를 구성해야만 한다.
이처럼 만일의 사태 발생 시, 시스템이 정지하지 않도록 하는 기술이 바로 클러스터링이다. 클러스터링이란 여러 대의 서버와 하드웨어를 1대처럼 묶는 기술로서, 클러스터링을 구축하면 시스템 성능을 향상시킬 수 있다.
클러스터링과 관련된 용어 중, 가용성이란 시스템이 연속적으로 가동할 수 있는 능력을 의미한다. 서버 에러나 하드웨어에 장애가 발생하여도 다른 정상 서버나 하드웨어로 전환되어 기존 처리가 이어질 수 있기 때문에 높은 신뢰성을 제공할 수 있다.
또한, 높은 부하로 시스템이 다운되는 것을 피하기 위해 여러 컴퓨터를 클러스터링으로 구축 및 분산하여 신뢰성을 높일 수 있다. 클라우드 가상 서버는 오토 스케일 기능을 제공하는 경우도 있다. 도커에서는 한 대가 아닌 여러 대의 호스트 머신 위에서 도커를 구동시켜 높은 가용성 및 확장성을 가진 애플리케이션 실행 환경을 구축할 수 있다.
이처럼 멀티 호스트 환경에서 컨테이너를 클러스터링하는 다양한 툴들이 개발되고 있으나, 분산 클러스터 환경에서 컨테이너를 효율적으로 처리하는 기술에 대한 연구는 다소 부족한 상태이다.
한국등록특허 제10-2147310호 "컨테이너 클러스터 기반의 무중단 소프트웨어 업데이트 시스템"
본 발명은 서비스 이동 및 배치 요청을 받은 컨테이너 이미지를 빠르게 내려 받을 수 있는 글로벌 이미지 캐싱 시스템을 제공하고자 한다.
또한, 본 발명은 컨테이너 플랫폼 간 서비스 고속 배치를 지원하는 글로벌 이미지 캐싱 시스템을 제공하고자 한다.
일실시예에 따른 글로벌 이미지 캐싱 시스템은 클라이언트 모듈을 등록하고, 상기 등록된 클라이언트 모듈로부터 다운로드할 파일 또는 이미지에 대한 정보를 수신하는 수퍼 노드를 포함할 수 있다.
일측에 따르면, 글로벌 이미지 캐싱 시스템은 드래곤 플라이(Dragonfly)에 기반할 수 있다.
일측에 따르면, 수퍼 노드는 복수의 다운로드 경로 중 상기 클라이언트 모듈의 피어에 최적화된 다운로드 네트워크 경로를 선택할 수 있다.
일실시예에 따르면, 본 발명은 서비스 이동 및 배치 요청을 받은 컨테이너 이미지를 빠르게 내려 받을 수 있다.
일실시예에 따르면, 본 발명은 컨테이너 플랫폼 간 서비스 고속 배치를 지원할 수 있다.
도 1은 Squid 기반 지역분산캐시 구조를 설명하는 도면이다.
도 2는 Kraken 기반 글로벌 캐시 구조를 설명하는 도면이다.
도 3 내지 도 14는 일실시예에 따른 글로벌 이미지 캐싱 시스템을 설명하는 도면이다.
도 15는 일실시예에 따른 글로벌 이미지 캐싱 시스템의 구현예를 설명하는 도면이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 특허출원의 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 Squid 기반 지역분산캐시 구조를 설명하는 도면이다.
도 1을 참조하면, Squid 기반 지역분산캐시 구조는 분산되어 있는 이미지 캐시 중 가장 효율적인 캐시에 접근하여 이미지를 사용(Metric 의 지연값 이용)할 수 있으며, 비용이 가장 적게 드는 지역을 선택하여 이미지 사용하기 때문에 효율적이고 사용하지 않는 이미지의 제거를 진행할 수 있다.
이와 관련하여 부연 설명을 하자면, Squid는 캐싱 및 전달 HTTP 웹 프록시로, 반복되는 요청을 캐싱하여 웹 서버 속도를 높이고, 웹, DNS 및 네트워크 리소스를 공유하는 사람들의 그룹에 대한 기타 컴퓨터 네트워크 조회 캐싱을 수행하ACE0, 트래픽을 필터링하여 보안을 지원하는 등 다양한 용도로 사용될 수 있다.
또한, 캐싱은 데이터나 값을 미리 복사해 놓는 임시 장소를 가리키는 것으로, 캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용할 수 있다.
즉, Squid 기반 지역분산캐시 구조는 Proxy에 기반하는 구조로, 캐시되어 있는 데이터에 대해 약 10%의 속도 증가를 기대할 수 있으나, 캐시가 되어 있지 않은 데이터는 5%의 속도 저하를 야기할 수 있으며, 개발이 어렵고 아직 추가로 연구해야 할 부분(Squid 사용방안, Matric DB 사용 고려, 분산캐시에 이미지를 pull 하는 부분 등)이 많다는 문제가 있다.
도 2는 Kraken 기반 글로벌 캐시 구조를 설명하는 도면이다.
도 2를 참조하면, Kraken은 확장성과 가용성에 중점을 둔 P2P 기반 Docker 레지스트리로, 하이브리드 클라우드 환경에서 Docker 이미지 관리, 복제 및 배포를 위해 설계되었으며, 플러그 가능한 백엔드 지원을 통해 Kraken은 기존 Docker 레지스트리 설정에 배포 계층으로 쉽게 통합 할 수 있다.
Agent는 모든 호스트에 대한 배포 기능, Docker 레지스트리 인터페이스 구현 기능, 사용 가능한 콘텐츠를 Tracker에게 알리는 기능, Tracker가 반환한 Peer에게 연결하여 콘텐츠 다운로드하는 기능을 수행할 수 있다.
Origin은 전용 피어(Dedicated Peer)로, 플러그 가능 스토리지(예: S3, GCS, ECR)로 백업 된 디스크에 Blob을 파일로 저장하는 기능, 셀프힐링 해시 링을 형성하여 부하를 분산하는 기능을 수행할 수 있다.
Tracker는 어떤 Peer가 어떤 콘텐츠를 가지고 있는지 추적(진행 중 및 완료됨)하는 기능, 지정된 Blob에 연결할 정렬 된 Peer 목록을 제공하는 기능을 수행할 수 있다.
Proxy는 Docker 레지스트리 인터페이스의 구현 기능, 각 이미지 레이어를 담당 원점에 업로드하는 기능(원점은 해시 링을 형성 함), Build Index에 태그를 업로드하는 기능을 수행할 수 있다.
Build-Index는 사람이 읽을 수 있는 태그를 Blob 다이제스트에 매핑하는 기능, 클러스터 간 이미지 복제 기능 강화(다시 시도한 단순 복제 큐) 기능, 플러그 가능 스토리지(예: S3, GCS, ECR)가 지원하는 디스크에 태그를 파일로 저장하는 기능을 수행할 수 있으며, 클라이언트는 고유 한 태그를 사용해야 한다(일관성 보장 없음).
이러한 Kraken은 모든 호스트에서 Docker 이미지를 최대 다운로드 속도 제한의 50 % 이상으로 배포 할 수 있고, 클러스터 크기 및 이미지 크기는 다운로드 속도에 큰 영향을 미치지 않아 확장성이 뛰어나다.
구체적으로, Kraken은 클러스터 당 최소 15k 호스트를 지원하고, 임의로 큰 blob s/ layers를 지원하며, 최상의 성능을 위해 일반적으로 최대 크기를 20G로 제한할 수 있다.
또한, Kraken은 단일 장애 지점인 구성 요소가 없어 가용성이 높다.
또한, Kraken은 TLS를 통한 업로더 인증 및 데이터 무결성 보호를 지원한다.
또한, Kraken은 데이터를 관리하는 대신 S3, GCS, ECR, HDFS 또는 다른 레지스트리와 같은 안정적인 Blob 스토리지 옵션에 연결하고, 스토리지 인터페이스는 간단하며 새로운 옵션을 쉽게 추가 할 수 있다.
또한, Kraken은 클러스터 간의 규칙 기반 비동기 복제를 지원하고, 플러그 가능한 스토리지 이외의 Kraken은 DNS에 대한 선택적 종속성만 존재할 수 있다.
종합해보면, Kraken은 P2P에 기반하여 평상시에는 10% 속도 증가, 병목현상이 있는 이미지에 대해서는 100% 이상의 속도 증가를 기대할 수 있으며, 이미 구현되어있는 OpenSource 가 있어 이미 연구되어 있는 부분이 많다는 장점이 있다.
그러나, Kraken은 병목현상이 일어나지 않는 경우는 속도 증가 기대하기 어려우며, 100 G 이상의 고용량의 경우 압축에 시간이 더 오래 걸린다는 한계가 있다.
도 3 내지 도 14는 일실시예에 따른 글로벌 이미지 캐싱 시스템을 설명하는 도면이다.
도 3 내지 도 14를 참조하면, 드래곤 플라이(Dragonfly)에 기반하는 일실시예에 따른 글로벌 이미지 캐싱 시스템은 클라이언트 모듈을 등록하고, 상기 등록된 클라이언트 모듈로부터 다운로드할 파일 또는 이미지에 대한 정보를 수신하는 수퍼 노드(Supernode)를 포함할 수 있다.
또한, 여기서 Supernode는 복수의 다운로드 경로 중 상기 클라이언트 모듈의 피어(Peer)에 최적화된 다운로드 네트워크 경로를 선택할 수 있다.
구체적으로, Supernode는 장기 실행 프로세스로, Supernode를 통해 P2P 네트워크의 각 트래커 및 스케줄러는 각 Peer에 적합한 다운로드 네트 경로를 선택할 수 있으며, Supernode는 소스에서 동일한 파일을 반복적으로 다운로드하지 않도록 소스에서 다운로드 한 데이터를 캐시하는 CDN 서버로 동작할 수 있다.
Dfget은 파일 다운로드에 사용되는 Dragonfly의 클라이언트로, wget을 사용하는 것과 비슷하며, 동시에 p2p 네트워크에서 서로간에 데이터를 전송할 수있는 피어의 역할도 수행할 수 있다.
Dfdaemon은 컨테이너 엔진과 레지스트리간에 프록시를 로컬 장기 실행 프로세스로 설정하고, 이미지를 가져올 때 컨테이너 엔진이 전송하는 모든 요청에서 레이어 가져 오기 요청을 필터링 한 다음 Dfget을 사용하여 이러한 레이어를 다운로드할 수 있다.
P2P는 분산 애플리케이션 아키텍처 인 피어 투 피어(Peer-to-Peer)를 의미할 수 있다.
Task는 taskFile, 조각 및 기타 정보에 대한 일부 메타 정보를 저장하고, taskID로 식별되는 디스크의 파일과 일대일로 대응된다. Supernode에서 파일을 다운로드 하기 위해서는 서버에 실제로 다운로드하기 전에 다운로드하려는 파일 정보를 알려주는 작업을 등록해야 한다.
DfgetTask는 Dfget 또는 다른 클라이언트가 시작한 다운로드 프로세스를 나타내며, Dfget이 p2p 네트워크에서 파일을 다운로드 하려고 하면 Supernode는 다운로드 프로세스의 수명주기를 관리하기 위한 DfgetTask 객체를 만들 수 있다.
피어는 P2P 네트워크에서 피어는 리소스의 공급 업체이자 소비자로, Dfget은 Supernode에서 다운로드 작업을 시작하기 전에 다른 피어가 P2P 네트워크에서 다운로드 할 수 있는 다운로드 된 파일 서비스를 제공하고 P2P 네트워크 Peer/Register에 가입하라는 요청을 Supernode에 보내는 웹 서버를 시작할 수 있으며, 그 후에만 Dfget이 P2P 네트워크에서 파일을 다운로드 할 수 있다.
조각은 다운로드 할 파일의 일부이며 파일 블록으로 해석 될 수 있습니다. 잠자리에서 다운로드 파일은 전체 파일이 아니라 조각으로 전송될 수 있다.
이하에서는 Dragonfly에 대해 보다 구체적으로 설명하기로 한다.
Alibaba Dragonfly는 지능형 P2P 기반 이미지 및 파일 배포 시스템으로, 시간이 많이 걸리는 배포, 낮은 성공률 및 대역폭 낭비와 같은 대규모 파일 배포 시나리오의 문제를 해결할 수 있으며, 배포, 데이터 예열 및 대규모 컨테이너 이미지 배포와 같은 비즈니스 기능을 크게 향상 시킬 수 있다.
Dragonfly는 파일 소스의 문제를 해결하기 위해 호스트간에 P2P 네트워크를 구성하여 파일 서버에 대한 부담을 줄이고 IDC에 걸친 대역폭 리소스를 절약하며, 파일 배포 속도를 높이고 1 만 대 이상의 서버 다운로드와 한 서버 다운로드 간의 변동이 그다지 크지 않도록 제어할 수 있다.
또한, Dragonfly는 다국적 다운로드 가속화 및 대역폭 절약 문제 해결하고, 대용량 파일 다운로드 문제를 해결하기 위해 정전시 지속적인 전송을 지원하며, 비즈니스에 대한 영향을 피하기 위해 호스트의 컴퓨터 디스크 IO 및 네트워크 IO를 제어 할 수 있다.
Dragonfly의 전체 구조를 설명하기 위한 도 4에 따르면, Dragonfly는 2Layers인 ClusterManger(Supernode=server)와 Host(Peer=Client)로 구성되어 있으며, Supernode에 Peer들을 연결시켜 놓고 Supernode가 Hosts를 P2P중개하는 역할을 수행할 수 있다.
상술한 대로, Supernode는 CDN(Contents Delivery Network)의 역할을 하며, 콘텐츠 전송 네트워크는 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템을 의미할 수 있다.
Supernode는 P2P 네트워크를 구성하고 각 피어 간의 상호 전송을 위해 지정된 블록 데이터를 디스패치하며, dfdaemon이Registry에서 이미지를 직접 pull할 수 있다.
CDN을 설명하기 위한 도 5에 따르면, CDN은 서버의 트래픽 부하 및 비용을 줄이고 사용자에게 빠른 서비스 제공이 가능하며, 장애 확률도 낮춰줄 수 있다.
구체적으로, Peer A에서 pull 요청을 하면 Supernode는 Peer들에 캐시가 되어있는지 확인하고, 없으면 Registry에서 이미지를 pull하여 각 Peer에 이미지를 샤딩하여 캐싱할 수 있다.
Peer A는 다른 Peer들에 샤딩된 이미지(블록)를 조각 다운로드 하여 이미지 전체를 pull 받고, 캐시가 되어있는 상태라면 Peer A는 다른 Peer들에 샤딩된 이미지(블록)를 바로 조각 다운로드 하여 이미지 전체를 pull 받을 수 있다.
상술한 대로 dfdaemon는 이미지를 가져 오는 데 사용되는 도커 레지스트리 사이의 프록시로, 기본 로컬 저장소는 ${HOME}/.small-dragonfly/dfdaemon/data/ 이며, 옵션을 설정하여 변경할 수 있으며, dfdaemon 명령어 --registry a.b.com 와 같은 방식으로 바라보는 레지스트리를 바꿀 수 있다.
dfdaemon 주요 기능 소스를 요약 설명하면, proxy.go(프록시 구성과 미러 레지스트리 설정), cert.go(레지스트리 인증 관련), transport.go(dfget 요청 처리), downloader.go(플러그인이 파일을 다운로드 할 수있는 방법을 지정), dfget.go(downloader를 구현)로 정리할 수 있다.
또한, Supernode의 주요 기능 소스를 요약 설명하면, cdn_mgr.go(CDN 역할 수행에 대한 관리; 고속 배치를 위한 분산 캐시 구조), dfget_task_mgr.go(다운로드 프로세스에 대한 관리), gc_mgr.go(garbage collector 역할 수행; 분산 캐시의 최적화를 수행하는 Garbage Collector), peer_mgr.go(피어에 대한 관리), piece_error_mgr.go(조각 오류 처리에 대한 관리), progress_mgr.go(피어와 조각, 통신에 관한 관리), scheduler_mgr.go(조각 다운로드에 대한 정보와 조각에 대한 스케쥴링 관리), task_mgr.go(Supernode가 해야할 각종 task에 대한 관리)로 정리할 수 있다.
상술한 바와 같이, P2P 네트워크에서 Peer는 다운로더의 역할뿐만 아니라 업로더의 역할도 수행할 수 있다.
구체적으로, 다운로더의 경우 Peer는 다른 Peer에서 파일 / 이미지의 블록 / 조각을 다운로드해야하고(Supernode도 하나의 특수 피어에 해당), 업로더의 경우 Peer는 다른 Peer에게 블록 / 피스 다운로드 서비스를 제공해야 한다. 현재 다른 Peer가 이 Peer에서 블록 / 피스를 다운로드 하면 이 Peer를 업로더로 취급 할 수 있다.
dfget는 Dragonfly의 클라이언트, a non-interactive(비대화형)P2P downloader일 수 있다.
Peer의 주요 기능 소스를 요약 설명하면, peer_create.go(피어 등록), peer_delete.go(피어 삭제), peer_list.go(피어 리스트), preheat_create.go(예열 테스크 생성), preheat_info.go(예열 테스크에 대한 정보), preheat_list.go(예열 테스크 리스트), request.go(요청 생성 및 전달), task_create.go(테스크 생성), task_info.go(테스크에 대한 정보), task_delete.go(테스크 삭제), task_update.go(테스크 업데이트)로 정리할 수 있다.
한편, Supernode의 빌드 및 실행은 도 6에 도시된 소스를 통해 수행되고, Peer의 빌드 및 실행은 도 7에 도시된 소스를 통해 수행되며, Peer의 registry 미러 사용 설정은 도 8에 도시된 소스를 통해 수행되고, 동작 확인(client)은 도 9에 도시된 소스를 통해 수행될 수 있다.
기본적으로 도커 허브 레지스트리를 사용하며, docker pull a.b.com/mysql:5.6을 사용하여 도커 허브 이외에 다른 레지스트리를 사용한다고 했을 때 dfdaemon --registry a.b.com를 명령하고 docker pull mysql:5.6을 명령하면 dfdaemon은 요청을 a.b.com 로 프록시하여 mysql:5.6registry에서 이미지를 pull 할 수 있다.
이하에서는 Dragonfly기반 지역분산캐시 워크 플로우에 대해 설명하기로 한다.
Dfget 및 Supernode의 통신 워크 플로우를 설명하기 위한 도 10에 따르면, Dfget이 Supernode에서 파일 / 이미지를 다운로드하려고 할 때 따라야 할 단계는 1) Supernode에 등록, 2) 루프로 P2P 네트워크에서 조각으로 다운로드, 3) 서비스 다운으로 정리할 수 있다.
구체적으로, 도 10은 Dfget이 Supernode에서 파일을 다운로드하는 방법을 보여주는 다이어그램으로, Supernode에 등록 단계는 Dfget은 서버를 피어로 시작하고 Supernode에 등록하고, Dfget은 Supernode에게 다운로드 할 파일 / 이미지에 대한 정보를 알려 줄 수 있다.
루프로 P2P 네트워크에서 조각으로 다운로드하는 단계는 Dfget 다운로드가 일회성 작업이 아니며 다운로드가 완료 될 때까지 루프로 한 번에 한 조각을 다운로드해야 하므로, 다운로드 할 조각으로 동료 정보를 얻는 단계, 지정된 피어에서 조각을 다운로드하는 단계, pieceInfo를 업데이트하여 Supernode가 두 가지로 조각을 다운로드했음을 알리는 단계를 수행할 수 있으며, 여기서 다운로드했음을 아리는 단계는 네트워크에서 다른 부분에 필요한 다운로드 서비스를 제공하고, 다운로드해야 할 다른 조각에 대한 정보를 얻을 수 있다.
서비스 다운 단계는 Dfget이 작업을 다운로드하거나 업로드하지 않고 5분 동안 지속되면 Dfget 업로더는 자동으로 serviceDown 요청을 Supernode에 보낼 수 있다.
슈퍼 노드 내부 컴포넌트 워크 플로우는 API와 시스템 기능에 따라 다음과 같이 5 개의 모듈로 정리할 수 있다.
- TaskMgr: 작업과 조각의 수명주기를 관리할 수 있다.
- PeerMgr: 피어의 수명주기 관리에는 피어 등록 / 등록 취소 및 상태 업데이트가 포함될 수 있다.
- DfgetTaskMgr: dfgetTasks의 라이프 사이클을 관리할 수 있다.
- CDNMgr: CDN 다운로드를 트리거하고 로컬 캐시 파일을 관리할 수 있다.
- ProgressMgr: 동료와 조각 사이의 통신 관계를 유지할 수 있다.
- SchedulerMgr: ProgressMgr에서 유지 관리하는 정보를 기반으로 좋은 예약 결과를 얻기 위해 특정 예약 알고리즘을 실행할 수 있다.
이하에서는, 도 10의 통신 워크 플로우를 보다 구체적으로 설명하기로 한다.
Supernode에 등록하는 단계를 보다 구체적으로 설명하기 위한 도 11에 따르면, Dfget은 P2P 네트워크에서 파일을 다운로드하기 전에 피어 노드로 등록해야 하며, 파일 고유 TASKID에 의해 식별 및 다운로드 작업도 TASKID에 따라 수행될 수 있다.
따라서 Dfget이 실제로 파일 다운로드를 시작하기 전에 taskID를 얻기 위해 다운로드 할 파일에 대한 정보를 Supernode에 알려야 한다.
보다 구체적으로, Supernode는에 의해 전달 된 정보를 기반으로 특정 taskID를 생성하고 taskID에 Dfget 해당하는 파일이 CDNMgr에 의해 관리되는 로컬에 존재하는지 확인할 수 있다.
또한, 이전 검사에서 해당 파일을 로컬에서 찾지 못하면 CDN이 파일을 비동기 적으로 다운로드하도록 트리거할 수 있다.
또한, 다운로드 프로세스 DfgetTask는 수퍼 노드 의 오브젝트에 해당하므로 다운로드 프로세스의 진행 상황을 추적 할 새 오브젝트를 작성할 수 있으며, P2P 네트워크의 비트 맵 정보는 업데이트될 수 있다.
루프로 P2P 네트워크에서 조각으로 다운로드하는 단계를 보다 구체적으로 설명하기 위한 도 12에 따르면, Dfget은 각 성공 / 실패시 P2P 네트워크에서 조각을 다운로드 할 때 다운로드 한 조각의 정보 및 상태를 보고할 수 있다. Supernode는 보다 나은 스케줄링 작업을 위해 P2P 네트워크에 대한 비트 맵 정보를 업데이트할 수 있다.
Dfget은 전체 파일을 한 번에 다운로드하지 않고 조각으로 다운로드할 수 있으며, 따라서 Supernode는 Dfget을 다운로드 할 때마다 여러 정보를 예약할 수 있다.
구체적으로, 스케줄러는 특정 스케줄링 규칙에 따라 다음 스케줄링 동작을 결정하고, 성공 / 실패가 일부 조각을 다운로드하지 못하거나 전체 다운로드 프로세스가 성공 / 실패로 종료되면 Supernode는 DfgetTask의 상태를 업데이트할 수 있다.
서비스를 다운하는 단계를 보다 구체적으로 설명하기 위한 도 13에 따르면, Dfget으로 시작한 피어 업로더 서버가 항상 존재하지는 않으며, 새 다운로드 요청 또는 다운로드 작업이 오랫동안 없으면 (기본값은 5분) 오프라인 요청을 Supernode로 보내고 서버를 종료 한 후 캐시를 정리할 수 있다.
정리하면, Dragonfly는 P2P에 기반하는 원리로 동작하고, -평상시 10% 속도 증가가 기대되고, 병목현상이 있는 이미지에 대해서는 100% 이상의 속도 증가를 기대할 수 있다.
다만, Dragonfly는 병목현상이 일어나지 않는 경우는 속도 증가 기대하기 어려우며, 100 G 이상의 고용량의 경우 압축에 시간이 더 오래 걸린다는 단점 또한 존재한다.
Dragonfly와 Kraken의 비교 결과를 정리하면 하기 표1과 같다.
Kraken Dragonfly
고가용성 지원 미지원
(다중 슈퍼 노드로 대체)
확장성 미흡 좋음
기술 문서 미흡 좋음 (API 문서 포함)
오픈소스 활성도 보통(17 File/Month 가 변경됨) 좋음 (약 6000 File/Month 가 발생함)
언어 Golang Golang
Dragonfly의 성능 실험 결과를 설명하기 위한 도 14에 따르면, Dragonfly의 경우 클라이언트 수가 늘어나도 평균 다운로드 시간이 증가하지 않는 반면, Wget의 경우 클라이언트 수가 많을 때 다운로드 시간이 비례하여 증가하는 것을 알 수 있다.
Test Environment Statistics
Dragonfly server 2 * (24core 64GB 2000Mb/s)
File Source server 2 * (24core 64GB 2000Mb/s)
Client 4core 8GB 200Mb/s
Target file size 200MB
이하에서는 일실시예에 따른 글로벌 이미지 캐싱 시스템의 설계에 필요한 정보들에 대하여 설명하기로 한다. - API 설계: API는 Dragonfly의 SuperNode에서 제공하는 HTTP API로, dfget 또는 Harbor가 수퍼노드와 통신하는 데 사용될 수 있다.
- Paths: Ping(GET /_ping)
이것은 서버에 액세스할 수 있는지 테스트하는 데 사용할 수 있는 더미 엔드포인트(dummy endpoint)를 의미한다. 하기 표3은 Responses를 설명한다.
HTTP Code Description Schema
200 no error string
500 An unexpected server error occurred. Error
HTTP 응답 예시: Response 200(json : "OK")- Get Prometheus metrics
Prometheus 메트릭 가져올 수 있다. 하기 표4은 Responses를 설명한다.
HTTP Code Description Schema
200 no error string
HTTP 응답 예시: Response 200(json : "go_goroutines 1")- report a piece has been success(GET /peer/piece/suc)
Type Name Description Schema
Query cid
required
the downloader clientID string
Query dstCid
optional
the uploader peerID string
Query pieceRange
required
the range of specific piece in the task, example "0-45565". string
Query taskId
required
ID of task string
HTTP Code Description Schema
200 no error ResultInfo
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Produces: application/json
- registry a task(POST /peer/registry)
supernode에서 P2P 다운로드 작업을 생성할 수 있다. 하기 표7은 Parameters를 설명하고, 하기 표8은 Responses를 설명한다.
Type Name Description Schema
Body body
optional
request body which contains task creation information TaskRegisterRequest
HTTP Code Description Schema
200 no error ResultInfo
400 bad parameter Error
500 An unexpected server error occurred. Error
- report a peer service will offline(GET /peer/service/down)
하기 표9는 Parameters를 설명하고, 하기 표10은 Responses를 설명한다.
Type Name Description Schema
Query cid
required
the downloader clientID string
Query taskId
required
ID of task string
HTTP Code Description Schema
200 no error ResultInfo
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Produces: application/json
- Get pieces in task(GET /peer/task)
dfget이 작업 조각을 다운로드하기 시작하면 작업에서 고정 개수의 조각을 가져온 다음 조각 정보를 사용하여 조각을 다운로드해야 하며, 요청 조각 번호는 쿼리에서 설정될 수 있다. 하기 표11은 Parameters를 설명하고, 하기 표12는 Responses를 설명한다.
Type Name Description Schema
Query dstCid
optional
the uploader cid string
Query range
optional
the range of specific piece in the task, example "0-45565". string
Query result
optional
pieceResult It indicates whether the dfgetTask successfully download the piece.
It's only useful when status is RUNNING.
enum (FAILED, SUCCESS, INVALID, SEMISUC)
Query srcCid
required
When dfget needs to get pieces of specific task, it must mark which peer it plays role of. string
Query status
optional
dfgetTaskStatus indicates whether the dfgetTask is running. enum (STARTED, RUNNING, FINISHED)
Query taskId
required
ID of task string
HTTP Code Description Schema
200 no error ResultInfo
404 no such task 4ErrorResponse
500 An unexpected server error occurred. Error
Produces: application/json
- register dfget in Supernode as a peer node(POST /peers)
dfget은 Supernode에 피어 노드로 등록하라는 요청을 보낼 수 있다. 하기 표13은 Parameters를 설명하고, 하기 표14는 Responses를 설명한다.
Type Name Description Schema
Body body
optional
request body which contains peer registrar information. PeerCreateRequest
HTTP Code Description Schema
201 no error PeerCreateResponse
400 bad parameter Error
500 An unexpected server error occurred. Error
- get all peers(GET /peers)
dfget은 Supernode에 피어 노드로 등록하라는 요청을 보낼 수 있다. 하기 표15은 Parameters를 설명하고, 하기 표16는 Responses를 설명한다.
Type Name Description Schema Default
Query pageNum
optional
integer 0
Query pageSize
required
integer
Query sortDirect
optional
Determine the direction of sorting rules enum (ASC, DESC) "ASC"
Query sortKey
optional
"The keyword used to sort. You can provide multiple keys, if two peers have the same first key, sort by the second key, and so on" < string > array
HTTP Code Description Schema
201 no error < PeerInfo > array
400 bad parameter Error
500 An unexpected server error occurred. Error
- get a peer in supernode(GET /peers/{id})
supernode에 있는 피어의 저수준 정보(low-level information)를 반환할 수 있다. 하기 표17은 Parameters를 설명하고, 하기 표18는 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of peer string
HTTP Code Description Schema
200 no error PeerInfo
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Produces: application/json
- delete a peer in supernode(DELETE /peers/{id})
dfget은 supernode에 의해 구성된 피어 네트워크에서 피어 역할을 중지할 수 있으며, 작업을 다운로드하거나 업로드하지 않고 dfget이 5분 동안 지속되면 dfget의 업로더는 자동으로 DELETE /peers/{id} 요청을 supernode에 보낼 수 있다. 하기 표19는 Parameters를 설명하고, 하기 표20은 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of peer string
HTTP Code Description Schema
204 no error No Content
404 no such peer 4ErrorResponse
500 An unexpected server error occurred. Error
- Create a Preheat Task(POST /preheats)
준비된 이미지/파일을 먼저 다운로드하기 위해 슈퍼노드에서 예열 작업을 만들 수 있다. 예열 작업은 dfget이 원하는 것을 얻는 기간을 단축할 수 있으며, 세부적으로, 예열 작업이 슈퍼노드에 이미지/파일 다운로드를 완료한 후 dfget은 즉시 P2P 네트워크 설정 요청을 보낼 수 있다. 하기 표21은 Parameters를 설명하고, 하기 표22는 Responses를 설명한다.
Type Name Description Schema
Body PreheatCreateRequest
optional
request body which contains preheat task creation information PreheatCreateRequest
HTTP Code Description Schema
200 no error PreheatCreateResponse
400 bad parameter Error
500 An unexpected server error occurred. Error
- List Preheat Tasks(GET /preheats)
Dragonfly의 슈퍼노드에서 예열 작업을 나열할 수 있다. 이 API는 슈퍼노드의 모든 기존 예열 작업을 나열할 수 있다. PreheatGCThreshold 후에 예열이 완료되면 GC 처리되고 이 예열은 예열 작업 목록 API에서 가져오지 않을 수 있다. 하기 표23은 Responses를 설명한다.
HTTP Code Description Schema
200 no error < PreheatInfo > array
400 bad parameter Error
500 An unexpected server error occurred. Error
- Get a preheat task(GET /preheats/{id})
supernode의 예열 작업에 대한 자세한 정보를 얻을 수 있다. 하기 표24는 Parameters를 설명하고, 하기 표25는 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of preheat task string
HTTP Code Description Schema
200 no error PreheatInfo
404 no such preheat task 4ErrorResponse
500 An unexpected server error occurred. Error
Produces: application/json
- upload dfclient download metrics POST /task/metrics(Description)
이 엔드 포인트는 주로 관찰 가능성을 위한 것으로, Dfget은 단기 작업이며 이 엔드 포인트를 사용하여 dfget 다운로드 관련 메트릭을 업로드할 수 있다. 하기 표26은 Parameters를 설명하고, 하기 표27은 Responses를 설명한다.
Type Name Description Schema
Body body
optional
request body which contains dfget download related information TaskMetricsRequest
HTTP Code Description Schema
200 no error ResultInfo
500 An unexpected server error occurred. Error
- create a task(POST /tasks)
supernode에서 P2P 다운로드 작업을 생성할 수 있다. 하기 표28은 Parameters를 설명하고, 하기 표29는 Responses를 설명한다.
Type Name Description Schema
Body body
optional
request body which contains task creation information TaskCreateRequest
HTTP Code Description Schema
201 no error TaskCreateResponse
400 bad parameter Error
500 An unexpected server error occurred. Error
- get a task(GET /tasks/{id})
supernode에 있는 작업의 저수준 정보를 반환할 수 있다. 하기 표30은 Parameters를 설명하고, 하기 표31은 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of task string
HTTP Code Description Schema
200 no error TaskInfo
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Produces: application/json
- update a task(PUT /tasks/{id})
작업 정보를 업데이트할 수 있다. 이 엔드 포인트는 주로 작업 사용을 위한 것으로, 피어 네트워크 또는 피어가 일부 부하 문제를 만날 때 운영 팀은 상황을 완화하기 위해 다운로드 작업을 일시 중지하는 것과 같이 작업을 직접 업데이트할 수 있다. 하기 표32는 Parameters를 설명하고, 하기 표33은 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of task string
Body TaskUpdateRequest
optional
request body which contains task update information" TaskUpdateRequest
HTTP Code Description Schema
200 no error No Content
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
- delete a task(DELETE /tasks/{id})
supernode에서 피어 투 피어 작업을 삭제할 수 있다. 이 엔드 포인트는 주로 작업 사용을 위한 것으로, 피어 네트워크 또는 피어가 일부 부하 문제를 만날 때 운영 팀은 상황을 완화하기 위해 작업을 직접 삭제할 수 있다. 하기 표34는 Parameters를 설명하고, 하기 표35는 Responses를 설명한다.
Type Name Description Schema Default
Path id
required
ID of task string
Query full
optional
supernode will also delete the cdn files when the value of full equals true. boolean "false"
HTTP Code Description Schema
204 no error No Content
404 no such task 4ErrorResponse
500 An unexpected server error occurred. Error
- Get pieces in task(GET /tasks/{id}/pieces)
dfget이 작업 조각을 다운로드하기 시작하면 작업에서 고정 개수의 조각을 가져온 다음 조각 정보를 사용하여 조각을 다운로드해야 합니다. 요청 조각 번호는 쿼리에서 설정될 수 있다. 하기 표36은 Parameters를 설명하고, 하기 표37은 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of task string
Query clientID
required
When dfget needs to get pieces of specific task, it must mark which peer it plays role of. string
Query num
optional
Request number of pieces of task. If request number is larger than the total pieces in supernode, supernode returns the total pieces of task. If not set, supernode will set 4 by default. integer (int64)
Body PiecePullRequest
required
request body which contains the information of pieces that have been downloaded or being downloaded. PiecePullRequest
HTTP Code Description Schema
200 no error < PieceInfo > array
404 no such task 4ErrorResponse
500 An unexpected server error occurred. Error
Produces: application/json
- Update a piece(PUT /tasks/{id}/pieces/{pieceRange})
조각의 일부 정보를 업데이트할 수 있다. 피어 A가 조각 B의 다운로드를 완료하면 A는 피어 A에 완전한 조각 B가 있음을 표시하기 위해 조각 B의 정보를 업데이트하라는 요청을 슈퍼노드에 보내야 하며, 그런 다음 다른 피어가 이 조각 B를 다운로드하도록 요청하면 슈퍼노드는 피어 A를 해당 피어에 예약할 수 있다. 하기 표38은 Parameters를 설명하고, 하기 표39는 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of task string
Path pieceRange
required
the range of specific piece in the task, example "0-45565". string
Body PieceUpdateRequest
optional
request body which contains task update information. PieceUpdateRequest
HTTP Code Description Schema
200 no error No Content
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Consumes: application/json / Produces: application/json
- report a piece error(POST /tasks/{id}/pieces/{pieceRange}/error)
피어가 슈퍼노드에서 조각을 다운로드하지 못하거나 조각 MD5의 유효성을 검사하는 데 실패하면 dfget이 supernode에 오류 정보를 보고할 수 있다. 하기 표40은 Parameters를 설명하고, 하기 표41은 Responses를 설명한다.
Type Name Description Schema
Path id
required
ID of task string
Path pieceRange
required
the range of specific piece in the task, example "0-45565". string
Body PieceErrorRequest
optional
request body which contains piece error information. PieceErrorRequest
HTTP Code Description Schema
200 no error No Content
404 An unexpected 404 error occurred. Error
500 An unexpected server error occurred. Error
Consumes: application/json / Produces: application/json
- Get version and build information(GET /version)
GoVersion, OS, Arch, Version, BuildDate 및 GitCommit을 포함한 버전 및 빌드 정보를 가져올 수 있다. 하기 표42는 Responses를 설명한다.
HTTP Code Description Schema
200 no error DragonflyVersion
500 An unexpected server error occurred. Error
- DfGetTask: dfget 또는 다른 클라이언트에 의해 시작된 다운로드 프로세스를 의미한다.
Name Description Schema
cID
optional
CID means the client ID. It maps to the specific dfget process.
When user wishes to download an image/file, user would start a dfget process to do this.
This dfget is treated a client and carries a client ID.
Thus, multiple dfget processes on the same peer have different CIDs.
string
callSystem
optional
This attribute represents where the dfget requests come from. Dfget will pass
this field to supernode and supernode can do some checking and filtering via
black/white list mechanism to guarantee security, or some other purposes like debugging.
Minimum length : 1
string
dfdaemon
optional
tells whether it is a call from dfdaemon. dfdaemon is a long running
process which works for container engines. It translates the image
pulling request into raw requests into those dfget recognizes.
boolean
path
optional
path is used in one peer A for uploading functionality. When peer B hopes
to get piece C from peer A, B must provide a URL for piece C.
Then when creating a task in supernode, peer A must provide this URL in request.
string
peerID
optional
PeerID uniquely identifies a peer, and the cID uniquely identifies a
download task belonging to a peer. One peer can initiate multiple download tasks,
which means that one peer corresponds to multiple cIDs.
string
pieceSize
optional
The size of pieces which is calculated as per the following strategy
1. If file's total size is less than 200MB, then the piece size is 4MB by default.
2. Otherwise, it equals to the smaller value between totalSize/100MB + 2 MB and 15MB.
integer (int32)
status
optional
The status of Dfget download process. enum (WAITING, RUNNING, FAILED, SUCCESS)
supernodeIP
optional
IP address of supernode which the peer connects to string
taskId
optional
string
- DragonflyVersion: Dragonfly 구성 요소의 버전 및 빌드 정보를 의미한다.
Name Description Schema
Arch
optional
Dragonfly components's architecture target string
BuildDate
optional
Build Date of Dragonfly components string
GoVersion
optional
Golang runtime version string
OS
optional
Dragonfly components's operating system string
Revision
optional
Git commit when building Dragonfly components string
Version
optional
Version of Dragonfly components string
- Error
Name Schema
message
optional
string
- ErrorResponse: 여기에는 클라이언트 처리를 위해 발생한 오류와 읽을 자세한 오류 메시지를 식별하는 코드가 포함될 수 있다.
Name Description Schema
code
optional
the code of this error, it's convenient for client to process with certain error. integer
message
optional
detailed error message string
- PeerCreateRequest: supernode에 피어 인스턴스를 생성하는 데 사용될 수 있다. 일반적으로 dfget이 supernode에 피어로 등록하려고 할 때 supernode에 PeerCreateRequest를 보낼 수 있다.
Name Description Schema
IP
optional
IP address which peer client carries string (ipv4)
hostName
optional
host name of peer client node, as a valid RFC 1123 hostname.
Minimum length : 1
string (hostname)
port
optional
when registering, dfget will setup one uploader process.
This one acts as a server for peer pulling tasks.
This port is which this server listens on.
Minimum value : 15000
Maximum value : 65000
integer (int32)
version
optional
version number of dfget binary. string
- PeerCreateResponse: 생성된 피어의 ID를 의미한다.
Name Description Schema
ID
optional
Peer ID of the node which dfget locates on.
Every peer has a unique ID among peer network.
It is generated via host's hostname and IP address.
string
- PeerInfo: Supernode에 있는 피어에 대한 자세한 정보를 의미한다.
Name Description Schema
ID
optional
ID of peer string
IP
optional
IP address which peer client carries.
(TODO) make IP field contain more information, for example
WAN/LAN IP address for supernode to recognize.
string (ipv4)
created
optional
the time to join the P2P network string (date-time)
hostName
optional
host name of peer client node, as a valid RFC 1123 hostname.
Minimum length : 1
string (hostname)
port
optional
when registering, dfget will setup one uploader process.
This one acts as a server for peer pulling tasks.
This port is which this server listens on.
Minimum value : 15000
Maximum value : 65000
integer (int32)
version
optional
version number of dfget binary string
- PieceErrorRequest: Supernode에 있는 피어의 상세 정보를 의미한다.
Name Description Schema
dstIP
optional
the peer ID of the target Peer. string
dstPid
optional
the peer ID of the target Peer. string
errorType
optional
the error type when failed to download from supernode that dfget will report to supernode enum (FILE_NOT_EXIST, FILE_MD5_NOT_MATCH)
expectedMd5
optional
the MD5 value of piece which returned by the supernode that
in order to verify the correctness of the piece content which
downloaded from the other peers.
string
range
optional
the range of specific piece in the task, example "0-45565". string
realMd5
optional
the MD5 information of piece which calculated by the piece content
which downloaded from the target peer.
string
srcCid
optional
the CID of the src Peer. string
taskId
optional
the taskID of the piece. string
- PieceInfo: Supernode에 있는 피어의 상세 정보를 의미한다.
Name Description Schema
pID
optional
the peerID that dfget task should download from string
path
optional
The URL path to download the specific piece from the target peer's uploader. string
peerIP
optional
When dfget needs to download a piece from another peer. Supernode will return a PieceInfo
that contains a peerIP. This peerIP represents the IP of this dfget's target peer.
string
peerPort
optional
When dfget needs to download a piece from another peer. Supernode will return a PieceInfo
that contains a peerPort. This peerPort represents the port of this dfget's target peer's uploader.
integer (int32)
pieceMD5
optional
the MD5 information of piece which is generated by supernode when doing CDN cache.
This value will be returned to dfget in order to validate the piece's completeness.
string
pieceRange
optional
the range of specific piece in the task, example "0-45565". string
pieceSize
optional
The size of pieces which is calculated as per the following strategy
1. If file's total size is less than 200MB, then the piece size is 4MB by default.
2. Otherwise, it equals to the smaller value between totalSize/100MB + 2 MB and 15MB.
integer (int32)
- PiecePullRequest: 다운로드되지 않은 조각을 가져오는 데 사용되는 요청을 의미한다.
Name Description Schema
dfgetTaskStatus
optional
dfgetTaskStatus indicates whether the dfgetTask is running. enum (STARTED, RUNNING, FINISHED)
dstPID
optional
the uploader peerID string
pieceRange
optional
the range of specific piece in the task, example "0-45565". string
pieceResult
optional
pieceResult It indicates whether the dfgetTask successfully download the piece.
It's only useful when status is RUNNING.
enum (FAILED, SUCCESS, INVALID, SEMISUC)
- PieceUpdateRequest: 조각 속성을 업데이트하는 데 사용되는 요청을 의미한다.
Name Description Schema
clientID
optional
the downloader clientID string
dstPID
optional
the uploader peerID string
pieceStatus
optional
pieceStatus indicates whether the peer task successfully download the piece. enum (FAILED, SUCCESS, INVALID, SEMISUC)
- PreheatCreateRequest: Supernode에서 예열 작업을 생성하는 요청 옵션을 의미한다.
Name Description Schema
filter
optional
URL may contains some changeful query parameters such as authentication parameters. Dragonfly will
filter these parameter via 'filter'. The usage of it is that different URL may generate the same
download taskID.
string
headers
optional
If there is any authentication step of the remote server, the headers should contains authenticated information.
Dragonfly will sent request taking the headers to remote server.
< string, string > map
identifier
optional
This field is used for generating new downloading taskID to identify different downloading task of remote URL. string
type
optional
this must be image or file string
url
optional
the image or file location string
- PreheatCreateResponse: 예열 생성 요청의 응답을 의미한다.
Name Schema
ID
optional
string
- PreheatInfo: Supernode의 예열 작업에 대한 자세한 정보를 반환할 수 있다. 이미지 예열 작업에는 이미지에 두 개 이상의 레이어가 있을 수 있으므로 여러 다운로드 작업이 포함될 수 있다.
Name Description Schema
ID
optional
ID of preheat task. string
finishTime
optional
the preheat task finish time string (date-time)
startTime
optional
the preheat task start time string (date-time)
status
optional
The status of preheat task.
WAITING -----> RUNNING -----> SUCCESS
|--> FAILED
The initial status of a created preheat task is WAITING.
It's finished when a preheat task's status is FAILED or SUCCESS.
A finished preheat task's information can be queried within 24 hours.
enum (WAITING, RUNNING, FAILED, SUCCESS)
- ResultInfo: Supernode에서 반환된 정보를 의미한다.
Name Description Schema
code
optional
the result code integer (int32)
data
optional
the result data object
msg
optional
the result msg string
- TaskCreateRequest
Name Description Schema
cID
optional
CID means the client ID. It maps to the specific dfget process.
When user wishes to download an image/file, user would start a dfget process to do this.
This dfget is treated a client and carries a client ID.
Thus, multiple dfget processes on the same peer have different CIDs.
string
callSystem
optional
This attribute represents where the dfget requests come from. Dfget will pass
this field to supernode and supernode can do some checking and filtering via
black/white list mechanism to guarantee security, or some other purposes like debugging.
Minimum length : 1
string
dfdaemon
optional
tells whether it is a call from dfdaemon. dfdaemon is a long running
process which works for container engines. It translates the image
pulling request into raw requests into those dfget recognizes.
boolean
filter
optional
filter is used to filter request queries in URL.
For example, when a user wants to start to download a task which has a remote URL of
a.b.com/fileA?user=xxx&auth=yyy, user can add a filter parameter ["user", "auth"]
to filter the url to a.b.com/fileA. Then this parameter can potentially avoid repeatable
downloads, if there is already a task a.b.com/fileA.
< string > array
headers
optional
extra HTTP headers sent to the rawURL.
This field is carried with the request to supernode.
Supernode will extract these HTTP headers, and set them in HTTP downloading requests
from source server as user's wish.
< string, string > map
identifier
optional
special attribute of remote source file. This field is used with taskURL to generate new taskID to
identify different downloading task of remote source file. For example, if user A and user B uses
the same taskURL and taskID to download file, A and B will share the same peer network to distribute files.
If user A additionally adds an identifier with taskURL, while user B still carries only taskURL, then A's
generated taskID is different from B, and the result is that two users use different peer networks.
string
md5
optional
md5 checksum for the resource to distribute. dfget catches this parameter from dfget's CLI
and passes it to supernode. When supernode finishes downloading file/image from the source location,
it will validate the source file with this md5 value to check whether this is a valid file.
string
path
optional
path is used in one peer A for uploading functionality. When peer B hopes
to get piece C from peer A, B must provide a URL for piece C.
Then when creating a task in supernode, peer A must provide this URL in request.
string
peerID
optional
PeerID is used to uniquely identifies a peer which will be used to create a dfgetTask.
The value must be the value in the response after registering a peer.
string
rawURL
optional
The is the resource's URL which user uses dfget to download. The location of URL can be anywhere, LAN or WAN.
For image distribution, this is image layer's URL in image registry.
The resource url is provided by command line parameter.
string
supernodeIP
optional
IP address of supernode which the peer connects to string
taskURL
optional
taskURL is generated from rawURL. rawURL may contains some queries or parameter, dfget will filter some queries via
--filter parameter of dfget. The usage of it is that different rawURL may generate the same taskID.
string
- TaskCreateResponse: 작업 생성 요청에서 응답을 얻을 수 있다.
Name Description Schema
ID
optional
ID of the created task. string
fileLength
optional
The length of the file dfget requests to download in bytes. integer (int64)
pieceSize
optional
The size of pieces which is calculated as per the following strategy
1. If file's total size is less than 200MB, then the piece size is 4MB by default.
2. Otherwise, it equals to the smaller value between totalSize/100MB + 2 MB and 15MB.
integer (int32)
- TaskInfo: Supernode의 작업에 대한 자세한 정보를 의미한다.
Name Description Schema
ID
optional
ID of the task. string
cdnStatus
optional
The status of the created task related to CDN functionality. enum (WAITING, RUNNING, FAILED, SUCCESS, SOURCE_ERROR)
fileLength
optional
The length of the file dfget requests to download in bytes
which including the header and the trailer of each piece.
integer (int64)
headers
optional
extra HTTP headers sent to the rawURL.
This field is carried with the request to supernode.
Supernode will extract these HTTP headers, and set them in HTTP downloading requests
from source server as user's wish.
< string, string > map
httpFileLength
optional
The length of the source file in bytes. integer (int64)
identifier
optional
special attribute of remote source file. This field is used with taskURL to generate new taskID to
identify different downloading task of remote source file. For example, if user A and user B uses
the same taskURL and taskID to download file, A and B will share the same peer network to distribute files.
If user A additionally adds an identifier with taskURL, while user B still carries only taskURL, then A's
generated taskID is different from B, and the result is that two users use different peer networks.
string
md5
optional
md5 checksum for the resource to distribute. dfget catches this parameter from dfget's CLI
and passes it to supernode. When supernode finishes downloading file/image from the source location,
it will validate the source file with this md5 value to check whether this is a valid file.
string
pieceSize
optional
The size of pieces which is calculated as per the following strategy
1. If file's total size is less than 200MB, then the piece size is 4MB by default.
2. Otherwise, it equals to the smaller value between totalSize/100MB + 2 MB and 15MB.
integer (int32)
pieceTotal
optional
integer (int32)
rawURL
optional
The is the resource's URL which user uses dfget to download. The location of URL can be anywhere, LAN or WAN.
For image distribution, this is image layer's URL in image registry.
The resource url is provided by command line parameter.
string
realMd5
optional
when supernode finishes downloading file/image from the source location,
the md5 sum of the source file will be calculated as the value of the realMd5.
And it will be used to compare with md5 value to check whether this is a valid file.
string
taskURL
optional
taskURL is generated from rawURL. rawURL may contains some queries or parameter, dfget will filter some queries via
--filter parameter of dfget. The usage of it is that different rawURL may generate the same taskID.
string
- TaskMetricsRequest
Name Description Schema
IP
optional
IP address which peer client carries string (string)
backsourceReason
optional
when registering, dfget will setup one uploader process.
This one acts as a server for peer pulling tasks.
This port is which this server listens on.
string
cID
optional
CID means the client ID. It maps to the specific dfget process.
When user wishes to download an image/file, user would start a dfget process to do this.
This dfget is treated a client and carries a client ID.
Thus, multiple dfget processes on the same peer have different CIDs.
string
callSystem
optional
This attribute represents where the dfget requests come from. Dfget will pass
this field to supernode and supernode can do some checking and filtering via
black/white list mechanism to guarantee security, or some other purposes like debugging.
Minimum length : 1
string
duration
optional
Duration for dfget task. number (float64)
fileLength
optional
The length of the file dfget requests to download in bytes. integer (int64)
port
optional
when registering, dfget will setup one uploader process.
This one acts as a server for peer pulling tasks.
This port is which this server listens on.
Minimum value : 15000
Maximum value : 65000
integer (int32)
success
optional
whether the download task success or not boolean
taskId
optional
IP address which peer client carries string (string)
- TaskRegisterRequest
Name Description Schema
IP
optional
IP address which peer client carries string (ipv4)
cID
optional
CID means the client ID. It maps to the specific dfget process.
When user wishes to download an image/file, user would start a dfget process to do this.
This dfget is treated a client and carries a client ID.
Thus, multiple dfget processes on the same peer have different CIDs.
string
callSystem
optional
This attribute represents where the dfget requests come from. Dfget will pass
this field to supernode and supernode can do some checking and filtering via
black/white list mechanism to guarantee security, or some other purposes like debugging.
Minimum length : 1
string
dfdaemon
optional
tells whether it is a call from dfdaemon. dfdaemon is a long running
process which works for container engines. It translates the image
pulling request into raw requests into those dfget recognizes.
boolean
headers
optional
extra HTTP headers sent to the rawURL.
This field is carried with the request to supernode.
Supernode will extract these HTTP headers, and set them in HTTP downloading requests
from source server as user's wish.
< string > array
hostName
optional
host name of peer client node.
Minimum length : 1
string
identifier
optional
special attribute of remote source file. This field is used with taskURL to generate new taskID to
identify different downloading task of remote source file. For example, if user A and user B uses
the same taskURL and taskID to download file, A and B will share the same peer network to distribute files.
If user A additionally adds an identifier with taskURL, while user B still carries only taskURL, then A's
generated taskID is different from B, and the result is that two users use different peer networks.
string
insecure
optional
tells whether skip secure verify when supernode download the remote source file. boolean
md5
optional
md5 checksum for the resource to distribute. dfget catches this parameter from dfget's CLI
and passes it to supernode. When supernode finishes downloading file/image from the source location,
it will validate the source file with this md5 value to check whether this is a valid file.
string
path
optional
path is used in one peer A for uploading functionality. When peer B hopes
to get piece C from peer A, B must provide a URL for piece C.
Then when creating a task in supernode, peer A must provide this URL in request.
string
port
optional
when registering, dfget will setup one uploader process.
This one acts as a server for peer pulling tasks.
This port is which this server listens on.
Minimum value : 15000
Maximum value : 65000
integer (int32)
rawURL
optional
The is the resource's URL which user uses dfget to download. The location of URL can be anywhere, LAN or WAN.
For image distribution, this is image layer's URL in image registry.
The resource url is provided by command line parameter.
string
rootCAs
optional
The root ca cert from client used to download the remote source file. < string (byte) > array
superNodeIp
optional
The address of supernode that the client can connect to string
taskURL
optional
taskURL is generated from rawURL. rawURL may contains some queries or parameter, dfget will filter some queries via
--filter parameter of dfget. The usage of it is that different rawURL may generate the same taskID.
string
version
optional
version number of dfget binary. string
- TaskUpdateRequest: 작업 속성을 업데이트하는 데 사용되는 요청을 의미한다.
Name Description Schema
peerID
optional
ID of the peer which has finished to download the whole task. string
도 15는 일실시예에 따른 글로벌 이미지 캐싱 시스템의 구현예를 설명하는 도면이다.
도 15를 참조하면, 일실시예에 따른 글로벌 이미지 캐싱 시스템은 etcd, Open mcp 및 복수의 클러스터(Cluster)를 구비할 수 있으며, 여기서 클러스터는 이미지 콜렉터(Image collector) 및 복수의 노드(node)를 포함할 수 있다.
이미지 콜렉터 각각은 클러스터에서 사용중인 image list를 etcd에 저장할 수 있다. 또한, Open mcp는 새로운 클러스터(New Cluster)의 JOIN시 Image collector를 배포할 수 있으며, etcd는 새로운 클러스터의 JOIN시 사용중인 image list를 새 클러스터 노드에 캐싱(Cache.go)할 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (3)

  1. 클라이언트 모듈을 등록하고, 상기 등록된 클라이언트 모듈로부터 다운로드할 파일 또는 이미지에 대한 정보를 수신하는 수퍼 노드를 포함하는 글로벌 이미지 캐싱 시스템.
  2. 제1항에 있어서,
    드래곤 플라이(Dragonfly)에 기반하는 글로벌 이미지 캐싱 시스템.
  3. 제1항에 있어서,
    상기 수퍼 노드는 복수의 다운로드 경로 중 상기 클라이언트 모듈의 피어에 최적화된 다운로드 네트워크 경로를 선택하는 글로벌 이미지 캐싱 시스템.
KR1020210174071A 2021-12-07 2021-12-07 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템 KR20230085668A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210174071A KR20230085668A (ko) 2021-12-07 2021-12-07 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210174071A KR20230085668A (ko) 2021-12-07 2021-12-07 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템

Publications (1)

Publication Number Publication Date
KR20230085668A true KR20230085668A (ko) 2023-06-14

Family

ID=86745038

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210174071A KR20230085668A (ko) 2021-12-07 2021-12-07 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템

Country Status (1)

Country Link
KR (1) KR20230085668A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102147310B1 (ko) 2018-09-05 2020-10-14 주식회사 나눔기술 컨테이너 클러스터 기반의 무중단 소프트웨어 업데이트 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102147310B1 (ko) 2018-09-05 2020-10-14 주식회사 나눔기술 컨테이너 클러스터 기반의 무중단 소프트웨어 업데이트 시스템

Similar Documents

Publication Publication Date Title
US11218566B2 (en) Control in a content delivery network
US9378258B2 (en) Method and system for transparently replacing nodes of a clustered storage system
US10146848B2 (en) Systems and methods for autonomous, scalable, and distributed database management
US10789217B2 (en) Hierarchical namespace with strong consistency and horizontal scalability
US9917896B2 (en) Synchronous replication for storage area network protocol storage
CA2512312C (en) Metadata based file switch and switched file system
US10922303B1 (en) Early detection of corrupt data partition exports
US20170277477A1 (en) Distributed Active Hybrid Storage System
CN113010496B (zh) 一种数据迁移方法、装置、设备和存储介质
US11514000B2 (en) Data mesh parallel file system replication
US9781201B2 (en) Multicast transport
US20160246517A1 (en) Methods for policy-based data tiering using a cloud architecture and devices thereof
CN111385325B (zh) 基于p2p的文件分发系统和方法
Littley et al. Bolt: Towards a scalable docker registry via hyperconvergence
US9720789B2 (en) Multicast transport configuration
US9639431B2 (en) Fault policy implementation
CN112804289A (zh) 一种资源同步方法、装置、设备及存储介质
KR20230085668A (ko) 컨테이너 기반 분산 클러스터 환경에서 글로벌 이미지 캐시를 구현하는 시스템
JP5956364B2 (ja) クラスタシステム
KR102459465B1 (ko) 정보 중심 네트워킹 기반 저장기능 통합 인-네트워크 컴퓨팅 처리 방법 및 시스템
WO2011060702A1 (zh) 对等叠加网、业务内容存储方法以及业务内容下载方法
Reinefeld et al. A scalable, transactional data store for future internet services

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E601 Decision to refuse application