KR20240041207A - 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템 - Google Patents

탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템 Download PDF

Info

Publication number
KR20240041207A
KR20240041207A KR1020230057915A KR20230057915A KR20240041207A KR 20240041207 A KR20240041207 A KR 20240041207A KR 1020230057915 A KR1020230057915 A KR 1020230057915A KR 20230057915 A KR20230057915 A KR 20230057915A KR 20240041207 A KR20240041207 A KR 20240041207A
Authority
KR
South Korea
Prior art keywords
message
data
decentralized
queue
nodes
Prior art date
Application number
KR1020230057915A
Other languages
English (en)
Inventor
김지혜
문영호
Original Assignee
주식회사 나두모두
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 나두모두 filed Critical 주식회사 나두모두
Publication of KR20240041207A publication Critical patent/KR20240041207A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • G06F16/1837Management specially adapted to peer-to-peer storage networks
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명에 따른 실시예는 개별 노드가 발행자 단말 및 구독자 단말로서 P2P 노드 형태로 구성되어 머클트리(MERKLE TREE) 구조를 갖는 분산 노드 네트워크에 발행자 단말의 메세지를 분산 저장하는 메세지 큐 부재를 포함하고, 메세지 큐 부재는 메세지 데이터를 영구적인 데이터 스트림 형태로 탈중앙화 기반의 분산 노드에 저장 및 전파 시킬 수 있도록 머클루트와 현재 스트림 포지션을 통해 메세지의 변경사항을 상시 적용하는 큐 엔진(QUEUE ENGINE) 및 메세지 변경 사항의 제어와, 메세지를 관리하는 코어 프로세스; 를 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템을 제공할 수 있다.

Description

탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템{Message queue system using decentralized addressing P2P storage as a file system}
본 발명은탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템에 관한 것이다.
기존의 중앙집중식 서버-클라이언트 모델을 통하여 저장되는 메세지큐 데이터는 서버에 저장된다.
따라서 메세지큐 데이터 관련 정보 수신, 변경, 추가 및 삭제에 대한 요청 정보는 중앙 서버 호스트를 통해 처리된다. 이는 다양한 위치에서 변경사항을 수신하고자 하는 경우 별도의 EXCHANGE 과정을 통해서 처리해야 되기에 외부의 검열및 데이터 변경에 취약하다.
웹3.0 패러다임의 등장이후, 탈중앙화를 위한 여러 기술이 등장했다. 예를 들면, 종래에는 블록체인을 중심으로 해싱과 링크를 효과적으로 사용하여 체인을 구성하거나 머클트리(MERKLE TREE)와 같이 범용적으로 사용가능한 자료구조가 제안되었다.
이에 더하여 P2P를 기반으로 블록체인 , 머클트리(MERKLE TREE) 등을 기반으로 IPFS, Storj, Web3Storage 등 스토리지 기술이 발표되었다. 이러한 기술의 인프라는 개인의 컴퓨팅 리소스를 네트워크에 참여시키는 것이 가능하다.
그러므로 최근에는 이를 통해 기존의 중앙집중식 서버의 처리성을 개선하고 특정 소수의 개인및 회사가 데이터를 소유하는것을 어렵게 하고 통제하여 검열,삭제등의 문제에서 자유롭게 되었다.
기존의 중앙집중식 아키텍쳐를 가진 웹SW는 백엔드에서 중앙집중식 서버 모델을 채용한 RabbitMQ, Kafka 등과 같은 메세지 큐 시스템을 사용한다.
종래의 메세지 큐 시스템은 기존의 중앙집중식 서버-클라이언트 모델을 통하여 구현되어 메세지큐의 데이터를 서버에 메모리나 파일 형태로 저장한다.
이러한 시스템은 메세지큐 데이터 관련 정보 수신, 변경, 추가 및 삭제에 대한 요청 정보를 토픽과 같은 특정 키값을 중심으로 메세지 스트림을 서버 호스트를 통해 처리하고 저장한다.
이와 같은 종래의 메세지큐 시스템은 다양한 위치에서 변경사항을 수신하고자 하는 경우 별도의 EXCHANGE 과정을 통해서 서버에 접속하고 메세지를 수신 및 처리해야 되기에 외부의 검열및 데이터 변경에 취약한 문제점이 있었다.
그러므로 본 발명은 위와 같은 종래 기술의 문제점을 해결하고자 중앙 집중식 서버의 처리성을 개선하고, 특정 소수의 개인 및 회사가 데이터의 소유가 가능한 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템과, 이를 이용한 방법 및 컴퓨터 프로그램을 제공하는 것을 목적으로 한다.
본 발명은 위와 같은 목적을 달성하기 위하여 하기와 같은 실시예를 포함할 수 있다.
본 발명에 따른 실시예는 개별 노드가 발행자 단말 및 구독자 단말로서 P2P 노드 형태로 구성되어 머클트리(MERKLE TREE) 구조를 갖는 분산 노드 네트워크에 발행자 단말의 메세지를 분산 저장하는 메세지 큐 부재를 포함하고, 메세지 큐 부재는 메세지 데이터를 영구적인 데이터 스트림 형태로 탈중앙화 기반의 분산 노드에 저장 및 전파 시킬 수 있도록 머클루트와 현재 스트림 포지션을 통해 메세지의 변동사항을 상시 적용할 수 있는 큐 엔진(QUEUE ENGINE) 및 메세지 변경 사항의 제어와, 메세지를 관리하는 코어 프로세스를 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템을 제공할 수 있다.
위 실시예에서, 코어 프로세스는 분산 노드 네트워크 내에서 노드간에 데이터 경합이 일어났을때 병합하고, 삭제, 추가, 수정 또는 순서 변경 시 실시간으로 메세지의 변경 사항을 제어하는 CRDT(Conflict-Free-Replicated Data Types)와, 여러 노드에서 발행 및 MERKLE DAG을 통해 추가되어 머클루트(MERKLE ROOT)가 변경되는 메세지 스트림의 변경사항을 추적하는 OPLOG와, 탈중앙화되어 분산된 메세지 데이터에 엑세스하고 추가 변경할 수 있도록 암호화된 공개키(Publsih Key) 및 개인키(Private Key)를 저장하여 신원증명 및 인증을 수행하는 X.509 STORE 및 노드간의 데이터 변경분을 추적하고 동기화 하는 과정에서 각 참여자의 데이터를 유지 및 저장하는 캐시(CACHE)를 포함할 수 있다.
또한, 캐시(CACHE)는 메세지를 구독하는 모든 클라이언트가 처리될 때까지 토픽(Topic) 상에 게시중인 상태일때 메세지 만료시간까지 토픽(Topic)을 기준으로 데이터를 유지 및 저장할 수 있다.
또한, 캐시(CACHE)는 전체스트림을 영구적으로 저장하고 있고, 구독자 단말이 OFFSET을 통해 특정 범위의 메세지에 엑세스 할 때, 해당 토픽의 머클루트를 기반으로 머클트리(MERKLE TREE)가 엑세스되는 경우의 데이터 스트림을 저장할 수 있다.
아울러, 위 실시예의 큐 엔진은 메세지 스트림 데이터를 네트워크상의 분산된 노드에 저장하기 위한 자료 구조로서 상위 노드와 리프노드로 구성되는 머클트리(MEKLE TREE)와, LIBP2P를 통해 P2P 네트워크를 구성하고, 각 구독자 단말과 발행자 단말이 노드로서 기동하게 하는 P2P(Peer to Peer) 및 메모리기반의 스트림 데이터를 CRDT에 기반하여 순서화 하는 브로커(BROKER)를 포함하는 하위 레이어들을 포함할 수 있다.
그리고, 브로커(BROKER)는 MQTT와 AMQO를 지원하기 위한 브로커 인스턴스(BROKER INSTANCE)로서 Aedes API를 사용할 수 있다.
또한, 큐 엔진은 머클트리(MERKLE TREE)의 참여노드간 분산저장을 통해 내부 영역의 메세지스트림이 소실되거나, 처리과정에서 연결이 끓어져 사용되지 않는 데이터 블록을 회수하는 Garbage Collector 를 더 포함할 수 있다.
본 발명은 분산된 노드상에서 누구나 엑세스할수있는 메세지큐 구성이 가능하고, 서비스 개발시 데이터베이스 인스턴스를 시스템 내부에 구축하고 노드로 참여하여 최적의 레이턴시를 가지는 주변 노드와 통신하며 메세지큐 전체에 엑세스 할 수 있다.
또한, 본 발명은 IPFS, Storj 와 같이 머클트리(MERKLE TREE)에 기반한 다양한 스토리지를 하위레이어로 사용하여 급속도로 발전하고 쇠락하는 웹 3.0 환경에 대비할 수 있다.
또한, 본 발명은 다양한 게이트웨이 서비스를 통해 일부 메세지 스트림 데이터에 엑세스하기위해 복잡한 클라이언트를 설치하지 않고 엑세스 할 수 있고, 탈중앙화 특성상 데이터복사본이 네트워크에 분산되어 있어 재해복구에 효과적이다.
도 1은 본 발명의 시스템 구조도이다. .
도 2는 본 발명의 데이터베이스 시스템의 블럭도이다.
도 3은 머클트리를 구성하는 데이터 블록을 도시한 도면이다.
도 4는 외부 애플리케이션 진원을 위한 Aedes API 활용을 도시한 블럭도이다.
도 5는 본 발명에서 네트워크 연결 관리 과정을 도시한 순서도이다.
도 6은 네트워크 상의 메세지 동기화 매커니즘 구조도이다.
도 7은 암호화된 메세지 처리 과정을 도시한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있지만, 특정 실시예를 도면에 예시하여 상세하게 설명하고자 한다. 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 서로 다른 방향으로 연장되는 구조물을 연결 및/또는 고정시키기 위한 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물중 어느 하나에 해당되는 것으로 이해되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제 하지 않는 것으로 이해되어야 한다.
또한, 본 발명을 설명함에 있어 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
이하에서는 본 발명에 따른 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템의 바람직한 실시예를 설명한다.
도 1은 본 발명에 따른 탈중앙화 방식이 주조지정방식 P2P 스토리지를 파일 시스템으로 사용한 메세지큐 시스템의 구조를 도시한 도면이다.
도 1을 참조하면, 본 발명은 머클트리(MERKLE TREE) 구조의 분산 노드 네트워크(20)와, 메세지 큐 부재(10)와, 웹부재(30)와, 발행자 단말(42)과, 구독자 단말(41)을 포함할 수 있다.
분산 노드 네트워크(20)는 개별 노드가 발행자 및 구독자로서 P2P 노드 형태로 구성되며, 머클트리(MERKLE TREE) 구조를 갖는다. 머클트리(MERKLE TREE)는 복수의 서브트리(21, 22)를 구성할 수 있고, 복수의 머클트리(MERKLE TREE)가 모여서 머클포레스트(MERKLE FOREST)를 이룰 수 있다. 이와 같은 머클트리(MERKLE TREE) 구조의 분산 노드 네트워크(20)는 발행자 단말(42)에서 발행된 메세지를 분산 저장한다.
웹부재(30)는 웹 브라우저와 웹 게이트웨이를 구비하여 분산 노드 네트워크(20)에 분산 저장된 메세지를 웹상에서 구독자 단말(41)에 제공한다.
메세지 큐 부재(10)는 발행자 단말(42)에서 수신된 메세지를 분산 노드 네트워크(20)에 분산 저장하고, 분산 노드 네트워크(20)에 저장된 메세지(혹은 데이터)를 구독자 단말(41)에 제공한다. 여기서 메세지 큐 부재(10)는 구독자 단말, 또는 분산 네트워크의 노드에 저장된 데이터 스트림(메세지 스트림)의 구독 시작 위치를 지정할 수 있다.
예를 들면, 구독자 단말(41)은 분산 네트워크에 저장된 1~100 개로 이루어진 데이터 스트림 중 5~100번의 데이터 정보를 다시 가져와야할 필요가 있을 경우, 메시지 큐 부재(10)가 관리하는 데이터 스트림의 구독 시작위치 변경을 통해 5~100 번의 데이터 스트림을 다시 구독할 수 있다.
이를 위해 메세지 큐 부재(10)는 데이터 스트림의 토픽별 위치 정보를 갖으며, 이를 각 노드에 전파할 수 있도록 한다.
본 발명은 탈중앙화 기반의 분산 메세지큐 시스템으로 개별 노드가 발행자 및 구독자로서 네트워크에 P2P 노드형태로 참여하여 메세지를 발행 및 교환 할수 있도록 돕는 시스템이다.
즉, 발행자 단말(42)을 통해 발행된 메세지는 메세지 큐 부재(10)에 의해 데이터 스트림 형태로 네트워크상에 존재한다. 이때, 본 발명은, 예를 들면, IPFS와 같은 공개된 파일 네트워크를 사용한다면 소켓 연결된 클라이언트 뿐만 아니라 네트워크상의 범용 클라이언트에서도 엑세스정보(인증, 암호화정보)가 있다면 엑세스 할수 있도록 구조화 되는 것을 특징으로 한다.
또한, 웹부재(30)와 메세지 큐 부재(10)는 각각 독립된 서버로 구축되거나, 일체형으로서 하나의 서버에 구축될 수 있다. 이는 다양한 실시예로서 구현 가능한 것이기에 메세지 큐 부재(10)와 웹부재(30)에 대한 구성 형태를 한정하는 것이 아니다.
아울러 본 발명은 기존의 Kafka와 같은 오픈소스 기술에서 중앙 집중식으로 구성되는 것과 달리 탈 중앙화 기반에서의 저장 매커니즘을 달성하기 의하여 아키텍쳐를 구성된다. 이는 도 2를 참조하여 설명한다.
도 2는 메세지 큐 부재의 아키텍쳐를 도시한 도면이다.
도 2를 참조하면, 본 발명에 따른 메세지 큐 부재(10)의 아키텍쳐는 상위 레이어로서 코어 프로세스(200)와 큐 엔진(100)을 구성한다.
큐 엔진(100)(QUEUE ENGINE)은 메세지 데이터를 영구적인 데이터 스트림 형태로 탈중앙화 하여 분산 노드 네트워크(20)에 저장 및 전파 시키기 위한 자료구조 및 기능을 구현한 프로세스로서 머클루트(MERKLE ROOT)와 현재 스트림 위치를 통해 메세지 스트림의 구독하는 토픽의 시작 위치 변경이 필요한 경우 특정 시점으로 상시 지정(상시 리플레이(Replay)) 할수 있다.
이를 위해 큐 엔진(100)은 브로커(BROKER), 머클트리(MERKLE TREE), P2P의 하위 레이어(Layer)를 포함한다.
이중, 머클트리(MERKLE TREE)는 하위 레이어(Layer)로서 SHARDING과 MERKLE DAG을 포함하여 메세지 스트림 데이터를 네트워크상의 분산된 노드에 저장하기 위한 자료 구조로서 상위노드와 리프노드(Leaf Node)로 구성된다.
이중 리프노드(Leaf Node)는 데이터로 구성되고, 상위노드는 자식노드의 해시값으로 구성된 데이터 구조로서 루트가 각 자식노드의 해시 병합결과로 생성되어 데이터 변경이 일어날시 머클루트(MERKLE ROOT)가 변경될 수 있다. 이와 같은 본 발명에 따른 머클트리(MERKLE TREE)의 레이어는 각 부분이 메세지큐 스트림을 구독하는 여러 노드에서 엑세스됨으로 인해 로컬에 메세지스트림이 위치됨으로 인해 샤딩효과가 적용된다. 이는 도 3을 참조하여 설명한다.
도 3은 머클트리를 구성하는 데이터 블록을 도시한 도면이다.
도 3을 참조하면, 머클트리는 부분의 합을 구성하는 각 부분이 각자 트리로서 사용이 가능하다. 여기서 머클트리의 각 부분은 데이터 블록에 해당한다.
예를 들면, 데이터 블록은 1개의 문자를 담을수 있다고 가정하고 A와 B, C,D 라는 메세지 데이터를 담은 4개의 블록 있다고 가정한다.
중간의 AB로 명명된 내부 노드는 ABCD라는 머클트리의 부분 트리임과 동시에 AB를 자식으로 가진 머클트리가 될 수 있다.
따라서 네트워크 안에 4개의 큐엔진이 구동되고 있고, 1개의 큐엔진(이하 큐1)에서 메세지를 토픽명 “데이터스트림1” 로 발행하여 ABCD 머클트리가 메세지스트림에 들어갔고 별도의 1개 큐엔진(큐2)에서 “메세지스트림1” 를 구독했다고 가정할 경우라면, 큐2가 해당 머클트리를 메세지로서 수신했을 때 큐엔진 내부의 CACHE로 해당 머클트리가 큐2의 내부로 저장된다.
큐2의에 저장한다는 의미는 데이터가 필요한 각 큐엔진 로컬에 저장하는 것이다. 그러므로 새로운 구독자 큐3이 “메세지스트림1”의 구독을 시작한다면, 머클루트 해시를 큐엔진 내부(로컬)에서 조회한다.
이때, 해당 큐엔진이 머크루트 해시가 없다면 네트워크 상에 가지고 있는 큐엔진에게 해당 머클트리를 요청할 수 있다. 그러면, 해당 머클루트값을 기준으로 트리를 가지고 있는 큐1, 큐2 가 응답한다.
따라서 큐3은 큐1,2 안에 위치한 데이터의 샤딩효과를 누릴 수 있다. 즉, 데이터의 복제본이 여러개 있고, 이를 여러곳에서 빠르게 받을 수 있다(샤딩효과).
이후 새로운 큐4가 ”메세지스트림1“을 구독하면 큐1,2,3 이 데이터 복제본을 가지고 있어 계속하여 샤딩효과가 복수로 늘어나게 되고 데이터를 가져오는 속도가 더 빨라지고 가용성 측면에서도 안정적일 수 있다.
즉, 머클트리(MERKLE TREE)는 전체데이터를 갖는 트리의 루트 부분이 하위 부분의 해시의 합으로 구성되어 검증이 쉽고 트리의 삽입삭제의 특성으로 데이터의 전파속도가 타 자료구조에 비하여 빠르다.
그러므로 큐 엔진(100)은 빠른 검증을 통해 데이터 무결성을 확보하고 빠른 검증이 가능하다.
또한, 머클트리(MERKLE TREE) 레이어(120)는, 예를 들면, 많은 메세지의 추가로 인하여 머클트리(MERKLE TREE)에서 관리하는 노드의 성능 문제가 발생됨을 방지하기 위하여 Hash Arrayed Mapped Tree와 같은 자료 구조를 사용하여 머클트리(MERKLE TREE)를 생성하여 각 데이터 블록의 충돌을 제어하고, 샤딩(SHARDING) 효과를 갖을 수 있다.
예를 들면, 외부 단말이 특정 토픽(Topic)의 메세지 스트림을 구독하고자 하면 별도의 서버형태의 큐 구축과정 없이 큐엔진을 통해 머클루트(MERKLE ROOT) 형태의 데이터 스트림을 빠르게 액세스 및 구독할 수 있다.
또한, 예를 들면, 전체 머클트리는 여러개의 머클트리로 구성되어 있기 때문에 스트리밍에 필요한 구간의 데이터 블록들만 동기화 하여 메세지 스트림을 구독하는 각 노드가 해당 토픽의 머클트리의 DAG 블록을 빠르게 가져와 샤딩패턴(SHARDING PATTERN)에 도달될 수 있도록 제어한다.
P2P(130)의 레이어는 LIBP2P(131)를 통해 P2P 네트워크를 구성하고, 각 구독자 단말(41)과 발행자 단말(42)이 노드로서 기동할 수 있도록 한다.
브로커(BROKER)(110)는 PUBSUB(112), MQTT(Message Queueing Telemetry Transport)(111)의 하위 레이어를 포함할 수 있다.
브로커(BROKER)(110)는 메모리 기반의 스트림 데이터를 CRDT(220)에 기반하여 순서화 하고 이를 전파함에 따라 머클트리(MERKLE TREE) 구조에서 데이터의 전파 속도를 높일 수 있다.
즉, 브로커(BROKER)는 메세지큐의 특성상 빠르게 데이터가 전파되어야 하는 요건을 머클트리(MERKLE TREE) 구조를 통해 만족시킨다.
특히, 브로커(BROKER)(110)는 MQTT(Message Queueing Telemetry Transport)(111)와 AMQP(Advanced Message Queing Protocol)와 같은 큐프로토콜을 지원하기 위한 브로커 인스턴스(BROKER INSTANCE)가 동작한다.
브로커 인스턴스(BROKER INSTANCE)는, 도 4에 도시된 바와 같이, OASIS 규정을 충족하기 위해 Aedes API 를 사용할 수 있다. 이는 MQTT(Message Queueing Telemetry Transport)의 상위 버전과 호환 가능하게 하고, MQTT(Message Queueing Telemetry Transport)와 AMQP(Advanced Message Queing Protocol) 소켓기반으로 구현된 각종 클라이언트들이 기존 시스템의 변경없이 큐시스템을 사용할 수 있도록 하기 위한 것이다.
또한, 큐 엔진(100)은 머클트리(MERKLE TREE)의 참여 노드간 분산저장을 통해 내부 영역의 메세지스트림이 소실되거나, 처리과정에서 연결이 끓어져 사용되지 않는 데이터 블록을 회수할 수 있도록 Garbage Collector를 더 포함할 수 있다.
Garbage Collector는 머클트리(MERKLE TREE)에서 상위노드들이 가르키는 머클루트(MERKLE ROOT)를 확인하는 과정을 통해 연결되지 않고 사용되지 않는 블록을 회수하고 각 노드가 이 과정을 수행함을 통해서 전체 스토리지 네트워크상에 블록이 궁극적으로 회수되는 효과를 갖는다.
메세지 큐 부재(10)는 위와 같은 아키텍쳐를 구성하여 복수의 발행자 단말(42)과 구독자 단말(41)을 노드 네트워크에 참여 시킬 수 있도록 사용자 단말(발행자 단말(42) 및 구독자 단말(41))의 네트워크 연결을 관리할 수 있다. 큐 엔진(100)은 네트워크의 초기 기동시 연결할 피어정보를 담은 부트 스트랩 정보에 포함된 P2P(Peer to Peer) 피어 리스트(Peer list)를 참조하여 초기 기동시 노드를 추가 및 업데이트 할 수 있다.
이와 같은 큐 엔진(100)의 네트워크 연결 관리 과정은 도 5를 참조하여 설명한다.
도 5는 본 발명에서 네트워크 연결 관리 과정을 도시한 순서도이다.
도 5를 참조하면, 본 발명에서 네트워크 연결 관리 과정은 큐 엔진(100)에서 네트워크 구성을 위한 피어정보를 조회하는 S110 단계와, 피어 정보 존재 유무를 확인하는 S120 단계와, 피어정보가 존재하지 않으면 마지막 연결 피어 정보의 유무를 확인하는 S121 단계와, 초기 네트워크 구동을 위한 알려진 부트 스트랩 피어정보를 조회하는 S122 단계와, 피어 정보가 존재 하면 피어 목록에서 피어목록에 존재하는 S130 단계와, 전체 생존 피어수가 0 이상인지를 확인하는 S140 단계와, 피어수가 10 이상인지를 확인하는 S150 단계를 포함한다.
S110 단계는 큐 엔진(100)에서 노드 추가 명령 또는 발행자 단말(42) 및/또는 구독자 단말(41)의 등록 요청이 입력되면, 노드를 추가하기 위하여 주변 피어를 검색하는 단계이다.
S120 단계는 큐 엔진(100)에서 주변 피어(Peer)의 존재 여부를 확인하는 단계이다.
여기서 큐 엔진(100)은 주변 피어(Peer)의 존재가 없으면 마지막 연결 피어(Peer)정보를 검색하는 S121 단계를 진행하고, S121 단계에서 마지막 연결된 피어(Peer)정보가 확인되지 않을 때는 알려진 부트 스트랩 피어(Peer)정보를 검색하여 S110 단계를 다시 진행한다.
예를 들면, 부트스트랩 피어 정보는 P2P 네트워크가 초기 구동시 타 피어 노드에 대한 정보가 없어 상시 안정적으로 구동되는 알려진 네트워크의 정보로서 각 노드들에 저장된다.
따라서 큐 엔진은 네트워크의 재구동시 처음부터 구축하는 리소스 낭비를 방지하고자 위와 같은 과정을 통해 로컬에 저장하는 마지막 연결된 피어 연결정보를 확인한다. 그러므로 본 발명의 큐 엔진은 재기동시 빠른 피어 정보를 회복할 수 있다.
S130 단계는 큐 엔진(100)이 활동중인 피어(Peer) 정보의 존재가 확인되면, 피어 목록을 조회하는 단계이다.
S140 단계는 큐 엔진(100)이 조회된 피어 목록 중 현재 활동 가능한 피어의 수를 확인하는 단계이다. 큐 엔진(100)은 네트워크 상의 부트스트랩 정보로도 연결되지 않으면 단일 노드로만 구성되게 되고, 단일 노드로만 구성될 때 목표한 이점이 없기에 현재 활동 중인 피어가 없다면 종료한다.
S150 단계는 큐 엔진이 피어수가 사용자 정의 값(예를 들면, 10 이하)이면 노드를 알리기 위해 전파를 수행하는 단계이다.
예를 들면, 부트스트랩 과정에서는 초기 정의된 피어리스트 목록을 통해 네트워크가 기동되지만 각 노드들에 의해 신규로 확장되어지는 네트워크를 전파하는 방법이 필요하다. 따라서 각 노드들간의 네트워크에 합류하기 위한 조건이 필요하다.
따라서 큐 엔진(100)은 S130단계를 통해 피어목록에 대한 활성화 여부를 파악하고 이 연결된 피어가 10 이상이면 피어연결과정을 종료하고, 연결된 피어수가 10개 이하 인 경우, 네트워크상에 다른 피어를 탐사하는 과정이 필요하다.
그러므로 큐 엔진은 S150 단계에서 현재 연결된 활성화 노드들에게 브로드캐스팅(Broadcasting) 하고, 메세지를 수신한 현재 리스트에 없는 다른 노드가 메세지를 브로드캐스팅한 노드에게 연결요청을 보내는 경우 설정 조건에 따라 추가한다.
여기서 설정 조건은 사용자가 정의한 것으로서 신뢰 할만한 노드로 설정한 조건(예를 들면, 해당 노드를 추가한 노드가 N개 이상 등)에 해당된다.
또한, 본 발명은 연결된 각 노드의 연결리스트의 피어수를 10 이하로 한정하는 것이 바람직하다. 각 노드가 피어 연결리스트의 개수을 10개로 한정하는 이유는 그 제한 없이 브로드 캐스팅 할 때, 연결이 n(n-1)/2 형태로 폭팔적으로 증가하는 문제를 막기 위함이며 이를통해 P2P 형태의 네트워크 연결을 안정적으로 유지한다.
또한, 코어 프로세스(200)는 시스템을 구성하기 위한 주요 기능을 구현한 라이브러리를 구현하는 레이어로서 x,509 STORE(211), OPLOG(221), 캐시(CACHE)(210), CRDT(220)를 포함한다.
CRDT(Conflict-Free-Replicated Data Types)(220)는 분산 노드 네트워크 내에서 노드간에 데이터 경합이 일어났을때 병합하고, 삭제, 추가, 수정 또는 순서 변경과 같은 사항시에 Last Writer Wins 메카니즘으로 제어하여 실시간으로 메세지의 변경 사항을 제어한다.
OPLOG(221)는 큐에 입력된 메세지를 관리한다. 이는 도 6을 참조하여 설명한다.
도 6은 네트워크상의 메세지 동기화 메커니즘의 구조를 도시한 도면이다.
본 발명에서 메세지 스트림은 여러 노드에서 발행될 수 있고, MERKLE DAG(121)을 통해 계속하여 추가되고 충돌 없이 머클루트가 변경되어지게 된다.
이때, 변경사항은 OPLOG(221)를 통해서 추적되며 CRDT(220)를 통하여 작업기반으로 순서 SET가 제어되어 MERKLE DAG(121)으로 스트림이 생성되어 어떤 블럭의 루트로 접근하여도 충돌이 발생하지 않다. 여기서 순서 SET는 CRDT에서 사용되는 자료 구조에 해당된다.
또한, MERKLE DAG(121)은 내부의 싸이클이 없음을 보장하는 그래프 자료구조로 어떤 위치에서 접근해도 순환되지 않으며 최단경로를 빠르게 찾을 수 있는 DAG 형태를 표현한 것이다.
그러므로 본 발명은 이러한 MERKLE DAG을 이용하여 빠르게 원하는 위치에 도달해서 노드에 변경사항(예를 들면, 값의 추가)을 적용한다. 이때 변경사항에 따라 추가된 데이터 블록의 경우, 같은 값을 갖는 데이터 블록은 같은 HASH값을 갖고 기존에 존재하는 경우 추가되지 않는다.
따라서 머클루트 해시값은 여러 노드에서 동시에 같은 값을 추가해도 모든 MERKLE DAG에 동일한 값이 적용되기에 변경 사항으로 인한 충돌이 발생하지 않는다.
또한, 해당 메세지 스트림에 대한 데이터는 CRDT를 적용하여 값이 여러 노드에서 추가될 때 노드별로 다를 수 있어도, OPLOG를 통해 변경분이 네트워크 인접노드로 브로드캐스팅된다. 따라서 각 노들의 메세지큐 토픽에 대한 데이터 스트림은 동기화되어 같은 데이터 스트림을 갖는다.
즉, 본 발명은 발행자 단말이 A, B, C 라는 데이터 스트림을 갖고 있고, 다른 발행자 단말이 C, D, F의 데이터 스트림을 갖고 있다면, 큐 엔진(100)은 메세지 스트림에 데이터에 대한 동기화를 통해 구독자 단말이 양 발행자 단말의 데이터 스트림을 모두 받을 수 있도록 한다. 이때 구독자 단말이 소유한 데이터들은 발행자 단말에서 데이터의 변경 사항이 모두 적용 가능하다.
또한, 코어 프로세스(200)의 X.509 STORE(211)는 탈중앙화되어 분산된 메세지 데이터에 엑세스하고 추가 변경할 수 있도록 암호화된 공개키(Publsih Key) 및 개인키(Private Key)를 저장하여 신원증명 및 인증을 수행한다. 이를 통해 공개된 탈중앙화 네트워크상에서도 메세지의 기밀성을 보호할 수 있다.
예를 들면, 본 발명은 메세지 스트림상의 데이터가 암호화된 경우 X509 기반으로 공개키 비밀키를 통한 메세지 암호화 처리한다.
X.509 STORE(211)는 여기서 사용되는 키를 관리 한다. 이와 같은 메세지 스트림의 암호화 처리 과정은 도 7을 참조하여 설명한다.
도 7은 암호화된 메세지 처리 과정을 도시한 도면이다.
도 7을 참조하면, ①발행자 단말(42)은 메세지(Plain message)를 ②암호화된 메세지(Cipher Message)로 출력한다. 이때, X.509 STORE(211)는 발행자 단말(42)로부터 ③공개키(Private key)를 통해 ④발행자 단말(42)의 메세지를 암호화 한다. ⑤암호화된 메세지(Cipher Message)는 웹브라우저를 통해 발행되어 노드상에 Topic으로 제공된다.
구독자 단말(41)은 ⑥암호화된 메세지를 수신하면, ⑦⑧X.509 STORE 기반의 인증과정을 통해 암호화된 메세지(Cipher Message)를 해독하여 일반 메세지(Plain message)로 수신할 수 있다.
코어 프로세스의 캐시(CACHE)(210)는 분산된 참여 노드간의 데이터 변경분을 추적하는 OPLOG 과정에서 로컬노드에서 처리되야하는 각 참여노드의 데이터를 유지(저장)한다. 또한 현재 로컬 노드상에서 구독한 토픽의 현재 수신중인 메세지 스트림 상의 위치 및 메세지를 저장한다.
예를 들면, 캐시(CACHE)(210)는 브로커(BROKER)(110)에서 주어진 토픽의 메세지를 캐싱(Caching)한다.
이때 캐시(CACHE)(210)는 두가지 상황에 따라 작동할 수 있다. 첫째로 캐시(CACHE)(210)는 메세지를 구독하는 모든 클라이언트가 처리될 때까지 토픽상에 게시중인 상태일때 메세지만료시간까지 토픽을 기준으로 캐시된다.
둘째로 캐시(CACHE)(210)는 사용자가 구독한 메세지 스트림의 전체를 로컬 노드(예를 들면, 구독자 단말)상에 저장하고, 언제든지 로컬에서 최대한 빨리 재처리 하고 싶은 경우 또는 전체 데이터 스트림의 영구적인 로컬저장이 필요한 경우 로컬파일시스템에 저장하는 경우와, 구독자 단말에서 요청한 OFFSET 구간(토픽의 구독중인 메세지 스트림 상 위치)의 메세지를 캐싱하는 경우 사용된다.
또한 여러 노드가 동시에 메세지를 발행하여 네트워크 상에 흩어져 있는 경우에 로컬노드는 OPLOG를 통해 추가되는 변경내용을 네트워크 가십으로 전달 받게 된다.
이때, 해당 가십을 처리하는 과정을 통해 로컬 노드의 데이터 스트림은 해당 토픽의 머클루트(MERKLE ROOT)를 기반으로 변경사항을 네트워크상에 쿼리하여 내용을 동기화한다. 동기화된 데이터 스트림은 캐시로 저장되어 빠르게 처리(사용) 된다.
본 발명은 위와 같은 구성들을 포함하여 탈중앙화 기반의 분산 메세지큐 시스템으로 개별 노드가 발행자 및 구독자로서 네트워크에 P2P 노드형태로 참여할 수 있어 메세지를 발행 및 교환할수 있다. 여기서 발행된 메세지는 데이터스트림 형태로 네트워크상에 존재하여 IPFS와 같은 공개된 파일네트워크를 사용한다면 소켓 연결된 클라이언트 뿐만 아니라 네트워크상의 범용 클라이언트에서도 엑세스정보(인증, 암호화정보)가 있다면 엑세스 할수 있도록 구조화 되었다.
즉, 본 발명은 분산된 노드상에서 누구나 엑세스 할 수 있는 메세지 큐의 구성이 가능하기에 별도의 메세지큐 인프라 구축없이 메세지큐의 적용이 가능하고 IPFS Gateway와 같이 웹브라우져로 접근가능한 서비스를 통해 일부 메세지 스트림 데이터에 엑세스가 필요한 경우에도 복잡한 클라이언트를 설치하지 않고 엑세스가 가능하다. 더불어 해당 메세지큐는 탈중앙화 기반으로 구성됨에 따라 데이터복사본이 네트워크에 분산되어 있어 재해복구에 매우 유용하다.
이상에서 설명된 본 발명의 실시예는 예시적인 것에 불과하며, 본 발명이 속한 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 잘 알 수 있을 것이다.
10 : 메세지 큐 부재
20 : 분산 네트워크
30 : 웹부재
100 : 큐 엔진
110 : 브로커((BROKER)
120 : 머클트리(MERKLE TREE)
130 : P2P
200 : 코어 프로세스
210 : 캐시
211 : X.509 STORE
220 : CRDT
221 : OPLOG

Claims (7)

  1. 개별 노드가 발행자 단말 및 구독자 단말로서 P2P 노드 형태로 구성되어 머클트리(MERKLE TREE) 구조를 갖는 분산 노드 네트워크에 발행자 단말의 메세지를 분산 저장하는 메세지 큐 부재; 를 포함하고,
    메세지 큐 부재는
    메세지 데이터를 영구적인 데이터 스트림 형태로 탈중앙화 기반의 분산 노드에 저장 및 전파 시킬 수 있고, 머클루트와 현재 데이터 스트림의 위치를 통해 데이터 스트림의 구독 구독 시작 위치를 상시 변경 가능한 큐 엔진(QUEUE ENGINE); 및
    메세지 변경 사항의 제어와, 메세지를 관리하는 코어 프로세스; 를 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  2. 청구항 1에 있어서, 코어 프로세스는
    분산 노드 네트워크 내에서 노드간에 데이터 경합이 일어났을때 병합하고, 삭제, 추가, 수정 또는 순서 변경 시 실시간으로 메세지의 변경 사항을 제어하는 CRDT(Conflict-Free-Replicated Data Types);
    여러 노드에서 발행 및 MERKLE DAG을 통해 추가되어 머클루트(MERKLE ROOT)가 변경되는 메세지 스트림의 변경사항을 추적하는 OPLOG;
    탈중앙화되어 분산된 메세지 데이터에 엑세스하고 추가 변경할 수 있도록 암호화된 공개키(Publsih Key) 및 개인키(Private Key)를 저장하여 신원증명 및 인증을 수행하는 X.509 STORE; 및
    노드간의 데이터 변경분을 추적하고 동기화 하는 과정에서 각 참여자의 데이터를 유지 및 저장하는 캐시(CACHE): 를 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  3. 청구항 2에 있어서, 캐시(CACHE)는
    메세지를 구독하는 모든 클라이언트가 처리될 때까지 토픽(Topic) 상에 게시중인 상태일때 메세지 만료시간까지 토픽(Topic)을 기준으로 데이터를 유지 및 저장하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  4. 청구항 1에 있어서, 큐 엔진은
    전체스트림을 영구적으로 저장하고 있고, 구독자 단말이 OFFSET을 통해 특정 범위의 메세지에 엑세스 할 때, 해당 토픽의 머클루트를 기반으로 머클트리(MERKLE TREE)가 엑세스되는 데이터 스트림을 다른 노드에서 저장된 데이터의 확인 및 엑세스가 가능한 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  5. 청구항 2에 있어서, 큐 엔진은
    메세지 스트림 데이터를 네트워크상의 분산된 노드에 저장하기 위한 자료 구조로서 상위 노드와 리프노드로 구성되는 머클트리(MEKLE TREE), LIBP2P를 통해 P2P 네트워크를 구성하고, 각 구독자 단말과 발행자 단말이 노드로서 기동하게 하는 P2P(Peer to Peer) 및 메모리기반의 스트림 데이터를 CRDT에 기반하여 순서화 하는 브로커(BROKER)를 포함하는 하위 레이어들을 포함하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  6. 청구항 5에 있어서, 브로커(BROKER)는
    MQTT(Message Queueing Telemetry Transport)와 AMQP(Advanced Message Queing Protocol)를 지원하기 위한 브로커 인스턴스(BROKER INSTANCE)로서 Aedes API를 사용하는 것; 을 특징으로 하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
  7. 청구항 5에 있어서, 큐 엔진은
    머클트리(MERKLE TREE)에서 소실되는 메세지 또는 사용되지 않는 데이터 블록을 회수하는 Garbage Collector; 를 더 포함하는 탈중앙화 방식의 주소지정방식 P2P 스토리지를 파일시스템으로 사용한 메세지큐 시스템.
KR1020230057915A 2022-09-22 2023-05-03 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템 KR20240041207A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220120309 2022-09-22
KR1020220120309 2022-09-22

Publications (1)

Publication Number Publication Date
KR20240041207A true KR20240041207A (ko) 2024-03-29

Family

ID=90483802

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230057915A KR20240041207A (ko) 2022-09-22 2023-05-03 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템

Country Status (1)

Country Link
KR (1) KR20240041207A (ko)

Similar Documents

Publication Publication Date Title
JP7154234B6 (ja) ブロックチェーン・ネットワークにおける高速伝搬のための方法及び特殊ネットワーク・ノード
Hasan et al. A survey of peer-to-peer storage techniques for distributed file systems
Clarke et al. Freenet: A distributed anonymous information storage and retrieval system
US8316364B2 (en) Peer-to-peer software update distribution network
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
JP3851275B2 (ja) 分散コンピュータ・ネットワークのスケーラブルなリソース・ディスカバリおよび再構成
Laoutaris et al. Distributed selfish replication
KR101544480B1 (ko) 복수 개의 프락시 서버를 포함하는 분산 저장 시스템 및 그 오브젝트 관리 방법 및 컴퓨터에 의하여 독출가능한 저장 매체
US7738466B2 (en) Distributed hashing mechanism for self-organizing networks
JP5160134B2 (ja) 配送保証されるコンテンツベースのパブリッシュ/サブスクライブ・システムの動的アクセス制御
US20140259005A1 (en) Systems and methods for managing files in a cloud-based computing environment
US9955444B1 (en) Data synchronization across multiple devices connecting to multiple data centers
CN103931160A (zh) 点对点内容分发系统中宣称对等体的内容拥有验证
EP3785401B1 (en) Subscriber configuration ingestion in a content delivery network
Tato et al. Split and migrate: Resource-driven placement and discovery of microservices at the edge
Xhafa et al. Evaluation of intra‐group optimistic data replication in P2P groupware systems
KR20240041207A (ko) 탈중앙화 방식의 주소지정방식 p2p 스토리지를 파일시스템으로 사용한 메세지큐 시스템
Shah Distributed data structures for peer-to-peer systems
Liu et al. Multi-stage replica consistency algorithm based on activity
Carl et al. Persistent Streams: The Internet With Ephemeral Storage
Schäffner Data Management in Distributed Systems
Gidenstam et al. Scalable group communication supporting configurable levels of consistency
Takemoto et al. Distributed algorithms for balanced zone partitioning in content-addressable networks
Cai et al. Video management in peer-to-peer systems
Ktari et al. Symmetric replication for efficient flooding in DHTs