KR102256197B1 - 벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템 - Google Patents
벡터 클락을 이용한 피어투피어 동기화 방법 및 이를 이용한 시스템 Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/403—Arrangements for multi-party communication, e.g. for conferences
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1048—Departure or maintenance mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1813—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast for computer conferences, e.g. chat rooms
- H04L12/1827—Network arrangements for conference optimisation or adaptation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/10—Architectures or entities
- H04L65/1059—End-user terminal functionalities specially adapted for real-time communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1083—In-session procedures
- H04L65/1093—In-session procedures by adding participants; by removing participants
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/535—Tracking the activity of the user
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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
본 발명은 피어투피어(peer-to-peer, P2P) 통신에서 실시간 동기화를 구현하기 위한 방법 및 이를 이용한 시스템에 관한 것이다. 보다 구체적으로, 동기화를 위한 중계 서버 없이 사용자 단말간 P2P 통신을 하면서 벡터 클락(vector clock)을 이용하여 안정적으로 동기화를 보장하기 위한 방법 및 이를 이용한 시스템에 관한 것이다.
인터넷 및 통신 기술의 발달로 다수의 사용자 단말이 참여하는 영상 통화, 화상 회의, 온라인 회의, 전자 회의, 협업 시스템 등과 관련된 솔루션과 어플리케이션이 점차 다양하게 사용되고 있다. 또한, 일부 솔루션 및 어플리케이션은 관련 통화, 회의, 협업 환경 등에 참가하는 사용자들에게 메시지, 문서 등의 콘텐츠가 나타나는 화면을 공유하는 화면 공유 기능을 제공하고 있으며, 다수의 참여하는 사용자 단말들에 동일한 화면을 보여줌으로써 더욱 즉각적이고 효율적인 커뮤니케이션을 가능하게 한다.
그러나, 이와 같은 종래의 실시간 커뮤니케이션 시스템은 동기화를 위한 중계 서버 또는 상태 관리 서버를 포함하고 있으며, 서버를 이용한 동기화 방법은 크게 비용(cost) 및 통신 지연(latency) 측면에서 단점을 가지고 있다. 먼저, 종래의 서버 동기화 방식은 사용자들간의 현재 상태를 관리하는 서버가 항상 사용자들과 연결되어 있어야 하기 때문에, 동시 접속자가 많아질수록 서버 부담이 증가하여 서버 운영 비용이 크다는 점이다. 또한, 다수의 사용자 각각의 상태가 변경되면 서버가 해당 상태의 변경을 반영하고, 최종 반영이 확정된 상태를 각 사용자들에게 전달함으로써, 예컨대 사용자 A가 변경한 내용을 사용자 B에게 전달되기 까지 서버에서 처리하는 시간이 소요됨으로써 비교적 큰 지연 시간이 발생하게 된다.
따라서, 구축 운영 비용과 지연 시간 측면에서, 중계 서버의 이용 없이 사용자 단말 간 P2P 통신을 통해 안정적인 동기화를 구현하기 위한 방법 및 시스템이 필요하다.
본 발명은 종래에 실시간 커뮤니케이션에서 동기화를 위해 중계 관리 서버를 통하여 해결하였던 문제를 서버 없이(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)를 해결하기 위한 방법을 설명하기 위한 예시도이다.
도 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 입출력부
102: 제1 처리부103: 제1 디스플레이부
104: 제1 메모리부105: 제1 입출력부
200: 제2 단말201: 제2 통신부
202: 제2 처리부203: 제2 디스플레이부
204: 제2 메모리부205: 제2 입출력부
Claims (16)
- 피어투피어(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)가 발생한 것으로 판단하는 것인, 피어투피어 동기화 방법.
- 삭제
- 삭제
- 삭제
- 제1항에 있어서, 상기 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말은 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시키는 것인, 피어투피어 동기화 방법.
- 삭제
- 제1항에 있어서, 상기 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정하는 것인, 피어투피어 동기화 방법.
- 제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 사용자 단말에서의 사용자 조작에 기초하여 생성되는 것이고,
상기 제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)가 발생한 것으로 판단하는 것인, 피어투피어 동기화 시스템
- 삭제
- 삭제
- 삭제
- 제9항에 있어서, 상기 인과율 위배(causality violation)가 발생하였다고 판단하는 경우, 상기 제2 사용자 단말에서 적용 대기 큐(ready queue)에서 상기 제1 액션 정보를 적용가능한 상태가 될 때까지 대기시키는 것인, 피어투피어 동기화 시스템.
- 삭제
- 제9항에 있어서, 상기 다이버전스(divergence)가 발생한 것으로 판단하는 경우, 미리 결정된 규칙에 따라 상기 제1 액션 정보의 무시 여부를 결정하는 것인, 피어투피어 동기화 시스템.
- 제9항에 있어서, 상기 제2 사용자 단말은 상기 제1 액션 정보에 기초하여 상태 변경을 적용할 때 상기 제1 액션 정보를 적용 완료 큐(applied queue)에 저장하는 것인, 피어투피어 동기화 시스템.
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)
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)
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)
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 |
-
2018
- 2018-11-15 KR KR1020180140497A patent/KR102256197B1/ko active IP Right Grant
- 2018-12-12 US US16/217,154 patent/US10715591B2/en active Active
Patent Citations (2)
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)
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 |