KR101944594B1 - Server for distributed network and method of consensus thereof - Google Patents

Server for distributed network and method of consensus thereof Download PDF

Info

Publication number
KR101944594B1
KR101944594B1 KR1020160165073A KR20160165073A KR101944594B1 KR 101944594 B1 KR101944594 B1 KR 101944594B1 KR 1020160165073 A KR1020160165073 A KR 1020160165073A KR 20160165073 A KR20160165073 A KR 20160165073A KR 101944594 B1 KR101944594 B1 KR 101944594B1
Authority
KR
South Korea
Prior art keywords
server
group
servers
consensus
mode
Prior art date
Application number
KR1020160165073A
Other languages
Korean (ko)
Other versions
KR20180065053A (en
Inventor
이명준
하연의
진재환
Original Assignee
울산대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 울산대학교 산학협력단 filed Critical 울산대학교 산학협력단
Priority to KR1020160165073A priority Critical patent/KR101944594B1/en
Publication of KR20180065053A publication Critical patent/KR20180065053A/en
Application granted granted Critical
Publication of KR101944594B1 publication Critical patent/KR101944594B1/en

Links

Images

Classifications

    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1031Controlling of the operation of servers by a load balancer, e.g. adding or removing servers that serve requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1012Server selection for load balancing based on compliance of requirements or conditions with available server resources
    • 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/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1025Dynamic adaptation of the criteria on which the server selection is based

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Hardware Redundancy (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 제 1 그룹 내에서, 분산 네트워크 기반 컨센서스에 참여하는 서버 및 상기 서버의 컨센서스 참여 방법에 관한 것으로서, 본 발명의 일 실시예에 따른 분산 네트워크 기반 컨센서스에 참여하는 서버는 액션 정보가 기록된 로그 및 컨센서스 모듈이 저장된 메모리, 및 상기 로그에 따라 액션을 수행하는 프로세서를 포함하되, 상기 프로세서는 상기 컨센서스 모듈을 실행함에 따라 상기 서버의 상태를 팔로워(Follower) 모드, 후보자(candidate) 모드, 및 리더(leader) 모드로 정의하고, 상기 서버가 리더 모드로 동작함에 따라 상기 서버가 속한 제 1 그룹 내에 존재하고, 팔로워 모드 또는 후보자 모드로 동작하는 복수의 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 주기적으로 전송하고, 상기 하트비트에 대한 응답을 상기 각각의 제 2 서버로부터 수신하되, 상기 프로세서는 상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답을 수신하지 못한 제 3 서버를 상기 제 1 그룹 내에서 삭제하고, 상기 제 3 서버를 제외한 나머지 제 2 서버 각각으로 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 전송하여 업데이트 시킨다. The present invention relates to a server participating in a distributed network-based consensus and a method of participating in a consensus of the server in a first group, and a server participating in a distributed network-based consensus according to an embodiment of the present invention, A memory for storing log and consensus modules, and a processor for performing an action in accordance with the log, wherein the processor executes the consensus module such that the status of the server is changed in a follower mode, a candidate mode, A leader mode, and a connection state of a network to a plurality of second servers existing in a first group to which the server belongs and operating in a follower mode or a candidate mode as the server operates in a reader mode Transmitting a heartbeat periodically, and transmitting a response to the heartbeat to the respective devices 2 from the server, wherein the processor deletes, in the first group, a third server that has not received a response to the heartbeat among the plurality of second servers, The server information and the changed log information existing in the first group are transmitted and updated.

Figure R1020160165073
Figure R1020160165073

Description

분산 네트워크 시스템에서 컨센서스에 참여하는 서버 및 컨센서스 참여 방법{SERVER FOR DISTRIBUTED NETWORK AND METHOD OF CONSENSUS THEREOF}{SERVER FOR DISTRIBUTED NETWORK AND METHOD OF CONSENSUS THEREOF} [0001] The present invention relates to a server and consensus participating in a consensus in a distributed network system,

본 발명은 분산 네트워크에서 컨센서스에 참여하는 서버 및 컨센서스 참여 방법에 관한 것이다.The present invention relates to a server participating in consensus in a distributed network and a method for participating in consensus.

모바일 기기 및 통신망의 발전에 따라, 가상 공간 활용이 증가하고 있으며, 최근에는 다수의 사용자가 가상 공간에서 함께 데이터를 수집, 저장 및 가공하여 처리하도록 하는 분산 네트워크 시스템이 증가하고 있다.With the development of mobile devices and communication networks, the utilization of virtual space has been increasing. In recent years, distributed network systems have been increasing in which a large number of users collect, store, process and process data together in a virtual space.

이러한 가상 공간 상의 분산 네트워크 시스템은 다수의 사용자가 현실 상에서 한 공간에 모이지 않고도, 함께 일을 처리할 수 있도록 할 수 있기 때문에 업무의 효율을 높일 수 있으며, 시간과 공간의 제약을 극복할 수 있어 최근 많은 주목을 받고 있다.The distributed network system in the virtual space can increase the efficiency of work and overcome time and space constraints because many users can work together without gathering in a space in reality. It has attracted much attention.

견고한 분산 네트워크 시스템을 개발하는 데 있어서 주요 문제점 중 하나는 분산 그룹의 참여자들이 공유하는 데이터에 대한 동의를 보장하는 분산 컨센서스를 어떻게 달성하는가에 대한 문제이다. 따라서, 현재까지 분산 컨센서스를 달성하기 위한 많은 알고리즘이 등장하였고, 여러 시스템에서 이를 활용하고 있지만, 알고리즘의 내용이 복잡하고 구현시 정확성을 입증하기 어려워 실제 시스템에 활발하게 적용하지 못하는 문제점이 존재하였다. One of the major problems in developing a robust distributed network system is the question of how to achieve a distributed consensus that ensures that participants in a distributed group agree on the data they share. Therefore, many algorithms have been introduced to achieve the distributed consensus up to now, and there are problems in that the algorithm is used in various systems, but the contents of the algorithm are complicated and it is difficult to verify the accuracy of implementation.

특히, Diego Ongaro와 John Ousterhout이 고안한 래프트(Raft) 알고리즘은 과반수 동의에 의한 컨센서스 알고리즘으로서, 분산 컨센서스 문제 해결을 위하여 컨센서스 그룹을 구성하는 각 노드들의 동일한 로그 유지와 상태변이, 메시지 교환을 이용한다. 또한 Raft 알고리즘은 리더의 주도하에 과반수의 동의로 로그 업데이트 작업을 수행하기 때문에 중간에 문제가 발생하는 경우에도 안전하게 로그를 관리할 수 있는 장점이 있다. In particular, the algorithm proposed by Diego Ongaro and John Ousterhout is a consensus algorithm based on a majority consensus. In order to solve the problem of distributed consensus, the same log maintenance, state transition, and message exchange of each node constituting the consensus group are used. In addition, the Raft algorithm performs the log update operation with a majority of consent under the leadership of the leader, so that it is possible to safely manage the log even if a problem occurs in the middle.

하지만, Raft 알고리즘의 경우, 참여 노드의 추가나 제거에 대해 고려하고 있지 않아 컨센서스 그룹의 동적 확장성을 제공할 수 없다는 문제점이 있다. 따라서, 이러한 경우, 컨센서스 그룹에 노드를 추가하거나 삭제할 때 그룹 자체를 다시 구성해야하는 문제가 발생할 수 있다.However, in the case of the Raft algorithm, there is a problem in that the dynamic extensibility of the consensus group can not be provided because the addition or removal of participating nodes is not considered. Therefore, in such a case, there may arise a problem that the group itself needs to be reconfigured when adding or deleting nodes to the consensus group.

본 발명은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 분산 네트워크에서 컨센서스에 참여하는 서버 및 컨센서스 참여 방법을 제공하고자 한다. Disclosure of Invention Technical Problem [8] Accordingly, the present invention has been made in view of the above problems occurring in the prior art, and it is an object of the present invention to provide a method and system for participating in consensus in a distributed network.

특히, 협업을 하고 있는 컨센서스 그룹 내의 참여 노드를 추가 및 삭제할 수 있도록 지원하여 동적으로 컨센서스 그룹의 참여 노드 수를 변경할 수 있는 분산 네트워크 시스템의 서버 및 상기 서버의 컨센서스 참여 방법을 제공하고자 한다. In particular, the present invention provides a server of a distributed network system and a method of participating in a consensus of the server, wherein the number of participating nodes in the consensus group can be dynamically changed by supporting participation nodes in a consensus group in collaboration.

다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.It should be understood, however, that the technical scope of the present invention is not limited to the above-described technical problems, and other technical problems may exist.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 일 측면에 따른 분산 네트워크 기반 컨센서스에 참여하는 서버는, 액션 정보가 기록된 로그 및 컨센서스 모듈이 저장된 메모리, 및 상기 로그에 따라 액션을 수행하는 프로세서를 포함하되, 상기 프로세서는 상기 컨센서스 모듈을 실행함에 따라 상기 서버의 상태를 팔로워(Follower) 모드, 후보자(candidate) 모드, 및 리더(leader) 모드로 정의하고, 상기 서버가 리더 모드로 동작함에 따라 상기 서버가 속한 제 1 그룹 내에 존재하고, 팔로워 모드 또는 후보자 모드로 동작하는 복수의 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 주기적으로 전송하고, 상기 하트비트에 대한 응답을 상기 각각의 제 2 서버로부터 수신하되, 상기 프로세서는 상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답을 수신하지 못한 제 3 서버를 상기 제 1 그룹 내에서 삭제하고, 상기 제 3 서버를 제외한 나머지 제 2 서버 각각으로 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 전송하여 업데이트 시킨다.According to an aspect of the present invention, there is provided a server for participating in a distributed network-based consensus system, comprising: a memory for storing action information and a consensus module; Wherein the processor is configured to define a follower mode, a candidate mode, and a leader mode as the server executes the consensus module, and the server operates in a reader mode A heartbeat for checking the connection status of the network to a plurality of second servers existing in a first group to which the server belongs and operating in a follower mode or a candidate mode is periodically transmitted, Receiving a response from each of the second servers, wherein the processor, And deletes the third server which has not received the response to the first bit in the first group and transmits the server information and the changed log information existing in the first group to the remaining second servers except for the third server Update it.

또한, 본 발명의 다른 측면에 따른 제 1 그룹 내에서 분산 네트워크 기반 컨센서스에 참여하고, 액션 정보가 기록된 로그 및 컨센서스 모듈이 저장된 메모리, 및 상기 로그에 따라 액션을 수행하는 프로세서를 포함하는 서버의 네트워크 방법은 상기 프로세서가 상기 컨센서스 모듈을 실행함에 따라 상기 서버의 상태를 리더(leader) 모드로 정의하는 (a) 단계; 상기 프로세서가 상기 제 1 그룹 내에 존재하고, 팔로워 모드 또는 후보자 모드로 동작하는 복수의 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 전송하는 (b) 단계; 상기 프로세서가 상기 하트비트에 대한 응답을 상기 각각의 제 2 서버로부터 수신하는 (c) 단계; 상기 프로세서가 상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답을 수신하지 못한 제 3 서버를 상기 제 1 그룹 내에서 삭제하는 (d) 단계; 및 상기 프로세서가 제 3 서버를 제외한 나머지 제 2 서버 각각으로 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 전송하여 업데이트 시키는 (e) 단계를 포함한다.The server further includes a processor for participating in a distributed network-based consensus in a first group according to another aspect of the present invention, a memory storing a log and a consensus module in which action information is recorded, and a processor for performing an action according to the log (A) defining a state of the server as a leader mode as the processor executes the consensus module; (B) transmitting a heartbeat for confirming a connection state of the network to a plurality of second servers, the processor residing in the first group and operating in a follower mode or a candidate mode; (C) receiving, by the processor, a response to the heartbeat from each of the second servers; (D) deleting, in the first group, a third server among the plurality of second servers, the processor not receiving a response to the heartbeat; And (e) transmitting and updating the server information and the changed log information existing in the first group to each of the remaining second servers except for the third server.

전술한 과제 해결 수단 중 어느 하나에 의하면, 본 발명의 일 실시예에 따른 분산 네트워크 시스템의 서버 및 상기 서버의 컨센서스 참여 방법은, 협업을 하고 있는 컨센서스 그룹 내의 참여 노드를 추가 및 삭제할 수 있도록 지원하여 동적으로 컨센서스 그룹의 참여 노드 수를 변경할 수 있도록 제공할 수 있다. According to one of the above-mentioned tasks, a server of a distributed network system and a method of participating in a consensus of a server according to an embodiment of the present invention can support addition and deletion of participating nodes in a consensus group in collaboration The number of participating nodes of the consensus group can be dynamically changed.

한편, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.It should be understood, however, that the effects obtained by the present invention are not limited to the above-mentioned effects, and other effects not mentioned may be clearly understood by those skilled in the art to which the present invention belongs It will be possible.

도 1은 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버의 구성을 개략적으로 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따라 제 1 그룹 내에 존재하는 각각의 서버의 상태에 따른 컨센서스 방법을 개략적으로 나타내는 블록도이다.
도 3은 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 리더 모드의 서버가 제 1 그룹 내에 속하는 서버의 개수를 동적으로 변경하는 과정을 도시하고 있다.
도 4는 본 발명의 일 실시예에 따라 서버의 상태가 리더 모드로 정의 되었을 때, 컨센서스 알고리즘에 추가되는 변수를 도시하고 있다.
도 5는 본 발명의 일 실시예에 따라 리더모드로 동작하는 서버가 해당 서버가 속한 제 1 그룹내에 존재하는 제 2의 서버들의 네트워크 연결상태를 확인하는 과정을 상세히 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 리더모드의 서버가 제 1 그룹 내에서 하트비트에 대한 응답이 없는 제 3 서버를 삭제하는 과정을 도시한 흐름도이다.
도 7은 본 발명의 일 실시예에 따라 제 1 그룹내에 존재하지 않는 새로운 서버로부터 그룹 추가 요청을 수신한 리더모드의 동작 과정을 설명하기 위한 도면이다.
도 8은 본 발명의 일 실시예에 따른 리더모드의 서버가 제 1 그룹 내에 제 4 서버를 추가하는 과정을 상세히 설명하기 위한 흐름도이다.
1 is a block diagram schematically illustrating a configuration of a server participating in consensus in a distributed network according to an embodiment of the present invention.
2 is a block diagram schematically illustrating a consensus method according to the state of each server existing in a first group according to an embodiment of the present invention.
FIG. 3 illustrates a process of dynamically changing the number of servers belonging to a first group in a leader mode server participating in consensus in a distributed network according to an exemplary embodiment of the present invention.
FIG. 4 illustrates variables added to the consensus algorithm when the server status is defined as a reader mode according to an embodiment of the present invention.
5 is a diagram for explaining in detail a process of checking a network connection state of second servers existing in a first group to which a server operating in a reader mode according to an embodiment of the present invention belongs.
6 is a flowchart illustrating a process of a server in a reader mode according to an exemplary embodiment of the present invention deletes a third server in a first group that has no response to a heartbeat.
7 is a diagram for explaining an operation procedure of a reader mode in which a group addition request is received from a new server that is not present in the first group according to an embodiment of the present invention.
8 is a flowchart illustrating a process of adding a fourth server in a first group to a server in a reader mode according to an embodiment of the present invention.

아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings, which will be readily apparent to those skilled in the art. The present invention may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. In order to clearly explain the present invention in the drawings, parts not related to the description are omitted.

명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.Throughout the specification, when a part is referred to as being "connected" to another part, it includes not only "directly connected" but also "electrically connected" with another part in between . Also, when an element is referred to as "comprising ", it means that it can include other elements as well, without departing from the other elements unless specifically stated otherwise.

본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1 개의 유닛이 2 개 이상의 하드웨어를 이용하여 실현되어도 되고, 2 개 이상의 유닛이 1 개의 하드웨어에 의해 실현되어도 된다. In this specification, the term " part " includes a unit realized by hardware, a unit realized by software, and a unit realized by using both. Further, one unit may be implemented using two or more hardware, or two or more units may be implemented by one hardware.

본 명세서에 있어서 단말 또는 디바이스가 수행하는 것으로 기술된 동작이나 기능 중 일부는 해당 단말 또는 디바이스와 연결된 서버에서 대신 수행될 수도 있다. 이와 마찬가지로, 서버가 수행하는 것으로 기술된 동작이나 기능 중 일부도 해당 서버와 연결된 단말 또는 디바이스에서 수행될 수도 있다. In this specification, some of the operations or functions described as being performed by the terminal or the device may be performed in the server connected to the terminal or the device instead. Similarly, some of the operations or functions described as being performed by the server may also be performed on a terminal or device connected to the server.

이하, 도면을 참조하여 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버 및 컨센서스 참여 방법을 상세히 설명하도록 한다. Hereinafter, a server participating in a consensus and a method of participating in a consensus in a distributed network according to an embodiment of the present invention will be described in detail with reference to the drawings.

여기서, 네트워크는 단말 및 서버와 같은 각각의 노드 상호 간에 정보 교환이 가능한 연결 구조를 의미하는 것으로, 이러한 네트워크의 일 예에는 3GPP(3rd generation partnership project) 네트워크, LTE(long term evolution) 네트워크, WIMAX(world interoperability for microwave access) 네트워크, 인터넷(internet), LAN(local area network), Wireless LAN(Wireless local area network), WAN(wide area network), PAN(personal area network), 블루투스(Bluetooth) 네트워크, 위성 방송 네트워크, 아날로그 방송 네트워크, DMB(digital multimedia broadcasting) 네트워크 등이 포함되나 이에 한정되지는 않는다.Here, the network means a connection structure in which information can be exchanged between each node such as a terminal and a server. An example of such a network is a 3rd generation partnership project (3GPP) network, a long term evolution (LTE) network, a WIMAX world interoperability for microwave access networks, internet, local area network (LAN), wireless local area network (WLAN), wide area network (WAN), personal area network (PAN), bluetooth network, Broadcast networks, analog broadcast networks, digital multimedia broadcasting (DMB) networks, and the like.

도 1은 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버의 구성을 개략적으로 도시한 블록도이다. 1 is a block diagram schematically illustrating a configuration of a server participating in consensus in a distributed network according to an embodiment of the present invention.

도 2는 본 발명의 일 실시예에 따라 제 1 그룹 내에 존재하는 각각의 서버의 상태에 따른 컨센서스 방법을 개략적으로 나타내는 블록도이다.2 is a block diagram schematically illustrating a consensus method according to the state of each server existing in a first group according to an embodiment of the present invention.

한편, 본 발명의 일 실시예에 따른 서버는 네트워크 단말 또는 네트워크에 참여하는 노드와 동일한 것으로서 이해될 수 있을 것이다. Meanwhile, a server according to an embodiment of the present invention may be understood as being the same as a node participating in a network terminal or a network.

먼저, 도 1을 참조하면, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버는 네트워크 통신 모듈(110), 메모리(120), 및 프로세서(130)를 포함한다. Referring to FIG. 1, a server participating in a consensus in a distributed network according to an embodiment of the present invention includes a network communication module 110, a memory 120, and a processor 130.

서버는 네트워크 통신모듈(110)을 통해, 자신이 속한 제 1 그룹 내에 존재하는 복수의 제 2 서버들과 컨센서스를 수행한다. The server performs consensus with the plurality of second servers existing in the first group to which the server belongs through the network communication module 110. [

메모리(120)에는 액션 정보가 기록된 로그 및 컨센서스 알고리즘이 저장될 수 있다. 그러나 이에 제한되는 것은 아니며, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버는 네트워크 장치 및 메모리를 더 포함하여 별도의 컨센서스 모듈을 포함할 수도 있다. The memory 120 may store log and consensus algorithms in which action information is recorded. However, the present invention is not limited thereto, and a server participating in consensus in a distributed network according to an embodiment of the present invention may further include a network device and a memory, and may include a separate consensus module.

이때, 메모리(120)는 컴퓨터 저장 매체중의 하나로서 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하여 구성될 수 있다. 예를 들어, 저장장치는 ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치, 콤팩트 플래시(compact flash; CF) 카드, SD(secure digital) 카드, 메모리 스틱(memory stick), 솔리드 스테이트 드라이브(solid-state drive; SSD) 및 마이크로(micro) SD 카드 등과 같은 낸드 플래시 메모리(NAND flash memory), 하드 디스크 드라이브(hard disk drive; HDD) 등과 같은 마그네틱 컴퓨터 기억장치 등을 포함할 수 있다.At this point, the memory 120 is one of the computer storage media and may be any volatile and nonvolatile, removable and nonvolatile memory implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data And a removable medium. For example, the storage device may be a ROM (Read Only Memory), a RAM (Random Access Memory), a magnetic tape, a magnetic disk, a flash memory, an optical data storage device, a compact flash Such as a NAND flash memory, a hard disk drive (HDD), etc., such as a memory card, a memory stick, a solid-state drive (SSD) Magnetic computer storage devices, and the like.

프로세서(130)는 컨센서스 알고리즘을 실행함에 따라 제 1 그룹에 존재하는 각각의 제 2 서버들과 컨센서스를 수행한다. 즉, 프로세서(130)는 컨센서스를 통해 로그를 공유하며, 공유된 로그를 메모리(120)에 저장하고 업데이트 할 수 있다. 이때, 로그에는 해당 서버가 수행해야하는 액션에 관한 정보들이 저장될 수 있다. Processor 130 performs consensus with each of the second servers in the first group as it executes the consensus algorithm. That is, the processor 130 may share the log through the consensus, and may store and update the shared log in the memory 120. At this time, the log may store information about an action to be performed by the server.

프로세서(130)는 로그에 따라서 액션을 수행한다. 따라서, 제 1 그룹 내에 존재하는 복수의 서버들은 컨센서스에 참여하여 자원, 즉 로그를 공유하며, 로그에 포함된 액션을 수행한다. 따라서, 제 1 그룹 내에서 컨센서스에 참여한 복수의 서버는 동일한 액션을 수행할 수 있다. The processor 130 performs an action in accordance with the log. Accordingly, a plurality of servers existing in the first group participate in consensus, share resources, i.e., log, and perform actions included in the log. Accordingly, a plurality of servers participating in the consensus in the first group can perform the same action.

구체적으로, 프로세서(130)가 컨센서스 알고리즘을 실행함에 따라, 서버는 자신의 상태를 팔로워(Follower) 모드, 후보자(candidate) 모드, 또는 리더(leader) 모드로 정의할 수 있다. 이때, 서버의 상태는 제 1 그룹 내에서 컨센서스에 참여하는 복수의 서버들과의 투표를 통해 정의될 수 있다.In particular, as the processor 130 executes the consensus algorithm, the server may define its state as a follower mode, a candidate mode, or a leader mode. At this time, the state of the server can be defined through voting with a plurality of servers participating in the consensus in the first group.

이때, 제 1 그룹 내에 존재하는 복수의 서버들 중 하나는 리더가 될 후보자(candidate) 모드로 선정될 수 있다. 이후, 리더모드로 동작하는 서버에 이상이 발생하는 경우, 상기 후보자 모드로 동작하는 서버가 과반수(majority) 이상으로 동의를 받으면 새로운 리더(New-Leader)로 선출되어 리더 모드로서 동작할 수 있다.At this time, one of the plurality of servers existing in the first group may be selected as a candidate mode to be a leader. If an error occurs in the server operating in the leader mode, if the server operating in the candidate mode agrees to a majority, the server can be selected as a new leader and operate as a leader mode.

서버의 상태가 리더 모드로 정의됨에 따라, 해당 서버는 제 1 그룹에 존재하는 제 2의 서버들과 로그 복제를 위한 투표를 진행하거나 결과를 제 2 서버 각각으로 전송할 수 있다. As the state of the server is defined as the leader mode, the server can either vote for the log duplication with the second servers residing in the first group or transmit the results to each of the second servers.

반면, 서버의 상태가 팔로워 모드 또는 후보자 모드로 정의됨에 따라, 해당 서버는 제 2 서버로 액션 요청을 보내거나 제 2 서버가 전달하는 액션을 전달받을 수 있다. On the other hand, as the state of the server is defined as the follower mode or the candidate mode, the server can send an action request to the second server or receive an action to be forwarded by the second server.

따라서, 도 2 를 참조하면, 제 1 그룹 내에서 컨센서스에 참여하는 서버는 제 1 그룹에 속해있는 복수의 제 2 서버들과의 투표를 통해 자신의 상태를 팔로워(Follower) 모드, 후보자(candidate) 모드, 또는 리더(leader) 모드로 정의하며, 각각의 서버는 정의된 상태에 따라 해당 모드로 동작한다. 즉, 제 1 그룹에 포함된 복수의 서버는 각기 다른 모드로서 동작됨으로서, 컨센서스에 참여할 수 있다. 2, a server participating in a consensus in a first group may poll its status through a plurality of second servers belonging to a first group in a follower mode, a candidate, Mode, or a leader mode, and each server operates in a corresponding mode according to a defined state. That is, the plurality of servers included in the first group operate as different modes and can participate in the consensus.

다시 말해, 제 1 그룹에 포함된 복수의 서버는 프로세서(130)가 컨센서스 알고리즘을 수행함에 따라 리더 모드로 동작될 서버를 선출할 수 있으며, 리더 모드의 서버(230)는 제 1 그룹에 존재하는 팔로워 모드의 서버(210) 또는 후보자 모드의 서버(220)들과 로그 복제를 위한 투표를 진행하며, 투표 결과를 팔로워 모드의 서버(210) 또는 후보자 모드의 서버(220)로 각각 전송할 수 있다. In other words, the plurality of servers included in the first group can select a server to be operated in the reader mode as the processor 130 performs the consensus algorithm, and the server 230 in the reader mode can select the server The server 210 may transmit the vote for the log duplication with the server 210 in the follower mode or the server 220 in the candidate mode and may transmit the vote result to the server 210 in the follower mode or the server 220 in the candidate mode, respectively.

반면, 리더로 선출되지 않은 복수의 제 2 서버들은 후보자 모드 또는 팔로워 모드로서 동작되며, 팔로워 모드의 서버(210) 또는 후보자 모드의 서버(220)는 리더 모드의 서버(230)로 액션 요청을 보내거나 리더 모드의 서버(230)가 전달하는 액션을 전달받을 수 있다. Meanwhile, the plurality of second servers not selected as the leaders operate as the candidate mode or the follower mode, and the server 210 in the follower mode or the server 220 in the candidate mode sends an action request to the server 230 in the leader mode Or an action transmitted by the server 230 in the reader mode.

또한, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버는, 리더 모드로 동작함에 따라 해당 서버가 속해 있는 제 1 그룹에 속한 제 2 서버를 제거할 수 있다. 또는 제 1 그룹에 속해있지 않은 제 3 서버로부터 그룹 추가 요청을 수신하고, 제 3 서버를 제 1 그룹에 추가하여 컨센서스를 수행할 수 있다. In addition, the server participating in the consensus in the distributed network according to the embodiment of the present invention can remove the second server belonging to the first group to which the corresponding server belongs as it operates in the reader mode. Or receive a group addition request from a third server not belonging to the first group, and add the third server to the first group to perform consensus.

도 3은 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 리더 모드의 서버가 제 1 그룹 내에 속하는 서버의 개수를 동적으로 변경하는 과정을 도시하고 있다.FIG. 3 illustrates a process of dynamically changing the number of servers belonging to a first group in a leader mode server participating in consensus in a distributed network according to an exemplary embodiment of the present invention.

도 3의 (a) 및 (b)를 참조하면, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 서버는 프로세스(130)가 컨센서스 알고리즘을 수행함에 따라, 해당 서버가 속한 제 1 그룹 내에서 투표를 통해 리더를 선출함으로써, 서버의 상태를 리더 모드로 정의할 수 있다. Referring to FIGS. 3A and 3B, a server participating in a consensus in a distributed network according to an exemplary embodiment of the present invention performs a consensus algorithm on a first group By selecting a leader through voting, you can define the server's status as a leader mode.

따라서, 본 발명의 일 실시예에 따라 리더 모드로 동작하는 서버(230)는 도 3의 (a)에 도시된 바와 같이, 새로운 서버(240)로부터 그룹 추가 요청을 수신하고, 해당 서버가 속한 제 1 그룹 내에 추가 함으로써, 제 1 그룹 내에 존재하는 기존의 팔로워 모드의 서버(212 내지 218)들과 함께 컨센서스에 참여할 수 있도록 할 수 있다. 3, the server 230 operating in the leader mode according to an embodiment of the present invention receives a group addition request from the new server 240, 1 group so that they can participate in the consensus together with the existing follower mode servers 212 to 218 existing in the first group.

또는 도 3의 (b)와 같이 리더 모드로 동작하는 서버(230)는 해당 서버가 컨센서스에 참여중인 제 1 그룹 내에 존재하는 팔로워 서버(212 내지 218)들 중, 네트워크 연결이 끊긴 것으로 판단되는 팔로워 서버(218)를 삭제할 수 있다.The server 230 operating in the reader mode as shown in FIG. 3B or FIG. 3B may be a follower server in which the server is determined to be disconnected from the network among the followers 212-218 existing in the first group participating in the consensus The server 218 can be deleted.

또한, 본 발명의 일 실시예에 따르면, 프로세서(130)가 서버의 상태를 후보자 모드 또는 팔로워 모드로 정의함에 따라, 제 1 그룹 내에 존재하는 리더 모드의 서버로부터 하트비트를 수신하고, 하트비트에 대한 응답을 리더 모드의 서버로 전송할 수 있다. Also, according to one embodiment of the present invention, as the processor 130 defines the status of the server as a candidate mode or a follower mode, it receives a heartbeat from a server in the leader mode existing in the first group, To the server in the reader mode.

아울러, 리더 모드의 서버로 제 1 그룹 내에 그룹 추가 요청을 전송하거나, 리더 모드의 서버로부터 로그 업데이트 정보를 수신하여, 메모리에 저장된 로그를 업데이트 시킬 수 있다. In addition, a group addition request may be transmitted to the server of the reader mode in the first group, or the log update information may be received from the server of the reader mode to update the log stored in the memory.

이하, 도 4 내지 도 8을 참조하여, 본 발명의 일 실시예에 따른 리더모드로 동작하는 서버가 자신이 속한 제 1 그룹 내에서 분산 네트워크에서 컨센서스에 참여하는 서버의 개수를 동적으로 변경하는 과정을 상세히 설명하도록 한다.4 to 8, a server operating in a reader mode according to an embodiment of the present invention changes the number of servers participating in consensus dynamically in a distributed network in a first group to which the server operates Will be described in detail.

도 4는 본 발명의 일 실시예에 따라 서버의 상태가 리더 모드로 정의 되었을 때, 컨센서스 알고리즘에 추가되는 변수를 도시하고 있다. FIG. 4 illustrates variables added to the consensus algorithm when the server status is defined as a reader mode according to an embodiment of the present invention.

도 4를 참조하면, 상술한 컨센서스 알고리즘을 수행하여 제 1 그룹 내에 컨센서스에 참여하는 서버, 즉 노드의 개수를 동적으로 변경하기 위하여, 본 발명의 일 실시예에 따른 프로세서(130)는 리더 모드로 동작함에 따라 도 4에 도시된 바와 같이, 컨센서스 알고리즘에 피어 변수(peers[]), 무효 변수(invalid[]), 무응답 카운트 변수(noResponseCnt[]), 메이저 변수(isMajor[]), 및 피어 개수 변수(totalPeerNum[])를 더 추가할 수 있다. 이때, 피어 변수는 컨센서스 그룹에 참여한 참여 노드 리스트를 관리하며, 무효 변수는 참여 노드의 연결 상태를 확인하는 리스트를 관리하고, 무응답 카운트 변수는 참여 노드가 리더의 하트비트에 응답하지 못한 개수를 관리한다. 이어서, 메이저 변수는 리더가 자신이 속한 그룹에 메이저인지 아닌지를 확인하는 변수이며, 피어 개수 변수는 참여 노드의 개수를 관리하는 변수이다.Referring to FIG. 4, in order to dynamically change the number of servers, i.e., nodes, participating in consensus in the first group by performing the above-described consensus algorithm, the processor 130 according to an exemplary embodiment of the present invention As shown in FIG. 4, the consensus algorithm includes a peer variable (peers []), an invalid variable (invalid []), a non-response count variable (noResponseCnt []), a major variable (isMajor [ Variable (totalPeerNum []) can be added. In this case, the peer variable manages the list of participant nodes participating in the consensus group, the invalid variable manages the list for checking the connection status of the participant nodes, and the non-response count variable manages the number of the participant nodes not responding to the heartbeat of the leader do. Then, the major variable is a variable for checking whether the leader is a major or not in the group to which the reader belongs, and the number of peers is a variable for managing the number of participating nodes.

도 5는 본 발명의 일 실시예에 따라 리더모드로 동작하는 서버가 해당 서버가 속한 제 1 그룹내에 존재하는 제 2의 서버들의 네트워크 연결상태를 확인하는 과정을 상세히 설명하기 위한 도면이다. 5 is a diagram for explaining in detail a process of checking a network connection state of second servers existing in a first group to which a server operating in a reader mode according to an embodiment of the present invention belongs.

도 5를 참조하면, 본 발명의 일 실시예에 따라 리더 모드의 서버(230)는 서버가 속한 제 1 그룹 내에 존재하는 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 주기적으로 전송한다(Sh1). 이후, 리더 모드의 서버(230)는 시간을 카운팅 하며(Sh2), 기 설정된 시간 내에 각각의 제 2 서버로부터 하트비트에 대한 응답을 수신한다(Sh3). 이때, 제 2 서버는 앞서 설명한 바와 같이, 팔로워 모드의 서버(210) 또는 후보자 모드의 서버(220)일 수 있다. Referring to FIG. 5, according to an embodiment of the present invention, a server 230 in a reader mode periodically receives a heartbeat for confirming a connection state of a network to a second server existing in a first group to which the server belongs (Sh1). Thereafter, the server 230 in the reader mode counts time (Sh2) and receives a response to the heartbeat from each second server within a predetermined time (Sh3). At this time, the second server may be the server 210 of the follower mode or the server 220 of the candidate mode, as described above.

반면 도 5의 (b)에 도시되 바와 같이, 설정된 시간 내에 제 2 서버 중 어느 하나로부터 하트비트에 대한 응답을 수신하지 못하면, 리더모드의 서버(230)는 타임아웃 이벤트를 발생시키고, 응답을 수신하지 못한 제3 서버를 네트워크 연결이 끊긴 것으로 판단한다(Sh4). On the other hand, as shown in (b) of FIG. 5, if a response to the heartbeat is not received from any of the second servers within the set time, the server 230 in the leader mode generates a timeout event, It determines that the third server that has not received the network connection is disconnected (Sh4).

도 6은 본 발명의 일 실시예에 따른 리더모드의 서버가 제 1 그룹 내에서 하트비트에 대한 응답이 없는 제 3 서버를 삭제하는 과정을 도시한 흐름도이다. 6 is a flowchart illustrating a process of a server in a reader mode according to an exemplary embodiment of the present invention deletes a third server in a first group that has no response to a heartbeat.

도 6을 참조하여 더욱 구체적으로 살펴보면, 리더모드의 서버(230)는 복수의 제 2 서버로 주기적으로 하트비트를 전송한 후(Sc1), 시간을 카운팅하여 타임아웃 이벤트가 발생하였는지 확인한다(Sc2). 이후, 타임아웃 이벤트가 발생하지 않으면, 하트비트에 대한 응답을 수신을 확인하여 네트워크 연결 상태가 정상적으로 동작하는 것으로 판단하고 종료한다(Sc3). 반면, 타임아웃 이벤트가 발생한 경우, 하트비트 응답에 대한 무응답 개수를 증가시키고(Sc4), 무응답 개수가 기 설정된 개수(C)를 초과하는지를 판단하여(Sc5), 기 설정된 개수를 초과하지 않으면 종료하고 다시 하트비트를 전송하는 단계로 돌아가 해당 단계를 반복할 수 있다. 그러나, 무응답 개수가 기 설정된 개수를 초과하는 경우, 해당 제 2 서버에 대한 연결이 비연결 상태인지를 확인하여(Sc6), 해당 서버를 삭제하는 것이 가능하다.6, the server 230 in the reader mode periodically transmits a heartbeat to a plurality of second servers (Sc1), and then counts time to check if a timeout event has occurred (Sc2 ). Thereafter, if a timeout event does not occur, it is determined that the network connection state is normal and the operation is terminated (Sc3). On the other hand, when a timeout event occurs, the number of non-response to the heartbeat response is increased (Sc4), it is determined whether the number of non-response times exceeds the predetermined number (C5) (Sc5) You can go back to transferring the heartbeat again and repeat that step. However, if the number of non-responses exceeds the predetermined number, it is possible to check whether the connection to the second server is in a non-connection state (Sc6), and delete the server.

이후, 본 발명의 일 실시예에서 설명의 편의를 위하여, 복수의 제 2 서버중, 무응답 개수가 기 설정된 개수를 초과하는 서버, 즉 네트워크 연결이 끊긴 서버를 제 3 서버로 정의하여 설명하도록 한다. Hereinafter, for convenience of description, a server whose number of non-responders exceeds a preset number, that is, a server disconnected from the network is defined as a third server for convenience of description.

이때, 본 발명의 일 실시예에 따른 리더모드로 동작하는 서버(230)는 응답이 없는 무효서버(노드)의 개수를 판단하여(Sc7), 제 1 그룹이 메이저 그룹인지 마이너 그룹인지 확인하고, 제 1 그룹이 메이저 그룹인 경우에만 무응답 서버인 제3 서버를 삭제할 수 있다(Sc8). 반면, 제 1 그룹이 마이너 그룹인 경우, 리더모드로 동작하는 서버(230)는 그룹 내에 존재하는 서버 즉, 노드의 삭제 권한이 없는 것으로 판단하고 종료한다. 이때, 본 발명의 일 실시예에서, 메이저 그룹 및 마이너 그룹의 판단은 도 5에 도시된 바와 같이, 무효노드의 개수를 판단하여, 무효노드의 개수가 과반수 미만일 경우, 제 1 그룹을 메이저 그룹으로 판단하고, 무효노드의 개수가 과반수 이상이면 제 1 그룹을 마이너 그룹으로 판단한다. At this time, the server 230 operating in the reader mode according to an embodiment of the present invention determines the number of invalid servers (nodes) that do not respond (Sc7) and confirms whether the first group is a major group or a minor group, The third server which is the non-response server can be deleted only when the first group is the major group (Sc8). On the other hand, when the first group is a minor group, the server 230 operating in the leader mode determines that there is no right to delete a server existing in the group, and terminates the process. In this case, in the embodiment of the present invention, as shown in FIG. 5, the number of the invalid nodes is judged by judging the major group and the minor group. When the number of invalid nodes is less than the majority, If the number of invalid nodes is greater than or equal to a majority, the first group is determined as a minor group.

다시 말해, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 리더모드의 서버(230)는 해당 서버가 속한 제 1 그룹이 메이저 그룹일 경우에만, 제 1 서버 내에 존재하는 서버(노드)의 개수를 삭제 또는 추가하여 동적으로 변경할 수 있다. In other words, the server 230 in the reader mode participating in the consensus in the distributed network according to the embodiment of the present invention can not access the servers (nodes) existing in the first server only when the first group to which the server belongs is a major group, Can be dynamically changed or deleted by adding or deleting the number.

이어서, 도 7 및 도 8을 참조하여, 본 발명의 일 실시예에 따른 분산 네트워크에서 컨센서스에 참여하는 리더모드의 서버가 제 1 그룹에 새로운 서버를 추가하는 과정을 더욱 상세히 설명하도록 한다. Next, with reference to FIGS. 7 and 8, a process of adding a new server to a first group of servers in a reader mode participating in a consensus in a distributed network according to an embodiment of the present invention will be described in more detail.

도 7은 본 발명의 일 실시예에 따라 제 1 그룹내에 존재하지 않는 새로운 서버로부터 그룹 추가 요청을 수신한 리더모드의 동작 과정을 설명하기 위한 도면이다. 7 is a diagram for explaining an operation procedure of a reader mode in which a group addition request is received from a new server that is not present in the first group according to an embodiment of the present invention.

도 8은 본 발명의 일 실시예에 따른 리더모드의 서버가 제 1 그룹 내에 제 4 서버를 추가하는 과정을 상세히 설명하기 위한 흐름도이다. 8 is a flowchart illustrating a process of adding a fourth server in a first group to a server in a reader mode according to an embodiment of the present invention.

도 7 및 도 8을 참조하면, 제 1 그룹 내에 존재하지 않는, 팔로워 모드로 동작하는 제 4서버는(240)은 제 1 그룹 내에 존재하는 리더 모드, 후보자 모드, 및 팔로워 모드로 동작하는 서버 중 어느 하나로 그룹 추가 요청 메시지를 전송할 수 있다(Sa1).Referring to FIGS. 7 and 8, a fourth server 240 operating in the follower mode, which is not present in the first group 240, is a server operating in a reader mode, a candidate mode, and a follower mode, The group addition request message can be transmitted to any one (Sa1).

즉, 제 1 그룹 내에 존재하는 복수의 서버 중 어느 하나는 제 1 그룹 내에 존재하지 않는 제 4 서버(240)로부터 그룹 추가 요청 메시지를 전송 받을 수 있다. That is, any one of the plurality of servers existing in the first group can receive the group addition request message from the fourth server 240 that is not present in the first group.

이때, 본 발명의 일 실시예에 따르면, 서버가 리더 모드로 동작하고, 제 4 서버로부터 그룹 추가 메시지를 수신하는 경우(Sa2), 리더모드의 서버(230)는 해당 서버가 속한 제 1 그룹이 메이저 그룹인지 확인하고, 제 1 그룹이 메이저 그룹이면 제 4 서버를 제 1 그룹에 추가하기 위한 알고리즘을 수행할 수 있다. At this time, according to an embodiment of the present invention, when the server operates in the reader mode and receives the group addition message from the fourth server (Sa2), the server 230 in the leader mode transmits And if the first group is a major group, an algorithm for adding a fourth server to the first group may be performed.

반면, 본 발명의 일 실시예에 따른 서버가 후보자 모드 또는 팔로워 모드로 동작하고, 제 4 서버로부터 그룹 추가 요청 메시지를 수신하는 경우(Sa2), 제 4 서버로부터 수신한 그룹 추가 요청 메시지를 제 1 그룹 내에 존재하는 리더 모드로 동작하는 서버로 전송할 수 있다(Sa3). On the other hand, when the server according to the embodiment of the present invention operates in the candidate mode or the follower mode and receives the group addition request message from the fourth server (Sa2), the group addition request message received from the fourth server To the server operating in the reader mode existing in the group (Sa3).

제 4 서버(240)로부터 전송된 그룹 추가 요청 메시지를 수신한 리더모드의 서버(230)는 자신이 메이저 그룹에 속한 리더인지, 마이너 그룹에 속한 리더인지 판단할 수 있다(Sa4). 즉, 자신이 속해있는 제 1 그룹이 메이저 그룹인지 마이너 그룹인지 판단한다. The server 230 in the leader mode receiving the group addition request message transmitted from the fourth server 240 can determine whether the server 230 is a leader belonging to the major group or a leader belonging to the minor group (Sa4). That is, it is determined whether the first group to which the user belongs is a major group or a minor group.

이후, 리더모드의 서버(230)가 마이너 그룹에 속한 리더인 경우에는 종료되고(Sa8), 메이저 그룹에 속한 리더인 경우, 제 1 그룹에 제 4 서버를 추가하고, 해당 정보를 로그에 업데이트하여 팔로워 모드의 서버 및 제 4 서버로 전송할 수 있다(Sa5). Thereafter, if the server 230 in the reader mode is a reader belonging to the minor group, it is terminated (Sa8). If it is a reader belonging to the major group, the fourth server is added to the first group and the information is updated in the log To the server in the follower mode and to the fourth server (Sa5).

또한, 본 발명의 일 실시예에 따르면, 리더 모드로 동작하는 서버(230)는 자신의 로그에 새로운 노드 즉, 제 4 서버 정보를 추가하고(Sl1), 커밋하여(Sl2), 제 1 그룹에 속한 복수의 서버들을 관리한다. 여기서 노드(서버) 관리는 노드 리스트에 제 4 서버를 추가하고(Sl3), 노드 정보를 업데이트 하며(Sl4), 해당 정보를 로그에 포함시켜 관리한다. 이때, 로그에 노드 정보를 입력하고 커밋하는 과정은 리더 모드의 서버가 노드 추가 정보를 팔로워 모드 서버로 전달하면(Ss1), 팔로워 모드의 서버(210)는 노드 추가 정보를 로그에 업데이트하고(Ss2), 로그 업데이트 과정이 성공하였는지 판단하여(Ss3), 로그 업데이트가 성공하지 않은 경우는 업데이트를 다시 시도하고, 업데이트에 성공하면 제 1그룹이 메이저 그룹인지, 마이너 그룹인지를 판단하여(Ss4), 제 1 그룹이 메이저 그룹인 경우, 커밋한다(Sl2).According to an embodiment of the present invention, the server 230 operating in the reader mode adds a new node (i.e., fourth server information) to its log (Sl1), commits it (Sl2) And manages a plurality of servers belonging thereto. Here, the node (server) management adds a fourth server to the node list (Sl3), updates the node information (Sl4), and manages the information by including it in the log. At this time, in the process of entering and committing node information in the log, when the server in the reader mode transmits the node addition information to the follower mode server (Ss1), the server 210 in the follower mode updates the node addition information to the log (Ss2 (Ss3). If the log update is not successful, the update is retried. If the update is successful, it is determined whether the first group is a major group or a minor group (Ss4) If the first group is the major group, the commit is performed (Sl 2).

반면, 제 4 서버는 리더 모드의 서버(230)로부터 업데이트된 로그 정보를 수신하며, 해당 로그 데이터를 자신의 로그에 업데이트 시킨다(Sn1) 이후, 제 4 서버에 관한 정보가 노드 리스트에 추가 되었는지를 확인하는 노드 추가 수행 여부를 판단하여(Sa2) 노드 관리를 수행하고(Sa3), 자신의 상태를 프리팔로워 상태에서 팔로워 모드로 변환 시킨다(Sn4, Sa7). On the other hand, the fourth server receives the updated log information from the server 230 in the reader mode and updates the corresponding log data to its own log (Sn1). Then, the fourth server determines whether the information about the fourth server is added to the node list (Sa2) node management is performed (Sa3), and the own state is changed from the free-follow state to the follower mode (Sn4, Sa7).

마찬가지로, 제 1 그룹 내에 존재하는 후보자 모드의 서버(220) 또는 팔로워 모드 서버(210)는 리더 모드의 서버(230)로부터 업데이트된 로그를 수신하고 로그에 포함된 로그 리스트를 통해서 노드를 관리 할 수 있다(Sf1).Similarly, the server 220 or the follower mode server 210 in the first group can receive the updated log from the server 230 in the reader mode and manage the node through the log list included in the log (Sf1).

본 발명의 일 실시예는 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파와 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
특히, 상기 기록 매체는 컴퓨터 저장 매체만을 의미할 수 있다.
One embodiment of the present invention may also be embodied in the form of a recording medium including instructions executable by a computer, such as program modules, being executed by a computer. Computer readable media can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. In addition, the computer-readable medium may include both computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Communication media typically includes any information delivery media, including computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave, or other transport mechanism.
In particular, the recording medium may refer to only a computer storage medium.

본 발명의 방법 및 시스템은 특정 실시예와 관련하여 설명되었지만, 그것들의 구성 요소 또는 동작의 일부 또는 전부는 범용 하드웨어 아키텍쳐를 갖는 컴퓨터 시스템을 사용하여 구현될 수 있다.While the methods and systems of the present invention have been described in connection with specific embodiments, some or all of those elements or operations may be implemented using a computer system having a general purpose hardware architecture.

전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be understood by those skilled in the art that the foregoing description of the present invention is for illustrative purposes only and that those of ordinary skill in the art can readily understand that various changes and modifications may be made without departing from the spirit or essential characteristics of the present invention. will be. It is therefore to be understood that the above-described embodiments are illustrative in all aspects and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is defined by the appended claims rather than the detailed description and all changes or modifications derived from the meaning and scope of the claims and their equivalents are to be construed as being included within the scope of the present invention do.

110: 네트워크 통신모듈
120: 메모리
130: 프로세서
210: 팔로워 모드의 서버
220: 후보자 모드의 서버
230: 리더 모드의 서버
110: Network communication module
120: Memory
130: Processor
210: Server in follower mode
220: Server in Candidate Mode
230: Server in Reader mode

Claims (14)

제 1 그룹 내에서, 분산 네트워크 기반 컨센서스에 참여하는 서버에 있어서,
액션 정보가 기록된 로그 및 컨센서스 모듈이 저장된 메모리, 및
상기 로그에 따라 액션을 수행하는 프로세서를 포함하되,
상기 프로세서는 상기 컨센서스 모듈을 실행함에 따라
상기 서버의 상태를 팔로워(Follower) 모드, 후보자(candidate) 모드, 및 리더(leader) 모드로 정의하고,
상기 서버가 리더 모드로 동작함에 따라
상기 서버가 속한 제 1 그룹 내에 존재하고, 팔로워 모드 또는 후보자 모드로 동작하는 복수의 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 주기적으로 전송하고, 상기 하트비트에 대한 응답을 상기 각각의 제 2 서버로부터 수신하되,
상기 프로세서는 상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답을 수신하지 못한 제 3 서버를 상기 제 1 그룹 내에서 삭제하고,
상기 제 3 서버를 제외한 나머지 제 2 서버 각각으로 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 전송하여 업데이트 시키는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
Within a first group, in a server participating in distributed network based consensus,
A log in which the action information is recorded and a memory in which the consensus module is stored, and
And a processor for performing an action according to the log,
Wherein the processor is operative to execute the consensus module
A state of the server is defined as a follower mode, a candidate mode, and a leader mode,
As the server operates in the reader mode
Periodically transmits a heartbeat for confirming a connection state of the network to a plurality of second servers existing in a first group to which the server belongs and operating in a follower mode or a candidate mode, From each of the second servers,
The processor deletes from the plurality of second servers a third server that fails to receive a response to the heartbeat in the first group,
The server information and the changed log information existing in the first group are transmitted to the remaining second servers except for the third server,
Servers participating in distributed network-based consensus.
제 1 항에 있어서,
상기 서버가 리더 모드로 동작함에 따라,
상기 프로세서는
상기 제 1 그룹이 메이저 그룹인지 마이너 그룹인지 판단하되,
상기 복수의 제 2 서버로부터 수신한 상기 하트비트에 대한 응답 개수가 상기 제 1 그룹에 속한 서버 개수의 절반 이상인 경우,
상기 제 1 그룹을 상기 메이저 그룹으로 판단하고,
상기 복수의 제 2 서버로부터 수신한 상기 하트비트에 대한 응답 개수가 상기 제 1 그룹에 속한 서버 개수의 과반수 미만인 경우,
상기 제 1 그룹을 마이너 그룹으로 판단하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
The method according to claim 1,
As the server operates in the reader mode,
The processor
Determining whether the first group is a major group or a minor group,
When the number of responses to the heartbeats received from the plurality of second servers is equal to or more than half of the number of servers belonging to the first group,
Determining the first group as the major group,
When the number of responses to the heartbeats received from the plurality of second servers is less than a majority of the number of servers belonging to the first group,
The first group is determined as a minor group,
Servers participating in distributed network-based consensus.
제 2 항에 있어서,
상기 프로세서는
상기 제 1 그룹이 메이저 그룹인 경우에만 상기 제 3 서버를 상기 제 1 그룹 내에서 삭제하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
3. The method of claim 2,
The processor
And delete the third server in the first group only if the first group is a major group.
Servers participating in distributed network-based consensus.
제 2 항에 있어서,
상기 제 1 그룹이 메이저 그룹이고,
상기 제 1 그룹 외에 존재하는 제 4 서버로부터 추가(add)요청을 수신하는 경우,
상기 프로세서는
상기 제 4 서버의 정보를 상기 복수의 제 2 서버로 전송하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
3. The method of claim 2,
The first group is a major group,
When receiving an add request from a fourth server existing outside the first group,
The processor
And transmits information of the fourth server to the plurality of second servers.
Servers participating in distributed network-based consensus.
제 2 항에 있어서,
상기 프로세서는
기 설정된 주기에 따라 상기 제 3 서버로 상기 하트비트를 반복하여 전송하고,
상기 제 3 서버로부터 수신하지 못한 상기 하트비트에 대한 응답의 횟수가 기 설정된 횟수를 초과하는 경우,
상기 제 3 서버를 상기 제 1 그룹 내에서 삭제하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
3. The method of claim 2,
The processor
Repeatedly transmitting the heartbeat to the third server according to a predetermined period,
When the number of responses to the heartbeat that has not been received from the third server exceeds a predetermined number,
And deletes the third server in the first group.
Servers participating in distributed network-based consensus.
제 5 항에 있어서,
상기 제 3 서버는
상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답 시간이 기 설정된 시간을 초과하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
6. The method of claim 5,
The third server
Wherein a response time to the heartbeat of the plurality of second servers exceeds a predetermined time,
Servers participating in distributed network-based consensus.
제 1 항에 있어서,
상기 서버가 후보자 모드 또는 팔로워 모드로 동작함에 따라,
상기 제 1 그룹 내에 존재하는 리더 모드의 서버로부터 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 수신하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버.
The method according to claim 1,
As the server operates in Candidate mode or Follower mode,
And receives server information and modified log information existing in the first group from a server in the reader mode existing in the first group.
Servers participating in distributed network-based consensus.
제 1 그룹 내에서 분산 네트워크 기반 컨센서스에 참여하고, 액션 정보가 기록된 로그 및 컨센서스 모듈이 저장된 메모리, 및 상기 로그에 따라 액션을 수행하는 프로세서를 포함하는 서버의 네트워크 방법에 있어서,
상기 프로세서가 상기 컨센서스 모듈을 실행함에 따라 상기 서버의 상태를 리더(leader) 모드로 정의하는 (a) 단계;
상기 프로세서가 상기 제 1 그룹 내에 존재하고, 팔로워 모드 또는 후보자 모드로 동작하는 복수의 제 2 서버로 네트워크의 연결상태를 확인하는 하트비트(Heartbeat)를 전송하는 (b) 단계;
상기 프로세서가 상기 하트비트에 대한 응답을 상기 각각의 제 2 서버로부터 수신하는 (c) 단계;
상기 프로세서가 상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답을 수신하지 못한 제 3 서버를 상기 제 1 그룹 내에서 삭제하는 (d) 단계; 및
상기 프로세서가 제 3 서버를 제외한 나머지 제 2 서버 각각으로 상기 제 1 그룹 내에 존재하는 서버 정보 및 변경된 로그 정보를 전송하여 업데이트 시키는 (e) 단계를 포함하는,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
A network method of a server including a processor participating in a distributed network-based consensus in a first group, a memory in which action information is recorded and a consensus module are stored, and a processor performing an action according to the log,
(A) defining a state of the server as a leader mode as the processor executes the consensus module;
(B) transmitting a heartbeat for confirming a connection state of the network to a plurality of second servers, the processor residing in the first group and operating in a follower mode or a candidate mode;
(C) receiving, by the processor, a response to the heartbeat from each of the second servers;
(D) deleting, in the first group, a third server among the plurality of second servers, the processor not receiving a response to the heartbeat; And
And (e) transmitting and updating the server information and the changed log information existing in the first group to each of the remaining second servers except for the third server.
Network method of servers participating in distributed network based consensus.
제 8 항에 있어서,
상기 (c) 단계 이후,
상기 제 1 그룹이 메이저 그룹인지 마이너 그룹인지 판단하는 (f)단계를 더 포함하되,
상기 (f) 단계는
상기 복수의 제 2 서버로부터 수신한 상기 하트비트에 대한 응답 개수가 상기 제 1 그룹에 속한 서버 개수의 절반 이상인 경우,
상기 제 1 그룹을 상기 메이저 그룹으로 판단하고,
상기 복수의 제 2 서버로부터 수신한 상기 하트비트에 대한 응답 개수가 상기 제 1 그룹에 속한 서버 개수의 과반수 미만인 경우,
상기 제 1 그룹을 상기 마이너 그룹으로 판단하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
9. The method of claim 8,
After the step (c)
(F) determining whether the first group is a major group or a minor group,
The step (f)
When the number of responses to the heartbeats received from the plurality of second servers is equal to or more than half of the number of servers belonging to the first group,
Determining the first group as the major group,
When the number of responses to the heartbeats received from the plurality of second servers is less than a majority of the number of servers belonging to the first group,
The first group is determined as the minor group,
Network method of servers participating in distributed network based consensus.
제 9 항에 있어서,
상기 (d)단계는
상기 제 1 그룹이 메이저 그룹인 경우에만 상기 제 3 서버를 상기 제 1 그룹 내에서 삭제하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
10. The method of claim 9,
The step (d)
And delete the third server in the first group only if the first group is a major group.
Network method of servers participating in distributed network based consensus.
제 9 항에 있어서,
상기 제 1 그룹 외에 존재하는 제 4 서버로부터 추가(add)요청을 수신하는 (g)단계를 더 포함하고,
상기 제 1 그룹이 메이저 그룹인지 마이너 그룹인지 판단하는 (f)단계에서 상기 제 1 그룹이 메이저 그룹으로 판단되는 경우,
상기 (g)단계 이후, 상기 프로세서가 상기 제 4 서버의 정보를 상기 복수의 제 2 서버로 전송하는 제 (h)단계를 더 포함하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
10. The method of claim 9,
Further comprising: (g) receiving an add request from a fourth server existing outside the first group,
If it is determined that the first group is a major group or a minor group in the step (f)
Further comprising: (h) after the step (g), the processor transmits information of the fourth server to the plurality of second servers.
Network method of servers participating in distributed network based consensus.
제 9 항에 있어서,
상기 (f) 단계는
기 설정된 주기에 따라 상기 제 3 서버로 상기 하트비트를 반복하여 전송하는 (i) 단계를 더 포함하고,
상기 제 3 서버로부터 수신하지 못한 상기 하트비트에 대한 응답의 횟수가 기 설정된 횟수를 초과하는 경우,
상기 (d) 단계를 수행하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
10. The method of claim 9,
The step (f)
(I) repeatedly transmitting the heartbeat to the third server according to a predetermined period,
When the number of responses to the heartbeat that has not been received from the third server exceeds a predetermined number,
(D). ≪ RTI ID = 0.0 >
Network method of servers participating in distributed network based consensus.
제 9 항에 있어서,
상기 (f)단계에서,
상기 복수의 제 2 서버 중, 상기 하트비트에 대한 응답 시간이 기 설정된 시간을 초과하는 서버를 상기 제 3 서버로 정의하는 것인,
분산 네트워크 기반 컨센서스에 참여하는 서버의 네트워크 방법.
10. The method of claim 9,
In the step (f)
Wherein the third server defines a server whose response time to the heartbeat exceeds a preset time among the plurality of second servers.
Network method of servers participating in distributed network based consensus.
제 8항 내지 제 13항 중 어느 한 항에 따른 서버의 네트워크 방법을 실행하기 위한 프로그램이 기록된 컴퓨터 저장 매체.A computer storage medium on which a program for executing a network method of a server according to any one of claims 8 to 13 is recorded.
KR1020160165073A 2016-12-06 2016-12-06 Server for distributed network and method of consensus thereof KR101944594B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160165073A KR101944594B1 (en) 2016-12-06 2016-12-06 Server for distributed network and method of consensus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160165073A KR101944594B1 (en) 2016-12-06 2016-12-06 Server for distributed network and method of consensus thereof

Publications (2)

Publication Number Publication Date
KR20180065053A KR20180065053A (en) 2018-06-18
KR101944594B1 true KR101944594B1 (en) 2019-02-01

Family

ID=62765466

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160165073A KR101944594B1 (en) 2016-12-06 2016-12-06 Server for distributed network and method of consensus thereof

Country Status (1)

Country Link
KR (1) KR101944594B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102074492B1 (en) * 2018-11-22 2020-02-06 주식회사 윅스콘 Management system for electronic vote using blockchain
KR102487757B1 (en) * 2021-02-03 2023-01-12 한전케이디엔주식회사 Multi-stage communication system and method of HaLow wireless based on priority

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015080825A1 (en) 2013-11-27 2015-06-04 Avi Networks Method and system for distributed load balancing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015080825A1 (en) 2013-11-27 2015-06-04 Avi Networks Method and system for distributed load balancing

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
D. Woos 외 5인, "Planning for change in a formal verification of the raft consensus protocol", ACM(2016.)
Diego Ongaro 외 1인, "In search of an understandable consensus algorithm", USENIX ATC 14(2014.)
하연의 외 2인, "Raft-D: 참여 노드의 동적 구성을 허용하는 컨센서스 알고리즘", AJMAHS(2017.2.)

Also Published As

Publication number Publication date
KR20180065053A (en) 2018-06-18

Similar Documents

Publication Publication Date Title
JP4696089B2 (en) Distributed storage system
CN102449616B (en) Swarm-based synchronization over a network of object stores
US7756924B2 (en) Peer communities
JP5381336B2 (en) Management program, management apparatus, and management method
JP6301318B2 (en) Cache processing method, node, and computer-readable medium for distributed storage system
US8275752B2 (en) Data backup method through distributed network, involves generating data segment copies to transmit to peer storage servers based on metadata with segment distribution matrix by calculating redundancy corresponding to data segments
CN107453929B (en) Cluster system self-construction method and device and cluster system
US20110271135A1 (en) Data management method and node apparatus
US9648128B2 (en) Dynamic ad hoc cloud based memory management for mobile devices
US11265182B2 (en) Messaging to enforce operation serialization for consistency of a distributed data structure
US11212342B2 (en) Merge trees for collaboration
US20170054803A1 (en) Information processing device, method, and system
JP2010541077A (en) Exchange of synchronization data and metadata
CN110493028A (en) A kind of clustered deploy(ment) method, system, device and computer readable storage medium
KR101944594B1 (en) Server for distributed network and method of consensus thereof
CN114598735B (en) Data processing method and system
CN106230622B (en) Cluster implementation method and device
CN113162970A (en) Message routing method, device, equipment and medium based on publish/subscribe model
CN113992662A (en) File transmission method, device and storage medium
CN111368991A (en) Deep learning model training method and device and electronic equipment
US11003508B2 (en) Apparatus and methods for load balancing across a network of nodes
US20130346580A1 (en) Apparatus and method for generating qos profile for supporting data distribution service in cyber-physical system
US10554324B1 (en) Dynamic wavelength allocation in optical networks
CN112698783A (en) Object storage method, device and system
CN106657227B (en) The method and device of resource is subscribed in a kind of change

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right