KR102256197B1 - 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템 - Google Patents

벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템 Download PDF

Info

Publication number
KR102256197B1
KR102256197B1 KR1020180140497A KR20180140497A KR102256197B1 KR 102256197 B1 KR102256197 B1 KR 102256197B1 KR 1020180140497 A KR1020180140497 A KR 1020180140497A KR 20180140497 A KR20180140497 A KR 20180140497A KR 102256197 B1 KR102256197 B1 KR 102256197B1
Authority
KR
South Korea
Prior art keywords
action information
version
user terminal
user
state
Prior art date
Application number
KR1020180140497A
Other languages
English (en)
Other versions
KR20200056612A (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 KR1020180140497A priority Critical patent/KR102256197B1/ko
Priority to US16/217,154 priority patent/US10715591B2/en
Publication of KR20200056612A publication Critical patent/KR20200056612A/ko
Application granted granted Critical
Publication of KR102256197B1 publication Critical patent/KR102256197B1/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/40Support for services or applications
    • H04L65/403Arrangements for multi-party communication, e.g. for conferences
    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1048Departure or maintenance mechanisms
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1813Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
    • H04L12/1827Network arrangements for conference optimisation or adaptation
    • 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/10Architectures or entities
    • H04L65/1059End-user terminal functionalities specially adapted for real-time communication
    • 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/1066Session management
    • H04L65/1083In-session procedures
    • H04L65/1093In-session procedures by adding participants; by removing participants
    • 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/80Responding to QoS
    • 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/104Peer-to-peer [P2P] 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/50Network services
    • H04L67/535Tracking the activity of the user
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명에 의하면, 피어투피어(P2P) 통신을 이용하여 복수의 사용자 단말을 동기화하기 위한 방법에 있어서, 제1 사용자 단말에서 제1 상태 변경이 발생하는 단계,상기 제1 사용자 단말에서 상기 제1 상태 변경에 대응하는 제1 액션(action) 정보를 생성하는 단계, 상기 제1 사용자 단말에서 상기 제1 액션 정보를 제2 사용자 단말에 송신하는 단계, 상기 제2 사용자 단말에서 상기 제1 액션 정보를 수신하는 단계,상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에 상기 제1 액션 정보를 추가하는 단계, 상기 제2 사용자 단말에서 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하는 단계, 및 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태 변경을 적용하는 단계를 포함하는 피어투피어 동기화 방법을 제공할 수 있다.

Description

벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템{METHOD FOR PEER-TO-PEER SYNCHRONIZATION USING VECTOR CLOCK AND SYSTEM USING THE SAME}
본 발명은 피어투피어(peer-to-peer, P2P) 통신에서 실시간 동기화를 구현하기 위한 방법 및 이를 이용한 시스템에 관한 것이다. 보다 구체적으로, 동기화를 위한 중계 서버 없이 사용자 단말간 P2P 통신을 하면서 벡터 클락(vector clock)을 이용하여 안정적으로 동기화를 보장하기 위한 방법 및 이를 이용한 시스템에 관한 것이다.
인터넷 및 통신 기술의 발달로 다수의 사용자 단말이 참여하는 영상 통화, 화상 회의, 온라인 회의, 전자 회의, 협업 시스템 등과 관련된 솔루션과 어플리케이션이 점차 다양하게 사용되고 있다. 또한, 일부 솔루션 및 어플리케이션은 관련 통화, 회의, 협업 환경 등에 참가하는 사용자들에게 메시지, 문서 등의 콘텐츠가 나타나는 화면을 공유하는 화면 공유 기능을 제공하고 있으며, 다수의 참여하는 사용자 단말들에 동일한 화면을 보여줌으로써 더욱 즉각적이고 효율적인 커뮤니케이션을 가능하게 한다.
그러나, 이와 같은 종래의 실시간 커뮤니케이션 시스템은 동기화를 위한 중계 서버 또는 상태 관리 서버를 포함하고 있으며, 서버를 이용한 동기화 방법은 크게 비용(cost) 및 통신 지연(latency) 측면에서 단점을 가지고 있다. 먼저, 종래의 서버 동기화 방식은 사용자들간의 현재 상태를 관리하는 서버가 항상 사용자들과 연결되어 있어야 하기 때문에, 동시 접속자가 많아질수록 서버 부담이 증가하여 서버 운영 비용이 크다는 점이다. 또한, 다수의 사용자 각각의 상태가 변경되면 서버가 해당 상태의 변경을 반영하고, 최종 반영이 확정된 상태를 각 사용자들에게 전달함으로써, 예컨대 사용자 A가 변경한 내용을 사용자 B에게 전달되기 까지 서버에서 처리하는 시간이 소요됨으로써 비교적 큰 지연 시간이 발생하게 된다.
따라서, 구축 운영 비용과 지연 시간 측면에서, 중계 서버의 이용 없이 사용자 단말 간 P2P 통신을 통해 안정적인 동기화를 구현하기 위한 방법 및 시스템이 필요하다.
(특허문헌 1) 대한민국 공개특허 특2002-0050769호 (공개일자: 2002.06.27)
본 발명은 종래에 실시간 커뮤니케이션에서 동기화를 위해 중계 관리 서버를 통하여 해결하였던 문제를 서버 없이(serverless) P2P 통신에 기초하여 해결하기 위한 방법 및 시스템을 제공하는 것을 목적으로 한다.
본 발명은 상태 관리 서버의 필요 없이 사용자 단말 간에 P2P로 통신함으로써 서버 부담 및 지연 시간을 감소시키는 분산적 동기화(decentralized synchronization)를 구현하는 것을 목적으로 한다.
본 발명은 사용자 단말 간에 직접 통신하면서 함께 조작 및 변경하는 화면의 상태를 실시간 동기화시킴으로써, 실시간 커뮤니케이션을 함에 있어서 사용자들에게 현장감 있는 경험을 제공하고, 서버 유지 비용을 절감하는 동기화 방법 및 시스템을 제공하는 것을 목적으로 한다.
본 발명은 P2P 통신에서 발생할 수 있는 다이버전스(divergence) 또는 인과율 위배(causality violation)를 해결함으로써, 안정적으로 동기화를 보장할 수 있는 동기화 방법 및 시스템을 제공하는 것을 목적으로 한다.
본 발명의 해결 과제들은 이상에서 언급한 내용들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
본 발명의 일 실시예에 따르면, 피어투피어(P2P) 통신을 이용하여 복수의 사용자 단말을 동기화하기 위한 방법에 있어서, 제1 사용자 단말에서 제1 상태 변경이 발생하는 단계; 상기 제1 사용자 단말에서 상기 제1 상태 변경에 대응하는 제1 액션(action) 정보를 생성하는 단계; 상기 제1 사용자 단말에서 상기 제1 액션 정보를 제2 사용자 단말에 송신하는 단계; 상기 제2 사용자 단말에서 상기 제1 액션 정보를 수신하는 단계; 상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에 상기 제1 액션 정보를 추가하는 단계; 상기 제2 사용자 단말에서 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하는 단계; 및 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태 변경을 적용하는 단계를 포함하는 피어투피어 동기화 방법이 제공될 수 있다.
또한, 상기 제1 사용자 단말에서 상기 제1 액션 정보에 버전을 할당하는 단계를 더 포함하고, 상기 제2 사용자 단말에서 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하는 단계는, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계를 포함할 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 1인 경우, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태(state)의 버전이 업데이트 될 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계에 있어서, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 2 이상인 경우 인과율 위배(causality violation)가 발생하였다고 판단할 수 있다. 여기서, 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말은 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시킬 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계에 있어서, 상기 현재 상태의 버전 및 상기 제1 액션 정보의 버전은 각 사용자 단말과 관련된 2개 이상의 속성 값을 포함하고, 어느 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 크고, 다른 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 작은 경우 다이버전스(divergence)가 발생한 것으로 판단할 수 있다. 여기서, 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정할 수 있다.
또한, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태 변경을 적용할 때 상기 제1 액션 정보를 적용 완료 큐(applied queue)에 저장하는 단계를 더 포함할 수 있다.
본 발명의 다른 실시예에 따르면, 피어투피어(P2P) 통신을 이용하여 복수의 사용자 단말을 동기화하기 위한 시스템에 있어서, 제1 통신부 및 제1 처리부를 포함하는 제1 사용자 단말; 및 제2 통신부 및 제2 처리부를 포함하는 제2 사용자 단말을 포함하고, 상기 제1 사용자 단말은 제1 상태 변경에 대응하는 제1 액션(action) 정보를 생성하고, 상기 생성된 제1 액션 정보를 제2 사용자 단말에 송신하도록 구성되고, 상기 제2 사용자 단말은 상기 제1 액션 정보를 수신하고, 적용 대기 큐(ready queue)에 상기 제1 액션 정보를 추가하고, 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하고, 상기 제1 액션 정보에 기초하여 상태 변경을 적용하도록 구성되는 것인, 피어투피어 동기화 시스템이 제공될 수 있다.
또한, 상기 제1 사용자 단말은 상기 제1 액션 정보에 버전을 할당하고, 상기 제2 사용자 단말이 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지할 때, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교할 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 1인 경우, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태(state)의 버전이 업데이트 될 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교할 때, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 2 이상인 경우 인과율 위배(causality violation)가 발생하였다고 판단할 수 있다. 여기서, 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시킬 수 있다.
또한, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교할 때, 상기 현재 상태의 버전 및 상기 제1 액션 정보의 버전은 각 사용자 단말과 관련된 2개 이상의 속성 값을 포함하고, 어느 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 크고, 다른 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 작은 경우 다이버전스(divergence)가 발생한 것으로 판단할 수 있다. 여기서, 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정할 수 있다.
또한, 상기 제2 사용자 단말은 상기 제1 액션 정보에 기초하여 상태 변경을 적용할 때 상기 제1 액션 정보를 적용 완료 큐(applied queue)에 저장할 수 있다.
본 발명에 의하면, 종래에 실시간 커뮤니케이션에서 동기화를 위해 중계 관리 서버를 통하여 해결하였던 문제를 서버 없이(serverless) P2P 통신에 기초하여 해결하기 위한 방법 및 시스템을 제공할 수 있다.
또한, 본 발명에 의하면, 상태 관리 서버의 필요 없이 사용자 단말 간에 P2P로 통신하기 때문에 서버 부담 및 지연 시간을 감소시키는 분산적 동기화(decentralized synchronization)를 구현할 수 있다.
또한, 본 발명에 의하면, 사용자 단말 간에 직접 통신하면서 함께 조작 및 변경하는 화면의 상태를 실시간 동기화시킴으로써, 실시간 커뮤니케이션을 함에 있어서 사용자들에게 현장감 있는 경험을 제공하고, 서버 유지 비용을 절감할 수 있다.
또한, 본 발명에 의하면, P2P 통신에서 발생할 수 있는 다이버전스(divergence) 또는 인과율 위배(causality violation)를 해결함으로써, 안정적으로 동기화를 보장할 수 있다.
또한, 본 발명에 의하면, 동시 접속자 수가 증가하더라도 필요로 하는 서버 자원이 늘어나지 않기 때문에 같은 비용으로 보다 쾌적한 통신 환경을 사용자에게 제공할 수 있다.
본 발명의 효과들은 이상에서 언급한 내용들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 종래에 서버를 이용하여 동기화를 구현하는 방식을 설명하기 위한 예시도이다.
도 2는 본 발명의 일 실시예에 따라 P2P 통신에 기초하여 상태 변경에 따른 동기화를 구현하는 방법을 설명하기 위한 예시도이다.
도 3은 각 사용자의 동시 작업에 따라 사용자 별로 서로 다른 상태를 갖게 되는 다이버전스(divergence)의 발생을 설명하기 위한 예시도이다.
도 4는 3명 이상의 사용자가 있을 때 네트워크 통신 속도의 차이로 인해 나타나는 인과율 위배(causality violation)의 발생을 설명하기 위한 예시도이다.
도 5는 본 발명의 일 실시예에 따른 피어투피어(P2P) 동기화 시스템을 설명하기 위한 구성도이다.
도 6은 본 발명의 일 실시예에 따라 액션(action) 정보 적용에 따라 상태(state)의 버전이 업데이트되는 구성을 설명하기 위한 예시도이다.
도 7은 본 발명의 일 실시예에 따라 P2P 통신에서 실시간 동기화를 구현하기 위한 방법을 설명하기 위한 흐름도이다.
도 8은 본 발명의 일 실시예에 따라 P2P 통신에서 상태 변경에 따른 동기화가 수행되는 방법을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시예에 따라 P2P 통신에서 다이버전스(divergence)를 해결하기 위한 방법을 설명하기 위한 예시도이다.
도 10은 본 발명의 일 실시예에 따라 P2P 통신에서 인과율 위배(causality violation)를 해결하기 위한 방법을 설명하기 위한 예시도이다.
이하, 첨부된 도면을 참조하여 본 발명에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.
본 명세서에서 사용되는 "포함한다(comprises)", "포함하는(comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.
또한, 본 발명에서 사용되는 제1, 제2 등과 같이 서수를 포함하는 용어는 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되어서는 안 된다. 이와 같은 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다. 또한, 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
또한, 본 발명의 실시예에 나타나는 구성부들은 서로 다른 특징적인 기능들을 나타내기 위해 독립적으로 도시되는 것으로, 각 구성부들이 분리된 하드웨어나 하나의 소프트웨어 구성단위로 이루어짐을 의미하지 않는다. 즉, 각 구성부는 설명의 편의상 각각의 구성부로 나열하여 기술되고, 각 구성부 중 적어도 두 개의 구성부가 합쳐져 하나의 구성부로 이루어지거나, 하나의 구성부가 복수 개의 구성부로 나뉘어져 기능을 수행할 수 있다. 이러한 각 구성부의 통합된 실시예 및 분리된 실시예도 본 발명의 본질에서 벗어나지 않는 한 본 발명의 권리 범위에 포함된다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 실시예를 상세하게 설명한다. 본 발명의 구성 및 그에 따른 작용 효과는 이하의 상세한 설명을 통해 명확하게 이해될 것이다.
도 1은 종래에 서버를 이용하여 동기화를 구현하는 방식을 설명하기 위한 예시도이다.
종래의 온라인 공유 및 협업 기능을 제공하는 서비스의 경우 중계 서버 또는 상태 관리 서버를 통해 복수의 사용자들에게 동기화를 제공하였다. 예컨대, 모든 참여자들이 동시에 같은 화면을 보면서 얘기할 때, 종래 서비스들은 서버에서 화면에 대한 정보를 관리한다. 구체적으로, 어떤 위치에 어떤 글자가 있는지, 그 글자의 색깔은 무엇인지 등의 정보들이 서버에 저장되어 있고, 참여자들은 그러한 상태를 변경해달라고 서버로 요청한다.
예컨대, 도 1을 참조하면, (1) 사용자 A가 두 번째 문장인 Hello World의 첫 번째 단어인 Hello를 파란색으로 변경하는 경우 이와 같은 변경 요청을 서버로 보낸다. (2) 그러면 서버는 사용자의 변경 요청을 수신하고 자신이 가지고 있는 상태 정보를 수정한다. (3) 서버는 상태 정보의 수정된 결과를 각 사용자인 A, B에게 모두 알려준다. (4) 그러면 비로소 사용자들의 단말에 변경된 상태가 화면에 표시됨으로써, 사용자 A의 변경 요청에 의해 파란색으로 변경된 글자를 볼 수 있게 된다. 이와 같이 중계 서버를 이용하여 동기화를 구현하는 경우 서버 부담 비용(cost) 및 통신 지연(latency) 측면에서 단점을 가지고 있다.
도 2는 본 발명의 일 실시예에 따라 P2P 통신에 기초하여 상태 변경에 따른 동기화를 구현하는 방법을 설명하기 위한 예시도이다.
상태 변경의 동기화를 위해 아래와 같이 서버의 중계 없이 P2P 통신을 이용하여 상태를 관리할 수 있다. 도 2를 참조하면, (1) 사용자 A 단말에서 자신의 화면에 표시된 Hello World의 첫 번째 단어인 Hello를 파란색으로 변경하는 상태 변경이 발생한다. (2) 사용자 A의 단말에 상태 변경에 따라 상태가 변경된 것을 P2P 통신으로 직접 사용자 B의 단말에 알려줄 수 있다. (3) 사용자 B 단말에서 상태 변경과 관련된 정보를 수신하고 자신의 단말에 이를 반영하여 Hello World의 첫 번째 단어인 Hello를 파란색으로 변경하도록 상태를 변경할 수 있다.
그러나, 이와 같이 P2P 통신을 이용하여 상태 변경을 관리하면, 뒤에서 자세히 설명할 다이버전스(divergence) 또는 인과율 위배(causality violation)가 발생할 수 있다는 문제를 가지고 있다.
도 3은 각 사용자의 동시 작업에 따라 사용자 별로 서로 다른 상태를 갖게 되는 다이버전스(divergence)의 발생을 설명하기 위한 예시도이다.
둘 이상의 사용자 단말이 통신에 참여하는 경우 동시 작업에 따라 상태 변경이 동시에 일어나면, 동시에 같은 대상의 속성을 다른 값으로 변경하는 경우 다이버전스(divergence), 즉 상태의 불일치, 엇갈림 또는 꼬인 상태가 발생할 수 있다.
도 3의 예시도를 참조하면, (1) 사용자 A 단말에서 자신의 화면에 표시된 Hello World의 첫 번째 단어인 Hello를 빨간색으로 변경하는 상태 변경이 발생한다. (2) 이와 동시에 또는 거의 동시에 사용자 B 단말에서도 자신의 화면에 표시된 Hello World의 첫 번째 단어인 Hello를 파란색으로 변경하는 상태 변경이 발생할 수 있다. 이 경우에, (3) Hello를 빨간색으로 변경하는 상태 변경과 관련된 정보가 사용자 A 단말로부터 사용자 B 단말에 전달되는 동시에, (4) Hello를 파란색으로 변경하는 상태 변경과 관련된 정보가 사용자 B 단말로부터 사용자 A 단말에 전달된다. 이에 따라, (5) 사용자 B 단말에서 사용자 A 단말로부터 받은 정보에 기초하여 Hello를 빨간색으로 변경하고, (6) 사용자 A 단말에서 사용자 B 단말로부터 받은 정보에 기초하여 Hello을 파란색으로 변경하게 된다. 이에 따라, 사용자 A 단말 및 사용자 B 단말에서 서로 다른 상태를 갖게 되는 다이버전스가 발생하게 된다.
도 4는 3명 이상의 사용자가 있을 때 네트워크 통신 속도의 차이로 인해 나타나는 인과율 위배(causality violation)의 발생을 설명하기 위한 예시도이다.
도 4의 예시도를 참조하면, 참여하는 사용자의 수가 사용자 A, 사용자 B, 사용자 C로서 셋 이상이고, 사용자 A 단말과 사용자 B 단말 사이의 네트워크 통신 속도에 비해 사용자 A 단말과 사용자 C 단말 사이의 네트워크 통신 속도가 느린 경우를 가정한다. 이와 같이 셋 이상의 사용자 단말이 P2P 통신에 참여하는 경우 네트워크 환경에 따라 각 사용자 간의 통신 속도의 차이가 발생할 수 있다.
일 예시로, (1) 사용자 A 단말에서 자신의 화면에 표시된 World에 Hello를 추가한다. (2) 사용자 A 단말에서의 상태 변경 관련 정보인 <Hello를 추가>를 사용자 B 단말에 P2P 통신으로 전달하고, (3) 또한, 사용자 C 단말에게도 동일한 정보를 P2P 통신으로 전달한다. 이때, 통신 환경의 차이로, 사용자 A 단말에서의 상태 변경 관련 정보인 <Hello를 추가>가 사용자 B 단말에게는 빨리 전달되었으나, 사용자 C 단말에게는 늦게 전달될 수 있다.
이에 따라, (4) 사용자 B 단말은 사용자 A 단말로부터 받은 <Hello를 추가>에 기초하여 World에 Hello를 추가하여 상태 변경을 적용하고, (5) 사용자 B 단말은 Hello를 빨간색으로 변경한다. 이 경우에, (6) 사용자 B 단말에서의 상태 변경 관련 정보인 <Hello를 빨간색으로 변경>을 사용자 단말 A에 전송하고, (7) 또한, 동일한 상태 변경 관련 정보를 사용자 단말 C에게도 전송한다.
(8) 사용자 A 단말은 사용자 B 단말로부터 받은 <Hello를 빨간색으로 변경> 정보를 반영하여 Hello를 빨간색으로 변경한다. (9) 한편, 사용자 C 단말은 사용자 B 단말로부터 받은 <Hello를 빨간색으로 변경>에 기초하여 Hello를 빨간색으로 변경하는 동작을 실패한다. 사용자 C 단말의 경우 아직 사용자 A 단말로부터 <Hello를 추가>를 받지 못하여 Hello가 추가되지 않은 상태이기 때문이다. (10) 이후에 사용자 C 단말은 사용자 A 단말로부터 <Hello를 추가>를 수신하여 자신의 화면에 표시된 World에 Hello를 추가할 수 있다.
이와 같이, P2P 환경에서 사용자 단말들 간의 네트워크 속도가 다른 경우 상태 변경 요청이 발생하는 순서와 상태 변경 정보의 수신되는 순서가 일치하지 않아 상태 변경의 순서가 순차적이지 않는 문제가 발생할 수 있다.
도 5는 본 발명의 일 실시예에 따른 피어투피어(P2P) 동기화 시스템을 설명하기 위한 구성도이다.
도 5를 참조하면, 이해의 편의를 위해 P2P 통신이 가능한 제1 단말(100) 및 제2 단말(200)만을 도시하였으나, 3개 이상의 단말이 참여하는 것도 가능하다.
제1 단말(100) 및 제2 단말(200)은 영상 통화, 화상 회의, 온라인 회의, 전자 회의, 협업 작업 등과 관련된 소프트웨어 프로그램 또는 어플리케이션 등을 실행할 수 있는 장치로서, 사용자의 입출력 조작에 따라 유무선 통신망 등을 경유하여 각종 데이터 등을 수신 및 처리하고, 디스플레이할 수 있는 단말기일 수 있다. 예컨대, 제1 단말(100) 및 제2 단말(200)은 구체적으로 스마트폰(smart phone), 태블릿(tablet) 컴퓨터, 데스크탑(desktop) 컴퓨터, 랩탑(laptop) 컴퓨터, 노트북, 워크스테이션(workstation), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 무선 전화기(wireless phone), 모바일 폰(mobile phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 디지털 카메라(digital camera), 텔레비전(television), 웨어러블 디바이스(wearable device), AI(인공지능) 스피커 중 어느 하나일 수 있으며, 이들에 제한되지 않는다.
제1 통신부(101) 및 제2 통신부(201)은 양 단말간의 P2P 통신을 통해 유선 통신이나 무선 통신 중 적어도 하나를 통한 데이터 송수신을 수행하며, 근거리 통신망(LAN, Local Area Network), 도시권 통신망(MAN, Metropolitan Area Network), 광역 통신망(WAN, Wide Area Network)등 다양한 통신망을 지원하도록 구성될 수 있으며, 예컨대 통신 방식은 LTE(long term evolution), WCDMA(wideband code division multiple access), CDMA(code division multiple access), GSM(global system for mobile communications), WiFi(wireless fidelity), 블루투스(bluetooth) 및 NFC(near field communications) 중 적어도 하나를 포함할 수 있으며, 이들에 제한되지 않는다.
제1 처리부(102) 및 제2 처리부(202)는 중앙처리장치(CPU), 어플리케이션 프로세서(AP) 등을 포함할 수 있으며, 적어도 하나의 다른 구성요소에 관계된 명령 또는 데이터를 저장할 수 있는 메모리를 포함하거나, 외부 메모리와 통신할 수 있다. 제1 처리부(102) 및 제2 처리부(202)를 통해 각 사용자 단말은 사용자의 조작 또는 변경에 따른 상태 변경을 처리 및 인식하고, 관련 액션 정보 및 상태 정보를 생성 및 업데이트하고 벡터 클락 형태의 버전을 할당할 수 있다. 또한, 제1 처리부(102) 및 제2 처리부(202)를 통해 현재 상태의 버전과 액션의 버전을 비교함으로써, 인과율 위해 및 다이버전스 발생 여부를 판단하고 이를 해결하는 알고리즘을 수행할 수 있다. 구체적인 처리 동작에 대해서는 이후에 도 6과 함께 설명될 것이다.
제1 디스플레이부(103) 및 제2 디스플레이부(203)은 사용자에게 데이터나 정보 등을 출력하여 보여주기 위한 역할을 수행하며, 액정 디스플레이(LCD; liquid crystal display), 발광 다이오드(LED; light emitting diode) 디스플레이, 유기 발광 다이오드(OLED; organic LED) 디스플레이, 마이크로 전자기계 시스템(MEMS; micro electro mechanical systems) 디스플레이 및 전자 종이(electronic paper) 디스플레이를 포함할 수 있으며, 이들에 제한되지 않는다. 또한, 디스플레이부는 입력부와 결합되어 터치 스크린(touch screen)의 형태로 구현될 수 있다.
제1 메모리부(104) 및 제2 메모리부(204)는 데이터 저장 등의 기능을 수행하며, 예컨대 변경되는 상태 정보 값들 및 송수신하는 액션 정보 값들을 저장할 수 있다.
제1 입출력부(105) 및 제2 입출력부(205)는 사용자로부터 다양한 입력을 다양한 방법으로 수신하고 출력하기 위한 구성 요소이다. 제1 입출력부(105) 및 제2 입출력부(205)는 공유 화면에 제공된 콘텐츠를 기초로 복수의 사용자 중 적어도 하나의 사용자가 수행한 조작 및 변경 내용을 수신하도록 구성될 수 있으며, 예컨대 키보드, 터치 패드(touch pad), 터치 스크린(touch screen), 키 패드(Key pad), 돔 스위치(dome switch), 물리 버튼, 조그 셔틀(jog shuttle) 및 센서(sensor), 마이크(microphone) 등 적어도 하나로부터 사용자 입력을 수신하도록 구성될 수 있다.
도 6은 본 발명의 일 실시예에 따라 액션(action) 정보 적용에 따라 상태(state)의 버전이 업데이트되는 구성을 설명하기 위한 예시도이다.
본 발명의 일 실시예에 따르면, 각 사용자 단말에서의 사용자의 조작 또는 상태 변경을 수행하는 최소 단위를 액션(action) 또는 액션 정보로 정의할 수 있다. (1) 액션 정보는 조작 또는 변경이 가해지는 대상, (2) 조작 또는 변경의 방법 및 (3) 조작 또는 변경과 관련된 구체적인 데이터를 포함할 수 있다.
예컨대, World라는 문장 앞 부분에 Hello라는 단어를 추가하는 변경을 가하는 액션의 경우, (1) 조작 또는 변경이 가해지는 대상은 ‘World’ 문장이고, (2) 조작 또는 변경의 방법은 ‘문장 앞에 단어 추가’이고, (3) 데이터는 ‘Hello’ 단어일 수 있으며, 해당 액션이 가해진 이후 문장은 ‘Hello World’가 된다.
모든 액션 정보는 생성될 때마다 버전(version)이라는 속성이 할당 및 부여되고, 버전은 한번 정해지면 변경되지 않도록 설정될 수 있다. 또한, 액션 정보는 각 사용자 단말과 관련된 복수의 속성 값을 갖도록 벡터 클락(vector clock)으로 표현될 수 있다. 벡터 클락(vector clock, VC)은 액션 생성자, 즉 각 액션과 관련된 조작 또는 변경의 수행자 단말에 대한 버전 값, 즉 숫자들의 집합으로 표현될 수 있으며, 예컨대, 3명의 사용자 단말이 있는 경우, {userA: 33, userB: 34, userC: 11}와 같이 생성될 수 있다.
또한, 액션 정보가 적용되는 상태(state)는 각 대상의 상태 관련 정보를 포함하고, 상태(state) 역시 액션 정보와 마찬가지로 버전이라는 속성을 갖고, 역시 벡터 클락으로 표현될 수 있다. 각 대상의 상태 벡터 클락에 액션 정보가 적용되면 해당 상태의 버전이 액션의 버전으로 업데이트되는 방식으로 상태의 변경이 수행될 수 있다.
도 6을 참조하면, 벡터 클락은 액션 생성자인 사용자 A 단말, 사용자 B 단말, 사용자 C 단말과 각각 관련된 속성 값을 갖고 있으며, 예컨대 이전 상태의 벡터 클락(610)은 사용자 A 단말(a)에 대해 버전 값 11, 사용자 B 단말(b)에 대해 버전 값 12, 사용자 C 단말(c)에 대해 버전 값 12를 갖고 있었다. 이때, 사용자 C 단말로부터 수신된 액션 정보(620)가 {a:11, b:12, c:13}인 경우 이전 상태의 벡터 클락(610)에 액션 정보(620)가 반영되어 모든 속성 값의 버전이 업데이트됨으로써, 다음 상태의 벡터 클락(630)은 {a:11, b:12, c:13}로 변경된다.
이와 같이, 상태(state)에 액션 정보가 적용되어 상태의 업데이트가 수행되기 위해서, 상태 버전을 나타내는 벡터 클락을 VCa라 하고, 액션 정보의 버전을 나타내는 벡터 클락을 VCs라 할 때, 다음 2가지 조건을 만족하여야만 한다.
1. VCa > VCs,
2. VCa와 VCs 사이의 거리인 d(VCa, VCs) = 1
여기서, 벡터 클락의 버전 간의 관계 정의는 아래와 같다.
A . VC1 VC2 보다 크다 .
- 정의: VC1, VC2의 모든 속성값 i에 대해서 VC1[i] >= VC2[i] 이면 VC1 > VC2로 표시
- 예시: VC1 = {a:4, b:3, c:3}, VC2 = {a:3, b:3: c:2} => VC1 > VC2
VC1 = {a:1, b:1}, VC2 = {b:1} => VC1 > VC2
VC1 = {a:1, b:1}, VC2 = {} => VC1 > VC2
B. VC1 VC2 꼬인 상태 (diverge nce ) 에 있 다.
- 정의: VC1, VC2의 모든 속성값 i 중 VC1[a] > VC2[a] && VC1[b] < VC2[b] 또는 VC1[b] > VC2[b] && VC1[a] < VC2[a]을 만족하는 서로 다른 a, b가 존재하면 VC1 ~ VC2로 표시
- 예시: VC1 = {a:1}, VC2 = {b:1} => VC1 ~ VC2
VC1 = {a:1, b:2, c:3}, VC2 = {a:2, b:1, c:4} => VC1 ~ VC2
C. VC 간의 거리
- 정의: 모든 속성값들의 차이의 절대값의 합
- 예시: VC1 = {a: 5, b: 5, c: 5}, VC2 = {a: 6, b: 5, c: 4} 일 때 VC1와 VC2 사이의 거리인 d(VC1, VC2) = 1+0+1 = 2 이다.
또한, 본 발명의 일 실시예에 따르면, 액션 정보 적용을 위해 액션 큐(action queue)의 데이터 구조를 활용할 수 있고, 액션 큐는 적용을 기다리는 적용 대기 큐(ready queue) 및 적용이 완료된 적용 완료 큐(applied queue) 2가지 종류를 포함할 수 있다.
수신된 액션(action) 정보들은 상태(state)에 적용되기 전에 우선 적용 대기 큐(ready queue)에 대기하고 있다, 위에서 설명한 상태(state)에 적용할 수 있는 2가지 조건을 만족하는 경우 상태(state)에 액션 정보가 적용되어 상태를 변경하고 적용 완료 큐(applied queue)로 이동할 수 있다. 이와 같은 액션 큐는 사용자 단말의 메모리부에 저장될 수 있다.
다음으로, 위의 정의된 벡터 클락의 버전 간 관계 정의에 따라 다이버전스(divergence)를 탐지하고 해결하는 방법을 설명한다. 다이버전스의 발생 판단 요건은, 상태(state) 벡터 클락 버전과 액션(action) 정보 벡터 클락 버전이 꼬인 상태(divergence)에 있으면, 즉 위의 수식에 따라 VCs ~ VCa 인 경우 다이버전스가 발생한 것으로 판단한다. 이를 해결하기 위해서는 적용 완료 큐(applied queue)를 탐색하면서 꼬인 상태(divergence)에 있는 모든 액션들 중, 같은 속성을 변경하는 액션들을 모두 찾고 미리 결정된 규칙에 따라, 즉 미리 정해진 우선 순위에 기초하여 해당 액션 정보를 무시하거나 덮어쓸 수 있다. 예컨대, 사용자 A 단말의 상태 변경의 우선 순위가 사용자 B 단말의 상태 변경의 우선 순위보다 높은 경우 사용자 A 단말의 상태 변경과 관련된 액션만을 반영하고, 사용자 B 단말의 상태 변경과 관련된 액션은 무시할 수 있다.
다음으로, 위의 정의된 벡터 클락의 버전 간 관계 정의에 따라 인과율 위배(causality violation)를 탐지하고 해결하는 방법을 설명한다. 인과율 위배의 발생 판단 요건은 VCs < VCa && d(VCs, VCa) >= 2 이다. 즉, 상태(state) 벡터 클락 버전보다 액션(action) 정보 벡터 클락 버전이 크면서, 양 버전 간 거리가 2 이상일 경우에 인과율 위배가 발생한 것으로 판단한다. 이를 해결하기 위해서는 적용가능한 액션 정보가 들어올 때까지 적용 대기 큐(ready queue)에 대기하고 있으면서 다음으로 수신되는 액션 정보의 적용으로 인해 적용 가능한 상태로 변경되면 순차적으로 적용할 수 있다.
도 7은 본 발명의 일 실시예에 따라 P2P 통신에서 실시간 동기화를 구현하기 위한 방법을 설명하기 위한 흐름도이다.
먼저, 사용자 A 단말에서 사용자 A의 조작 또는 변경에 의해 상태 변경이 발생한다.(S710) 사용자 A 단말은 상태 변경의 발생을 인식하고, 이 상태 변경에 대응하는 액션(A1) 또는 액션 정보(A1)를 생성하고, 해당 액션(A1)에 벡터 클락 형태로 버전을 할당한다.(S720) 사용자 A 단말은 실시간 동기화를 위해 P2P 통신을 이용하여 액션(A1)을 사용자 B 단말에 전송한다.(S730)
사용자 B 단말은 사용자 A 단말로부터 전송된 액션(A1)을 수신한다.(S740) 사용자 B 단말은 수신된 액션(A1)을 적용 대기 큐(ready queue)에 추가할 수 있다.(S750)
사용자 B 단말은 현재 상태(state)의 버전과 수신된 액션(A1)의 버전을 비교함으로써, 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하고, 발생하는 경우 이를 해결하는 동작을 수행할 수 있다.(S760) 또한, 액션(A1)을 바로 적용 가능한 경우에는 바로 상태(state)에 적용하여 상태를 업데이트할 수 있다.
다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부의 판단은, 사용자 B 단말의 현재 상태(state)의 버전과 수신된 액션(A1)의 버전을 비교함으로써 수행된다. 사용자 B 단말의 현재 상태(state)의 버전 값보다 수신된 액션(A1)의 버전 값이 크고, 상태(state)의 버전 값과 액션(A1)의 버전 값 사이의 거리가 1인 경우, 사용자 B 단말에서 액션(A1)을 상태(state)에 반영하여, 상태(state)의 버전을 변경 및 업데이트 할 수 있다.
한편, 사용자 B 단말의 현재 상태(state)의 버전과 수신된 액션(A1)의 버전을 비교함에 있어서, 사용자 B 단말의 현재 상태(state)의 버전 값보다 수신된 액션(A1)의 버전 값이 크고, 상태(state)의 버전 값과 액션(A1)의 버전 값 사이의 거리가 2 이상인 경우 인과율 위배(causality violation)가 발생하였다고 판단할 수 있다. 이와 같이, 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 사용자 B 단말은 적용 대기 큐(ready queue)에서 액션(A1)을 적용가능한 상태가 될 때까지 대기시키고, 다음으로 수신된 액션 정보들 중 적용 가능한 액션들을 먼저 적용함으로써, 인과율 위배를 해결할 수 있다.
또한, 사용자 B 단말의 현재 상태(state)의 버전과 수신된 액션(A1)의 버전을 비교함에 있어서, 현재 상태의 버전 및 액션(A1)의 버전은 각 사용자 단말과 관련된 2개 이상의 복수의 속성 값을 포함하고, 어느 하나의 속성 값은 현재 상태의 버전 값이 액션(A1)의 버전 값보다 크고, 다른 하나의 속성 값은 현재 상태의 버전 값이 액션(A1)의 버전 값보다 작은 경우, 즉 상태(state) 벡터 클락 버전과 액션(A1) 벡터 클락 버전이 꼬인 상태(divergence)에 있으면, 다이버전스(divergence)가 발생한 것으로 판단할 수 있다. 이와 같이, 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 기준 또는 규칙에 따라 액션(A1)을 무시할지 적용할지 판단함으로써 다이버전스를 해결할 수 있다.
마지막으로 액션(A1)의 적용이 완료되면 상태 변경이 반영되고, 액션(A1)을 적용 완료 큐(applied queue)에 저장할 수 있다.(S770)
도 8은 본 발명의 일 실시예에 따라 P2P 통신에서 상태 변경에 따른 동기화가 수행되는 방법을 설명하기 위한 예시도이다.
먼저, 사용자 A 단말에서 상태 변경이 발생하여 사용자 A 단말의 상태를 {}에서 {a:1}로 상태를 변경하고, 액션 정보로서 생성한 {a:1}를 사용자 B 단말에 전송한다. 사용자 B 단말은 수신한 액션 정보 {a:1}를 반영하여 자신의 상태를 {}로부터 {a:1}로 변경한다. 이후, 사용자 B 단말에서 상태 변경이 발생하여, 자신의 상태를 {a:1, b:1}로 변경하고, 액션 정보로서 생성한 {a:1, b:1}를 사용자 A 단말에 전송한다. 사용자 A 단말은 위와 마찬가지로 수신된 액션 정보를 반영하여 자신의 상태를 {a:1, b:1}으로 변경하여 동기화시킬 수 있다. 이후, 다시 사용자 A 단말은 자신의 상태 변경에 의하여 상태를 {a:2, b:1}로 변경하고, 액션 정보로서 {a:2, b:1}을 사용자 B 단말에 전송한다. 사용자 B 단말은 위와 마찬가지로 수신된 액션 정보인 {a:2, b:1}을 상태에 적용하여 상태를 {a:2, b:1}로 업데이트한다.
이와 같이, 적용가능한 액션 정보가 수신되는 경우 각 단말에서 상태에 바로 액션 정보를 적용함으로써 업데이트를 통한 동기화를 유지할 수 있다.
도 9는 본 발명의 일 실시예에 따라 P2P 통신에서 다이버전스(divergence)를 해결하기 위한 방법을 설명하기 위한 예시도이다.
도 9를 참조하면, 사용자 A 단말에서 상태 변경이 발생하여 {}로부터 {a:1}로 상태를 변경하는 동시에, 사용자 B 단말에서도 상태 변경이 발생하여 {}로부터 {b:1}로 상태를 변경하는 경우가 발생할 수 있다.
이때, 사용자 A 단말은 생성된 {a:1} 액션을 사용자 B 단말에 전송하고, 사용자 B 단말은 생성된 {b:1} 액션을 사용자 A 단말에 전송한다. 이 경우, 사용자 A 단말에서는 현재 상태인 {a:1}과 수신한 액션인 {b:1}이 꼬인 상태(divergence), 즉 {a:1} ~ {b:1}이기 때문에, 다이버전스가 발생한 것으로 판단할 수 있다. 또한, 사용자 B 단말에서는 현재 상태인 {b:1}과 수신한 액션인 {a:1}이 꼬인 상태(divergence), 즉 {b:1} ~ {a:1}이기 때문에, 역시 다이버전스가 발생한 것으로 판단할 수 있다.
따라서, 이를 해결하기 위해 미리 정해진 규칙 또는 우선순위, 예컨대 사용자 A 단말의 상태 변경이 사용자 B 단말에 비해 우선 순위에 있다면, 사용자 A 단말에서 전송한 액션인 {a:1}만 반영하고 사용자 B 단말에서 전송한 액션인 {b:1}은 무시함으로써, 사용자 A 단말 및 사용자 B 단말에서 상태를 모두 {a:1}으로 일치시켜 동기화를 구현할 수 있다.
도 10은 본 발명의 일 실시예에 따라 P2P 통신에서 인과율 위배(causality violation)를 해결하기 위한 방법을 설명하기 위한 예시도이다.
도 10을 참조하면, 사용자 A 단말은 상태 변경에 의해 {}로부터 {a:1}로 상태를 변경하고, 생성된 액션인 {a:1}을 사용자 B 단말 및 사용자 C 단말에 전송한다.
사용자 B 단말의 경우 사용자 A 단말로부터 수신한 액션 {a:1}을 바로 적용하여 자신의 상태를 {}에서 {a:1}으로 변경한다. 또한, 사용자 B 단말의 상태 변경으로 인해 자신의 상태를 {a:1}으로부터 {a:1, b:1}으로 변경하고, 생성된 액션인 {a:1, b:1}을 사용자 A 단말 및 사용자 C 단말에게 전송한다.
이때, 사용자 A 단말의 경우 수신된 액션 {a:1, b:1}을 바로 적용가능하여, 자신의 상태를 {a:1}로부터 {a:1, b:1}으로 변경한다. 그러나, 사용자 C 단말의 경우 수신된 액션 {a:1, b:1}은 자신의 현재 상태인 {}보다 크기가 크나, {a:1, b:1}과 {} 사이의 거리가 1+1=2로서 인과율 위배가 발생한 것으로 판단할 수 있다.
따라서, 사용자 C 단말은 현재 적용이 불가능한 액션인 {a:1, b:1}을 적용 대기 큐(ready queue)에서 적용가능한 상태가 될 때까지 대기시킬 수 있고, 다음으로 사용자 A 단말로부터 뒤늦게 수신된 액션인 {a:1}의 적용가능성을 판단하고 먼저 적용시킬 수 있다. 사용자 C 단말의 상태는 {a:1} 액션을 먼저 적용하여, {}로부터 {a:1}으로 상태가 변경되고, 대기 상태에 있던 액션 {a:1, b:1}의 적용가능성을 판단하여 {a:1}으로부터 {a:1, b:1}의 상태 변경을 진행함으로써 최종 상태를 {a:1, b:1}로 변경할 수 있다. 이에 따라 인과율 위배가 해결되고, 사용자 A 단말, 사용자 B 단말, 사용자 C 단말의 동기화가 구현될 수 있다.
이상 본 발명의 실시예에 따른 동기화 방법 및 시스템을 구체적인 다양한 실시 형태로서 설명하였으나, 이는 예시에 불과한 것으로서, 본 발명은 이에 한정되지 않는 것이며, 본 명세서에 개시된 기초 사상에 따르는 최광의 범위를 갖는 것으로 해석되어야 한다. 당업자는 개시된 실시형태들을 조합, 치환하여 적시되지 않은 형상의 패턴을 실시할 수 있으나, 이 역시 본 발명의 범위를 벗어나지 않는 것이다. 이외에도 당업자는 본 명세서에 기초하여 개시된 실시형태를 용이하게 변경 또는 변형할 수 있으며, 이러한 변경 또는 변형도 본 발명의 권리범위에 속함은 명백하다.
100: 제1 단말101: 제1 통신부
102: 제1 처리부103: 제1 디스플레이부
104: 제1 메모리부105: 제1 입출력부
200: 제2 단말201: 제2 통신부
202: 제2 처리부203: 제2 디스플레이부
204: 제2 메모리부205: 제2 입출력부

Claims (16)

  1. 피어투피어(P2P) 통신을 이용하여 복수의 사용자 단말을 동기화하기 위한 방법에 있어서,
    제1 사용자 단말에서 제1 상태 변경이 발생하는 단계;
    상기 제1 사용자 단말에서 상기 제1 상태 변경에 대응하는 제1 액션(action) 정보를 생성하는 단계;
    상기 제1 사용자 단말에서 상기 제1 액션 정보에 버전을 할당하는 단계;
    상기 제1 사용자 단말에서 상기 제1 액션 정보를 제2 사용자 단말에 송신하는 단계;
    상기 제2 사용자 단말에서 상기 제1 액션 정보를 수신하는 단계;
    상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에 상기 제1 액션 정보를 추가하는 단계;
    상기 제2 사용자 단말에서 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하는 단계; 및
    상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태 변경을 적용하는 단계
    를 포함하고,
    상기 제1 액션 정보는 상기 제1 사용자 단말에서의 사용자 조작에 기초하여 생성되는 것이고,
    상기 제2 사용자 단말에서 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하는 단계는, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계를 포함하고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 1인 경우, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태(state)의 버전이 업데이트 되는 것이고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계에 있어서, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 2 이상인 경우 인과율 위배(causality violation)가 발생하였다고 판단하는 것이고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 단계에 있어서, 상기 현재 상태의 버전 및 상기 제1 액션 정보의 버전은 각 사용자 단말과 관련된 2개 이상의 속성 값을 포함하고, 어느 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 크고, 다른 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 작은 경우 다이버전스(divergence)가 발생한 것으로 판단하는 것인, 피어투피어 동기화 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 제1항에 있어서, 상기 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말은 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시키는 것인, 피어투피어 동기화 방법.
  6. 삭제
  7. 제1항에 있어서, 상기 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정하는 것인, 피어투피어 동기화 방법.
  8. 제1항에 있어서, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태 변경을 적용할 때 상기 제1 액션 정보를 적용 완료 큐(applied queue)에 저장하는 단계를 더 포함하는 것인, 피어투피어 동기화 방법.
  9. 피어투피어(P2P) 통신을 이용하여 복수의 사용자 단말을 동기화하기 위한 시스템에 있어서,
    제1 통신부 및 제1 처리부를 포함하는 제1 사용자 단말; 및
    제2 통신부 및 제2 처리부를 포함하는 제2 사용자 단말을 포함하고,
    상기 제1 사용자 단말은 제1 상태 변경에 대응하는 제1 액션(action) 정보를 생성하고, 상기 생성된 제1 액션 정보를 제2 사용자 단말에 송신하도록 구성되고,
    상기 제2 사용자 단말은 상기 제1 액션 정보를 수신하고, 적용 대기 큐(ready queue)에 상기 제1 액션 정보를 추가하고, 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지하고, 상기 제1 액션 정보에 기초하여 상태 변경을 적용하도록 구성되는 것이고,
    상기 제1 액션 정보는 상기 제1 사용자 단말에서의 사용자 조작에 기초하여 생성되는 것이고,
    상기 제1 사용자 단말은 상기 제1 액션 정보에 버전을 할당하고, 상기 제2 사용자 단말이 다이버전스(divergence) 또는 인과율 위배(causality violation) 발생 여부를 탐지할 때, 상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교하는 것이고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 1인 경우, 상기 제2 사용자 단말에서 상기 제1 액션 정보에 기초하여 상태(state)의 버전이 업데이트 되는 것이고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교할 때, 상기 제2 사용자 단말의 현재 상태(state)의 버전 값보다 수신된 상기 제1 액션 정보의 버전 값이 크고, 상기 상태(state)의 버전 값과 상기 제1 액션 정보의 버전 값 사이의 거리가 2 이상인 경우 인과율 위배(causality violation)가 발생하였다고 판단하는 것이고,
    상기 제2 사용자 단말의 현재 상태(state)의 버전과 수신된 상기 제1 액션 정보의 버전을 비교할 때, 상기 현재 상태의 버전 및 상기 제1 액션 정보의 버전은 각 사용자 단말과 관련된 2개 이상의 속성 값을 포함하고, 어느 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 크고, 다른 하나의 속성 값은 현재 상태의 버전 값이 상기 제1 액션 정보의 버전 값보다 작은 경우 다이버전스(divergence)가 발생한 것으로 판단하는 것인, 피어투피어 동기화 시스템
  10. 삭제
  11. 삭제
  12. 삭제
  13. 제9항에 있어서, 상기 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시키는 것인, 피어투피어 동기화 시스템.
  14. 삭제
  15. 제9항에 있어서, 상기 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정하는 것인, 피어투피어 동기화 시스템.
  16. 제9항에 있어서, 상기 제2 사용자 단말은 상기 제1 액션 정보에 기초하여 상태 변경을 적용할 때 상기 제1 액션 정보를 적용 완료 큐(applied queue)에 저장하는 것인, 피어투피어 동기화 시스템.
KR1020180140497A 2018-11-15 2018-11-15 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템 KR102256197B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180140497A KR102256197B1 (ko) 2018-11-15 2018-11-15 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템
US16/217,154 US10715591B2 (en) 2018-11-15 2018-12-12 Method for peer-to-peer synchronization using vector clock and system using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180140497A KR102256197B1 (ko) 2018-11-15 2018-11-15 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템

Publications (2)

Publication Number Publication Date
KR20200056612A KR20200056612A (ko) 2020-05-25
KR102256197B1 true KR102256197B1 (ko) 2021-05-26

Family

ID=70727019

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180140497A KR102256197B1 (ko) 2018-11-15 2018-11-15 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템

Country Status (2)

Country Link
US (1) US10715591B2 (ko)
KR (1) KR102256197B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4292254A1 (en) * 2021-02-13 2023-12-20 Oracle International Corporation Invalidating cached flow information in a cloud infrastructure

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194393A1 (en) 1997-09-24 2002-12-19 Curtis Hrischuk Method of determining causal connections between events recorded during process execution
US20100070470A1 (en) * 2008-09-17 2010-03-18 Sage Technologies Limited Information synchronisation

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020050769A (ko) 2000-12-21 2002-06-27 김종태 그래픽 기능을 갖는 통신단말기에서의 화면내용동기화방법
KR20120022467A (ko) * 2010-09-02 2012-03-12 삼성전자주식회사 데이터 경합 검출 장치 및 방법
US9705754B2 (en) * 2012-12-13 2017-07-11 Level 3 Communications, Llc Devices and methods supporting content delivery with rendezvous services
US10782960B2 (en) * 2017-06-06 2020-09-22 Ab Initio Technology Llc User interface that integrates plural client portals in plural user interface portions through sharing of one or more log records

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020194393A1 (en) 1997-09-24 2002-12-19 Curtis Hrischuk Method of determining causal connections between events recorded during process execution
US20100070470A1 (en) * 2008-09-17 2010-03-18 Sage Technologies Limited Information synchronisation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Shen Haifeng, "Internet-Based Collaborative Programming Techniques and Environments", Griffith University(2003)*

Also Published As

Publication number Publication date
US10715591B2 (en) 2020-07-14
US20200162547A1 (en) 2020-05-21
KR20200056612A (ko) 2020-05-25

Similar Documents

Publication Publication Date Title
US12120585B2 (en) Messaging system interacting with dynamic extension app
US8862672B2 (en) Content sharing and instant messaging
KR102570799B1 (ko) 다수의 디바이스 상에 컴퓨팅 환경의 제시
Paternò et al. A logical framework for multi-device user interfaces
CN104965637B (zh) 一种界面操作的实现方法及装置
US12026421B2 (en) Screen sharing method, apparatus, and device, and storage medium
CN102947789A (zh) 基于角色的演示文稿视图
US20130278482A1 (en) Display device with sharable screen image
JP2017538178A (ja) デバイス間でのアプリケーションの分割提示
KR102260738B1 (ko) Api 기반 웹 어플리케이션 런타임에 레이아웃을 동적으로 제공하기 위한 방법 및 이를 이용한 시스템
US11580172B2 (en) Contact creation and utilization
CN112346612B (zh) 页面显示方法和装置
US20220291815A1 (en) Message transmitting method and apparatus, message receiving method and apparatus, device, and medium
KR102256197B1 (ko) 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템
CN112738013B (zh) 群呼方法、计算机装置及计算机可读记录介质
US10514959B2 (en) Distributed virtual local operating system stored in cloud and its method
EP3048524B1 (en) Document display support device, terminal, document display method, and computer-readable storage medium for computer program
CN112069137A (zh) 生成信息的方法、装置、电子设备及计算机可读存储介质
EP3424212A1 (en) Joining executable component to online conference
CN114125048B (zh) 一种消息推送设置方法、装置、存储介质及电子设备
CN115643241A (zh) 一种多媒体资源编辑方法、装置、电子设备以及存储介质
KR20150107240A (ko) 메신저 서비스에서 비공개 메시지 제공 방법, 이를 위한 시스템 및 장치
CN117955942A (zh) 交互方法及装置、电子设备及存储介质
CN116010343A (zh) 文档任务处理方法、装置、电子设备及存储介质
Sumalatha et al. A novel thin client architecture with hybrid push-pull model, adaptive display pre-fetching and graph colouring

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