KR20200052399A - Fog computing method with blockchain-based idle resoure sharing - Google Patents

Fog computing method with blockchain-based idle resoure sharing Download PDF

Info

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
Application number
KR1020180126787A
Other languages
Korean (ko)
Other versions
KR102191586B1 (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 KR1020180126787A priority Critical patent/KR102191586B1/en
Publication of KR20200052399A publication Critical patent/KR20200052399A/en
Application granted granted Critical
Publication of KR102191586B1 publication Critical patent/KR102191586B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17318Parallel communications techniques, e.g. gather, scatter, reduce, roadcast, multicast, all to all
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Abstract

A fog computing method is performed in a fog computing system including a user terminal, and a fog node and a fog tracker positioned between the user terminal and a cloud. The fog computing method converts an application developed by using an object-oriented programming in the user terminal into a fog application composed of a plurality of subtasks, searches for target nodes for executing the subtasks among fog nodes in the fog tracker, generates fog application pieces by packaging the subtasks to correspond to the target nodes, respectively distributes the fog application pieces to the target nodes, and executes the subtasks in the target nodes. The fog tracker includes resource information of each of the fog nodes.

Description

블록체인 기반의 유휴 컴퓨팅 자원 공유를 통한 포그 컴퓨팅 방법{FOG COMPUTING METHOD WITH BLOCKCHAIN-BASED IDLE RESOURE SHARING}FOG COMPUTING METHOD WITH BLOCKCHAIN-BASED IDLE RESOURE SHARING through blockchain-based idle computing resource sharing

본 발명은 포그 컴퓨팅 방법에 관한 것으로, 보다 구체적으로, 주변의 유휴 컴퓨팅 자원 및 스토리지 자원을 활용하여 초저 지연시간(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 user terminal 110, a fog 120, and a cloud 130. The user terminal 110, the fog 120, and the cloud 130 may be interconnected through a wired or wireless network.

사용자 단말(110)은 포그 컴퓨팅 시스템(100)의 가장 낮은 계층에 위치할 수 있다. The user terminal 110 may be located at the lowest layer of the fog computing system 100.

포그(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 fog 120 is located in the middle layer of the fog computing system 100, and the fog 120 includes a plurality of fogs 120a and 120b (or fog clusters), and the fog nodes 121-1 To 121-N) (wherein N is an integer of 2 or more). The fog nodes 121-1 to 121-N include an edge device, an access point, a gateway, a small server, and the like, and may be located adjacent to a network edge. The fog nodes 121-1 to 121-N may have sufficient resources to process, analyze, and store data. Meanwhile, the fog nodes 121-1 to 121 -N may remove unnecessary data portions and transmit only meaningful data to the cloud 130.

또한, 포그(120)는 포그 트래커(122)를 포함할 수 있다. 포그 트래커(122)는 포그 노드들(121-1 내지 121-N)의 유휴 자원 정보를 관리할 수 있다. 포그 트래커(122)는 유휴 자원 정보를 블록체인 기술을 이용하여 포그 컴퓨팅 시스템(100) 내 다른 포그 트래커들과 분산하여 저장할 수 있다. 포그 트래커(122)는 블록체인 노드일 수 있다.In addition, the fog 120 may include a fog tracker 122. The fog tracker 122 may manage idle resource information of the fog nodes 121-1 to 121 -N. The fog tracker 122 may store and store idle resource information by distributing it with other fog trackers in the fog computing system 100 using blockchain technology. The fog tracker 122 may be a blockchain node.

클라우드(130)는 포그 컴퓨팅 시스템(100)의 최상위 계층에 위치하며, 데이터의 영구적인 저장 및 전역 데이터의 분석 등을 수행할 수 있다.The cloud 130 is located at the top layer of the fog computing system 100 and can permanently store data and analyze global data.

포그 컴퓨팅 시스템(100)은 사용되지 않는, 즉, 사용자 단말(100)의 소유가 아닌 유휴 컴퓨팅 및 스토리지 자원을 포그 노드로 활용할 수 있다. 포그 노드들(121-1 내지 121-N)은 클라우드(130)에 비해 사용자 단말(110)과 근접해 위치하므로, 보다 상호 작용이고, 보다 반응적(more interactive, more responsive)인 특성을 가질 수 있다.The fog computing system 100 may utilize idle computing and storage resources that are not used, that is, not owned by the user terminal 100 as a fog node. Since the fog nodes 121-1 to 121-N are located closer to the user terminal 110 than the cloud 130, they may have more interactive and more responsive characteristics. .

1. 사용자 단말(110)로부터 포그(120)로의 연산 오프로딩(computation offloading)1. Computation offloading from user terminal 110 to fog 120

사용자 단말(110)의 어플리케이션(또는, 클라이언트 어플리케이션)이 포그 노드(121)의 유휴 컴퓨팅을 활용해 어플리케이션의 로드를 분산할 필요가 있거나, 포그 노드(121)의 유휴 스토리지를 활용해 데이터를 저장할 필요가 있는 경우, 포그 에이전트는 어플리케이션을 주변의 포그 노드(121)에 배포해 동작시킬 수 있다. 여기서, 포그 에이전트는 사용자 단말(110) 등에 위치하거나 설치되며, 어플리케이션을 포그 노드들(121)로 오프로딩하는 에이전트일 수 있다.The application (or client application) of the user terminal 110 needs to distribute the load of the application by using the idle computing of the fog node 121, or it is necessary to store data by using the idle storage of the fog node 121 If there is, the fog agent can be operated by distributing the application to the surrounding fog node (121). Here, the fog agent may be an agent that is located or installed in the user terminal 110 or the like, and offloads the application to the fog nodes 121.

먼저, 사용자 단말(110)에 설치된 포그 에이전트는 블록체인 노드인 포그 트래커(122)를 통해 포그 에이전트(또는, 사용자 단말(110)) 주변에 있는 포그 노드들(121-1 내지 121-N)의 유휴 자원들의 정보를 확인할 수 있다.First, the fog agent installed in the user terminal 110 of the fog nodes (121-1 to 121-N) around the fog agent (or user terminal 110) through the fog tracker 122, which is a blockchain node. You can check the information of idle resources.

2. 클라우드(130)로부터 포그(121)로의 이동(migration)2. Moving from the cloud 130 to the fog 121 (migration)

서버 어플리케이션은 주로 클라우드(130)에 위치하여 동작한다. 그러나, 사용자 단말(110)과 클라우드(130)간의 물리적 거리가 먼 경우, 서버 어플리케이션을 통해 제공되는 서비스의 응답속도가 느려질 수 있다. 따라서, 포그 컴퓨팅 시스템(100)은 서버 어플리케이션의 적어도 일부(또는, 일부 조각)를 사용자 단말(110)과 가장 인접하여 위치하는 포그 노드(121)로 이동(migration)시킬 수 있다. 이 경우, 사용자 단말(110)은 상대적으로 멀리 위치하는 클라우드에서 동작하는 서버 어플리케이션과 통신하는 대신, 상대적으로 가까이에 위치하는 포그 노드(121)에 배포된 서버 어플리케이션과 통신할 수 있다.The server application is mainly located in the cloud 130 and operates. However, when the physical distance between the user terminal 110 and the cloud 130 is far, the response speed of a service provided through a server application may be slowed down. Accordingly, the fog computing system 100 may migrate at least a part (or some pieces) of the server application to the fog node 121 positioned closest to the user terminal 110. In this case, the user terminal 110 may communicate with the server application deployed in the fog node 121 located relatively close, instead of communicating with the server application operating in the cloud located relatively far.

도 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 tracker 122a. Through the fog tracker 122a, any fog node located in the world is located close to itself and satisfies the needs of the user. As will be described later, a blockchain-based incentive may be provided to nodes that provide resources for active participation of the fog nodes.

포그 어플리케이션 계층(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 second fog clusters 120a and 120b, and the third fog application APP3 includes the second and second fog clusters 120b and 120c. ).

도 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 computing unit 310, a storage unit, a networking unit, and a blockchain unit 320.

컴퓨팅부(310)는 주로 포그 컴퓨팅 프레임워크(또는, 연산 오프로딩)의 기능을 수행할 수 있다 컴퓨팅부(310)는 리소스 매니저(311), 태스크 매니저(312), 컨테이너 매니저(314), 바이너리 매니저(315) 및 가상화기(316)을 포함할 수 있다.The computing unit 310 may mainly perform a function of a fog computing framework (or operation offloading). The computing unit 310 includes a resource manager 311, a task manager 312, a container manager 314, and a binary It may include a manager 315 and a virtualizer 316.

리소스 매니저(311)는 포그 노드(및 사용자 단말)의 자원을 모니터링 할 수 있다. 태스크 매니저(312)는 포그 노드에 할당된 작업(job)(예를 들어, 포그 어플리케이션을 구성하는 서브태스크(task))의 처리 상태를 관리하며, 작업의 실행 및 종료를 제어할 수 있다. 컨테이너 매니저(314) 및 바이너리 매니저(315)는 어플리케이션을 포그 어플리케이션으로 변환하는 과정에서, 포그 어플리케이션을 구성하는 포그 어플리케이션 조각을 해당 포그 노드에서 실행 가능하게 패키징하며, 예를 들어, 컨테이너 매니저(314)는 도커(docker)의 도커 이미지(docker image)로 패키징하며, 바이너리 매니저(315)는 크로스 컴파일(cross compile)을 수행할 수 있다. 가상화기(316)는 독립적으로 포그 어플리케이션 등을 실행할 수 있는 가상환경을 제공할 수 있다.The resource manager 311 may monitor the resources of the fog node (and user terminal). The task manager 312 manages a processing state of a job (eg, a subtask constituting a fog application) assigned to a fog node, and can control execution and termination of the job. The container manager 314 and the binary manager 315 package a piece of the fog application constituting the fog application to be executable in a corresponding fog node in the process of converting the application to a fog application, for example, the container manager 314 Is packaged as a docker image of a docker, and the binary manager 315 can perform cross compile. The virtualizer 316 can provide a virtual environment that can independently execute fog applications and the like.

도시되지 않았으나, 컴퓨팅부(310)는 가상화된 포그 노드를 관리하는 가상화 포그 노드 매니저(virtualized fog node manager), 포그 어플리케이션 및 이의 실행 상태를 관리하는 어플리케이션 매니저(application manager) 및 포그 어플리케이션들을 오케스트레이션(orchestration)하는 오케스트레이터(orchestrator)를 더 포함할 수 있다.Although not shown, the computing unit 310 orchestrations a virtualized fog node manager managing a virtualized fog node, an application manager managing a fog application and its execution state, and fog applications. ) May further include an orchestrator.

스토리지부는 포그 스토리지(즉, 데이터 분산 저장)의 기능을 수행하며, 스토어 매니터(313)로 구성될 수 있다. 네트워킹부는 네트워크 통신 기능을 수행할 수 있다. The storage unit performs a function of fog storage (ie, distributed data storage) and may be configured as a store manager 313. The networking unit may perform a network communication function.

블록체인부(320)는 포그 트래커의 기능인, 전세계 유휴 포그 컴퓨팅, 스토리지 자원들의 정보를 저장, 관리하고 검색 기능 등을 제공할 수 있다. 블록체인부(320)는 포그 노드들의 유휴 자원 정보를 저장/관리하는 리소스 스토어(321), 데이터의 관리 정보를 나타내는 메타데이터를 저장/관리하는 메타데이터 스토어(322), 포그 노드들의 식별 정보를 설정/저장/관리하는 네이밍 스토어(323), 데이터의 암호화에 사용되는 키(또는, 키값)을 저장/관리하는 키밸류 스토어(324)를 포함할 수 있다.The block chain unit 320 may provide a function of fog tracker, idle fog computing around the world, and store, manage, and search information of storage resources. The block chain unit 320 stores the resource store 321 that stores / manages idle resource information of the fog nodes, the metadata store 322 that stores / manages metadata representing management information of the fog nodes, and identification information of the fog nodes. It may include a naming store 323 for setting / storing / managing, and a key value store 324 for storing / managing keys (or key values) used for data encryption.

도 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 fog tracker 122 peripheral idle storage resource information (eg, fog nodes 121-1 to 121-3). (Idle storage resource information). Upon receiving the surrounding idle storage resource information from the fog tracker 122, the host may distribute the encoded file fragments to corresponding fog nodes, and the fog nodes may store the encoded file fragments. The relationship information between the encoded file fragments and fog nodes (eg, information that a specific encoded file fragment is stored in a specific fog node) exists in the form of metadata, and the metadata is a public key. key), and the encrypted metadata may be stored in a blockchain (eg, fog tracker 122), a cloud, or a local system (eg, user terminal 110). The user terminal 110 can find a single file by collecting fragments of files stored at any time.

파일 조각들은 포그 노드들(121)에만 저장될 수 있으나 이에 한정되는 것은 아니다. 필요한 경우 포그 노드들(121)과 클라우드 스토리지 시스템(즉, 상대적으로 안정적이고 대용량 스토리지 기능을 지원하는 스토리지 시스템으로, 클라우드(130)의 스토리지 시스템)과 동기화하고, 파일 조각들은 클라우드 스트로지 시스템에 저장될 수도 있다. 즉, 사용자 단말(110)은 사용자 단말(110)에 인접하여 위치하는 포그 노드들(121)에 파일을 낮은 지연시간(latency)을 가지고 빠르게 저장하고, 사용자 단말(110)보다 네트워크 대역폭(network bandwidth), 배터리 등의 환경이 우수한 포그 노드들(121)이 파일 조각들을 클라우드 스토리지와 동기화(sync) 할 수 있다.File fragments may be stored only in the fog nodes 121, but are not limited thereto. If necessary, synchronize with the fog nodes 121 and the cloud storage system (i.e., a storage system of the cloud 130, which is a relatively stable and large-capacity storage system), and the file fragments are stored in the cloud storage system. It may be. That is, the user terminal 110 quickly stores the file in the fog nodes 121 located adjacent to the user terminal 110 with low latency, and has a network bandwidth greater than that of the user terminal 110. ), Fog nodes 121 having an excellent environment such as a battery may synchronize file fragments with cloud storage.

도 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 user terminal 110 may decompose the objects included in the application into subtasks (eg, SubTask A / B / C). On the other hand, the user terminal 110 may configure or convert communication using variables and functions between objects in an application in the form of message passing on the network (message passing between fog nodes). . Accordingly, an application that can operate only in one fog node can be turned into a plurality of subtasks that can communicate through message passing on the network.

이후, 사용자 단말(110)은 서브태스크들을 포그 노드들에 배포되어 동작할 수 있는 형태로 패키징(Crystalize)할 수 있다. 예를 들어, 타겟 노드(즉, 서브태스크가 할당된 포그 노드로, 예를 들어, 제3 타겟 노드(TN3))가 가상 실행 환경을 제공할 경우, 서브태스크는 가상 실행 환경의 배포 이미지(예를 들어, docker의 docker image)로 패키징 될 수 있다. 다른 예를 들어, 타겟 노드(예를 들어, 제1 및 제2 타겟 노드들(TN1, TN2))가 가상 실행 환경을 제공하지 않는 경우, 서브태스크는 타겟 노드에 대응하여 크로스 컴파일(cross compile) 될 수 있다. 패키징을 통해 포그 어플리케이션 조각들(예를 들어, 제1 내지 제3 포그 어플리케이션 조각들(APP_F1, APP_F2, APP_F3)이 생성될 수 있다. Subsequently, the user terminal 110 may package the subtasks in a form that can be distributed and operated in fog nodes. For example, if a target node (i.e., a fog node to which a subtask is assigned, e.g., a third target node (TN3)) provides a virtual execution environment, the subtask provides a deployment image of the virtual execution environment (e.g. For example, it can be packaged as a docker image of docker. For another example, if the target node (eg, the first and second target nodes TN1 and TN2) does not provide a virtual execution environment, the subtask cross compiles corresponding to the target node. Can be. Fog application fragments (eg, first to third fog application fragments APP_F1, APP_F2, APP_F3) may be generated through packaging.

포그 트래커(122)를 통해 포그 어플리케이션 조각들을 실행하기에 적절한 유휴 자원을 가지고 있는 주변 포그 노드들이 검색되고, 포그 노드들의 포그 에이전트들과의 통신을 통해 포그 어플리케이션 조각들이 배포(deploy)될 수 있다.Through the fog tracker 122, peripheral fog nodes having idle resources suitable for executing fog application fragments are searched, and fog application fragments can be deployed through communication with fog agents of the fog nodes.

도 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 fog tracker 122, the configuration requesting idle resource information around them, and the fog application pieces (APP_F1) ~ APP_F4) is shown a configuration that is distributed to the surrounding fog nodes.

모든 포그 에이전트들은 자신이 설치되어 있는 포그 노드의 리소스 정보를 블록체인 노드인 포그 트래커(122)에 등록할 수 있다.All fog agents can register resource information of the fog node on which they are installed on the fog tracker 122, which is a blockchain node.

구분division Fog NodeFog Node CPUCPU RAMRAM StorageStorage OSOS MobilityMobility BatteryBattery 121-1121-1 RouterRouter 10 G10 G 20 G20 G 100 G100 G IOSIOS NoNo 100%100% 121-2121-2 LaptopLaptop 3 G3 G 8 G8 G 20 G20 G MacMac YesYes 70%70% 121-3121-3 LaptopLaptop 1 G1 G 2 G2 G 3 G3 G LinuxLinux YesYes 20%20% 121-4121-4 ServerServer 8 G8 G 16 G16 G 30 G30 G LinuxLinux NoNo 100%100% 121-5121-5 Smart phoneSmart phone 2 G2 G 2 G2 G 4 G4 G AndroidAndroid YesYes 30%30%

표 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 fog tracker 122.

사용자 단말(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 user terminal 110 may request necessary resource information from the fog tracker 122 through a resource request message. In this case, the fog tracker 122 returns to the user terminal 110 the most appropriate fog node information (that is, information of the fog nodes having the resource that best matches the required resource) through a resource allocation algorithm. (response).

사용자 단말(110)은 수신한 포그 노드 정보들에 기초하여 해당 포그 노드들에 포그 어플리케이션 조각들을 각각 배포할 수 있다. 예를 들어, 제1 포그 노드(211-1)에 제2 어플리케이션 조각(APP_F2)을 배포하고, 제5 포그 노드(211-5)에 제3 어플리케이션 조각(APP_F3)을 배포할 수 있다.The user terminal 110 may respectively distribute fog application pieces to corresponding fog nodes based on the received fog node information. For example, the second application piece APP_F2 may be distributed to the first fog node 211-1, and the third application piece APP_F3 may be distributed to the fifth fog node 211-5.

앞서 설명한 바와 같이, 타겟 노드가 도커(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 user terminal 110 may apply the corresponding virtual environment (virtualization). ), You can package the piece of fog application. For example, when the target node (eg, the first fog node 121-1) provides a docker environment, the user terminal 110 is a fog application (eg, a second fog application piece (APP_F2)) Can be packaged and distributed as a docker image.

어플리케이션 분리(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 user terminal 110 cross compiles the fragment of the fog application to the target node using a cross-compilation function. (cross compile). For example, a piece of fog application may be cross-compiled for a target node's operating system and platform and distributed in a binary form. Table 2 below shows examples of the OS and platform of the target node.

Target Operating SystemTarget Operating System Target PlatformTarget Platform AndroidAndroid armarm darwindarwin 386386 darwindarwin amd64amd64 darwindarwin armarm darwindarwin amd64amd64 dragonflydragonfly amd64amd64 freebsdfreebsd 386386 freebsdfreebsd amd64amd64 freebsdfreebsd armarm linuxlinux 386386 linuxlinux amd64amd64 linuxlinux armarm linuxlinux arm64arm64 linuxlinux ppc64ppc64 linuxlinux ppc64leppc64le linuxlinux mipsmips linuxlinux mipslemipsle linuxlinux mips64mips64 linuxlinux mips64lemips64le netbsdnetbsd 386386 netbsdnetbsd amd64amd64 netbsdnetbsd armarm openbsdopenbsd 386386 openbsdopenbsd amd64amd64 openbsdopenbsd armarm plan9plan9 386386 plan9plan9 amd64amd64 solarissolaris amd64amd64 windowswindows 386386 windowswindows amd64amd64

도 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 fog tracker 122 to find nearby idle nodes (eg, the third fog node 121-3 to the fifth fog nodes 121-5), and a naming store (see FIG. 3). You can update the node information of the analyzer (eg IP list). For example, if the IP addresses of the second to fifth fog nodes 121-3 to 121-5 are 141.223.2.2, 141.223.2.3, 141.223.2.4, and 141.223.2.5, the corresponding IP addresses may be updated have.

이후, 어플리케이션 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.

OperationOperation DescriptionDescription sendsend Send a message to a CrystalSend a message to a Crystal receivereceive Receive a message and process itReceive a message and process it stayInCloudstayInCloud Crystal will stay in the cloudCrystal will stay in the cloud stayInFogstayInFog Crystal will stay in the local fog clusterCrystal will stay in the local fog cluster stayInThingstayInThing Crystal will stay in the client node where it was createdCrystal will stay in the client node where it was created moveToCloudmoveToCloud Crystal will move to the cloudCrystal will move to the cloud moveToFogmoveToFog Crystal will move to the fogCrystal will move to the fog moveToThingmoveToThing Crystal will move to the client nodeCrystal will move to the client node replicateCrystalreplicateCrystal Scale out a Crystal and do load balancingScale out a Crystal and do load balancing spawnCrystalspawnCrystal Create a Crystal instance on a nodeCreate a Crystal instance on a node migrateCrystalmigrateCrystal Migrate a Crystal instance to a nodeMigrate a Crystal instance to a node checkpointCrystalcheckpointCrystal Save the state of CrystalSave the state of Crystal respawnCrystalrespawnCrystal Re-create a Crystal from a checkpointRe-create a Crystal from a checkpoint killCrystalkillCrystal Terminate Crystal instanceTerminate Crystal instance getCrystalgetCrystal Get name of CrystalGet name of Crystal getCrystalListgetCrystalList Get the list of Crystals for an applicationGet the list of Crystals for an application getCrystalParentgetCrystalParent Get the list of Crystal's parent CrystalsGet the list of Crystal's parent Crystals getCrystalChildgetCrystalChild Get the list of Crystal's child CrystalsGet the list of Crystal's child Crystals getCrystalLocationgetCrystalLocation Get location information of a CrystalGet location information of a Crystal getcrystalLatencygetcrystalLatency Get latency from a Crystal to anotherGet latency from a Crystal to another getNodegetNode Get name of a fog nodeGet name of a fog node GetNodeListGetNodeList Get the list of fog nodes in the fog clusterGet the list of fog nodes in the fog cluster getNodeLocationgetNodeLocation Get location information of a nodeGet location information of a node getNodeLatencygetNodeLatency Get latency from Crystal to a fog nodeGet latency from Crystal to a fog node getFoggetFog Get name of the local fog clusterGet name of the local fog cluster getFogListgetFogList Get the list of fog clustersGet the list of fog clusters getFogLocationgetFogLocation Get location coverage of a fog clusterGet location coverage of a fog cluster getFogLatencygetFogLatency Get latency from Crystal to a fog clusterGet latency from Crystal to a fog cluster getLatencygetLatency Set latency limit a Crystal has to guaranteeSet latency limit a Crystal has to guarantee getStoragegetStorage Set storage limit a Crystal can useSet storage limit a Crystal can use getMemorygetMemory Set memory limit a Crystal can useSet memory limit a Crystal can use getCPUgetCPU Set CPU limit a Crystal can useSet CPU limit a Crystal can use

표 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.

EventEvent DescriptionDescription onCreateonCreate New Crystal CreatedNew Crystal Created onFailureonFailure Crystal failedCrystal failed onKillonKill Crystal killedCrystal killed onMigrateonMigrate Crystal migratedCrystal migrated OnReplicateOnReplicate Crystal replicatedCrystal replicated onHighLatencyonHighLatency Average Latency is higher than limitAverage Latency is higher than limit onLowCPUonLowCPU Node running out of CPUNode running out of CPU onLowMemoryonLowMemory Node running out of memoryNode running out of memory onLowStorageonLowStorage Node running out of storageNode running out of storage

[표 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 fog tracker 122 has information on idle resources around the world, and when the fog node 121 requests information on idle resources, it informs the information on idle resources Play a role. However, whenever the resource request information of the fog node comes, it is expensive to find and inform the optimal resource. Accordingly, the fog tracker 122 may divide and manage the fog nodes into a fog cluster (or fog group). For example, by using the clustering algorithm illustrated in FIG. 11, fog nodes may be managed by dividing them into groups based on similar latency.

예를 들어, 포항의 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 fog tracker 122 does not sort adjacent nodes among all fog nodes around the world, but the fog cluster closest to the fog node K You can find (fog cluster) and only information about the fog nodes existing in the corresponding fog cluster.

도 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 user terminal 110. The first to third subtasks A, B, and C may be distributed to three different fog nodes. The fog nodes can properly execute the subtasks, respectively, and deliver results to a task requestor (eg, the user terminal 110). In this case, the fog agent of the task requestor (for example, the user terminal 110) automatically encrypts cryptocurrency as much as participating in computing at the blockchain wallet address of the fog nodes that have executed the subtask. (cryptocurrency). For example, as illustrated in FIG. 14, when a fog incentive system is developed using Ethereum, an incentive may be provided through an API such as “Eth.sendTransaction (fog_peers)”.

도 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 fog storage system 1500 may divide files into multiple pieces using an encoder to store the files in various fog nodes. Then, it communicates with the fog tracker through the resource finder to find the optimal fog storage idle resources, and efficiently uses the encoded file fragments using a scheduler and event handler. Can be stored in multiple fog nodes using a storage connector.

도 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 fog computing system 100 of FIG. 1. As described with reference to FIG. 1, the fog computing system 100 includes a user terminal 110 and a fog node 121 and a fog tracker 122 located between the user terminal 110 and the cloud 130. can do.

포그 노드(121)의 리소스 정보(또는, 유휴자원정보)를 포그 트래커(122)(또는, 포그 트래커 서비스)에 등록할 수 있다(S1610). 여기서, 리소스 정보는 표 1을 참조하여 설명한 바와 같이, 포그 노드(121)의 자원 정보, 지연시간 정보, 운영 체제 정보 및 플랫폼 정보를 포함할 수 있다.The resource information (or idle resource information) of the fog node 121 may be registered in the fog tracker 122 (or the fog tracker service) (S1610). Here, the resource information may include resource information of the fog node 121, delay time information, operating system information, and platform information, as described with reference to Table 1.

포그 노드(121)의 리소스 정보는 포그 트래커(122)를 통해 주기적으로 업데이트될 수 있다.The resource information of the fog node 121 may be periodically updated through the fog tracker 122.

포그 트래커(122)는 포그 노드(121)를 지연시간(latency)에 기초하여 포그 클러스터들로 분류(clustering)할 수 있다(S1620). 예를 들어, 포그 트래커(122)는 도 11에 도시된 클러스터링 알고리즘을 이용하여 낮은 지연시간을 가지는 포그 노드들을 그룹핑할 수 있다. 이 경우, 도 12a 및 도 12b를 참조하여 예시한 바와 같이, 타겟 노드들의 검색시, 포그 클러스터들 중 사용자 단말(110)과 가장 인접한 포그 클러스터를 검색하고, 검색된 포그 클러스터에서 타겟 노드들을 검색하여, 포그 트래커(122)의 부하를 감소시킬 수 있다.The fog tracker 122 may classify the fog node 121 into fog clusters based on latency (S1620). For example, the fog tracker 122 may group fog nodes having low latency using the clustering algorithm illustrated in FIG. 11. In this case, as illustrated with reference to FIGS. 12A and 12B, when searching for target nodes, among the fog clusters, the fog cluster closest to the user terminal 110 is searched for, and the target nodes are searched for in the searched fog cluster, The load of the fog tracker 122 can be reduced.

이후, 사용자 단말(110)에서 객체 지향 프로그래밍(object-oriented programming)으로 개발된 어플리케이션을 복수의 서브 태스크들(subtasks)로 구성된 포그 어플리케이션으로 변환하거나 생성할 수 있다(S1630).Thereafter, the application developed by object-oriented programming in the user terminal 110 may be converted or generated into a fog application composed of a plurality of subtasks (S1630).

도 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 user terminal 110 may decompose the objects into sub-tasks and convert communication using variables and functions between the objects into message passing between fog nodes. have.

이후, 사용자 단말(110)은 포그 어플리케이션에 대응하는 리소스(또는, 유휴자원을 가지는 포그 노드들에 대한 검색)를 요청하고(S1640), 포그 트래커(122)는 포그 노드(121) 중에서 서브 태스크들을 수행할 타겟 노드들(target nodes)을 검색하며(S1650), 포그 트래커(122)는 자원 할당 알고리즘(resource allocation algorithm)을 통해 가장 적절한 포그 노드 정보들(즉, 필요한 리소스에 가장 부합하는 리소스를 가지는 포그 노드들의 정보)을 사용자 단말(110)에 리턴(response)할 수 있다(S1660).Subsequently, the user terminal 110 requests a resource (or a search for fog nodes having idle resources) corresponding to the fog application (S1640), and the fog tracker 122 subtasks among the fog nodes 121 The target nodes to be performed are searched (S1650), and the fog tracker 122 has the most appropriate fog node information (that is, the resource having the best resource for the required resource) through a resource allocation algorithm. The information of the fog nodes) may be returned to the user terminal 110 (S1660).

이후, 사용자 단말(110)은 서브 태스크들을 타겟 노드들에 대응하여 패키징하여 포그 어플리케이션 조각들을 생성할 수 있다(S1670).Subsequently, the user terminal 110 may package the subtasks in correspondence with target nodes to generate fog application pieces (S1670).

앞서 설명한 바와 같이, 사용자 단말(110)은 타켓 노드들이 포그 어플리케이션이 실행되는 도커 환경을 제공하는 경우, 서브 태스크들을 도크 이미지로 패키징할 수 있다. 이와 달리, 타켓 노드들이 도커 환경을 제공하지 않는 경우, 서브 태스크들을 크로스 컴파일 할 수 있다.As described above, the user terminal 110 may package the subtasks as a dock image when the target nodes provide a docker environment in which the fog application is executed. Alternatively, if target nodes do not provide a docker environment, subtasks can be cross-compiled.

이후, 포그 어플리케이션 조각들을 사용자 단말(110)로부터 타겟 노드들(또는, 포그 노드(121))에 각각 배포하고(S1660), 타겟 노드들에서 서브 태스크들(또는, 포그 어플리케이션)을 실행할 수 있다(S1670).Thereafter, the pieces of the fog application are respectively distributed from the user terminal 110 to the target nodes (or the fog node 121) (S1660), and sub-tasks (or fog applications) may be executed on the target nodes ( S1670).

일 실시예에서, 도 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 fog tracker 122 and sets the idle node to the node information for the first sub-task. In addition, routing information of the second sub-task that delivers a message to the first sub-task may be modified based on the idle node.

일 실시예에서, 도 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 fog computing system 100 of FIG. 1.

사용자 단말(110)에서 하나의 파일을 복수의 파일 조각들로 분할하여 인코딩할 수 있다(S1710).In the user terminal 110, a single file may be divided into a plurality of file fragments and encoded (S1710).

이후, 사용자 단말(110)은 리소스(또는, 파일을 저장할 포그 노드에 대한 정보)를 포그 트래커(122)에 요청하고(S1715), 포그 트래커(122)를 통해 포그 노드들 중에서 파일 조각들을 저장할 타겟 노드들을 검색하며(S1720), 검색결과(예를 들어, 포그 노드 리스트)를 사용자 단말(110)에 회신할 수 있다(S1725).Thereafter, the user terminal 110 requests a resource (or information about a fog node to store a file) to the fog tracker 122 (S1715), and a target to store pieces of files among the fog nodes through the fog tracker 122 The nodes are searched (S1720), and the search results (eg, fog node list) may be returned to the user terminal 110 (S1725).

이후, 사용자 단말(110)로부터 타겟 노드들(예를 들어, 포그 노드(121))에 파일 조각들을 각각 배포하여 저장할 수 있다(S1730).Subsequently, file fragments may be distributed and stored from the user terminal 110 to target nodes (eg, the fog node 121) (S1730).

이후, 저장된 파일에 대한 읽기 요청(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 fog tracker 122. For example, one piece of file may be duplicated and stored in a plurality of target nodes. In this case, one target node having the fastest response speed among the target nodes may be selected. For example, the user terminal 1220 requests the fog tracker 122 to search for the target node (S1740), and the fog tracker 122 searches for the target node based on the response speed (or delay rate), (S1745), the search result may be provided to the user terminal 110 (S1750).

이후, 사용자 단말(110)은 대상 노드(예를 들어, 포그 노드(121))에 파일(또는, 파일 조각)의 전송을 요청하고(S1755), 대상 노드는 이에 응답하여 파일을 사용자 단말(110)에 전송할 수 있다(S1760). 이후, 사용자 단말(110)은 파일 조각들을 디코딩하여(S1765) 파일을 확인할 수 있다.Thereafter, the user terminal 110 requests the transmission of the file (or file fragment) to the target node (eg, the fog node 121) (S1755), and the target node responds to the file to the user terminal 110 ) (S1760). Thereafter, the user terminal 110 may check the file by decoding the file fragments (S1765).

한편, 도 17에서 사용자 단말(110)에서 파일 조각들을 수집 및 디코딩하는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 검색된 대상 노드에서 파일 조각들을 수집하여 디코딩할 수도 있다.Meanwhile, in FIG. 17, it has been described as collecting and decoding file fragments in the user terminal 110, but is not limited thereto. For example, file fragments may be collected and decoded from the searched target node.

도 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)

사용자 단말, 및 상기 사용자 단말과 클라우드(cloud) 사이에 위치하는 포그 노드(fog node) 및 포그 트래커(fog tracker)를 포함하는 포그 컴퓨팅 시스템에서 수행되는 포그 컴퓨팅 방법에서,
상기 사용자 단말에서 객체 지향 프로그래밍(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.
제 1 항에 있어서, 상기 포그 노드들은 지연시간(latency)에 기초하여 복수의 포그 클러스터들로 분류(clustering)되고,
상기 타겟 노드들을 검색하는 단계는,
상기 포그 클러스터들 중 상기 사용자 단말과 가장 인접한 포그 클러스터를 검색하는 단계; 및
상기 검색된 포그 클러스터에서 상기 타겟 노드들을 검색하는 단계를 포함하는 포그 컴퓨팅 방법.
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.
제 1 항에 있어서, 상기 어플리케이션은 복수의 객체들(objects)를 포함하고,
상기 어플리케이션을 상기 포그 어플리케이션으로 변환하는 단계는,
상기 객체들을 상기 서브 태스크들로 분리(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.
제 1 항에 있어서,
상기 어플리케이션을 상기 포그 어플리케이션들로 변환하는 단계 이전에, 상기 포그 노드들 각각의 리소스 정보를 상기 포그 트래커에 등록하는 단계를 더 포함하고,
상기 리소스 정보는 상기 포그 노드들 각각의 자원 정보, 지연시간 정보, 운영 체제 정보 및 플랫폼 정보를 포함하며,
상기 타겟 노드들은 상기 리소스 정보에 기초하여 검색되는 포그 컴퓨팅 방법.
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.
제 4 항에 있어서, 상기 포그 어플리케이션들을 패키징하는 단계는,
상기 타켓 노드들이 상기 포그 어플리케이션이 실행되는 도커(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 서브 태스크에 대한 노드 정보에 상기 유휴 노드를 추가하는 단계; 및
상기 유휴 노드에 기초하여 상기 제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 타겟 노드에 장애가 발생한 경우, 상기 제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.
사용자 단말, 및 상기 사용자 단말과 클라우드(cloud) 사이에 위치하는 포그 노드(fog node) 및 포그 트래커(fog tracker)를 포함하는 포그 컴퓨팅 시스템에서 수행되는 포그 컴퓨팅 방법에서,
상기 사용자 단말에서 하나의 파일을 복수의 파일 조각들로 분할하여 인코딩하는 단계;
상기 포그 트래커를 통해 상기 포그 노드들 중에서 상기 파일 조각들을 저장할 타겟 노드들을 검색하는 단계;
상기 타겟 노드들에 상기 파일 조각들을 각각 배포하여 저장하는 단계;
상기 타겟 노드들 중에서 가장 빠른 응답속도를 가지는 대상 노드들을 선택하는 단계; 및
상기 대상 노드들로부터 상기 파일 조각들을 수집하여 디코딩하는 단계를 포함하는 포그 컴퓨팅 방법.
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.
KR1020180126787A 2018-10-23 2018-10-23 Fog computing method with blockchain-based idle resoure sharing KR102191586B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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