KR20200052399A - Fog computing method with blockchain-based idle resoure sharing - Google Patents
Fog computing method with blockchain-based idle resoure sharing Download PDFInfo
- Publication number
- KR20200052399A KR20200052399A KR1020180126787A KR20180126787A KR20200052399A KR 20200052399 A KR20200052399 A KR 20200052399A KR 1020180126787 A KR1020180126787 A KR 1020180126787A KR 20180126787 A KR20180126787 A KR 20180126787A KR 20200052399 A KR20200052399 A KR 20200052399A
- Authority
- KR
- South Korea
- Prior art keywords
- fog
- nodes
- node
- application
- target
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17318—Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
Abstract
Description
본 발명은 포그 컴퓨팅 방법에 관한 것으로, 보다 구체적으로, 주변의 유휴 컴퓨팅 자원 및 스토리지 자원을 활용하여 초저 지연시간(ultra low-latency) 어플리케이션을 지원하는 포그 컴퓨팅 방법에 관한 것이다.The present invention relates to a fog computing method, and more particularly, to a fog computing method supporting an ultra low-latency application by utilizing surrounding idle computing resources and storage resources.
IoT 기술과 산업이 활성화되면서 수많은 크고 작은 디바이스들이 인터넷에 연결되고 있으며, 2020년경에는 적어도 500억 개 이상의 디바이스들이 인터넷에 연결될 것으로 예상된다. IoT 어플리케이션들은 지리적으로 넓게 산재된 다수의 디바이스들과 정보를 송수신하면서, 실시간 응답성과 낮은 지연시간(latency)를 요구하며, 다양한 플랫폼 위에서 동작하는 특징을 가진다.As IoT technology and industry are activated, many large and small devices are connected to the Internet, and by 2020, at least 50 billion devices are expected to be connected to the Internet. IoT applications require real-time responsiveness and low latency while transmitting and receiving information to and from multiple geographically dispersed devices, and operate on various platforms.
기존의 중앙 집중적 클라우드 환경에서 방대한 IoT 어플리케이션과 데이터를 처리하는 것은 응답속도 지연 문제를 발생시키고, 또한, 네트워크 코어 및 데이터센터에 엄청난 로우 데이터(Raw Data) 트래픽을 유입시켜 통신 사업자와 서비스 제공자에게 큰 비용문제를 유발한다. 이러한 문제를 해결하기 위해 포그 컴퓨팅(Fog Computing)의 개념이 제안되었다. Processing massive IoT applications and data in a traditional centralized cloud environment creates latency problems, and it also introduces a huge amount of raw data into the network core and data center, which is a big problem for operators and service providers. It causes cost problems. In order to solve this problem, the concept of fog computing was proposed.
포그 컴퓨팅은 Cisco에 의해 처음 제안되었으며, 클라우드(Cloud)와 사용자(End Point) 사이에 포그 계층을 만들어 데이터의 효율적인 처리를 지원하는 새로운 컴퓨팅 패러다임을 의미한다. 포그 컴퓨팅은 클라우드 컴퓨팅 패러다임을 네트워크 에지(Network Edge)까지 확장한 개념으로, 데이터, 컴퓨팅, 스토리지 및 어플리케이션 서비스를 사용자에게 제공한다는 점에서 클라우드 컴퓨팅과 유사하나, 클라우드 컴퓨팅에 비해 사용자 어플리케이션 및 디바이스에 근접성(Proximity)을 가진다. 포그 계층은 기존에 이미 구축되어 있는 주변 인프라스트럭처 및 사용자 주변의 유휴 로컬 자원을 활용해 작동하는 구조를 가진다.Fog computing was first proposed by Cisco, which means a new computing paradigm that supports efficient processing of data by creating a fog layer between the cloud and the end point. Fog computing is a concept that extends the cloud computing paradigm to the network edge, similar to cloud computing in that it provides users with data, computing, storage, and application services, but is closer to user applications and devices than cloud computing. (Proximity). The fog layer has a structure that works by utilizing the existing infrastructure that has already been established and idle local resources around the user.
중앙 집중적인 방법이 아닌 분산화된 방법을 이용하여, 전 세계의 주변 유휴 컴퓨팅 및 스토리지 자원들을 찾고, 관리하며, 해당 자원들을 활용해 포그 컴퓨팅 플랫폼, 포그 스토리지, 포그 프로그래밍 인터페이스, 최적화 알고리즘 및 Orchestration 기술, 포그 인센티브 모델등을 구현한 구체적인 시스템이 존재하지 않는다.Using a distributed method rather than a centralized method, it finds and manages the surrounding idle computing and storage resources around the world, and uses them to create a fog computing platform, fog storage, fog programming interface, optimization algorithm, and orchestration technology, There is no concrete system that implements fog incentive models.
본 발명은 이러한 종래의 문제점을 해결하기 위하여 제안된 것으로, 전 세계 유휴 컴퓨팅 및 스토리지 자원을 활용해 컴퓨팅 및 스토리지 어플리케이션을 개발 및 실행할 수 있는 플랫폼(즉, 포그 운영체제)를 제공하여 어플리케이션의 응답속도를 향상시킬 수 있는 포그 컴퓨팅 시스템 및 포그 컴퓨팅 방법을 제공하고자 한다.The present invention has been proposed to solve this conventional problem, and provides a platform (that is, a fog operating system) capable of developing and executing computing and storage applications utilizing idle computing and storage resources around the world, thereby improving application response speed. It is intended to provide a fog computing system and a fog computing method that can be improved.
또한, 본 발명은 유휴 컴퓨팅 자원들이 시스템에 활발하게 유입되게 하기 위하여, 어플리케이션이 컴퓨팅, 스토리지 기능을 활용하는데 있어 자원 제공자에게 블록체인 기반의 인센티브를 제공하는 포그 컴퓨팅 시스템 및 포그 컴퓨팅 방법을 제공하고자 한다.In addition, the present invention is to provide a fog computing system and a fog computing method that provides a blockchain-based incentive to a resource provider in an application utilizing a computing and storage function in order to allow idle computing resources to be actively introduced into the system. .
상기 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 포그 컴퓨팅 방법은, 사용자 단말, 및 상기 사용자 단말과 클라우드(cloud) 사이에 위치하는 포그 노드(fog node) 및 포그 트래커(fog tracker)를 포함하는 포그 컴퓨팅 시스템에서 수행된다. 포그 컴퓨팅 방법은 상기 사용자 단말에서 객체 지향 프로그래밍(object-oriented programming)으로 개발된 어플리케이션을 복수의 서브 태스크들(subtasks)로 구성된 포그 어플리케이션으로 변환하는 단계; 상기 포그 트래커에서 상기 포그 노드들 중에서 상기 서브 태스크들을 수행할 타겟 노드들(target nodes)을 검색하는 단계; 상기 서브 태스크들을 상기 타겟 노드들에 대응하여 패키징하여 포그 어플리케이션 조각들을 생성하는 단계; 상기 포그 어플리케이션 조각들을 상기 타겟 노드들에 각각 배포하는 단계; 및 상기 타겟 노드들에서 상기 서브 태스크들을 실행하는 단계를 포함한다. 여기서, 상기 포그 트래커는 상기 포그 노드들 각각의 리소스 정보를 포함한다.To achieve the above object, a fog computing method according to an embodiment of the present invention includes a user terminal, and a fog node and a fog tracker located between the user terminal and the cloud. Is performed in a fog computing system. The fog computing method includes converting an application developed by object-oriented programming in the user terminal into a fog application composed of a plurality of subtasks; Retrieving target nodes to perform the sub-tasks among the fog nodes in the fog tracker; Packaging the sub-tasks corresponding to the target nodes to generate fog application pieces; Distributing the fog application pieces to the target nodes, respectively; And executing the sub-tasks on the target nodes. Here, the fog tracker includes resource information of each of the fog nodes.
또한, 상기 포그 노드들은 지연시간(latency)에 기초하여 복수의 포그 클러스터들로 분류(clustering)되고, 상기 타겟 노드들을 검색하는 단계는, 상기 포그 클러스터들 중 상기 사용자 단말과 가장 인접한 포그 클러스터를 검색하는 단계; 및 상기 검색된 포그 클러스터에서 상기 타겟 노드들을 검색하는 단계를 포함할 수 있다.In addition, the fog nodes are classified into a plurality of fog clusters based on latency, and searching for the target nodes includes searching for a fog cluster closest to the user terminal among the fog clusters. To do; And searching for the target nodes in the searched fog cluster.
또한, 상기 어플리케이션은 복수의 객체들(objects)를 포함하고, 상기 어플리케이션을 상기 포그 어플리케이션으로 변환하는 단계는, 상기 객체들을 상기 서브 태스크들로 분리(decompose)하는 단계; 및 상기 객체들 간의 변수(variable) 및 기능(function)을 활용한 커뮤니케이션을 상기 포그 노드들 사이에서의 메시지 패싱으로 변환하는 단계를 포함할 수 있다.In addition, the application includes a plurality of objects (objects), and converting the application to the fog application comprises: decomposing the objects into the sub-tasks; And converting communication using variables and functions between the objects into message passing between the fog nodes.
또한, 상기 포그 컴퓨팅 방법은, 상기 어플리케이션을 상기 포그 어플리케이션들로 변환하는 단계 이전에, 상기 포그 노드들 각각의 리소스 정보를 상기 포그 트래커에 등록하는 단계를 더 포함하고, 상기 리소스 정보는 상기 포그 노드들 각각의 자원 정보, 지연시간 정보, 운영 체제 정보 및 플랫폼 정보를 포함하며, 상기 타겟 노드들은 상기 리소스 정보에 기초하여 검색될 수 있다.In addition, the fog computing method further includes registering resource information of each of the fog nodes to the fog tracker before converting the application to the fog applications, and the resource information includes the fog node. Each of them includes resource information, latency information, operating system information, and platform information, and the target nodes can be searched based on the resource information.
또한, 상기 포그 어플리케이션들을 패키징하는 단계는, 상기 타켓 노드들이 상기 포그 어플리케이션이 실행되는 도커 환경을 제공하는 경우, 상기 서브 태스크들을 도크 이미지로 패키징하는 단계; 및 상기 타켓 노드들이 상기 도커 환경을 제공하지 않는 경우, 상기 서브 태스크들을 크로스 컴파일하는 단계를 포함할 수 있다.Further, the packaging of the fog applications may include: when the target nodes provide a docker environment in which the fog application is executed, packaging the subtasks as a dock image; And when the target nodes do not provide the docker environment, cross compiling the subtasks.
상기 포그 컴퓨팅 방법은, 상기 서브 태스크들 중 제1 서브 태스크를 스케일 아웃하는 단계를 더 포함하고, 상기 제1 서브 태스크를 스케일 아웃하는 단계는, 상기 포그 트래커를 통해 상기 포그 노드들 중에서 상기 제1 서브 태스크에 대응하는 유휴 노드를 검색하는 단계; 상기 제1 서브 태스크에 대한 노드 정보에 상기 유휴 노드를 추가하는 단계; 및 상기 유휴 노드에 기초하여 상기 제1 서브 태스크에 메시지를 전달하는 제2 서브 태스크의 라우팅 정보를 수정하는 단계를 포함할 수 있다.The fog computing method further includes scaling out a first sub-task among the sub-tasks, and scaling out the first sub-task includes the first of the fog nodes through the fog tracker. Searching for an idle node corresponding to the sub-task; Adding the idle node to node information for the first sub-task; And modifying routing information of a second subtask that delivers a message to the first subtask based on the idle node.
상기 포그 컴퓨팅 방법은, 상기 타겟 노드들 중 제1 타겟 노드에 장애가 발생한 경우, 상기 제1 타겟 노드의 부모 노드인 제2 타겟 노드를 통해 제3 타겟 노드를 검색하는 단계를 더 포함할 수 있다.The fog computing method may further include searching for a third target node through a second target node that is a parent node of the first target node when a failure occurs in the first target node among the target nodes.
상기 목적을 달성하기 위하여 본 발명의 일 실시예에 따른 포그 컴퓨팅 방법은, 사용자 단말, 및 상기 사용자 단말과 클라우드(cloud) 사이에 위치하는 포그 노드(fog node) 및 포그 트래커(fog tracker)를 포함하는 포그 컴퓨팅 시스템에서 수행된다. 상기 포그 컴퓨팅 방법은, 상기 사용자 단말에서 하나의 파일을 복수의 파일 조각들로 분할하여 인코딩하는 단계; 상기 포그 트래커를 통해 상기 포그 노드들 중에서 상기 파일 조각들을 저장할 타겟 노드들을 검색하는 단계; 상기 타겟 노드들에 상기 파일 조각들을 각각 배포하여 저장하는 단계; 상기 타겟 노드들 중에서 가장 빠른 응답속도를 가지는 대상 노드들을 선택하는 단계; 및 상기 대상 노드들로부터 상기 파일 조각들을 수집하여 디코딩하는 단계를 포함한다.To achieve the above object, a fog computing method according to an embodiment of the present invention includes a user terminal, and a fog node and a fog tracker located between the user terminal and the cloud. Is performed in a fog computing system. The fog computing method includes: encoding a file by dividing a file into a plurality of file fragments in the user terminal; Searching for target nodes to store the file fragments among the fog nodes through the fog tracker; Distributing and storing the file fragments to the target nodes, respectively; Selecting target nodes having the fastest response speed among the target nodes; And collecting and decoding the pieces of the file from the target nodes.
본 발명의 실시예들에 따른 포그 컴퓨팅 시스템 및 포그 컴퓨팅 방법은, 클라우드 기반 서버 어플리케이션을 사용자 어플리케이션에 근접하게 위치시킴으로써 사용자 어플리케이션에 빠른 응답 속도를 제공하고, 컴퓨팅 리소스를 많이 활용하는 사용자 어플리케이션을 사용자 가까이에 있는 주변 유휴 자원들에 분산시켜 실행함으로써 어플리케이션 실행속도를 향상시키고 배터리 사용량을 줄일 수 있다.The fog computing system and the fog computing method according to embodiments of the present invention provide a fast response speed to a user application by placing a cloud-based server application close to the user application, and a user application that uses a lot of computing resources is closer to the user It can improve application execution speed and reduce battery usage by distributing and executing it in the surrounding idle resources.
또한, 포그 컴퓨팅 시스템 및 포그 컴퓨팅 방법은, 데이터를 노드 주변에 위치하는 유휴 스토리지 자원들에 저장함으로써 클라우드 기반 스토리지 시스템에 비해 빠른 응답 속도를 제공하고, 하나의 파일을 조각내어 여러 노드에 분산하여 저장한 파일 조각 중 일부의 파일만 있어도 완전한 파일을 얻을 수 있는 폴트 톨로런스(fault-tolerance)를 제공하며, 데이터를 여러 노드들에 분산시켜 저장함으로써 한 스토리지 서비스 제공 업체에 종속되지 않을 수 있다.In addition, the fog computing system and the fog computing method provide a faster response speed compared to a cloud-based storage system by storing data in idle storage resources located around the node, and store and distribute one file to multiple nodes It provides a fault-tolerance that allows you to get a complete file even if only a part of a file fragment is present, and may not be dependent on one storage service provider by distributing and storing data among multiple nodes.
나아가, 포그 컴퓨팅 시스템 및 포그 컴퓨팅 방법은, 전 세계 유휴 컴퓨팅 및 스토리지 자원을 탈중앙화된 형태로 관리, 추적, 검색할 수 있는 시스템 및 다른 어플리케이션들에게 자원을 공유해줌으로써 블록체인 기반의 초소액 인센티브를 제공받는 시스템을 제공함으로써, 전 세계 유휴 컴퓨팅 및 스토리지 자원을 활용할 수 있다.Furthermore, the fog computing system and the fog computing method provide blockchain-based micro-miniature incentives by sharing resources to systems and other applications that can manage, track, and search idle computing and storage resources around the world in a decentralized form. By providing a system that is provided, it is possible to utilize idle computing and storage resources around the world.
도 1은 본 발명의 실시예들에 따른 포그 컴퓨팅 시스템을 나타내는 블록도이다.
도 2는 도 1의 포그 컴퓨팅 시스템의 논리적 개요(logical overview)를 나타내는 도면이다.
도 3은 도 1의 포그 컴퓨팅 시스템에 포함된 포그의 일 예를 나타내는 블록도이다.
도 4는 도 1의 포그 컴퓨팅 시스템에서 파일을 분산 저장하는 과정을 설명하는 도면이다.
도 5a는 도 1의 포그 컴퓨팅 시스템에서 어플리케이션을 포그 어플리케이션으로 변환하는 과정을 설명하는 도면이다.
도 5b는 도 1의 포그 컴퓨팅 시스템에서 포그 어플리케이션들을 배포하는 과정을 설명하는 도면이다.
도 6은 포그 어플리케이션의 일 예를 나타내는 도면이다.
도 7은 도 1의 포그 컴퓨팅 시스템에서 포그 어플리케이션을 스케일 아웃하는 과정을 설명하는 도면이다.
도 8은 도 1의 포그 컴퓨팅 시스템에서 어플리케이션의 문제(fail)를 해결하는 과정을 설명하는 도면이다.
도 9a 내재 도 9c, 도 10a 및 도 10b는 포그 어플리케이션의 개발 과정을 설명하는 도면들이다.
도 11은 도 1의 포그 컴퓨팅 시스템에 포함된 포그 트래커의 클러스터링 알고리즘의 일 예를 나타내는 도면이다.
도 12a 및 도 12b는 도 1의 포그 컴퓨팅 시스템에 포함된 포그 노드들의 지연시간을 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 블록체인 기반의 포그 인센티브 모델을 나타내는 블록도이다.
도 14는 도 13의 포그 인센티브 모델의 일 예를 나타내는 블록도이다.
도 15a는 본 발명의 실시예들에 따른 포그 스토리지 시스템을 나타내는 블록도이다.
도 15b는 도 15a의 포그 스토리지 시스템에서 사용되는 메타데이터의 일 예를 나타내는 도면이다.
도 16은 본 발명의 일 실시예에 따른 포그 컴퓨팅 방법을 나타내는 순서도이다.
도 17은 본 발명의 다른 실시예에 따른 포그 컴퓨팅 방법을 나타내는 순서도이다.1 is a block diagram illustrating a fog computing system according to embodiments of the present invention.
FIG. 2 is a diagram illustrating a logical overview of the fog computing system of FIG. 1.
3 is a block diagram illustrating an example of a fog included in the fog computing system of FIG. 1.
FIG. 4 is a diagram illustrating a process of distributing and storing files in the fog computing system of FIG. 1.
5A is a diagram illustrating a process of converting an application into a fog application in the fog computing system of FIG. 1.
FIG. 5B is a diagram illustrating a process of distributing fog applications in the fog computing system of FIG. 1.
6 is a diagram illustrating an example of a fog application.
FIG. 7 is a diagram illustrating a process of scaling out a fog application in the fog computing system of FIG. 1.
8 is a diagram illustrating a process of solving an application problem in the fog computing system of FIG. 1.
9A, 9C, 10A, and 10B are diagrams illustrating a development process of a fog application.
11 is a diagram illustrating an example of a clustering algorithm of a fog tracker included in the fog computing system of FIG. 1.
12A and 12B are diagrams illustrating delay times of fog nodes included in the fog computing system of FIG. 1.
13 is a block diagram illustrating a blockchain-based fog incentive model according to embodiments of the present invention.
14 is a block diagram illustrating an example of the fog incentive model of FIG. 13.
15A is a block diagram illustrating a fog storage system according to embodiments of the present invention.
15B is a diagram illustrating an example of metadata used in the fog storage system of FIG. 15A.
16 is a flowchart illustrating a fog computing method according to an embodiment of the present invention.
17 is a flowchart illustrating a fog computing method according to another embodiment of the present invention.
도 1은 본 발명의 실시예들에 따른 포그 컴퓨팅 시스템을 나타내는 블록도이다. 도 2는 도 1의 포그 컴퓨팅 시스템의 논리적 개요(logical overview)를 나타내는 도면이다. 1 is a block diagram illustrating a fog computing system according to embodiments of the present invention. FIG. 2 is a diagram illustrating a logical overview of the fog computing system of FIG. 1.
먼저 도 1을 참조하면, 포그 컴퓨팅 시스템(100)(또는, 포그 컴퓨팅 프레임워크, 포그 컴퓨팅 아키텍처, 포그 운영체제)는 사용자 단말(110), 포그(120) 및 클라우드(130)을 포함한다. 사용자 단말(110), 포그(120) 및 클라우드(130)는 유무선 네트워크를 통해 상호 연결될 수 있다.Referring first to FIG. 1, the fog computing system 100 (or the fog computing framework, fog computing architecture, and fog operating system) includes a
사용자 단말(110)은 포그 컴퓨팅 시스템(100)의 가장 낮은 계층에 위치할 수 있다. The
포그(120)는 포그 컴퓨팅 시스템(100)의 중간 계층에 위치하며, 포그(120)는 복수의 포그들(120a, 120b)(또는, 포그 클러스터들)을 포함하고, 포그 노드들(121-1 내지 121-N)(단, N은 2 이상의 정수)을 통해 구현될 수 있다. 포그 노드들(121-1 내지 121-N)은 에지 디바이스, 엑세스 포인트, 게이트웨이, 소형 서버 등을 포함하며, 네트워크 가징자리에 인접하여 위치할 수 있다. 포그 노드들(121-1 내지 121-N)은 데이터를 처리, 분석 및 저장하는 데 충분한 자원을 가질 수 있다. 한편, 포그 노드들(121-1 내지 121-N)은 불필요한 데이터 부분을 제거하고 유의미한 데이터만을 클라우드(130)에 전송할 수도 있다.The
또한, 포그(120)는 포그 트래커(122)를 포함할 수 있다. 포그 트래커(122)는 포그 노드들(121-1 내지 121-N)의 유휴 자원 정보를 관리할 수 있다. 포그 트래커(122)는 유휴 자원 정보를 블록체인 기술을 이용하여 포그 컴퓨팅 시스템(100) 내 다른 포그 트래커들과 분산하여 저장할 수 있다. 포그 트래커(122)는 블록체인 노드일 수 있다.In addition, the
클라우드(130)는 포그 컴퓨팅 시스템(100)의 최상위 계층에 위치하며, 데이터의 영구적인 저장 및 전역 데이터의 분석 등을 수행할 수 있다.The
포그 컴퓨팅 시스템(100)은 사용되지 않는, 즉, 사용자 단말(100)의 소유가 아닌 유휴 컴퓨팅 및 스토리지 자원을 포그 노드로 활용할 수 있다. 포그 노드들(121-1 내지 121-N)은 클라우드(130)에 비해 사용자 단말(110)과 근접해 위치하므로, 보다 상호 작용이고, 보다 반응적(more interactive, more responsive)인 특성을 가질 수 있다.The
1. 사용자 단말(110)로부터 포그(120)로의 연산 오프로딩(computation offloading)1. Computation offloading from
사용자 단말(110)의 어플리케이션(또는, 클라이언트 어플리케이션)이 포그 노드(121)의 유휴 컴퓨팅을 활용해 어플리케이션의 로드를 분산할 필요가 있거나, 포그 노드(121)의 유휴 스토리지를 활용해 데이터를 저장할 필요가 있는 경우, 포그 에이전트는 어플리케이션을 주변의 포그 노드(121)에 배포해 동작시킬 수 있다. 여기서, 포그 에이전트는 사용자 단말(110) 등에 위치하거나 설치되며, 어플리케이션을 포그 노드들(121)로 오프로딩하는 에이전트일 수 있다.The application (or client application) of the
먼저, 사용자 단말(110)에 설치된 포그 에이전트는 블록체인 노드인 포그 트래커(122)를 통해 포그 에이전트(또는, 사용자 단말(110)) 주변에 있는 포그 노드들(121-1 내지 121-N)의 유휴 자원들의 정보를 확인할 수 있다.First, the fog agent installed in the
2. 클라우드(130)로부터 포그(121)로의 이동(migration)2. Moving from the
서버 어플리케이션은 주로 클라우드(130)에 위치하여 동작한다. 그러나, 사용자 단말(110)과 클라우드(130)간의 물리적 거리가 먼 경우, 서버 어플리케이션을 통해 제공되는 서비스의 응답속도가 느려질 수 있다. 따라서, 포그 컴퓨팅 시스템(100)은 서버 어플리케이션의 적어도 일부(또는, 일부 조각)를 사용자 단말(110)과 가장 인접하여 위치하는 포그 노드(121)로 이동(migration)시킬 수 있다. 이 경우, 사용자 단말(110)은 상대적으로 멀리 위치하는 클라우드에서 동작하는 서버 어플리케이션과 통신하는 대신, 상대적으로 가까이에 위치하는 포그 노드(121)에 배포된 서버 어플리케이션과 통신할 수 있다.The server application is mainly located in the
도 2를 참조하면, 포그 컴퓨팅 시스템(100)(또는, 포그 운영체제)는 물리 계층, 포그 계층 및 포그 어플리케이션으로 구분될 수 있다.Referring to FIG. 2, the fog computing system 100 (or a fog operating system) may be divided into a physical layer, a fog layer, and a fog application.
물리 계층(Physical Layer)은 실제 물리적 장비들을 의미할 수 있다. 물리적 장비들에 포그 에이전트를 운용하면 물리적 장비들은 포그 노드로서 활동할 수 있다. 물리적 장비들(또는, 사용자 단말(110))은 주변의 포그 자원들(예를 들어, 제1 내지 제4 포그 노드들(121-1 내지 121-4)의 유휴 자원들)을 활용해 컴퓨팅 및 스토리지 서비스를 이용할 수 있다. 즉, 물리적 장비들은 포그 계층(Fog Layer)을 구축할 수 있다.The physical layer may refer to actual physical devices. By operating a fog agent on physical devices, the physical devices can act as fog nodes. The physical equipment (or the user terminal 110) computes and utilizes surrounding fog resources (eg, idle resources of the first to fourth fog nodes 121-1 to 121-4). Storage services are available. That is, physical devices can build a fog layer.
포그 에이전트가 설치된 포그 노드들(예를 들어, 제1 내지 제4 포그 노드들(121-1 내지 121-4)은 자신들의 리소스 정보 등을 블록체인(BC) 기반의 포그 트래커 (122)(또는, 포그 트래커(122a)를 통해 제공되는 포그 트래커 서비스)에 등록할 수 있다. 포그 트래커(122a)를 통해, 전 세계에 위치하는 어떤 포그 노드라도 자신과 가까이 위치하고 자신이 필요로 하는 요구사항을 만족하는 포그 노드를 찾을 수 있다. 후술하여 설명하겠지만, 포그 노드들의 활발한 참여를 위해 자원을 제공한 노드들에 블록체인 기반의 인센티브가 제공될 수도 있다.Fog nodes (for example, first to fourth fog nodes 121-1 to 121-4) in which fog agents are installed, their resource information and the like are based on a blockchain (BC) -based fog tracker 122 (or , Fog tracker service provided through the
포그 어플리케이션 계층(Fog Application Layer)은 포그 노드들에서 동작하는 어플리케이션들의 계층을 의미한다. 포그 어플리케이션은 여러 포그 노드들에 걸쳐 존재할 수 있으며, 또한, 여러 포그 클러스터들에 걸쳐 존재할 수도 있다. 예를 들어, 제1 포그 어플리케이션(APP1)은 제1 내지 제4 포그 어플리케이션 조각들(APP_F1 내지 APP_F4)를 포함하고, 이들은 제1 내지 제4 포그 노드들(121-1 내지 121-4)에 결쳐 존재할 수 있다. 예를 들어, 제2 포그 어플리케이션(APP2)은 제1 및 제2 포그 클러스터들(120a, 120b)에 걸쳐 존재하고, 제3 포그 어플리케이션(APP3)은 제2 및 제2 포그 클러스터들(120b, 120c)에 걸쳐 존재할 수 있다.The fog application layer refers to a layer of applications operating in fog nodes. A fog application can span multiple fog nodes, and can also span multiple fog clusters. For example, the first fog application APP1 includes the first to fourth fog application pieces APP_F1 to APP_F4, which are connected to the first to fourth fog nodes 121-1 to 121-4. Can exist. For example, the second fog application APP2 exists across the first and
도 3은 도 1의 포그 컴퓨팅 시스템에 포함된 포그의 일 예를 나타내는 블록도이다.3 is a block diagram illustrating an example of a fog included in the fog computing system of FIG. 1.
도 3을 참조하면, 포그(120)(또는, 포그 운영체제)는 컴퓨팅부(310), 스토리지부, 네트워킹부 및 블록체인부(320)를 포함할 수 있다. Referring to FIG. 3, the fog 120 (or the fog operating system) may include a
컴퓨팅부(310)는 주로 포그 컴퓨팅 프레임워크(또는, 연산 오프로딩)의 기능을 수행할 수 있다 컴퓨팅부(310)는 리소스 매니저(311), 태스크 매니저(312), 컨테이너 매니저(314), 바이너리 매니저(315) 및 가상화기(316)을 포함할 수 있다.The
리소스 매니저(311)는 포그 노드(및 사용자 단말)의 자원을 모니터링 할 수 있다. 태스크 매니저(312)는 포그 노드에 할당된 작업(job)(예를 들어, 포그 어플리케이션을 구성하는 서브태스크(task))의 처리 상태를 관리하며, 작업의 실행 및 종료를 제어할 수 있다. 컨테이너 매니저(314) 및 바이너리 매니저(315)는 어플리케이션을 포그 어플리케이션으로 변환하는 과정에서, 포그 어플리케이션을 구성하는 포그 어플리케이션 조각을 해당 포그 노드에서 실행 가능하게 패키징하며, 예를 들어, 컨테이너 매니저(314)는 도커(docker)의 도커 이미지(docker image)로 패키징하며, 바이너리 매니저(315)는 크로스 컴파일(cross compile)을 수행할 수 있다. 가상화기(316)는 독립적으로 포그 어플리케이션 등을 실행할 수 있는 가상환경을 제공할 수 있다.The
도시되지 않았으나, 컴퓨팅부(310)는 가상화된 포그 노드를 관리하는 가상화 포그 노드 매니저(virtualized fog node manager), 포그 어플리케이션 및 이의 실행 상태를 관리하는 어플리케이션 매니저(application manager) 및 포그 어플리케이션들을 오케스트레이션(orchestration)하는 오케스트레이터(orchestrator)를 더 포함할 수 있다.Although not shown, the
스토리지부는 포그 스토리지(즉, 데이터 분산 저장)의 기능을 수행하며, 스토어 매니터(313)로 구성될 수 있다. 네트워킹부는 네트워크 통신 기능을 수행할 수 있다. The storage unit performs a function of fog storage (ie, distributed data storage) and may be configured as a
블록체인부(320)는 포그 트래커의 기능인, 전세계 유휴 포그 컴퓨팅, 스토리지 자원들의 정보를 저장, 관리하고 검색 기능 등을 제공할 수 있다. 블록체인부(320)는 포그 노드들의 유휴 자원 정보를 저장/관리하는 리소스 스토어(321), 데이터의 관리 정보를 나타내는 메타데이터를 저장/관리하는 메타데이터 스토어(322), 포그 노드들의 식별 정보를 설정/저장/관리하는 네이밍 스토어(323), 데이터의 암호화에 사용되는 키(또는, 키값)을 저장/관리하는 키밸류 스토어(324)를 포함할 수 있다.The
도 4는 도 1의 포그 컴퓨팅 시스템에서 파일을 분산 저장하는 과정을 설명하는 도면이다.FIG. 4 is a diagram illustrating a process of distributing and storing files in the fog computing system of FIG. 1.
도 4를 참조하면, 포그 스토리지 매니저(410)의 인코딩부(Encoding)는 호스트(예를 들어, 사용자 단말(110))의 물리 볼륨(physical volume)에 저장된 하나의 파일을 복수의 파일 조각들로 자르고, 복수의 파일 조각들 각각을 인코딩 할 수 있다.4, the encoding unit of the fog storage manager 410 (Encoding) is a single file stored in a physical volume (physical volume) of the host (for example, the user terminal 110) into a plurality of file fragments You can cut and encode each of multiple file fragments.
인코딩된 파일 조각들(Encoded File Shares)을 포그 노드들에 저장하기 위해, 호스트는 포그 트래커(122)에게 주변의 유휴 스토리지 자원 정보(예를 들어, 포그 노드들(121-1 내지 121-3)의 유휴 스토리지 자원 정보)를 요청한다. 포그 트래커(122)로부터 주변의 유휴 스토리지 자원 정보를 수신하면, 호스트는 인코딩된 파일 조각들을 해당 포그 노드들에 분산하고, 포그 노드들은 인코딩된 파일 조각들을 저장할 수 있다. 인코딩된 파일 조각들과 포그 노드들간의 관계 정보(예를 들어, 특정 인코딩된 파일 조각이 특정 포그 노드에 저장되었다는 정보)는 메타데이터(metadata)의 형태로 존재하며, 메타데이터는 공개키(public key)에 기초하여 암호화되고, 암호화된 메타데이터는 블록체인(예를 들어, 포그 트래커(122)), 클라우드, 또는 로컬 시스템(예를 들어, 사용자 단말(110))에 저장될 수 있다. 사용자 단말(110)은 언제든지 분산 저장된 파일 조각들을 모아 하나의 파일을 찾을 수 있다.In order to store encoded file shares in fog nodes, the host sends the
파일 조각들은 포그 노드들(121)에만 저장될 수 있으나 이에 한정되는 것은 아니다. 필요한 경우 포그 노드들(121)과 클라우드 스토리지 시스템(즉, 상대적으로 안정적이고 대용량 스토리지 기능을 지원하는 스토리지 시스템으로, 클라우드(130)의 스토리지 시스템)과 동기화하고, 파일 조각들은 클라우드 스트로지 시스템에 저장될 수도 있다. 즉, 사용자 단말(110)은 사용자 단말(110)에 인접하여 위치하는 포그 노드들(121)에 파일을 낮은 지연시간(latency)을 가지고 빠르게 저장하고, 사용자 단말(110)보다 네트워크 대역폭(network bandwidth), 배터리 등의 환경이 우수한 포그 노드들(121)이 파일 조각들을 클라우드 스토리지와 동기화(sync) 할 수 있다.File fragments may be stored only in the
도 5a는 도 1의 포그 컴퓨팅 시스템에서 어플리케이션을 포그 어플리케이션으로 변환하는 과정을 설명하는 도면이다. 어플리케이션의 포그 어플리케이션들로의 변환은 자동 및/수동으로 수행될 수 있다. 5A is a diagram illustrating a process of converting an application into a fog application in the fog computing system of FIG. 1. The conversion of the application to fog applications can be performed automatically and / or manually.
먼저 도 5a를 참조하면, 어플리케이션이 포그 어플리케이션들로 변환되기 위해, 어플리케이션(또는, legacy application)은 객체 지향 프로그래밍(object-oriented programming)을 통해 개발되거나 생성되어야 한다. 이 경우, 어플리케이션에 포함된 하나의 객체(object)는 포그 어플리케이션에서 하나의 서브태스크(subtask)가 될 수 있다. Referring first to FIG. 5A, in order for an application to be converted into fog applications, an application (or legacy application) must be developed or generated through object-oriented programming. In this case, one object included in the application may be one subtask in the fog application.
사용자 단말(110)은 어플리케이션에 포함된 객체들을 서브태스크들(예를 들어, SubTask A/B/C)로 분리(decompose)할 수 있다. 한편, 사용자 단말(110)은 어플리케이션 내에서 객체들간의 변수(variable) 및 기능(function)을 활용한 커뮤니케이션을 네트워크 상의 메시지 패싱(포그 노드들 사이의 메시지 전달)의 형태로 구성하거나 변환할 수 있다. 따라서, 하나의 포그 노드에서만 동작 가능한 어플리케이션이, 네트워크 상의 메시지 패싱을 통해 통신할 수 있는 복수의 서브태스크들로 바뀔 수 있다.The
이후, 사용자 단말(110)은 서브태스크들을 포그 노드들에 배포되어 동작할 수 있는 형태로 패키징(Crystalize)할 수 있다. 예를 들어, 타겟 노드(즉, 서브태스크가 할당된 포그 노드로, 예를 들어, 제3 타겟 노드(TN3))가 가상 실행 환경을 제공할 경우, 서브태스크는 가상 실행 환경의 배포 이미지(예를 들어, docker의 docker image)로 패키징 될 수 있다. 다른 예를 들어, 타겟 노드(예를 들어, 제1 및 제2 타겟 노드들(TN1, TN2))가 가상 실행 환경을 제공하지 않는 경우, 서브태스크는 타겟 노드에 대응하여 크로스 컴파일(cross compile) 될 수 있다. 패키징을 통해 포그 어플리케이션 조각들(예를 들어, 제1 내지 제3 포그 어플리케이션 조각들(APP_F1, APP_F2, APP_F3)이 생성될 수 있다. Subsequently, the
포그 트래커(122)를 통해 포그 어플리케이션 조각들을 실행하기에 적절한 유휴 자원을 가지고 있는 주변 포그 노드들이 검색되고, 포그 노드들의 포그 에이전트들과의 통신을 통해 포그 어플리케이션 조각들이 배포(deploy)될 수 있다.Through the
도 5b는 도 1의 포그 컴퓨팅 시스템에서 포그 어플리케이션들을 배포하는 과정을 설명하는 도면이다. 도 5b에는 포그 노드들(121-1 내지 121-5)이 자신들의 리소스 정보를 포그 트래커(122)에 등록하는 구성과, 자신 주변의 유휴 리소스 정보를 요청하는 구성과, 포그 어플리케이션 조각들(APP_F1 내지 APP_F4)이 주변 포그 노드들에 배포되는 구성이 도시되어 있다. FIG. 5B is a diagram illustrating a process of distributing fog applications in the fog computing system of FIG. 1. In FIG. 5B, the fog nodes 121-1 to 121-5 register their resource information to the
모든 포그 에이전트들은 자신이 설치되어 있는 포그 노드의 리소스 정보를 블록체인 노드인 포그 트래커(122)에 등록할 수 있다.All fog agents can register resource information of the fog node on which they are installed on the
표 1은 포그 트래커(122)에 등록된 제1 내지 제5 포그 노드들(121-1 내지 121-5)의 리소스 정보들의 일 예를 나타낸다.Table 1 shows an example of resource information of the first to fifth fog nodes 121-1 to 121-5 registered in the
사용자 단말(110)(또는, 특정 포그 노드)에서 동작하는 포그 어플리케이션이 4 개의 포그 어플리케이션 조각들(APP_F1 내지 APP_F4)(또는, 서브태스크들)로 구성되는 경우, 포그 어플리케이션 조각들(APP_F1 내지 APP_F4)마다 필요한 리소스 정보, 배포되어야 할 타겟 노드의 OS 정보 등과 같은 요구사항이 존재할 수 있다.When the fog application operating on the user terminal 110 (or a specific fog node) is composed of four fog application fragments (APP_F1 to APP_F4) (or subtasks), fog application fragments (APP_F1 to APP_F4) Requirements such as resource information required for each and OS information of a target node to be distributed may exist.
사용자 단말(110)은 리소스 요청(resource request) 메시지를 통해 포그 트래커(122)에게 필요한 리소스 정보를 요청할 수 있다. 이 경우, 포그 트래커(122)는 자원 할당 알고리즘(resource allocation algorithm)을 통해 가장 적절한 포그 노드 정보들(즉, 필요한 리소스에 가장 부합하는 리소스를 가지는 포그 노드들의 정보)을 사용자 단말(110)에 리턴(response)할 수 있다.The
사용자 단말(110)은 수신한 포그 노드 정보들에 기초하여 해당 포그 노드들에 포그 어플리케이션 조각들을 각각 배포할 수 있다. 예를 들어, 제1 포그 노드(211-1)에 제2 어플리케이션 조각(APP_F2)을 배포하고, 제5 포그 노드(211-5)에 제3 어플리케이션 조각(APP_F3)을 배포할 수 있다.The
앞서 설명한 바와 같이, 타겟 노드가 도커(docker) 등의 가상화 계층(virtualization layer)(예를 들어, 어플리케이션이 실행되는 가상머신 환경 등)을 제공하는 경우, 사용자 단말(110)은 해당 가상 환경(virtualization)에 맞게 포그 어플리케이션 조각을 패키징 할 수 있다. 예를 들어 타겟 노드(예를 들어, 제1 포그 노드(121-1))가 도커 환경을 제공하는 경우, 사용자 단말(110)은 포그 어플리케이션(예를 들어, 제2 포그 어플리케이션 조각(APP_F2))을 도커 이미지(docker image)로 패키징하여 배포할 수 있다.As described above, when the target node provides a virtualization layer (eg, a virtual machine environment in which an application is executed), such as a docker, the
어플리케이션 분리(application decomposition)이 수행될 때 타겟 노드가 도커와 같은 가상화 계층을 제공하지 않는 경우, 사용자 단말(110)은 크로스 컴파일(cross-compilation) 기능을 이용해 포그 어플리케이션 조각을 타겟 노드에 맞게 크로스 컴파일(cross compile) 할 수 있다. 예를 들어, 포그 어플리케이션 조각은 타겟 노드의 운영 체제(Operating System) 및 플랫폼(platform)에 맞게 크로스 컴파일되어 바이너리(binary) 형태로 배포될 수 있다. 아래의 표 2는 타겟 노드의 OS 및 플래폼의 예들을 나타낸다.When the target node does not provide a virtualization layer such as a docker when application decomposition is performed, the
도 6은 포그 어플리케이션의 일 예를 나타내는 도면이다.도 6을 참조하면, 포그 어플리케이션은 복수의 서브 태스크들로 이루어질 수 있다. 예를 들어, 제1 포그 어플리케이션(APP1)은 제1 내지 제3 포그 어플리케이션 조각들(APP_F1 내지 APP_F3)로 구성되고, 제2 포그 어플리케이션(APP2)은 제4 내지 제7 포그 어플리케이션 조각들(APP_F4 내지 APP_F7)로 구성될 수 있다.FIG. 6 is a diagram illustrating an example of a fog application. Referring to FIG. 6, the fog application may include a plurality of sub-tasks. For example, the first fog application APP1 is composed of first to third fog application fragments APP_F1 to APP_F3, and the second fog application APP2 is fourth to seventh fog application fragments APP_F4 to APP_F7).
서브 태스크들은 메시지를 전달하는 커뮤니케이션의 방향에 따라 방향성 비사이클 그래프(Directed Acyclic Graph, 이하 DAG라 함)의 형태로 표현될 수 있다. 즉, DAG는 어플리케이션을 구성하는 서브태스크들의 메시지의 전달 방향을 나타낼 수 있다.The subtasks may be expressed in the form of a directed acyclic graph (hereinafter referred to as DAG) according to the direction of communication that delivers the message. That is, the DAG may indicate a message delivery direction of subtasks constituting an application.
포그 노드들에 복수의 포그 어플리케이션들이 동시에 배포되고 운용될 수 있기 때문에(예를 들어, 제1 내지 제4 타켓 노드들(TN1 내지 TN4)에 제1 및 제2 포그 어플리케이션들(APP1, APP2)이 배포될 수 있으므로), 상호 다른 포그 어플리케이션들은 상호 다른 DAG들로 관리될 수 있다. The first and second fog applications APP1 and APP2 are applied to the fog nodes because the plurality of fog applications can be simultaneously deployed and operated (for example, the first to fourth target nodes TN1 to TN4). Because they can be distributed), different fog applications can be managed with different DAGs.
DAG를 통해 하나의 어플리케이션의 동작을 관장하는 여러 개의 포그 에이전트들(예를 들어, 제1 내지 제4 타겟 노드들(TN1 내지 TN4)의 포그 에이전트들)은 부모-자식(parent-child) 형태의 트리 구조로 존재할 수 있다. 각 포그 에이전트는 자신의 자식 포그 에이전트(child fog agent)와 커뮤니케이션 하여 DAG 상의 서브태스크가 제대로 동작하는지 모니터링 할 수 있다. 예를 들어, 특정 서브태스크나 물리 노드(또는, 포그 노드, 타겟 노드)에 문제가 발생하여 자신의 자식 서브태스크(child subtask)(즉, 자식 포그 에이전트에서 동작하는 서브태스크)가 제대로 동작하지 않을 경우, 부모 에이전트(parent agent)는 해당 서브태스크에 대한 문제를 해결할 의무를 지닐 수 있다. Several FAG agents (eg, FAG agents of the first to fourth target nodes TN1 to TN4) that manage the operation of one application through the DAG are parent-child types It can exist in a tree structure. Each fog agent can communicate with its child fog agent to monitor whether subtasks on the DAG are working properly. For example, a problem occurs in a specific subtask or physical node (or a fog node, a target node), so that its child subtask (that is, a subtask running in a child fog agent) may not work properly. In this case, the parent agent may be obliged to solve the problem for the corresponding subtask.
도 7은 도 1의 포그 컴퓨팅 시스템에서 포그 어플리케이션을 스케일 아웃하는 과정을 설명하는 도면이다. 스케일 아웃(scale out)은 하나의 서브태스크(subtask)를 여러 노드들에 위치시켜 해당 서브태스크의 성능을 높이는 역할을 한다.FIG. 7 is a diagram illustrating a process of scaling out a fog application in the fog computing system of FIG. 1. Scale out serves to increase the performance of a subtask by placing one subtask in multiple nodes.
도 7을 참조하면, 센서(sensor)라는 역할의 서브태스크(예를 들어, 제2 포그 어플리케이션 조각(APP_F2))는 제1 포그 노드(121-1)에 배포되고, 분석기(analyzer)라는 역할의 서브태스크(예를 들어, 제3 포그 어플리케이션 조각(APP_F3))은 제2 포그 노드(121-2)에 배포되며, 시각화기(visualizer)라는 역할의 서브태스크(예를 들어, 제4 포그 어플리케이션 조각(APP_F4))는 제6 포그 노드(121-6)에 배포되고, 분석기의 서브태스크를 스케일 아웃하고자 하는 경우를 가정해 볼 수 있다.Referring to FIG. 7, a subtask (eg, a second fog application piece (APP_F2)) serving as a sensor is distributed to the first fog node 121-1 and serves as an analyzer. The subtask (for example, the third fog application piece (APP_F3)) is distributed to the second fog node 121-2, and a subtask (for example, the fourth fog application piece) acting as a visualizer. (APP_F4)) is distributed to the sixth fog node 121-6, and it can be assumed that a case in which the subtask of the analyzer is to be scaled out.
먼저, 포그 트래커(122)를 이용해 주변의 유휴 노드들(예를 들어, 제3 포그 노드(121-3) 내지 제5 포그 노드들(121-5))을 찾고, 네이밍 스토어(도 3 참조)에 분석기의 노드 정보(예를 들어, IP 리스트)를 업데이트 할 수 있다. 예를 들어, 제2 내지 제5 포그 노드들(121-3 내지 121-5)의 IP 주소들이 141.223.2.2, 141.223.2.3, 141.223.2.4, 141.223.2.5 인 경우, 해당 IP 주소들이 업데이트될 수 있다.First, use the
이후, 어플리케이션 DAG 정보 상에서 분석기에 메시지를 전달하는 서브태스크(예를 들어, 제2 어플리케이션 조각(APP_F2))의 라우팅 정보를 수정할 수 있다. 즉, 분석기가 하나인 경우에는 기존 분석기(Analyzer-0)에만 메시지가 전달되고, 스케일 아웃 이후에는 기존 분석기(Analyzer-0) 및 제1 내지 제3 분석기들(Analyzer-1, Analyzer-2, Analyzer-3)에 메시지가 전달되도록 메시지 전달 대상이 수정될 수 있다.Subsequently, routing information of a subtask (for example, a second application piece (APP_F2)) that delivers a message to the analyzer on the application DAG information may be modified. That is, when there is only one analyzer, a message is transmitted only to the existing analyzer (Analyzer-0), and after scale-out, the existing analyzer (Analyzer-0) and the first to third analyzers (Analyzer-1, Analyzer-2, Analyzer) The message delivery target may be modified so that the message is delivered to -3).
다양한 로드 밸런싱 알고리즘이 사용될 수 있으며, 예를 들어, 분석기들(Analyzer-0, Analyzer-1, Analyzer-2, Analyzer-3)에 균등하게 메시지를 전달하고자 하는 경우, 도 7에 도시된 바와 같이 "SimpleHash"와 같은 알고리즘을 통해 분석기들(Analyzer-0, Analyzer-1, Analyzer-2, Analyzer-3)에 메시지가 전달될 수 있다.Various load balancing algorithms can be used, for example, to deliver messages evenly to analyzers (Analyzer-0, Analyzer-1, Analyzer-2, Analyzer-3), as shown in FIG. 7 " SimpleHash "message can be delivered to the analyzers (Analyzer-0, Analyzer-1, Analyzer-2, Analyzer-3).
도 8은 도 1의 포그 컴퓨팅 시스템에서 어플리케이션의 문제(fail)를 해결하는 과정을 설명하는 도면이다. 도 8에는 포그 어플리케이션, 또는 포그 노드에 발생한 문제에 대한 장애 극복(failover) 과정이 도시되어 있다. 8 is a diagram illustrating a process of solving an application problem in the fog computing system of FIG. 1. 8 illustrates a process of failing over a problem occurring in a fog application or a fog node.
도 7 및 도 8을 참조하면, 도 8에는 도 7에 도시된 포그 어플리케이션과 실질적으로 동일한 포그 어플리케이션이 도시되어 있으며, 제2 포그 노드(121-2)에 문제가 발생한 경우를 가정할 수 있다.7 and 8, FIG. 8 illustrates a fog application substantially the same as the fog application illustrated in FIG. 7, and it may be assumed that a problem occurs in the second fog node 121-2.
"Analyzer sum=37, count=4"라는 상태 정보(state)는 포그 트래커(122)의 디렉토리 서비스(directory service)(예를 들어, 도 3을 참조하여 설명한 키 스토어(key-value store) 기반의 저장 시스템)에 저장될 수 있다.The state information “Analyzer sum = 37, count = 4” is based on the directory service of the fog tracker 122 (for example, based on a key-value store described with reference to FIG. 3). Storage system).
제2 포그 노드(121-2)(예를 들어, IP 주소가 141.223.2.2인 노드)의 분석기에 문제(fail)이 발생하는 경우(예를 들어, If isHealthy(fog://myapp) = false), 이는 어플리케이션 DAG상에서 제2 포그 노드(121-2)의 부모 포그 에이전트(parent Fog Agent)인 제1 포그 노드(121-1)에 전달되고(예를 들어, (notifyFailover (getDAGParent(fog://myapp/actor/analyzer))), 제1 포그 노드(121-1)는 장애 극복(failover)을 담당하게 될 수 있다.When a failure occurs in the analyzer of the second fog node 121-2 (for example, a node having an IP address of 141.223.2.2) (for example, If isHealthy (fog: // myapp) = false) ), Which is delivered to the first fog node 121-1, which is the parent fog agent of the second fog node 121-2 on the application DAG (for example, (notifyFailover (getDAGParent (fog: / / myapp / actor / analyzer))), the first fog node 121-1 may be in charge of failover.
이 경우, 우선적으로 기존 분석기를 대체할 새로운 분석기가 동작할 유휴 노드(예를 들어, 제3 포그 노드(121-3))를 찾고, 새로운 분석기를 새로 생성 시킬 수 있다(spawn(Analyzer)). 또한, 기존의 분석기가 가지고 있던 상태 정보를 "setState(Analyzer)"라는 인터페이스를 이용해 새로운 분석기에 설정(setup)할 수 있다.In this case, first, an idle node (for example, the third fog node 121-3) in which the new analyzer to replace the existing analyzer will operate may be found, and a new analyzer may be newly generated (spawn (Analyzer)). In addition, the state information of the existing analyzer can be set in a new analyzer using an interface called “setState (Analyzer)”.
이후, 네이밍 스토어(Naming Store, 도 3 참조)에 새로운 분석기의 IP주소를 업데이트 하면, 센서(Sensor)(예를 들어, 제1 포그 노드(121-1))가 새로운 분석기로 메시지를 전송할 수 있다. 따라서, 포그 어플리케이션이 정상적으로 동작하게 된다.Thereafter, when the IP address of the new analyzer is updated in the naming store (see FIG. 3), a sensor (eg, the first fog node 121-1) may transmit a message to the new analyzer. . Therefore, the fog application will operate normally.
표 3은 포그 프로그래밍 인터페이스(또는, 포그 어플리케이션의 프로그래밍 인터페이스)의 예들을 나타낸다. 사용자는 이 프로그래밍 인터페이스들을 이용하여 포그 어플리케이션을 개발할 수 있으며, 어플리케이션에 맞게 오케스트레이션(Orchestration) 기능을 구현할 수 있다.Table 3 shows examples of the fog programming interface (or the fog application's programming interface). A user can develop a fog application using these programming interfaces and implement an orchestration function according to the application.
[표 4]은 포그 이벤트 핸들러의 예들을 나타낸다. 사용자는 이 기능들을 활용하여 노드 또는 포그 어플리케이션에 특정 이벤트가 발생했을 경우 이를 처리하는 로직을 구현할 수 있다. 도 9a 내재 도 9c, 도 10a 및 도 10b는 포그 어플리케이션의 개발 과정을 설명하는 도면들이다. 도 9a 내지 도 9c에는 포그 어플리케이션을 작성하는 간단한 예시, 어플리케이션의 요구사항에 맞게 오케스트레이션(Orchestration) 기능을 구현하는 예시, 및 포그 프로그래밍 API를 이용해 맵리듀스(Map Reduce) 프레임워크를 구현한 예시를 보여준다.Table 4 shows examples of the fog event handler. Users can use these functions to implement logic to handle a specific event in a node or fog application. 9A, 9C, 10A, and 10B are diagrams illustrating a development process of a fog application. 9A to 9C show a simple example of creating a fog application, an example of implementing an orchestration function according to application requirements, and an example of implementing a Map Reduce framework using a fog programming API. .
먼저 도 7 및 도 9a를 참조하면, 도 7의 포그 어플리케이션(또는, 제2 내지 제4 포그 어플리케이션 조각들(APP_F2 내지 APP_F4))은 표 3의 포그 프로그래밍 인터페이스를 통해 개발될 수 있다. 또한, 도 9b에 도시된 바와 같이, 포그 어플리케이션 조각들(또는, 서브 태스크들(A, B, C))은 앤드 디바이스(Thing)(또는, 사용자 단말), 포그 및 클라우드에 배포될 수 있다.Referring first to FIGS. 7 and 9A, the fog application of FIG. 7 (or second to fourth fog application pieces (APP_F2 to APP_F4)) may be developed through the fog programming interface of Table 3. Also, as illustrated in FIG. 9B, fog application pieces (or sub-tasks A, B, and C) may be distributed to an end device (or user terminal), fog, and cloud.
도 9c를 참조하면, 메모리 부족(low memory)과 같은 이벤트가 발생한 경우, 클라우드로의 이동을 정의한 포그 프로그래밍 인터페이스에 따라, 포그 어플리케이션 조각을 앤드 디바이스(Thing)으로부터 클라우드로 이동시키는 기능을 구현할 수 있다.Referring to FIG. 9C, when an event such as low memory occurs, a function of moving a piece of fog application from the end device (Thing) to the cloud may be implemented according to a fog programming interface defining movement to the cloud. .
도 10a를 참조하면, 제1 포그 노드(FN1)(또는, 제1 포그 에이전트)에 포그 어플리케이션이 생성되는 경우, 포그 트래커(FT)에 요구 사항(requirements)을 충족하는 포그 노드에 대한 요청 및 회신이 이루어지고, 제2 포그 노드(FN2)에 맵퍼(Mapper) 역할의 서브태스크가, 제3 포그 노드(FN3)에 리듀서(Reducer) 역할의 서브태스크가, 제4 포그 노드(FN4)에 맵퍼(Mapper) 역할의 서브태스크가 배포될 수 있다.Referring to FIG. 10A, when a fog application is generated in a first fog node FN1 (or a first fog agent), a request and reply to a fog node that meets requirements in the fog tracker FT This is done, the second fog node (FN2) has a subtask as a mapper (Mapper), a third fog node (FN3) has a subtask as a reducer (Reducer), and a fourth fog node (FN4) as a mapper ( Mapper) role subtasks can be distributed.
도 10b를 참조하면, 제2 포그 노드(FN2)(또는, 제2 포그 에이전트)에서 로우 메모리와 같은 이벤트가 발생한 경우, 부모 포그 에이전트인 제1 포그 노드(FN1)에서 제4 포그 노드(FN4)를 새로운 포그 노드로 설정하고, 지연시간을 고려하여 제5 포그 노드(FN5)의 서브태스크를 제6 포그 노드(FN6)로 이동(migrate)할 수 있다.Referring to FIG. 10B, when an event such as low memory occurs in the second fog node FN2 (or the second fog agent), the fourth fog node FN4 in the first fog node FN1 as the parent fog agent Is set as a new fog node, and the subtask of the fifth fog node FN5 may be migrated to the sixth fog node FN6 in consideration of the delay time.
도 10a 및 도 10b를 참조하여 설명한 바와 같이, 맵리듀스 프레임워크가 구현될 수 있다.As described with reference to FIGS. 10A and 10B, a MapReduce framework may be implemented.
도 11은 도 1의 포그 컴퓨팅 시스템에 포함된 포그 트래커의 클러스터링 알고리즘의 일 예를 나타내는 도면이다. 도 12a 및 도 12b는 도 1의 포그 컴퓨팅 시스템에 포함된 포그 노드들의 지연시간을 나타내는 도면이다.11 is a diagram illustrating an example of a clustering algorithm of a fog tracker included in the fog computing system of FIG. 1. 12A and 12B are diagrams illustrating delay times of fog nodes included in the fog computing system of FIG. 1.
먼저, 도 1 및 도 11을 참조하면, 포그 트래커(122)는 전 세계의 유휴 자원들에 대한 정보를 가지며, 포그 노드(121)가 유휴 자원들의 정보를 요청했을 경우 유휴 자원들의 정보를 알려주는 역할을 수행한다. 그러나, 포그 노드의 자원 요청 정보가 올 때마다 최적의 리소스를 찾아 알려주는 일은 오버헤드가 많이 들 수 있다. 따라서, 포그 트래커(122)는 포그 노드들을 포그 클러스터(fog cluster)(또는, 포그 그룹)로 나누어 관리할 수 있다. 예를 들어, 도 11에 도시된 클러스터링 알고리즘을 이용하여, 포그 노드들은 비슷한 지연시간(latency) 기반의 그룹으로 나누어 관리될 수 있다.First, referring to FIGS. 1 and 11, the
예를 들어, 포항의 A대학 내부에 위치하는 포그 노드들, 대전의 B대학에 위치하는 포그 노드들, 및 서울의 C대학에 위치하는 포그 노드들은 랜덤 노드 S로의 latency를 측정할 경우, 도 12a 및 도 12b에 도시된 바와 같이 그룹들이 형성될 수 있다. 이러한 측정 결과를 바탕으로 포그 클러스터 또는 포그 그룹이 형성될 수 있다.For example, the fog nodes located inside the A university in Pohang, the fog nodes located in the B university in Daejeon, and the fog nodes located in the C university in Seoul, when measuring latency to the random node S, FIG. 12A And groups may be formed as shown in FIG. 12B. A fog cluster or fog group may be formed based on the measurement result.
예를 들어, 포항 근처에 있는 포그 노드 K가 리소스를 요청할 경우, 포그 트래커(122)는 전 세계 모든 포그 노드들 중 근접한 노드를 소팅(sorting) 하는 것이 아니라, 포그 노드 K와 가장 가까이 있는 포그 클러스터(fog cluster)를 찾고, 해당 포그 클러스터 안에 존재하는 포그 노드들의 정보만 알려줄 수 있다.For example, when the fog node K near Pohang requests a resource, the
도 13은 본 발명의 실시예들에 따른 블록체인 기반의 포그 인센티브 모델을 나타내는 블록도이다. 도 13에는 포그 유휴 자원을 이용하여 컴퓨팅이 이루어졌을 경우, 블록체인을 활용하여 리소스를 빌려준 포그 노드들에 인센티브를 제공하는 과정이 도시되어 있다. 도 14는 도 13의 포그 인센티브 모델의 일 예를 나타내는 블록도이다. 도 14에는 도 13의 이더리움(ethereum) 기반으로 구현된 포그 인센티브 모델이 예시적을 도시되어 있다.13 is a block diagram illustrating a blockchain-based fog incentive model according to embodiments of the present invention. FIG. 13 illustrates a process of providing incentives to fog nodes that lend resources using a blockchain when computing is performed using fog idle resources. 14 is a block diagram illustrating an example of the fog incentive model of FIG. 13. FIG. 14 illustrates an exemplary fog incentive model implemented based on the ethereum of FIG. 13.
도 13 및 도 14를 참조하면, 사용자 단말(110)에 제1 내지 제3 서브태스크들(A, B, C)가 존재할 수 있다. 제1 내지 제3 서브태스크들(A, B, C)은 서로 다른 세 개의 포그 노드들에 배포될 수 있다. 포그 노드들이 서브태스크들을 각각 제대로 실행하고, 태스크 요청자(task requestor)(예를 들어, 사용자 단말(110))에게 결과를 전달할 수 있다. 이 경우, 태스크 요청자(task requestor)(예를 들어, 사용자 단말(110))의 포그 에이전트는 자동으로 서브태스크를 실행한 포그 노드들의 블록체인 월렛 주소(wallet address)에 컴퓨팅에 참여한 만큼의 암호화화폐(cryptocurrency)를 전달할 수 있다. 예를 들어, 도 14에 도시된 바와 같이, 이더리움을 활용해 포그 인센티브 시스템이 개발되는 경우, "Eth.sendTransaction(fog_peers)"와 같은 API를 통해 인센티브가 제공될 수 있다.13 and 14, first to third subtasks A, B, and C may exist in the
도 15a는 본 발명의 실시예들에 따른 포그 스토리지 시스템을 나타내는 블록도이다. 도 15a에는 "hello.txt"라는 파일이 포그 노드들에 분산 저장되는 과정이 도시되어 있다. 도 15b는 도 15a의 포그 스토리지 시스템에서 사용되는 메타데이터의 일 예를 나타내는 도면이다.15A is a block diagram illustrating a fog storage system according to embodiments of the present invention. 15A illustrates a process in which the file “hello.txt” is distributedly stored in fog nodes. 15B is a diagram illustrating an example of metadata used in the fog storage system of FIG. 15A.
도 15a를 참조하면, "hello.txt"라는 파일은 로컬 파일시스템(local filesystem)에 저장될 수 있다. 포그 스토리지 시스템(1500)은 파일을 여러 포그 노드들에 저장하기 위해 인코더(Encoder)를 이용해 파일들을 여러 조각으로 나눌 수 있다. 이후, 리소스 파인더(Resource Finder)를 통해 포그 트래커와 통신하여 최적의 포그 스토리지 유휴 자원들을 찾고, 스케줄러(scheduler)와 이벤트 핸들러(event handler)를 이용해 효율적으로 해당 인코딩된 파일 조각들(encoded file shares)을 스토리지 커넥터(storage connector)를 이용해 여러개의 포그 노드들에 저장할 수 있다.15A, a file called “hello.txt” may be stored in a local filesystem. The
도 15b에 도시된 바와 같이, 인코딩된 파일 조각들(Encoded file shares)의 정보와 그 위치 정보는 객체(objects)의 형태로 저장되고, 인코딩된 파일 조각들에 접근하기 위한 정보 및 해당 파일에 대한 메타 정보들은 메타데이터(metadata)의 형태로 관리될 수 있다.As shown in FIG. 15B, the information of encoded file shares and its location information are stored in the form of objects, and information for accessing the encoded file fragments and the corresponding file. Meta information may be managed in the form of metadata.
도 16은 본 발명의 일 실시예에 따른 포그 컴퓨팅 방법을 나타내는 순서도이다. 16 is a flowchart illustrating a fog computing method according to an embodiment of the present invention.
도 1 및 도 16을 참조하면, 도 16의 포그 컴퓨팅 방법은 도 1의 포그 컴퓨팅 시스템(100)에서 수행될 수 있다. 도 1을 참조하여 설명한 바와 같이, 포그 컴퓨팅 시스템(100)은 사용자 단말(110), 및 사용자 단말(110)과 클라우드(130) 사이에 위치하는 포그 노드(121) 및 포그 트래커(122)를 포함할 수 있다.1 and 16, the fog computing method of FIG. 16 may be performed in the
포그 노드(121)의 리소스 정보(또는, 유휴자원정보)를 포그 트래커(122)(또는, 포그 트래커 서비스)에 등록할 수 있다(S1610). 여기서, 리소스 정보는 표 1을 참조하여 설명한 바와 같이, 포그 노드(121)의 자원 정보, 지연시간 정보, 운영 체제 정보 및 플랫폼 정보를 포함할 수 있다.The resource information (or idle resource information) of the
포그 노드(121)의 리소스 정보는 포그 트래커(122)를 통해 주기적으로 업데이트될 수 있다.The resource information of the
포그 트래커(122)는 포그 노드(121)를 지연시간(latency)에 기초하여 포그 클러스터들로 분류(clustering)할 수 있다(S1620). 예를 들어, 포그 트래커(122)는 도 11에 도시된 클러스터링 알고리즘을 이용하여 낮은 지연시간을 가지는 포그 노드들을 그룹핑할 수 있다. 이 경우, 도 12a 및 도 12b를 참조하여 예시한 바와 같이, 타겟 노드들의 검색시, 포그 클러스터들 중 사용자 단말(110)과 가장 인접한 포그 클러스터를 검색하고, 검색된 포그 클러스터에서 타겟 노드들을 검색하여, 포그 트래커(122)의 부하를 감소시킬 수 있다.The
이후, 사용자 단말(110)에서 객체 지향 프로그래밍(object-oriented programming)으로 개발된 어플리케이션을 복수의 서브 태스크들(subtasks)로 구성된 포그 어플리케이션으로 변환하거나 생성할 수 있다(S1630).Thereafter, the application developed by object-oriented programming in the
도 5a 및 도 5b를 참조하여 설명한 바와 같이, 객체 지향 프로그래밍으로 개발된 어플리케이션은 복수의 객체들(objects)를 포함한다. 이 경우, 사용자 단말(110)은 객체들을 서브 태스크들로 분리(decompose)하고, 객체들 간의 변수(variable) 및 기능(function)을 활용한 커뮤니케이션을 포그 노드들 사이에서의 메시지 패싱으로 변환할 수 있다.As described with reference to FIGS. 5A and 5B, an application developed with object-oriented programming includes a plurality of objects. In this case, the
이후, 사용자 단말(110)은 포그 어플리케이션에 대응하는 리소스(또는, 유휴자원을 가지는 포그 노드들에 대한 검색)를 요청하고(S1640), 포그 트래커(122)는 포그 노드(121) 중에서 서브 태스크들을 수행할 타겟 노드들(target nodes)을 검색하며(S1650), 포그 트래커(122)는 자원 할당 알고리즘(resource allocation algorithm)을 통해 가장 적절한 포그 노드 정보들(즉, 필요한 리소스에 가장 부합하는 리소스를 가지는 포그 노드들의 정보)을 사용자 단말(110)에 리턴(response)할 수 있다(S1660).Subsequently, the
이후, 사용자 단말(110)은 서브 태스크들을 타겟 노드들에 대응하여 패키징하여 포그 어플리케이션 조각들을 생성할 수 있다(S1670).Subsequently, the
앞서 설명한 바와 같이, 사용자 단말(110)은 타켓 노드들이 포그 어플리케이션이 실행되는 도커 환경을 제공하는 경우, 서브 태스크들을 도크 이미지로 패키징할 수 있다. 이와 달리, 타켓 노드들이 도커 환경을 제공하지 않는 경우, 서브 태스크들을 크로스 컴파일 할 수 있다.As described above, the
이후, 포그 어플리케이션 조각들을 사용자 단말(110)로부터 타겟 노드들(또는, 포그 노드(121))에 각각 배포하고(S1660), 타겟 노드들에서 서브 태스크들(또는, 포그 어플리케이션)을 실행할 수 있다(S1670).Thereafter, the pieces of the fog application are respectively distributed from the
일 실시예에서, 도 16의 방법은, 서브 태스크들 중 제1 서브 태스크를 스케일 아웃할 수 있다. 도 7을 참조하여 설명한 바와 같이, 도 16의 방법은 포그 트래커(122)를 통해 포그 노드들 중에서 제1 서브 태스크에 대응하는 유휴 노드를 검색하고, 제1 서브 태스크에 대한 노드 정보에 유휴 노드를 추가하며, 유휴 노드에 기초하여 제1 서브 태스크에 메시지를 전달하는 제2 서브 태스크의 라우팅 정보를 수정할 수 있다.In one embodiment, the method of FIG. 16 may scale out a first sub-task among the sub-tasks. As described with reference to FIG. 7, the method of FIG. 16 searches for an idle node corresponding to the first sub-task among the fog nodes through the
일 실시예에서, 도 16의 방법은, 타겟 노드들 중 제1 타겟 노드에 장애가 발생한 경우, 제1 타겟 노드의 부모 노드인 제2 타겟 노드를 통해 제3 타겟 노드를 검색할 수 있다. 도 8을 참조하여 설명한 바와 같이, 도 16의 방법은 특정 포그 노드 또는 특정 서브태스크에 문제 또는 장애가 발생한 경우, 장애 극복 기능을 수행할 수 있다.In one embodiment, the method of FIG. 16 may search for a third target node through a second target node that is a parent node of the first target node when a failure occurs in the first target node among the target nodes. As described with reference to FIG. 8, the method of FIG. 16 may perform a failure overcoming function when a problem or failure occurs in a specific fog node or a specific subtask.
도 16의 방법은, 사용자 어플리케이션에 빠른 응답 속도를 제공하고, 컴퓨팅 리소스를 많이 활용하는 사용자 어플리케이션을 사용자 가까이에 있는 주변 유휴 자원들에 분산시켜 실행함으로써 어플리케이션 실행속도를 향상시키고 배터리 사용량을 줄일 수 있다.The method of FIG. 16 can improve application execution speed and reduce battery usage by providing a fast response speed to a user application and distributing and executing a user application that uses a lot of computing resources to surrounding idle resources near the user. .
도 17은 본 발명의 다른 실시예에 따른 포그 컴퓨팅 방법을 나타내는 순서도이다.17 is a flowchart illustrating a fog computing method according to another embodiment of the present invention.
도 1, 도 4 및 도 17을 참조하면, 도 17의 방법은 도 1의 포그 컴퓨팅 시스템(100)에서 수행될 수 있다.1, 4, and 17, the method of FIG. 17 may be performed in the
사용자 단말(110)에서 하나의 파일을 복수의 파일 조각들로 분할하여 인코딩할 수 있다(S1710).In the
이후, 사용자 단말(110)은 리소스(또는, 파일을 저장할 포그 노드에 대한 정보)를 포그 트래커(122)에 요청하고(S1715), 포그 트래커(122)를 통해 포그 노드들 중에서 파일 조각들을 저장할 타겟 노드들을 검색하며(S1720), 검색결과(예를 들어, 포그 노드 리스트)를 사용자 단말(110)에 회신할 수 있다(S1725).Thereafter, the
이후, 사용자 단말(110)로부터 타겟 노드들(예를 들어, 포그 노드(121))에 파일 조각들을 각각 배포하여 저장할 수 있다(S1730).Subsequently, file fragments may be distributed and stored from the
이후, 저장된 파일에 대한 읽기 요청(read)을 발생한 경우, 포그 트래커(122)를 통해 타겟 노드들 중에서 가장 빠른 응답속도를 가지는 대상 노드들을 선택할 수 있다. 예를 들어, 하나의 파일 조각은 복수의 타겟 노드들에 중복되어 저장될 수 있다. 이 경우, 타겟 노드들 중에서 가장 빠른 응답속도를 가지는 하나의 타겟 노드가 선택될 수 있다. 예를 들어, 사용자 단말(1220)은 포그 트래커(122)에게 대상 노드에 대한 검색을 요청하고(S1740), 포그 트래커(122)는 응답속도(또는, 지연속도)에 기초하여 대상 노드를 검색하며(S1745), 검색 결과를 사용자 단말(110)에 제공할 수 있다(S1750).Thereafter, when a read request for a stored file is generated, the target nodes having the fastest response speed among target nodes may be selected through the
이후, 사용자 단말(110)은 대상 노드(예를 들어, 포그 노드(121))에 파일(또는, 파일 조각)의 전송을 요청하고(S1755), 대상 노드는 이에 응답하여 파일을 사용자 단말(110)에 전송할 수 있다(S1760). 이후, 사용자 단말(110)은 파일 조각들을 디코딩하여(S1765) 파일을 확인할 수 있다.Thereafter, the
한편, 도 17에서 사용자 단말(110)에서 파일 조각들을 수집 및 디코딩하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 검색된 대상 노드에서 파일 조각들을 수집하여 디코딩할 수도 있다.Meanwhile, in FIG. 17, it has been described as collecting and decoding file fragments in the
도 17을 참조하여 설명한 바와 같이, 도 17의 방법은, 데이터를 노드 주변에 위치하는 유휴 스토리지 자원들에 저장함으로써 클라우드 기반 스토리지 시스템에 비해 빠른 응답 속도를 제공하고, 하나의 파일을 조각내어 여러 노드에 분산하여 저장한 파일 조각 중 일부의 파일만 있어도 완전한 파일을 얻을 수 있는 폴트 톨로런스(fault-tolerance)를 제공하며, 데이터를 여러 노드들에 분산시켜 저장함으로써 한 스토리지 서비스 제공 업체에 종속되지 않을 수 있다.As described with reference to FIG. 17, the method of FIG. 17 provides a faster response speed compared to a cloud-based storage system by storing data in idle storage resources located around the node, and fragments a single file into multiple nodes It provides a fault-tolerance that allows you to get a complete file even if only a part of the file fragments stored in the file are distributed to each other.It is not dependent on one storage service provider by distributing and storing data among multiple nodes. Can be.
100: 포그 컴퓨팅 시스템
110: 사용자 단말
120: 포그
121: 포그 노드
122: 포그 트래커
130: 클라우드
310: 컴퓨팅부
320: 블록체인부100: fog computing system
110: user terminal
120: fog
121: fog node
122: fog tracker
130: cloud
310: computing department
320: Blockchain Department
Claims (8)
상기 사용자 단말에서 객체 지향 프로그래밍(object-oriented programming)으로 개발된 어플리케이션을 복수의 서브 태스크들(subtasks)로 구성된 포그 어플리케이션으로 변환하는 단계;
상기 포그 트래커에서 상기 포그 노드들 중에서 상기 서브 태스크들을 수행할 타겟 노드들(target nodes)을 검색하는 단계;
상기 서브 태스크들을 상기 타겟 노드들에 대응하여 패키징하여 포그 어플리케이션 조각들을 생성하는 단계;
상기 포그 어플리케이션 조각들을 상기 타겟 노드들에 각각 배포하는 단계; 및
상기 타겟 노드들에서 상기 서브 태스크들을 실행하는 단계를 포함하고,
상기 포그 트래커는 상기 포그 노드들 각각의 리소스 정보를 포함하는 포그 컴퓨팅 방법.In a fog computing method performed in a fog computing system including a user terminal and a fog node and a fog tracker positioned between the user terminal and the cloud,
Converting an application developed by object-oriented programming in the user terminal into a fog application composed of a plurality of subtasks;
Retrieving target nodes to perform the sub-tasks among the fog nodes in the fog tracker;
Packaging the sub-tasks corresponding to the target nodes to generate fog application pieces;
Distributing the fog application pieces to the target nodes, respectively; And
And executing the sub-tasks on the target nodes,
The fog tracker is a fog computing method including resource information of each of the fog nodes.
상기 타겟 노드들을 검색하는 단계는,
상기 포그 클러스터들 중 상기 사용자 단말과 가장 인접한 포그 클러스터를 검색하는 단계; 및
상기 검색된 포그 클러스터에서 상기 타겟 노드들을 검색하는 단계를 포함하는 포그 컴퓨팅 방법.The method of claim 1, wherein the fog nodes are classified into a plurality of fog clusters based on latency,
Searching for the target nodes,
Searching for a fog cluster closest to the user terminal among the fog clusters; And
And searching for the target nodes in the searched fog cluster.
상기 어플리케이션을 상기 포그 어플리케이션으로 변환하는 단계는,
상기 객체들을 상기 서브 태스크들로 분리(decompose)하는 단계; 및
상기 객체들 간의 변수(variable) 및 기능(function)을 활용한 커뮤니케이션을 상기 포그 노드들 사이에서의 메시지 패싱으로 변환하는 단계를 포함하는 포그 컴퓨팅 방법.The method of claim 1, wherein the application includes a plurality of objects (objects),
The step of converting the application to the fog application,
Decompose the objects into the sub-tasks; And
And converting communication utilizing variables and functions between the objects into message passing between the fog nodes.
상기 어플리케이션을 상기 포그 어플리케이션들로 변환하는 단계 이전에, 상기 포그 노드들 각각의 리소스 정보를 상기 포그 트래커에 등록하는 단계를 더 포함하고,
상기 리소스 정보는 상기 포그 노드들 각각의 자원 정보, 지연시간 정보, 운영 체제 정보 및 플랫폼 정보를 포함하며,
상기 타겟 노드들은 상기 리소스 정보에 기초하여 검색되는 포그 컴퓨팅 방법.According to claim 1,
Before the step of converting the application to the fog application, further comprising registering the resource information of each of the fog nodes to the fog tracker,
The resource information includes resource information, delay time information, operating system information, and platform information of each of the fog nodes,
The target node is a fog computing method that is searched based on the resource information.
상기 타켓 노드들이 상기 포그 어플리케이션이 실행되는 도커(docker) 환경을 제공하는 경우, 상기 서브 태스크들을 도크 이미지로 패키징하는 단계; 및
상기 타켓 노드들이 상기 도커 환경을 제공하지 않는 경우, 상기 서브 태스크들을 크로스 컴파일하는 단계를 포함하는 포그 컴퓨팅 방법.The method of claim 4, wherein the packaging of the fog applications,
Packaging the subtasks as a dock image when the target nodes provide a docker environment in which the fog application is executed; And
And if the target nodes do not provide the docker environment, cross compiling the subtasks.
상기 서브 태스크들 중 제1 서브 태스크를 스케일 아웃하는 단계를 더 포함하고,
상기 제1 서브 태스크를 스케일 아웃하는 단계는,
상기 포그 트래커를 통해 상기 포그 노드들 중에서 상기 제1 서브 태스크에 대응하는 유휴 노드를 검색하는 단계;
상기 제1 서브 태스크에 대한 노드 정보에 상기 유휴 노드를 추가하는 단계; 및
상기 유휴 노드에 기초하여 상기 제1 서브 태스크에 메시지를 전달하는 제2 서브 태스크의 라우팅 정보를 수정하는 단계를 포함하는 포그 컴퓨팅 방법.According to claim 1,
And scaling out a first sub-task among the sub-tasks.
The step of scaling out the first sub-task,
Searching for an idle node corresponding to the first sub-task among the fog nodes through the fog tracker;
Adding the idle node to node information for the first sub-task; And
And modifying routing information of a second subtask that delivers a message to the first subtask based on the idle node.
상기 타겟 노드들 중 제1 타겟 노드에 장애가 발생한 경우, 상기 제1 타겟 노드의 부모 노드인 제2 타겟 노드를 통해 제3 타겟 노드를 검색하는 단계를 더 포함하는 포그 컴퓨팅 방법.According to claim 1,
And searching for a third target node through a second target node that is a parent node of the first target node when a failure occurs in the first target node among the target nodes.
상기 사용자 단말에서 하나의 파일을 복수의 파일 조각들로 분할하여 인코딩하는 단계;
상기 포그 트래커를 통해 상기 포그 노드들 중에서 상기 파일 조각들을 저장할 타겟 노드들을 검색하는 단계;
상기 타겟 노드들에 상기 파일 조각들을 각각 배포하여 저장하는 단계;
상기 타겟 노드들 중에서 가장 빠른 응답속도를 가지는 대상 노드들을 선택하는 단계; 및
상기 대상 노드들로부터 상기 파일 조각들을 수집하여 디코딩하는 단계를 포함하는 포그 컴퓨팅 방법.In a fog computing method performed in a fog computing system including a user terminal and a fog node and a fog tracker positioned between the user terminal and the cloud,
Encoding by dividing one file into a plurality of file fragments at the user terminal;
Searching for target nodes to store the file fragments among the fog nodes through the fog tracker;
Distributing and storing the file fragments to the target nodes, respectively;
Selecting target nodes having the fastest response speed among the target nodes; And
And collecting and decoding the pieces of files from the target nodes.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180126787A KR102191586B1 (en) | 2018-10-23 | 2018-10-23 | Fog computing method with blockchain-based idle resoure sharing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180126787A KR102191586B1 (en) | 2018-10-23 | 2018-10-23 | Fog computing method with blockchain-based idle resoure sharing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200052399A true KR20200052399A (en) | 2020-05-15 |
KR102191586B1 KR102191586B1 (en) | 2020-12-15 |
Family
ID=70679044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020180126787A KR102191586B1 (en) | 2018-10-23 | 2018-10-23 | Fog computing method with blockchain-based idle resoure sharing |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102191586B1 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102278185B1 (en) * | 2020-09-14 | 2021-07-19 | 주식회사 아이콘루프 | System and method for serverless service using blockchain node |
CN113239325A (en) * | 2021-05-13 | 2021-08-10 | 河南中州智慧水利研究院有限公司 | Water conservancy data operation system and method based on block chain and fog operation |
KR20220081843A (en) * | 2020-12-09 | 2022-06-16 | 대구대학교 산학협력단 | Device and method for arrangement scheduling for multi node environment of cloud computing |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230057084A (en) | 2021-10-21 | 2023-04-28 | 삼성에스디에스 주식회사 | Apparatus and method for optimizing blockchain resources |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201686B2 (en) * | 2013-06-27 | 2015-12-01 | Tata Consultancy Services Limited | Task execution by idle resources in grid computing system |
US20180276049A1 (en) * | 2017-03-24 | 2018-09-27 | Tata Consultancy Services Limited | Systems and methods for estimating computation times a-priori in fog computing robotics |
-
2018
- 2018-10-23 KR KR1020180126787A patent/KR102191586B1/en active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9201686B2 (en) * | 2013-06-27 | 2015-12-01 | Tata Consultancy Services Limited | Task execution by idle resources in grid computing system |
US20180276049A1 (en) * | 2017-03-24 | 2018-09-27 | Tata Consultancy Services Limited | Systems and methods for estimating computation times a-priori in fog computing robotics |
Non-Patent Citations (2)
Title |
---|
Taeyeol Jeong 외 3명. 'Towards a Distributed Computing Framework for Fog'. 2017 IEEE Fog World Congress, 2017.10.30.* * |
정태열. '분산 포그 컴퓨팅을 위한 플랫폼'. 포항공과대학교 일반대학원 박사학위 논문, 2017.12.14.* * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102278185B1 (en) * | 2020-09-14 | 2021-07-19 | 주식회사 아이콘루프 | System and method for serverless service using blockchain node |
KR20220081843A (en) * | 2020-12-09 | 2022-06-16 | 대구대학교 산학협력단 | Device and method for arrangement scheduling for multi node environment of cloud computing |
CN113239325A (en) * | 2021-05-13 | 2021-08-10 | 河南中州智慧水利研究院有限公司 | Water conservancy data operation system and method based on block chain and fog operation |
Also Published As
Publication number | Publication date |
---|---|
KR102191586B1 (en) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102191586B1 (en) | Fog computing method with blockchain-based idle resoure sharing | |
US20210027000A1 (en) | Simulation Systems and Methods | |
US10148736B1 (en) | Executing parallel jobs with message passing on compute clusters | |
US9300725B2 (en) | System and method for assisting virtual machine instantiation and migration | |
US10659523B1 (en) | Isolating compute clusters created for a customer | |
CN116018795A (en) | Infrastructure processing unit | |
US20230090130A1 (en) | Distributable and Customizable Load-Balancing of Data-Associated Computation Via Partitions and Virtual Processes | |
US9882775B1 (en) | Dependent network resources | |
CN113508373A (en) | Distributed metadata-based cluster computing | |
US20180373825A1 (en) | Scalable Simulation System with Scalable Data Propagation | |
Mohamed et al. | MidCloud: an agent‐based middleware for effective utilization of replicated Cloud services | |
Kumar et al. | DAIS: dynamic access and integration services framework for cloud-oriented storage systems | |
US10685134B1 (en) | Database proxy service | |
Cha et al. | Boosting edge computing performance through heterogeneous manycore systems | |
US11153227B1 (en) | Managing communication between microservices | |
Kirsanova et al. | Fog computing state of the art: concept and classification of platforms to support distributed computing systems | |
Cui et al. | Cluster as a service: A container based cluster sharing approach with multi-user support | |
Asan Baker Kanbar | Modern load balancing techniques and their effects on cloud computing | |
Satoh | 5G-enabled edge computing for MapReduce-based data pre-processing | |
Sauvanaud et al. | Big data deployment in containerized infrastructures through the interconnection of network namespaces | |
US10437809B1 (en) | Projection-based updates | |
US10511656B1 (en) | Log information transmission integrity | |
US11087047B2 (en) | Scalable update propagation via query aggregations and connection migrations | |
Vivek et al. | Payload fragmentation framework for high-performance computing in cloud environment | |
Satoh | Toward ubiquitous mapreduce processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |