KR102436443B1 - 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치 - Google Patents

실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치 Download PDF

Info

Publication number
KR102436443B1
KR102436443B1 KR1020200180078A KR20200180078A KR102436443B1 KR 102436443 B1 KR102436443 B1 KR 102436443B1 KR 1020200180078 A KR1020200180078 A KR 1020200180078A KR 20200180078 A KR20200180078 A KR 20200180078A KR 102436443 B1 KR102436443 B1 KR 102436443B1
Authority
KR
South Korea
Prior art keywords
data
resource sharing
sharing control
control node
transmission
Prior art date
Application number
KR1020200180078A
Other languages
English (en)
Other versions
KR20220089447A (ko
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 KR1020200180078A priority Critical patent/KR102436443B1/ko
Priority to US17/138,331 priority patent/US20220201054A1/en
Publication of KR20220089447A publication Critical patent/KR20220089447A/ko
Application granted granted Critical
Publication of KR102436443B1 publication Critical patent/KR102436443B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/12Shortest path evaluation
    • H04L45/127Shortest path evaluation based on intermediate node capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/70Routing based on monitoring results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W72/00Local resource management
    • H04W72/20Control channels or signalling for resource management

Landscapes

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

Abstract

실시간 데이터 전송 네트웍에서 데이터 연산 부하를 분산시키고 중복 연산을 감소시켜서 네트웍 효율을 높일 수 있는 자원 공유 제어 장치 및 방법을 제공한다. 본 발명의 자원 공유 제어 장치는 데이터 생성자가 제공하는 송신 데이터를 데이터 소비자에 전달하는 실시간 데이터 전송 시스템을 구성하는 복수의 자원 공유 제어 장치들 중 어느 하나이다. 자원 공유 제어 장치는 프로세서와, 상기 프로세서에 의해 실행되는 프로그램 명령어들을 저장하는 메모리를 포함한다. 상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때: 상기 송신 데이터가 상기 실시간 데이터 전송 시스템 내에서 상기 복수의 자원 공유 제어 장치들 중 적어도 일부의 자원 공유 제어 장치를 경유할 전달 경로를 설정하는 동작; 및 상기 송신 데이터에 대하여 수행해야 할 연산을 복수의 부분 연산으로 분해하고, 각 부분 연산을 상기 전달 경로 상에 있는 하나 이상의 자원 공유 제어 장치에 할당하여 수행되도록 하는 동작;을 수행하는 명령어들을 포함한다.

Description

실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치{Method and Apparatus for Controlling Resource Sharing in Real-time Data Transmission System}
본 발명은 데이터 전송 네트웍에서의 라우팅 방법 및 장치에 관한 것으로서, 보다 상세하게는, 스트리밍 네트웍 내에서의 전송 경로를 부하에 따라 동적으로 재구성하여 라우팅을 최적화하는 방법 및 장치에 관한 것이다.
스트리밍은 컨텐트나 데이터 파일을 다운로드하는 대신에 해당 파일을 작은 크기로 쪼개어 배포하는 전송 방식을 말한다. 전통적으로 스트리밍은 멀티미디어나 동영상 컨텐츠를 소비자들에게 배포하는데 주로 이용되어 왔으며, P2P(Peer-to-peer) 네트웍에서의 스트리밍도 지속적으로 증가해왔다. 그렇지만, 최근에는 스트리밍과 P2P 서비스에 대한 수요가 멀티미디어 컨텐츠 이외의 다양한 데이터 파일에 대해서도 증가하고 있다. 즉, 스마트 시티, 스마트 팩토리, 자유 주행 자동차 등 다수의 디바이스, 혹은 노드들이 연결된 P2P 네트웍과 사물인터넷(IoT) 디바이스로부터 다양한 센서들로 송수신하는 데이터 트래픽이 확대되고 있으며, 이에 따라 데이터를 작게 쪼개어 전송하는 방식을 사용하는 것이 점차 증가하고 있다. 아울러, 맵리듀스(MapReduce)나 아파치 하둡과 같은 분산 병렬 컴퓨팅 프레임들과 컴퓨팅 클러스터의 확대로 인하여, 데이터의 분할 전송은 향후 크게 증가될 것으로 예상된다.
멀티미디어나 일반 데이터를 불문하고, 데이터의 분할 전송은 네트웍 상에서 전송 중에 데이터의 연산 내지 처리도 가능하게 해준다. 또한, 데이터는 네트웍 내에서 다수의 서버 내지 노드를 경유하면서 임시 저장될 수도 있다. 그런데, 종래에는 데이터 연산이나 저장 프로세스가 네트웍 내에 있는 다수의 노드들 중에서 데이터 소비자에 인접한 노드에서 이루어지는 경우가 많아서, 일부 노드에 부하가 집중될 수 있다는 문제가 있다. 또한, 복수의 노드들에서 중복된 연산이나 저장이 행해질 수 있어서 네트웍의 전체적 효율이 저하될 수 있다.
본 발명은 P2P 방식으로 데이터를 전송하는 실시간 데이터 전송 네트웍에서 데이터 연산 부하를 분산시키고 중복 연산을 감소시켜서 네트웍 효율을 높일 수 있는 자원 공유 제어 장치 및 방법을 제공한다.
본 발명의 일 실시예에 따른 자원 공유 제어 장치는 데이터 생성자가 제공하는 송신 데이터를 데이터 소비자에 전달하는 실시간 데이터 전송 시스템을 구성하는 복수의 자원 공유 제어 장치들 중 어느 하나이다. 자원 공유 제어 장치는 프로세서와, 상기 프로세서에 의해 실행되는 프로그램 명령어들을 저장하는 메모리를 포함한다. 상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때: 상기 송신 데이터가 상기 실시간 데이터 전송 시스템 내에서 상기 복수의 자원 공유 제어 장치들 중 적어도 일부의 자원 공유 제어 장치를 경유할 전달 경로를 설정하는 동작; 및 상기 송신 데이터에 대하여 수행해야 할 연산을 복수의 부분 연산으로 분해하고, 각 부분 연산을 상기 전달 경로 상에 있는 하나 이상의 자원 공유 제어 장치에 할당하여 수행되도록 하는 동작;을 수행하는 명령어들을 포함한다.
상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때: 상기 송신 데이터를 받아들이고, 상기 송신 데이터 또는 송신 데이터에 상기 연산을 수행하여 도출된 연산 결과 데이터를 상기 데이터 소비자 또는 다른 자원 공유 제어 장치에 출력하는 동작;을 수행하는 명령어들을 더 포함할 수 있다.
상기 전달 경로를 설정하는 동작을 수행하는 명령어들은 상기 데이터 생성자와 상기 데이터 소비자 간의 거리를 최소화할 수 있도록 상기 전달 경로를 설정하는 명령어들을 포함할 수 있다.
상기 전달 경로를 설정하는 동작을 수행하는 명령어들은 주변에 있는 다른 자원 공유 제어 장치들의 상태정보를 확인하고, 상기 상태정보를 토대로 상기 전달 경로를 설정하는 명령어들을 포함할 수 있다.
상기 전달 경로를 설정하는 동작을 수행하는 명령어들은 주변에 있는 다른 자원 공유 제어 장치에서의 지연시간을 확인하고, 상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 명령어들을 포함할 수 있다.
상기 각 부분 연산을 상기 전달 경로 상에 있는 하나 이상의 자원 공유 제어 장치에 할당하는 동작을 수행하는 명령어들은 상기 실시간 데이터 전송 시스템 내에서의 중복 연산을 감소시킬 수 있게 하는 방식으로 상기 각 부분 연산을 상기 하나 이상의 자원 공유 제어 장치에 할당할 수 있다.
상기 각 부분 연산을 상기 전달 경로 상에 있는 하나 이상의 자원 공유 제어 장치에 할당하는 동작을 수행하는 명령어들은 상기 데이터 소비자로부터 상기 연산에 대한 등록 요청을 받아들일 수 있다.
상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때: 상기 각 부분 연산을 상기 하나 이상의 자원 공유 제어 장치에 할당한 후, 상기 전달 경로의 설정과 상기 각 부분 연산의 할당 결과를 재조정하여 상기 전달 경로와 상기 할당 결과를 최적화하는 동작;을 수행하는 명령어들을 더 포함할 수 있다.
상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때: 주변에 있는 다른 자원 공유 제어 장치들의 상태정보를 수집하는 동작; 및 상기 상태 정보를 상기 다른 자원 공유 제어 장치들과 공유하는 동작;을 수행하는 명령어들을 더 포함할 수 있다.
한편, 본 발명의 일 실시예에 따른 자원 공유 제어 방법은 복수의 데이터 처리 노드를 구비하며 데이터 생성자가 제공하는 송신 데이터를 데이터 소비자에 전달하는 실시간 데이터 전송 네트웍에서 구현될 수 있다. 자원 공유 제어 방법은 (a) 상기 송신 데이터를 처리하기 위한 리소스를 산정하는 단계; (b) 산정된 리소스를 토대로, 상기 송신 데이터가 상기 실시간 데이터 전송 네트웍 내에서 상기 복수의 데이터 처리노드들 중 적어도 일부의 데이터 처리 노드를 경유할 전달 경로를 설정하는 단계; 및 (c) 상기 송신 데이터가 상기 데이터 소비자에게 전달되기 전에 수행되어야 하는 연산을 복수의 부분 연산으로 분해하고, 각 부분 연산을 상기 전달 경로 상에 있는 하나 이상의 데이터 처리 노드에 할당하여 수행되도록 하는 단계;를 포함한다.
자원 공유 제어 방법은 상기 송신 데이터를 받아들이고, 상기 송신 데이터 또는 송신 데이터에 상기 연산을 수행하여 도출된 연산 결과 데이터를 상기 데이터 소비자 또는 다른 자원 공유 제어 장치에 출력하는 단계를 더 포함할 수 있다.
상기 (b) 단계에서 상기 전달 경로는 상기 데이터 생성자와 상기 데이터 소비자 간의 거리를 최소화할 수 있도록 설정될 수 있다.
상기 (b) 단계는 주변에 있는 다른 자원 공유 제어 장치들의 상태정보를 확인하는 단계; 및 상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 단계;를 포함할 수 있다.
상기 (b) 단계는 주변에 있는 다른 자원 공유 제어 장치들에서의 지연시간을 확인하는 단계; 및 상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 단계;를 포함할 수 있다.
(c) 단계에서, 상기 각 부분 연산은 상기 실시간 데이터 전송 시스템 내에서의 중복 연산을 감소시킬 수 있게 하는 방식으로 상기 하나 이상의 자원 공유 제어 장치에 할당될 수 있다.
자원 공유 제어 방법은 상기 전달 경로의 설정과 상기 각 부분 연산의 할당 결과를 재조정하여 상기 전달 경로와 상기 할당 결과를 최적화하는 단계를 더 포함할 수 있다.
상기 (c) 단계는 상기 데이터 소비자로부터 상기 연산에 대한 등록 요청을 받아들이는 단계를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 다수의 노드들을 포함하고 P2P 서비스 데이터를 전송하는 실시간 데이터 전송 네트웍에서 데이터 연산 부하가 노드들 사이에서 분산되고 중복 연산이 감소될 수 있다. 이에 따라, 클라이언트의 스트리밍 요청을 받은 노드나 그밖의 노드에 부하가 집중되는 것을 방지할 수 있게 된다. 또한, 네트웍 효율이 높아질 수 있으며, 동일한 연산 능력과 대역폭으로 동시에 이용할 수 있는 이용자들의 수가 증대될 수 있다.
이와 같은 데이터 전송 시스템은 IoT 데이터, 웹 이벤트, 센서 데이터, 미디어 데이터, 데이터 송수신(transaction) 로그, 시스템 로그 등 다양한 종류의 데이터를 처리할 수 있다. 데이터 전송 시스템은 일기예보, 라이브 미디어 스트리밍, 교통정보, 실시간 모니터링 정보, 예측 등 다양한 분야에 적용될 수 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 전송 시스템의 개략도이다.
도 2는 생성자와 소비자 사이에 설정되는 경로의 일 예를 보여주는 도면이다.
도 3a 및 3b는 브로커 네트웍 내에서 연산을 수행하는 노드들의 선택에 따른 중복 연산 가능성을 보여주는 도면들이다.
도 4는 본 발명의 일 실시예에 따른 브로커 네트웍 내에 있는 각 노드의 기능적 블록도이다.
도 5는 본 발명의 일 실시예에 따른 브로커 네트웍 내에서 관리자 노드와 작업 노드의 상호접속 예를 보여주는 도면이다.
도 6은 본 발명의 일 실시예에 따른 관리자 노드에서의 스케쥴링 엔진의 기능적 블록도이다.
도 7은 본 발명의 일 실시예에 따른 데이터 전송 시스템에서 경로 설정 및 자원할당 스케쥴링 프로세스의 일 예를 보여주는 흐름도이다.
도 8은 경로 설정 과정을 구체적으로 보여주는 흐름도이다.
도 9는 본 발명의 일 실시예에 따른 연산 등록 및 처리 프로세스를 보여주는 흐름도이다.
도 10은 연산 등록 및 처리 프로세스를 묘사하는 모식도이다.
도 11은 신규 노드 추가에 따른 브로커 네트웍 확장 과정을 보여주는 흐름도이다.
도 12는 본 발명의 일 실시예에 따른 각 노드의 물리적인 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 데이터 전송 시스템의 개략도이다.
도시된 데이터 전송 시스템은 하나 이상의 데이터 생성자 디바이스(10a~10n: 이하 "생성자"로 약칭함)와, 복수의 데이터 소비자 디바이스(20a~20m: 이하 "소비자"로 약칭함)와, 상기 생성자(10a~10n)로부터 소비자(20a~20m) 사이의 경로를 제공하는 브로커 네트웍(30)을 포함한다. 상기 데이터 전송 시스템은 P2P 방식으로 데이터를 전송하는 시스템으로서, 생성자(10a~10n)와 소비자(20a~20m)의 역할이 뒤바뀔 수 있고, 생성자들(10a~10n) 및 소비자들(20a~20m) 중 일부가 브로커 네트웍(30)에 편입될 수도 있으며, 브로커 네트웍(30)에 있는 노드 중 일부가 생성자(10a~10n) 또는 소비자(20a~20m)로 작용할 수도 있다.
각 생성자(10a~10n)는 원본 데이터를 생성하여 브로커 네트웍(30)을 통해 소비자들(20a~20m)에게 공급한다. 이때, 각 생성자(10a~10n)는 원본 데이터를 분할(partitioning)하여 데이터 스트림 형태로 소비자들(20a~20m)에게 공급할 수 있다. 상기 원본 데이터의 예로는 동영상과 같은 멀티미디어 컨텐츠, 데이터 파일, 애플리케이션 프로그램, 센서 데이터 등을 들 수 있는데, 이에 한정되는 것은 아니다. 비록 "생성"이라는 표현을 사용하였지만, 생성자(10a~10n)가 공급하는 원본 데이터는 해당 생성자(10a~10n)가 직접 제작한 것에 한정되지 않으며 다른 주체가 제작한 것일 수도 있다. 각 생성자(10a~10n)는 원본 데이터 또는 그로부터 분할된 데이터에 대한 브로커 네트웍(30)에서의 추가적인 복제(replication) 및 분할(partitioning)에 대한 정책을 설정할 수 있다. 각 생성자(10a~10n)는 개인용 컴퓨터(PC)나 스마트폰과 같은 개인용 단말기일 수도 있고, 서버 장치일 수도 있다. 또한, 각 생성자(10a~10n)는 이와 같은 장치들 내에서 실행되는 애플리케이션 프로그램일 수도 있다.
각 소비자(20a~20m)는 브로커 네트웍(30)을 통해 생성자(10a~10n)로부터 데이터를 푸시 방식으로 수신하고, 수신한 데이터를 소비한다. "소비"의 구체적인 방법은 각 데이터의 종류에 따라 다를 수 있다. 각 소비자(20a~20m)는 동종의 데이터에 대한 수신 주기에 대한 정책을 설정할 수 있다. 이러한 정책은 데이터의 주제가 센서 데이터 또는 일기예보와 같이 주기적인 획득이 필요한 것일 때 유용할 수 있다. 각 소비자(20a~20m)는 개인용 컴퓨터(PC)나 스마트폰과 같은 개인용 단말기일 수도 있다. 또한, 각 소비자(20a~20m)는 이와 같은 장치들 내에서 실행되는 애플리케이션 프로그램일 수도 있다.
브로커 네트웍(30)은 공중망 예컨대 인터넷 상에서 구성될 수 있는 일종의 오버레이 네트웍으로서, 논리적으로 연결될 수 있는 다수의 노드 디바이스들(32a~32p: 이하 "노드"들로 약칭함)을 포함한다. 즉, 다수의 노드들(32a~32p)이 하나의 브로커 네트웍을 구성하여 예컨대 소비자(20a~20m)가 요청하는 데이터를 생성자(10a~10n)로부터 해당 소비자(20a~20m)로 전달하게 된다. 이때, 생성자(10a~10n)나 소비자(20a~20m)가 브로커 역할을 하는 노드(32a~32p)를 임의로 지정할 필요는 없으며, 하나 이상의 노드(32a~32p)를 경유하는 최적의 경로가 자동으로 정해진다. 각 노드(32a~32p)는 정해진 정책에 따라 데이터를 임시 저장할 수 있다. 상기 다수의 노드들(32a~32p) 각각은 예컨대 서버 장치에 의해 구현될 수 있다.
본 발명에 의한 브로커 네트웍(30)은 생성자(10)와 소비자(20)의 상황에 따라 적절한 데이터 전송 경로를 설정해줄 수 있다. 도 2는 생성자(10)와 소비자(20) 사이에 설정되는 경로의 일 예를 보여준다. 경로 설정은 각 노드(32a~32p)의 CPU 및 메모리의 사용도 등 자원 상태와, 각 노드 간의 거리와 각 잠재적 경로에 따른 생성자(10)와 소비자(20)의 거리 등을 감안하여 이루어질 수 있다. 예컨대, 생성자(10)와 소비자(20)의 거리를 최소화하면서 각 노드(32a~32p) 간에 역할이 유기적으로 분배될 수 있게 하는 방식으로, 최적의 경로가 설정될 수 있다. 청구범위를 포함하여 본 명세서에서 "거리"라는 용어는 두 장치간의 물리적인 거리를 일컫는 것이 아니라, 데이터 처리 시간 및/또는 데이터 처리에 소요되는 리소스의 양을 토대로 측정되는 양임을 유의해야 한다.
경로 설정은, 전송 과정에서 데이터 처리 즉, 연산이 필요한 경우에 중복 연산이 감소될 수 있도록, 이루어질 수 있다. 예를 들어 도 3a와 같이 소비자(20)에게 데이터를 전달하는 최종 노드(32x, 32y, 32z)에서 모든 연산이 이루어지는 경우에는 'A+B'라는 연산이 3개의 노드(32x, 32y, 32z)에서 중복으로 이루어진다. 이에 반하여, 본 발명의 일 실시예에 따라서 도 3b와 같이 브로커 네트웍(30) 내의 한 노드(32u)에서 'A+B'라는 공통 연산이 이루어지도록 하고 다른 노드(32v)에서 '+C'라는 연산이 이루어지도록 한다면, 중복 연산을 크게 줄이고 자원 사용을 최소화할 수 있게 된다.
도 4는 본 발명의 일 실시예에 따른 각 노드(32a~32p)의 기능적 블록도이다. 도시된 바와 같이, 각 노드(32a~32p)는 전송 및 연산부(100)와, 스케쥴링 엔진(140)를 포함한다.
전송 및 연산부(100)는 생성자(10a~10n) 또는 다른 노드(32a~32p)로부터 데이터를 받아들이고, 필요한 연산을 수행한 후, 받아들인 데이터 또는 연산 결과 데이터를 소비자(20a~20m) 또는 다른 노드에 전송한다.
일 실시예에 있어서, 전송 및 연산부(100)는 소스 셀(102)과, 연산 셀(104)과, 싱크 셀(106)과, 저장 셀(108)과, 라우팅 셀(110)을 포함할 수 있다. 상기 셀들(102~110)은 메모리에 저장된 상태에서 실행되는 프로그램 명령어들 내지 이들이 구현하는 프로세스로서, 각 셀에는 스트리밍 데이터 처리 과정에서 특정 상황에 따라 역할이 부여된다.
소스 셀(102)은 생성자들(10a~10n)이 전송하는 스트리밍 데이터를 관리하고, 연산 셀(104), 싱크 셀(106) 또는 저장 셀(108)에 전달한다. 또한 소스 셀(102)은 데이터의 유입 속도보다 후속 셀 또는 후속 노드에서의 데이터 처리 속도가 느린 경우 데이터들의 처리 순서와 배압을 조정할 수 있다.
연산 셀(104)은 소스 셀(102)로부터 받은 스트리밍 데이터에 연산을 행하고, 연산 결과 데이터를 싱크 셀(106), 저장 셀(108), 또는 후속 노드에 전달한다.
싱크 셀(106)은 소비자(20) 직전에 있는 노드에서만 활성화되는 셀로서, 소스 셀(102)을 통해 수신된 스트리밍 데이터 또는 다른 노드로부터 수신된 스트리밍 데이터를 최종 병합하여 소비자(20)에게 출력한다. 싱크 셀(106)은 데이터의 유입 속도보다 소비자(20)에서의 데이터 처리 속도가 느린 경우 데이터들의 처리 순서와 배압을 조정할 수 있다.
저장 셀(108)은 소스 셀(102), 연산 셀(104), 또는 다른 노드로부터 받은 데이터를 메모리 또는 저장 장치에 저장할 수 있다. 이때, 메모리는 소량의 데이터 또는 저장시간이 짧은 데이터를 임시 저장하는데 사용될 수 있다. 한편, 저장 장치는 상기 메모리보다 상대적으로 많은 양의 데이터를 상대적으로 오랫동안 저장할 수 있다.
라우팅 셀(110)은 주변 노드들의 라우팅 셀들과 주기적/비주기적으로 통신하면서 주변 노드들에서의 지연시간(latency)을 파악하고, 지연시간이 최소화되도록 주변 노드들과 조율하면서 각 데이터에 대한 경로 설정을 할 수 있다. 일 실시예에서는 상기 라우팅 셀(110)이 스케쥴링 엔진(180)과 별도로 마련되지만, 변형된 실시예에서는 라우팅 셀(110)이 스케쥴링 엔진(180)과 하나로 통합될 수도 있다.
위와 같은 전송 및 연산부(100)의 셀들(110~120) 중에서, 라우팅 셀(110)은 해당 노드가 켜져 있고 본 발명에 의한 동작이 수행중인 상태에서는 항상 실행되는 프로그램 명령어들로 구현된다. 그렇지만, 라우팅 셀(110)을 제외한 셀들 즉, 소스 셀(102)과, 연산 셀(104)과, 싱크 셀(106)과, 저장 셀(108)의 동작은 유동적이다. 즉, 이들 셀은 스케쥴링 엔진(140)의 제어 하에 필요할 때에만 실행되고, 수행할 태스크가 없는 상태에서는 종료되거나 슬립 모드에 머무르게 된다.
스케쥴링 엔진(140)은 각 셀들(102~110)의 상태 정보를 수집하고 관리한다. 여기에서 셀의 상태란 각 셀의 활성화 여부, 각 셀이 사용 중인 리소스의 양, 각 셀이 수행중인 태스크에 대한 정보를 포함한다. 여기에서, '태스크'란 생성자로부터 소비자에게 전달되는 전송 데이터의 중계와, 상기 전송 데이터에 대한 임시저장, 그리고 상기 전송 데이터에 대한 연산을 포함한다. 그리고 '태스크에 대한 정보'란 용어는, 예컨대, 상기 전송 데이터에 대한 상세 정보(즉, 소스 셀이 수신하고 있는 데이터의 출처인 생성자, 그 데이터에 대한 소비자, 경유하는 노드 등에 대한 정보)와, 연산 셀이 수행 중인 연산의 종류와 연산 대상 데이터 등에 대한 정보를 포함한다.
또한, 스케쥴링 엔진(140)은 라우팅 셀(110)을 제외한 셀들 즉, 소스 셀(102)과, 연산 셀(104)과, 싱크 셀(106)과, 저장 셀(108)의 생명주기를 관리한다. 즉, 스케쥴링 엔진(140)은 이들 셀들이 수행할 태스크가 발생한 경우 해당 셀을 깨우거나 실행시키고, 수행할 태스크가 없어진 때에는 해당 셀을 슬립 모드에 진입하게 하거나 종료시킨다.
아울러, 스케쥴링 엔진(140)은 다른 노드들에 있는 스케쥴링 엔진과 통신하여, 각 노드의 리소스 사용량, 컴퓨팅 부하, 사용중인 송수신 대역폭 등의 상태 정보를 파악할 수 있다. 스케쥴링 엔진(140)은 이러한 상태 정보를 토대로 해당 노드 내에 있는 각 셀들(102~110)의 동작을 조절할 수 있다. 이와 같이, 스케쥴링 엔진(140)은 규칙-기반(rule-based)으로 동작하는 엔진으로서, 각 노드의 리소스 상태에 따라 유기적으로 역할을 배분하고 스트리밍 데이터의 최적 경로를 생성해줄 수 있다.
본 발명의 일 실시예에 따르면, 브로커 네트웍(30) 내에 있는 노드들(32a~32p)은 역할에 따라 두 가지 즉, 관리자(manager) 노드와 작업(worker) 노드로 구분할 수 있다. 도 5는 브로커 네트웍(30) 내에서 관리자 노드들(40)과 작업 노드들(50)의 상호접속 예를 보여준다. 도시된 바와 같이, 각 관리자 노드(40)는 하나 이상의 관리자 노드와 하나 이상의 작업 노드(50)에 접속될 수 있다.
각 관리자 노드(40)는 다른 관리자 노드들의 상태 정보와, 자신에게 접속되어 있거나 접속될 수 있는 작업 노드의 상태 정보를 수집하고 관리한다. 관리자 노드(40)는 작업 노드(50)에게 태스크를 할당한다. 관리자 노드(40)는 블록체인과 유사한 방식으로 pBFT(practical Byzantine Fault Tolerance) 계열의 알고리즘을 통해 단일 오류점(Single Point of Failure)으로부터 안전할 수 있도록 노드들의 상태 정보를 저장한다. 즉, 본 발명의 일 실시예에 따른 브로커 네트웍(30)은 전체 노드에 대한 글로벌 상태 정보가 이처럼 여러 관리자 노드에 분산되어 저장되는 탈중앙화된 구조를 가진다.
작업 노드(50)는 관리자 노드(40)에게 가용 리소스와 함께 자신의 노드에 존재하는 셀들의 상태 정보를 전달한다. 그리고, 작업 노드(50)는 관리자 노드(40)로부터 태스크를 할당받아 셀들을 통해 이를 실행한다.
한편, 브로커 네트웍(30)의 전체적인 부하에 따라 작업 노드(50)가 관리자 노드(40)로 역할이 변경될 수 있고, 관리자 노드(40)가 작업 노드(50)로 역할이 변경될 수도 있다. 특히, 관리자 노드(40) 중 어느 하나에 오류가 발생하여 작동불능 상태가 된 경우, 관리자 노드들의 합의를 통해서 작업 노드(50) 중 하나가 관리자 노드(40)로 설정될 수 있다.
도 6은 본 발명의 일 실시예에 따른 관리자 노드(40)에서의 스케쥴링 엔진(140)의 기능적 블록도이다. 스케쥴링 엔진(140)은 태스크 생성부(142), 스케쥴러(144), 실행부(146), 및 저장부(148)를 포함한다.
태스크 생성부(142)는 클라이언트 예컨대 소비자(20a~20m) 또는 생성자(10a~10n)로부터 수신한 데이터 전송 요청을 분해하거나 조합하여 태스크를 생성하고, 생성된 태스크를 수행하는데 필요한 리소스를 산정한다.
스케쥴러(144)는 노드 내에 있는 셀들(102~110)의 상태 정보를 수집하고 관리할 수 있다. 또한, 스케쥴러(144)는 글로벌 상태 정보를 다른 관리자 노드(40)의 스케쥴러와 공유하고, 태스크를 다른 관리자 노드(40)의 스케쥴러와 분담할 수 있다. 여기서, 글로벌 상태 정보는 각 관리자 노드(40)와 그에 연결된 각 작업 노드의 리소스 현황과 수행해야 할 태스크에 대한 정보를 포함할 수 있다. 수행해야 할 태스크는 해당 관리자 노드에서 생성된 태스크와 다른 관리자 노드로부터 할당받은 태스크를 포함할 수 있다. 아울러, 스케쥴러(144)는 수행해야 할 태스크 중 적어도 일부를 해당 관리자 노드에서 수행하기로 결정하고, 나머지 태스크를 연결된 작업 노드(50)에 할당할 수 있다.
실행부(146)는 노드가 직접 수행해야 할 태스크를 해당 노드 내에 있는 셀들을 통해 실행하는 컨테이너이다. 실행부(146)는 노드 내에 있는 셀들 중 라우팅 셀(110)을 제외한 셀들 즉, 소스 셀(102)과, 연산 셀(104)과, 싱크 셀(106)과, 저장 셀(108)의 생명주기를 관리하고, 셀들의 동작을 제어한다.
저장부(148)는 각 셀들로부터 받은 상태 정보를 저장한다. 또한, 저장부(148)는 다른 노드들, 에컨대 다른 관리자 노드들과 적어도 일부의 작업 노드에 대한 상태 정보를 저장할 수 있다. 저장부(148)는 정규 데이터베이스 형태로 구축될 수도 있고 스키마가 없는 약식 데이터베이스 형태로 되어 있을 수도 있다.
한편, 작업 노드(40)는 도 6에 도시된 관리자 노드(40)와 유사하게 구성될 수 있다. 동작 과정에서 작업 노드(40)는 실행부(146)와 저장부(148)가 주된 역할을 수행한다. 그렇지만, 앞서 언급한 바와 같이 작업 노드(50)가 관리자 노드(40)로 역할이 변경될 수 있다는 점을 감안하여, 작업 노드(40)가 관리자 노드(40)와 유사하게 구성되는 것이 바람직하다.
도 7은 본 발명의 일 실시예에 따른 데이터 전송 시스템의 전반적인 동작 과정을 보여주는 흐름도이다.
먼저, 어느 한 소비자(20a~20m)의 유저는 해당 디바이스를 통해서 데이터 스트림을 요청할 수 있다(제300단계). 데이터 스트림에 대한 요청은 해당 소비자 디바이스에서 실행되는 예컨대 특정 소재에 관한 애플리케이션 프로그램에서 이루어질 수 있다. 데이터 스트림 요청의 수신자는 사전에 정해진 생성자(10a~10n) 또는 어느 한 노드(30a~30p)일 수 있다. 일 예로서, 데이터 스트림 요청은 상기 애플리케이션 프로그램에 의해 사전에 정해진 IP 주소 또는 URL의 생성자(10a~10n) 또는 노드(30a~30p)로 전송될 수 있다. 다른 예에서는, 데이터 스트림 요청은 소비자 디바이스에서 데이터 스트림 요청 항목에 하이퍼링크된 생성자(10a~10n) 또는 노드(30a~30p)로 전송될 수 있다. 한편, 데이터 스트림 요청에는 리소스 절약과 지연시간 최소화라는 상반된 정책 중에서 소비자(20a~20m)가 선택한 정책 비중을 나타내는 가중치가 포함될 수 있다. 상기 가중치는 데이터 전송 속도와 대역폭에 영향을 미칠 수 있다.
상기 데이터 스트림 요청을 수신하는 노드(30a~30p)는 관리자 노드(40)일 수 있지만, 생성자(10a~10n) 또는 작업 노드(50)일 수도 있다. 상기 데이터 스트림 요청을 수신하는 노드(30a~30p)가 생성자(10a~10n) 또는 작업 노드(50)인 경우, 해당 생성자 또는 작업 노드는 스트림 요청을 어느 한 관리자 노드(40)로 전달할 수 있다. 소비자(20a~20m)로부터 직접 또는 생성자(10a~10n)나 작업 노드(50)를 경유하여 스트림 요청을 수신한 관리자 노드(40)는 경로 설정과 자원할당을 시작한다.
관리자 노드(40)의 태스크 생성부(142)는 데이터 스트림 요청을 처리하기 위한 태스크를 생성하고, 상기 태스크를 수행하는데 필요한 리소스를 산정한다. 또한 태스크 생성부(142)는 데이터 스트림 요청을 처리하는 과정에서 연산이 필요한 경우, 상기 필요한 연산을 복수의 부분 연산으로 분해하여 부분 연산의 조합 즉, 연산 시퀀스로 재해석한다. 태스크 생성부(142)는 필요한 리소스에 대한 정보와 상기 연산 시퀀스에 대한 정보를 스케쥴러(144)에 전달한다(제310단계).
이어서 상기 관리자 노드(40)의 스케쥴러(144)는 저장부(148)에 저장되어 있는 다른 관리자 노드들과 작업 노드들에 대한 상태 정보를 토대로 스트림의 전달 경로를 결정할 수 있다(제320단계). 도 8은 제320단계의 경로 설정 과정을 구체적으로 보여준다. 도 8을 참조하면, 경로 결정 과정을 보다 구체적으로 설명한다.
제322단계에서, 스케쥴러(144)는 다른 관리자 노드들과 작업 노드들을 포함하는 노드 목록에서 필요한 리소스를 가지고 있지 않은 노드들은 제외한다.
제324단계에서, 스케쥴러(144)는 현재 주제의 데이터가 저장되어 있는 저장소 - 즉, 노드들 또는 생성자(10a~10n) - 에 대한 정보를 획득하고, 해당 저장소로부터 데이터 스트림을 요청한 소비자(20a~20m)가 연결된 노드까지의 후보 경로 목록을 선정한다. 이때, 각 후보 경로 목록은 수행되어야 할 연산 시퀀스를 수행할 능력이 있는 잠재적 경로만을 포함하도록 선정될 수 있다.
제326단계에서, 스케쥴러(144)는 각 노드에서의 지연시간 정보와 노드간 전송에 소요되는 지연시간 정보를 라우팅 셀(110)로부터 획득하고, 각 후보 경로에서 예상되는 네트웍 지연시간을 계산한다.
제328단계에서, 스케쥴러(144)는 각 후보 경로에 존재하는 노드들에서 이미 실행되고 있거나 실행 예정인 연산에 대한 정보를 토대로, 중복 연산을 최소화할 수 있는 후보 경로들을 결정한다.
제330단계에서, 스케쥴러(144)는 데이터 스트림 요청 시에 소비자(20a~20m)가 선택했던 가중치를 적용하여 후보 경로들의 점수를 산정하고, 점수가 가장 높은 후보 경로를 최종 경로로 선정한다.
다시 도 7을 참조하면, 최종 경로 선정 후에 스케쥴러(144)는 선정된 경로 상에 있는 노드들의 실행부(146)에 태스크를 전달한다(제340단계).
실행부(146)는 노드 내에 있는 셀들의 동작을 제어하여 상기 태스크를 수행한다(제350단계). 태스크 수행이 완료되면, 실행부(146)는 자신이 속한 노드의 스케쥴러(144)에 태스크 수행이 완료되었음을 알린다.
각 노드의 스케쥴러는 태스크 수행이 성공했다는 것과 현재 노드에 남아있는 리소스를 최초의 관리자 노드에 전달한다. 관리자 노드의 스케쥴러는 이를 다른 관리자 노드들과 공유하여 글로벌 상태 정보를 업데이트한다(제360단계).
도 7의 실시예에 따르면, 소비자(20a~20m)로부터의 데이터 스트림 요청을 처리하는 과정에서 필요한 연산이 수행될 수 있다. 그렇지만, 변형된 실시예에서는 소비자(20a~20m)가 보다 적극적으로 스트리밍 데이터에 대한 연산을 등록하여, 등록된 연산이 수행되게 할 수 있다. 도 9와 도 10는 이와 같은 실시예를 보여준다. 도 9는 본 발명의 일 실시예에 따른 연산 등록 및 처리 프로세스를 보여주는 흐름도이고, 도 10은 연산 등록 및 처리 프로세스에 대한 모식도이다.
먼저, 어느 한 소비자(20a~20m)는 연산 등록을 요청할 수 있다(제400단계). 연산 등록은 해당 소비자 디바이스에서 실행되는 예컨대 특정 소재에 관한 애플리케이션 프로그램에서의 요청을 토대로 이루어질 수 있다. 연산 등록 요청은 데이터 스트림 요청과 함께 이루어질 수도 있지만, 독립적으로 이루어질 수도 있다.
청구범위를 포함하여 본 명세서에서 "연산"이라는 용어는 예컨대 데이터 병합, 재배열, 포맷 변환, 자르기, 일부 삭제, 다운샘플링, 이어붙이기, 일정 시간 단위로 데이터를 세그멘테이션하는 타임 윈도우잉 등 데이터 편집 및 조작을 지칭하는 의미로 사용된다. 이와 같은 연산의 일 예로서, 복수의 감시 카메라 영상을 하나의 영상으로 결합하거나, 감시 카메라 영상에 자막이나 포인터를 추가하는 것을 들 수 있다. 연산의 또 다른 예로는 복수의 센서 신호를 모아서 하나의 영상에 표시하는 것을 들 수 있다. 연산의 또 다른 예로는 동영상의 해상도를 소비자(20a~20m)의 디스플레이 해상도나 대역폭을 감안하여 낮추는 것을 들 수 있다. 연산의 또 다른 예로는 어느 한 생성자가 제공하는 동영상에 다른 생성자가 제공하는 자막을 입히는 것을 들 수 있다. 연산의 또 다른 예로는 생성자나 다른 권한있는 개체의 허락 하에 하나의 동영상 스트림을 둘 이상의 소비자(20a~20m)에게 배포하는 것을 들 수 있다.
어느 한 관리자 노드(40)의 태스크 생성부(142)는 소비자(20a~20m)로부터의 연산 등록 요청을 직접 또는 생성자나 다른 노드를 경유하여 받아들이고, 등록 요청된 연산을 복수의 부분 연산으로 분해한다. 태스크 생성부(142)는 복수의 부분 연산 즉, 연산 시퀀스를 수행하는데 필요한 리소스에 대한 정보와 상기 부분 연산에 대한 정보를 스케쥴러(144)에 전달할 수 있다(제410단계).
관리자 노드(40)의 스케쥴러(144)는 연산에 관련된 스트림의 전달 경로 상에 있는 노드들에 연산 시퀀스의 각 부분 연산을 분배한다(제420단계). 이때, 상기 노드들 중에 리소스가 부족한 것이 있는 경우에는 스트림의 전달 경로를 조정할 수 있다.
이와 같이 연산이 등록되고 연산 수행 주체가 정해진 상태에서, 별도의 연산이나 스트리밍을 중단시킬 이벤트가 발생하지 않는 한 상기 연산이 꾸준히 실행될 수 있고, 연산 등록 요청을 행한 소비자(20a~20m)는 연산 결과 데이터를 받아볼 수 있게 된다(제430단계).
한편, 각 생성자(10a~10n)가 제공하는 원본 데이터의 소유권은 정당한 권리자에게 유보되며, 소유권 정보는 전체 노드 또는 일부 노드에 분산 저장될 수 있다. 그리고 원본 데이터를 획득할 권한이 없는 소비자가 원본 데이터를 획득할 의도 하에 연산 등록을 요청하는 경우, 연산 등록 요청을 수신하는 노드의 스케쥴링 엔진(140)은 예컨대 명령코드(opcode) 레벨과 같은 로우 레벨에서 이를 감지하여 해당 연산 등록을 차단할 수 있다.
본 발명에 의한 데이터 전송 시스템은 고도의 확장성을 가진다. 추가적인 노드를 설치하고자 하는 경우에는, 각 신규 노드에 본 발명을 구현하기 위한 자원 공유 클라이언트 프로그램을 설치하고 활성화시키는 것만으로 모든 준비가 완료될 수 있다.
구체적으로 살펴보면, 도 11에 도시된 바와 같이 먼저 각 신규 노드에 본 발명을 구현하기 위한 자원 공유 클라이언트 프로그램을 설치한다(제500단계). 이때 각 생성자(10a~10n)나 소비자(20a~20m)에는 별도의 프로그램 설치가 불필요할 수 있다.
이어서, 각 신규 노드의 상태를 점검하고, 활성화시켜서 각 신규 노드와 기존 노드들의 상태 정보가 브로커 네트웍(30)을 통해 전파하도록 한다(제510단계). 그 다음 각 신규 노드를 포함하여 모든 노드들이 동작을 수행하도록 하게 된다(제520단계).
이와 같이 추가적인 노드가 합류할 때, 데이터 공유를 위한 데이터 요구사항 등에 대한 분석이 불필요하며, 매우 용이하게 신규 노드를 추가할 수 있게 된다. 두 개의 시스템을 연동시키고자 하는 경우에도, 새로운 인프라스트럭쳐를 구축할 필요가 없고, 심지어 각 시스템의 인프라스트럭쳐에 대한 분석조차 필요없으며 노드들간의 상태 정보 공유를 통해 손쉽게 연동이 가능해질 수 있다.
도 12는 본 발명의 일 실시예에 따른 각 노드(32a~32p)의 물리적인 블록도이다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 노드(32a~32p)는 적어도 하나의 프로세서(1020), 메모리(1040), 및 저장 장치(1060)를 포함할 수 있다.
프로세서(1020)는 메모리(1040) 및/또는 저장 장치(1060)에 저장된 프로그램 명령을 실행할 수 있다. 프로세서(1020)는 적어도 하나의 중앙 처리 장치(central processing unit, CPU)나 그래픽 처리 장치(graphics processing unit, GPU)에 의해 구현될 수 있으며, 그밖에 본 발명에 따른 방법을 수행할 수 있는 여타의 프로세서일 수 있다.
메모리(1040)는 예컨대 ROM(Read Only Memory)와 같은 휘발성 메모리와, RAM(Random Access Memory)과 같은 비휘발성 메모리를 포함할 수 있다. 메모리(1040)는 저장 장치(1060)에 저장된 프로그램 명령을 로드하여, 프로세서(1020)에 제공할 수 있다.
저장 장치(1060)는 프로그램 명령과 데이터를 저장하기에 적합한 기록매체로서, 예컨대 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광 기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 플래시 메모리나 EPROM(Erasable Programmable ROM) 또는 이들을 기반으로 제작되는 SSD와 같은 반도체 메모리를 포함할 수 있다.
저장 장치(1060)는 상기 프로그램 명령을 저장한다. 특히, 상기 프로그램 명령은 본 발명에 따른 자원 공유 클라이언트 프로그램을 포함할 수 있다. 상기 자원 공유 클라이언트 프로그램은 도 4 및 도 6에 예시된 전송 및 연산부(100)와 스케쥴링 엔진(140)을 구현하는데 필요한 프로그램 명령을 포함한다. 이와 같은 프로그램 명령은 프로세서(1020)의 제어에 의해 메모리(1040)에 로드된 상태에서, 프로세서(1020)에 의해 실행되어 본 발명에 의한 방법을 구현할 수 있다.
위에서 언급한 바와 같이 본 발명의 실시예에 따른 장치와 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.
상기 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다.
실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그래머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그래머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.
위에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (17)

  1. 복수의 자원 공유 제어 노드 장치들을 구비하고, 데이터 생성자가 제공하는 송신 데이터를 상기 복수의 자원 공유 제어 노드 장치들 중 적어도 일부의 자원 공유 제어 노드 장치를 경유하여 데이터 소비자에 전달하는 실시간 데이터 전송 시스템에서, 상기 복수의 자원 공유 제어 노드 장치들 각각이
    프로세서와, 상기 프로세서에 의해 실행되는 프로그램 명령어들을 저장하는 메모리를 포함하고, 상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때:
    상기 송신 데이터에 대하여 수행되어야 하는 연산을 복수의 부분 연산으로 분해하는 동작;
    상기 송신 데이터가 상기 실시간 데이터 전송 시스템 내에서 다른 자원 공유 제어 노드 장치들 중 일부의 자원 공유 제어 노드 장치들을 경유할 전달 경로를 정하는 동작;
    상기 복수의 부분 연산을 상기 전달 경로 상에 있는 둘 이상의 자원 공유 제어 노드 장치에 할당하여, 상기 송신 데이터에 대하여 수행되어야 하는 상기 연산이 상기 송신 데이터의 실시간 전달 중에 상기 전달 경로 상에 있는 상기 둘 이상의 자원 공유 제어 노드 장치들에 의해 수행되도록 하는 동작; 및
    상기 송신 데이터에 대하여 다른 자원 공유 제어 노드 장치가 할당한 부분 연산을 수행하고, 연산 결과 데이터를 상기 데이터 소비자 또는 상기 다른 자원 공유 제어 노드 장치들 중 하나에 출력하는 동작;
    을 수행하는 명령어들을 포함하는
    자원 공유 제어 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 전달 경로를 설정하는 동작을 수행하는 명령어들은
    상기 데이터 생성자와 상기 데이터 소비자 간의 거리를 최소화할 수 있도록 상기 전달 경로를 설정하는 명령어들을 포함하는 자원 공유 제어 노드 장치.
  4. 제1항에 있어서,
    상기 전달 경로를 설정하는 동작을 수행하는 명령어들은
    주변에 있는 다른 자원 공유 제어 노드 장치들의 상태정보를 확인하고, 상기 상태정보를 토대로 상기 전달 경로를 설정하는 명령어들을 포함하는 자원 공유 제어 노드 장치.
  5. 제1항에 있어서,
    상기 전달 경로를 설정하는 동작을 수행하는 명령어들은
    주변에 있는 다른 자원 공유 제어 노드 장치에서의 지연시간을 확인하고, 상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 명령어들을 포함하는 자원 공유 제어 노드 장치.
  6. 제1항에 있어서,
    상기 복수의 부분 연산을 상기 전달 경로 상에 있는 둘 이상의 자원 공유 제어 노드 장치에 할당하는 동작을 수행하는 명령어들은
    상기 실시간 데이터 전송 시스템 내에서의 중복 연산을 감소시킬 수 있게 하는 방식으로 상기 복수의 부분 연산을 상기 둘 이상의 자원 공유 제어 노드 장치에 할당하는 명령어들을 포함하는 자원 공유 제어 노드 장치.
  7. 제6항에 있어서,
    상기 복수의 부분 연산을 상기 전달 경로 상에 있는 둘 이상의 자원 공유 제어 노드 장치에 할당하는 동작을 수행하는 명령어들은
    상기 데이터 소비자로부터 상기 연산에 대한 등록 요청을 받아들이는 동작을 수행하는 명령어들을 포함하는 자원 공유 제어 노드 장치.
  8. 제6항에 있어서,
    상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때:
    상기 복수의 부분 연산을 상기 둘 이상의 자원 공유 제어 노드 장치에 할당한 후, 상기 전달 경로의 설정과 상기 각 부분 연산의 할당 결과를 재조정하여 상기 전달 경로와 상기 할당 결과를 최적화하는 동작;
    을 수행하는 명령어들을 더 포함하는
    자원 공유 제어 노드 장치.
  9. 제1항에 있어서,
    상기 프로그램 명령어들은 상기 프로세서에 의해 실행되었을 때:
    주변에 있는 다른 자원 공유 제어 장치들의 상태정보를 수집하는 동작; 및
    상기 상태 정보를 상기 다른 자원 공유 제어 장치들과 공유하는 동작;
    을 수행하는 명령어들을 더 포함하는
    자원 공유 제어 장치.
  10. 복수의 데이터 처리 노드들을 구비하며 데이터 생성자가 제공하는 송신 데이터를 상기 복수의 데이터 처리 노드들 중 적어도 일부의 데이터 처리 노드들을 경유하여 데이터 소비자에 전달하는 실시간 데이터 전송 네트웍에 있어서, 상기 복수의 데이터 처리 노드들 각각에 의해 수행가능한 자원 제어 공유 방법으로서,
    (a) 상기 송신 데이터를 처리하기 위한 리소스를 산정하는 단계;
    (b) 상기 송신 데이터에 대하여 수행되어야 하는 연산을 복수의 부분 연산으로 분해하는 단계;
    (c) 산정된 리소스를 토대로, 상기 송신 데이터가 상기 실시간 데이터 전송 네트웍 내에서 다른 데이터 처리노드들 중 일부의 데이터 처리 노드들을 경유할 전달 경로를 설정하는 단계;
    (d) 상기 복수의 부분 연산을 상기 전달 경로 상에 있는 둘 이상의 데이터 처리 노드에 할당하여, 상기 송신 데이터에 대하여 수행되어야 하는 상기 연산이 상기 송신 데이터의 실시간 전달 중에 상기 전달 경로 상에 있는 상기 둘 이상의 데이터 처리 노드들에 의해 수행되도록 하는 단계; 및
    (e) 상기 송신 데이터에 대하여 다른 데이터 처리 노드가 할당한 부분 연산을 수행하고, 연산 결과 데이터를 상기 데이터 소비자 또는 상기 다른 데이터 처리 노드들 중 하나에 출력하는 단계;
    를 포함하는 자원 공유 제어 방법.
  11. 삭제
  12. 제10항에 있어서, 상기 (c) 단계에서 상기 전달 경로가 상기 데이터 생성자와 상기 데이터 소비자 간의 거리를 최소화할 수 있도록 설정되는 자원 공유 제어 방법.
  13. 제10항에 있어서, 상기 (c) 단계가
    주변에 있는 다른 데이터 처리 노드들의 상태정보를 확인하는 단계; 및
    상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 단계;
    를 포함하는 자원 공유 제어 방법.
  14. 제10항에 있어서, 상기 (c) 단계가
    주변에 있는 다른 데이터 처리 노드들에서의 지연시간을 확인하는 단계; 및
    상기 지연시간이 최소화되도록 상기 전달 경로를 설정하는 단계;
    를 포함하는 자원 공유 제어 방법.
  15. 제10항에 있어서, 상기 (d) 단계에서, 상기 각 부분 연산이 상기 실시간 데이터 전송 시스템 내에서의 중복 연산을 감소시킬 수 있게 하는 방식으로 상기 하나 이상의 자원 공유 제어 장치에 할당되는 자원 공유 제어 방법.
  16. 제15항에 있어서,
    (f) 상기 전달 경로의 설정과 상기 복수의 부분 연산의 할당 결과를 재조정하여 상기 전달 경로와 상기 할당 결과를 최적화하는 단계;
    를 더 포함하는 자원 공유 제어 방법.
  17. 제10항에 있어서, 상기 (d) 단계가
    상기 데이터 소비자로부터 상기 연산에 대한 등록 요청을 받아들이는 단계;
    를 포함하는 자원 공유 제어 방법.
KR1020200180078A 2020-12-21 2020-12-21 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치 KR102436443B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200180078A KR102436443B1 (ko) 2020-12-21 2020-12-21 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치
US17/138,331 US20220201054A1 (en) 2020-12-21 2020-12-30 Method and apparatus for controlling resource sharing in real-time data transmission system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200180078A KR102436443B1 (ko) 2020-12-21 2020-12-21 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20220089447A KR20220089447A (ko) 2022-06-28
KR102436443B1 true KR102436443B1 (ko) 2022-08-25

Family

ID=82021861

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200180078A KR102436443B1 (ko) 2020-12-21 2020-12-21 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치

Country Status (2)

Country Link
US (1) US20220201054A1 (ko)
KR (1) KR102436443B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220374398A1 (en) * 2021-05-24 2022-11-24 Red Hat, Inc. Object Creation from Schema for Event Streaming Platform

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101269678B1 (ko) * 2009-10-29 2013-05-30 한국전자통신연구원 P2p 스트리밍 장치, 방법 및 시스템 구성방법
KR101089562B1 (ko) * 2010-04-27 2011-12-05 주식회사 나우콤 고화질 미디어 방송을 위한 피투피 라이브 스트리밍 시스템 및 방법

Also Published As

Publication number Publication date
KR20220089447A (ko) 2022-06-28
US20220201054A1 (en) 2022-06-23

Similar Documents

Publication Publication Date Title
US20200136921A1 (en) Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment
JP6258975B2 (ja) 低レイテンシデータアクセス用のデータストリーム分割
Lohrmann et al. Nephele streaming: stream processing under QoS constraints at scale
Renart et al. Data-driven stream processing at the edge
Rathore et al. Load balancing and job migration techniques in grid: a survey of recent trends
Heintz et al. End-to-end optimization for geo-distributed mapreduce
Sonbol et al. EdgeKV: Decentralized, scalable, and consistent storage for the edge
EP3226133A1 (en) Task scheduling and resource provisioning system and method
Lohrmann et al. Processing smart meter data streams in the cloud
Kang et al. Dynamic scheduling strategy with efficient node availability prediction for handling divisible loads in multi-cloud systems
Repantis et al. Synergy: Sharing-aware component composition for distributed stream processing systems
Heintz et al. Cross-phase optimization in mapreduce
Lohrmann et al. Massively-parallel stream processing under qos constraints with nephele
Du et al. Scientific workflows in IoT environments: a data placement strategy based on heterogeneous edge-cloud computing
Kang et al. A cluster-based decentralized job dispatching for the large-scale cloud
US20230136612A1 (en) Optimizing concurrent execution using networked processing units
Brogi et al. Container-based support for autonomic data stream processing through the fog
KR102436443B1 (ko) 실시간 데이터 전송 시스템에서의 자원 공유 제어 방법 및 장치
Li et al. Data prefetching and file synchronizing for performance optimization in Hadoop-based hybrid cloud
Khaleel Multi-objective optimization for scientific workflow scheduling based on Performance-to-Power Ratio in fog–cloud environments
Rashid et al. Novel remote parallel processing code-breaker system via cloud computing
Xu et al. Online learning algorithms for offloading augmented reality requests with uncertain demands in MECs
Bononi et al. Concurrent replication of parallel and distributed simulations
US10691700B1 (en) Table replica allocation in a replicated storage system
Yi et al. Job allocation mechanism for battery consumption minimization of cyber-physical-social big data processing based on mobile cloud computing

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant