KR102119456B1 - Distributed Broker Coordinator System and Method in a Distributed Cloud Environment - Google Patents
Distributed Broker Coordinator System and Method in a Distributed Cloud Environment Download PDFInfo
- Publication number
- KR102119456B1 KR102119456B1 KR1020180114865A KR20180114865A KR102119456B1 KR 102119456 B1 KR102119456 B1 KR 102119456B1 KR 1020180114865 A KR1020180114865 A KR 1020180114865A KR 20180114865 A KR20180114865 A KR 20180114865A KR 102119456 B1 KR102119456 B1 KR 102119456B1
- Authority
- KR
- South Korea
- Prior art keywords
- broker
- distributed
- client
- leader
- optimal
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
Abstract
코디네이터 시스템이 개시된다. 상기 코디네이터 시스템은 클라이언트로부터 브로커 매핑 정보 요청을 수신하고, 상기 브로커 매핑 정보 요청에 따라 브로커 매핑 작업을 할당하는 코디네이터(coordinator server) 서버, 및 상기 코디네이터 서버로부터 브로커 매핑 작업을 할당받아 복수개의 분산 브로커 리더(broker leader)들 - 복수개의 분산 브로커들 중에서 선출된 어느 하나의 분산 브로커 리더의 집합 - 중에서 최적의 분산 브로커 리더를 선출하여 상기 클라이언트에 매핑하는 프로세싱(processing) 서버를 포함한다.A coordinator system is disclosed. The coordinator system receives a broker mapping information request from a client, and a coordinator server server that allocates a broker mapping operation according to the broker mapping information request, and a plurality of distributed broker leaders receiving broker mapping operations from the coordinator server and a processing server that selects an optimal distributed broker leader from among (broker leaders)-a set of distributed broker leaders selected from a plurality of distributed brokers and maps the client.
Description
본 발명은 분산 클라우드 환경에서의 코디네이터 시스템 및 방법으로서, 보다 구체적으로 클라우드 환경에서의 메시지 브로커를 분산 배치시켜 코디네이터하는 시스템 및 방법에 대한 것이다.The present invention relates to a coordinator system and method in a distributed cloud environment, and more particularly, to a system and method for coordinating and distributing a message broker in a cloud environment.
MQTT(Message Queuing Telemetry Transport)는 브로커를 사용하여 Publish/Subscribe 방식으로 메시지를 주고받으며, TCP/IP 프로토콜 위에 동작하여 최소한의 프로토콜 오버헤드만으로 동작하는 기술이다. MQTT는 하나의 긴 메시지 큐(message queue)로, 특정 토픽(topic)과 메시지를 퍼블리시(publish)하게 되면 MQTT 브로커에 이동하게 되고, MQTT 브로커에서는 퍼블리시에서 지정해준 토픽에 해당하는 구독자(subscriber)에게 메시지를 보내주게 된다. 따라서, 각 클라이언트는 서로의 IP 정보를 모르더라도 특정 토픽만 일치시키면 인터넷이 연결된 어디에서든 서로 통신이 가능하다. 또한, 한 클라이언트가 메시지를 특정 토픽으로 퍼블리시면, 해당 토픽을 구독하고 있는 네트워크상의 모든 클라이언트에게 메시지를 전송하여 1:N 통신이 가능하며, 이를 위해 기존의 클라우드 컴퓨팅 환경에서는 클라우드에 메시지 브로커를 두고 통신을 수행해 왔다.MQTT (Message Queuing Telemetry Transport) is a technology that uses a broker to send and receive messages in a publish/subscribe manner, and operates on a TCP/IP protocol with minimal protocol overhead. MQTT is a long message queue. When a specific topic and message are published, it is moved to the MQTT broker, and in the MQTT broker, a subscriber corresponding to the topic specified by the publication. ). Therefore, each client can communicate with each other wherever the Internet is connected only by matching a specific topic even if they do not know each other's IP information. In addition, when a client publishes a message to a specific topic, 1:N communication is possible by sending a message to all clients on the network that subscribe to the topic. To this end, in the existing cloud computing environment, a message broker is placed in the cloud. Communication has been carried out.
그러나, 기존의 모델은 다음과 같은 문제점을 가지고 있다.However, the existing model has the following problems.
ⅰ) Publish/Subscribe 모델은 1:N 통신을 수행하기 때문에 하나의 메시지가 전송되더라도 n배 만큼의 네트워크 트래픽이 발생한다. 따라서 수십억 개의 IoT 디바이스와 수백만 명의 클라이언트를 관리하는 클라우드 시스템에서는 클라우드에 발생하는 부하를 분산시켜야 할 필요가 있다.Iv) Publish/Subscribe model performs 1:N communication, so even if one message is transmitted, n times network traffic occurs. Therefore, in a cloud system that manages billions of IoT devices and millions of clients, it is necessary to distribute the load generated in the cloud.
ⅱ) 많은 시스템에서 구성과 유지보수에 대하여 수동적으로 구성되고 있고 이를 동적으로 구성하는 기술이 없다.Ii) Many systems are passively configured for configuration and maintenance, and there is no technology to dynamically configure them.
ⅲ) 브로커들의 효과적인 오버레이 구성을 위해서 확장성을 보장하지 못하며 지연 시간(latency)이 존재한다.Iii) For effective overlay configuration of brokers, scalability is not guaranteed and latency exists.
즉, 기존의 클라우드 환경의 메시징 서비스는 모든 클라이언트 간의 메시징을 보장하기 위해 중앙 클라우드의 브로커를 거쳐 통신을 하는 구조이므로, 상술한 문제점이 발생하며, 특히 클라이언트의 수가 늘어날수록 중앙 클라우드에 발생하는 네트워크 부하가 증가한다.In other words, since the messaging service of the existing cloud environment communicates through a broker in the central cloud to ensure messaging between all clients, the above-described problem occurs, and particularly, the network load occurring in the central cloud as the number of clients increases. Increases.
본 발명의 목적은 Publish/Subscribe 모델에서 1:N 통신을 수행함에도 트래픽이 발생하지 않도록 하는 시스템 및 그 방법을 제공하는 것을 목적으로 한다.An object of the present invention is to provide a system and a method for preventing traffic from occurring even while performing 1:N communication in a Publish/Subscribe model.
본 발명의 일 실시 예에 따른 코디네이터 시스템은 클라이언트로부터 브로커 매핑 정보 요청을 수신하고, 상기 브로커 매핑 정보 요청에 따라 브로커 매핑 작업을 할당하는 코디네이터(coordinator server) 서버, 및 상기 코디네이터 서버로부터 브로커 매핑 작업을 할당받아 복수개의 분산 브로커 리더(broker leader)들 - 복수개의 분산 브로커들 중에서 선출된 어느 하나의 분산 브로커 리더의 집합 - 중에서 최적의 분산 브로커 리더를 선출하여 상기 클라이언트에 매핑하는 프로세싱(processing) 서버를 포함할 수 있다.The coordinator system according to an embodiment of the present invention receives a broker mapping information request from a client, and a coordinator server server that allocates a broker mapping operation according to the broker mapping information request, and a broker mapping operation from the coordinator server. A processing server that maps to the client by selecting an optimal distributed broker leader from among a plurality of distributed broker leaders assigned-one set of distributed broker leaders selected from a plurality of distributed brokers. It can contain.
여기에, 상기 프로세싱 서버는 상기 복수개의 분산 브로커 리더들 중에서 상기 클라이언트와 가장 가까운 분산 브로커 리더를 상기 최적의 분산 브로커 리더로서 선출할 수 있다.Here, the processing server may select the distributed broker leader closest to the client from among the plurality of distributed broker leaders as the optimal distributed broker leader.
여기에, 상기 코디네이터 서버는 디렉토리 형식을 갖는 계층화된 데이터 모델을 기반으로 동작할 수 있다.Here, the coordinator server can operate based on a layered data model having a directory format.
여기에, 상기 코디네이터 서버는 상기 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 상기 클라이언트에 전송할 수 있다.Here, the coordinator server may transmit broker mapping information including information about the optimal distributed broker leader to the client.
여기에, 상기 분산 브로커는 상기 클라이언트 간에 발행/구독(Pub/Sub) 정보를 포함하는 발행/구독 테이블 및 상기 클라이언트가 구독 신청한 토픽에 대한 정보를 포함하는 토픽(topic) 라우팅 테이블을 포함하는 발행/구독 모듈, 및 상기 코디네이터 서버와 상기 분산 브로커를 연결하여 데이터를 주고받는 브릿징 매니저 모듈을 포함할 수 있다.Here, the distributed broker publishes a publish/subscribe table that includes publish/subscribe (Pub/Sub) information between the clients and a topic routing table that includes information about topics subscribed to by the client. / Subscription module, and a bridging manager module that exchanges data by connecting the coordinator server and the distributed broker.
여기에, 상기 코디네이터 서버로부터 할당받은 작업을 상기 프로세싱 서버에 토픽 형식으로 전달하는 프로세싱 서버 리더를 더 포함할 수 있다.Here, it may further include a processing server reader that delivers the task assigned from the coordinator server to the processing server in a topic format.
여기에, 상기 최적의 분산 브로커 리더는 상기 클라이언트로부터 제1 브로커 연결 정보 요청을 수신하고, 상기 제1 브로커 연결 정보 요청에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 클라이언트에 가장 가까운 분산 브로커인 제1 최적의 분산 브로커를 선출하고, 상기 제1 최적의 분산 브로커에 대한 정보가 포함된 제1 브로커 연결 정보를 상기 클라이언트에 전송하는 할 수 있다.Here, the optimal distributed broker leader receives the first broker connection information request from the client, and the closest distribution to the client in the broker group including the optimal distributed broker leader according to the first broker connection information request A first optimal distributed broker that is a broker may be selected, and first broker connection information including information on the first optimal distributed broker may be transmitted to the client.
여기에, 상기 클라이언트의 상기 제1 최적의 분산 브로커에 대한 연결 요청이 실패(fail)한 경우, 상기 최적의 분산 브로커 리더는 상기 클라이언트로부터 제2 브로커 연결 정보 요청을 수신하고, 상기 제2 브로커 연결 정보 요청에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 연결 요청이 실패한 제1 최적의 분산 브로커를 제외한 나머지 분산 브로커들 중에서 상기 클라이언트에 가장 가까운 분산 브로커인 제2 최적의 분산 브로커를 선출하고, 상기 제2 최적의 분산 브로커에 대한 정보가 포함된 제2 브로커 연결 정보를 상기 클라이언트에 전송할 수 있다.Here, when the client's connection request to the first optimal distributed broker fails, the optimal distributed broker reader receives a request for second broker connection information from the client, and the second broker connection The second optimal distributed broker, which is the closest distributed broker to the client, is selected from among the remaining distributed brokers except the first optimal distributed broker in which the connection request has failed in the broker group including the optimal distributed broker leader according to the information request. In addition, second broker connection information including information on the second optimal distributed broker may be transmitted to the client.
본 발명의 일 실시 예에 따른 코디네이터 시스템에 의해 수행되는 코디네이터 방법으로서, 클라이언트가 코디네이터(coordinator) 서버에 브로커 매핑 정보를 요청하는 단계, 상기 코디네이터 서버가 프로세싱(processing) 서버에 브로커 리더 매핑 작업을 할당하는 단계, 상기 프로세싱 서버가 브로커 리더 매핑 작업을 할당받아 복수개의 분산 브로커 리더(broker leader)들 - 복수개의 분산 브로커들 중에서 선출된 어느 하나의 분산 브로커 리더의 집합 - 중에서 최적의 분산 브로커 리더를 선출하고, 상기 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 상기 클라이언트에 전송하는 단계, 상기 클라이언트가 상기 최적의 분산 브로커 리더에 제1 브로커 연결 정보를 요청하는 단계, 상기 최적의 분산 브로커 리더가 상기 제1 브로커 연결 정보 요청에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 제1 최적의 분산 브로커를 선출하고, 상기 제1 최적의 분산 브로커에 대한 정보가 포함된 제1 브로커 연결 정보를 상기 클라이언트에 전송하는 단계, 및 상기 클라이언트가 상기 제1 최적의 분산 브로커에 연결되는 단계를 포함할 수 있다.As a coordinator method performed by a coordinator system according to an embodiment of the present invention, the client requests broker mapping information from a coordinator server, and the coordinator server allocates a broker leader mapping task to a processing server Step, the processing server is assigned a broker leader mapping operation, and selects the best distributed broker leader among a plurality of distributed broker leaders-a set of distributed broker leaders selected from among multiple distributed brokers. And transmitting broker mapping information including information about the optimal distributed broker reader to the client, the client requesting first broker connection information from the optimal distributed broker reader, and the optimal distributed broker A leader selects a first optimal distributed broker from a broker group including the optimal distributed broker leader according to the request for the first broker connection information, and a first broker connection including information about the first optimal distributed broker And transmitting information to the client, and connecting the client to the first optimal distributed broker.
여기에, 상기 제1 최적의 분산 브로커에 연결되는 단계에서 상기 제1 최적의 분산 브로커에 대한 연결 요청이 실패(fail)한 경우, 상기 클라이언트가 상기 최적의 분산 브로커 리더에 제2 브로커 연결 정보를 요청하는 단계, 상기 최적의 분산 브로커 리더가 상기 제2 브로커 연결 정보 요청에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 연결 요청이 실패한 제1 최적의 분산 브로커를 제외한 나머지 분산 브로커들 중에서 제2 최적의 분산 브로커를 선출하고, 상기 제2 최적의 분산 브로커에 대한 정보가 포함된 제2 브로커 연결 정보를 상기 클라이언트에 전송하는 단계, 및 상기 클라이언트가 상기 제2 최적의 분산 브로커에 연결되는 단계를 더 포함할 수 있다.Here, when a connection request to the first optimal distributed broker fails in a step of connecting to the first optimal distributed broker, the client sends second broker connection information to the optimal distributed broker reader. Requesting step, the optimal distributed broker leader among the remaining distributed brokers except for the first optimal distributed broker whose connection request has failed in the broker group including the optimal distributed broker leader according to the second broker connection information request Selecting a second optimal distributed broker, transmitting second broker connection information including information about the second optimal distributed broker to the client, and the client connected to the second optimal distributed broker It may further include a step.
여기에, 상기 브로커 리더 매핑 작업을 할당하는 단계는 복수개의 프로세싱 서버들 중에서 상기 코디네이터 서버 및 나머지 프로세싱 서버들 사이에서 데이터를 전달하는 역할을 수행하기 위하여 선출된 프로세싱 서버 리더가 존재할 경우 상기 프로세싱 서버 리더에 상기 브로커 리더 매핑 작업을 할당할 수 있다.Here, in the step of allocating the broker reader mapping operation, if there is a processing server leader elected to perform a role of transferring data between the coordinator server and the remaining processing servers among a plurality of processing servers, the processing server leader To the broker leader mapping task.
여기에, 상기 브로커 리더 매핑 작업을 할당하는 단계는 상기 프로세싱 서버 리더가 상기 코디네이터 서버로부터 할당받은 작업을 상기 복수개의 프로세싱 서버들 중 어느 하나의 프로세싱 서버에 토픽 형식으로 전달하는 단계를 더 포함할 수 있다.Here, the step of allocating the broker reader mapping operation may further include the step of forwarding the task assigned by the processing server leader from the coordinator server to a processing server of any one of the plurality of processing servers in a topic format. have.
여기에, 상기 제1 최적의 분산 브로커가 발행(Pub) 클라이언트로부터 특정 토픽(topic)에 대한 메시지를 수신하는 단계, 및 상기 특정 토픽을 구독하는 구독(Sub) 클라이언트에게 상기 메시지를 송신하는 단계를 더 포함할 수 있다.Here, the first optimal distribution broker receiving a message on a specific topic (Pub) from a publishing (Pub) client, and sending the message to a subscribing (Sub) client subscribing to the specific topic It may further include.
여기에, 상기 최적의 분산 브로커 리더는 상기 복수개의 분산 브로커 리더들 중에서 상기 클라이언트와 가장 가까운 분산 브로커이고, 상기 제1 최적의 분산 브로커는 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 클라이언트에 가장 가까운 분산 브로커일 수 있다.Here, the optimal distributed broker leader is the distributed broker closest to the client among the plurality of distributed broker leaders, and the first optimal distributed broker is connected to the client in a broker group including the optimal distributed broker leader. It may be the nearest distributed broker.
본 발명의 일 실시 예에 따르면 분산 클라우드 환경에서 분산 메시지 브로커를 배치하여 1:N 방식이 아닌 N:N 방식의 통신을 가능하게 해주어 큰 규모의 분산 클라우드 환경에서 적용이 가능하다.According to an embodiment of the present invention, by distributing a distributed message broker in a distributed cloud environment, it is possible to apply in a large-scale distributed cloud environment by enabling N:N communication rather than 1:N.
또한, 분산 브로커의 확장성을 가질 수 있으며 낮은 지연 시간을 보장할 수 있다.In addition, it can have scalability of distributed brokers and guarantee low latency.
또한, 분산된 IoT 환경에서 다양한 기기들을 제어할 때 성능을 향상시켜 데이터를 관리할 수 있다.In addition, when controlling various devices in a distributed IoT environment, performance can be improved to manage data.
도 1은 본 발명의 일 실시 예에 따른 분산 브로커 시스템을 개략적으로 도시한 것이다.
도 2는 본 발명의 일 실시 예에 따른 분산 브로커 시스템의 블록도이다.
도 3은 코디네이터 시스템의 계층화된 데이터 모델의 일 예를 도시한 것이다.
도 4는 본 발명의 일 실시 예에 따른 코디네이터 방법의 순서도이다.
도 5는 분산 브로커에 대한 연결 요청 실패시 코디네이터 방법의 순서도이다.1 schematically illustrates a distributed broker system according to an embodiment of the present invention.
2 is a block diagram of a distributed broker system according to an embodiment of the present invention.
3 shows an example of a layered data model of the coordinator system.
4 is a flowchart of a coordinator method according to an embodiment of the present invention.
5 is a flowchart of a coordinator method when a connection request to a distributed broker fails.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시예들에 대해서 특정한 구조적 또는 기능적 설명들은 단지 본 발명의 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시예들은 다양한 형태로 실시될 수 있으며 본 명세서에 설명된 실시예들에 한정되지 않는다.Specific structural or functional descriptions of the embodiments according to the concept of the present invention disclosed in this specification are exemplified only for the purpose of illustrating the embodiments according to the concept of the present invention, and the embodiments according to the concept of the present invention These can be implemented in various forms and are not limited to the embodiments described herein.
본 발명의 개념에 따른 실시예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시예들을 도면에 예시하고 본 명세서에 상세하게 설명하고자 한다. 그러나 이는 본 발명의 개념에 따른 실시예들을 특정한 개시형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Embodiments according to the concept of the present invention can be applied to various changes and have various forms, so the embodiments will be illustrated in the drawings and described in detail herein. However, this is not intended to limit the embodiments according to the concept of the present invention to specific disclosure forms, and includes modifications, equivalents, or substitutes included in the spirit and scope of the present invention.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만, 예를 들어 본 발명의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Terms such as first or second may be used to describe various components, but the components should not be limited by the terms. The above terms are only for the purpose of distinguishing one component from other components, for example, without departing from the scope of rights according to the concept of the present invention, the first component may be referred to as the second component, Similarly, the second component may also be referred to as the first component.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~사이에"와 "바로~사이에" 또는 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When an element is said to be "connected" or "connected" to another component, it is understood that other components may be directly connected to or connected to the other component, but there may be other components in between. It should be. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it should be understood that no other component exists in the middle. Expressions describing the relationship between the components, for example, "between" and "immediately between" or "directly adjacent to" should be interpreted similarly.
본 명세서에서 사용한 용어는 단지 특정한 실시예들을 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is only used to describe specific embodiments and is not intended to limit the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this specification, the terms "include" or "have" are intended to designate the presence of a feature, number, step, action, component, part, or combination thereof as described, one or more other features or numbers, It should be understood that the presence or addition possibilities of steps, actions, components, parts or combinations thereof are not excluded in advance.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by a person skilled in the art to which the present invention pertains. Terms, such as those defined in a commonly used dictionary, should be interpreted as having meanings consistent with meanings in the context of related technologies, and should not be interpreted as ideal or excessively formal meanings unless explicitly defined herein. Does not.
도 1은 본 발명의 일 실시 예에 따른 분산 브로커 시스템을 개략적으로 도시한 것이다.1 schematically illustrates a distributed broker system according to an embodiment of the present invention.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 분산 브로커 시스템(1)은 클라우드 환경에서 클라이언트(10a 내지 10j)에게 메시징 서비스 제공을 위하여 배치된 복수개의 분산 브로커(20)들과 코디네이터 시스템(30)을 포함한다. 즉, 기존의 클라우드 환경의 메시징 서비스가 모든 클라이언트 간의 메시징을 보장하기 위해 중앙 클라우드의 브로커를 거쳐 통신을 하는 구조인 반면에, 본 발명의 경우 분산 브로커(20)들을 배치하여 중앙 클라우드의 브로커에 발생하는 네트워크 부하를 분산시킬 수 있다.Referring to FIG. 1, a distributed
분산 브로커(20)들은 다양한 분산 컴퓨팅 모델에 적용 및 배치될 수 있다. 예를 들면 도 1에서 도시되어 있는 바와 같이 서로 다른 지역에 물리적으로 분산되어 있는 클라우드 클러스터(21a 내지 21b)와, 클라우드 클러스터(21a 내지 21b) 및 클라이언트(10a 내지 10j) 사이에 위치하고 서로 다른 지역에 물리적으로 분산되어 있는 포그(fog) 클러스터(22a 내지 22c)로 구성되는 분산 컴퓨팅 모델에 적용 및 배치될 수 있다.The distributed
이러한 분산 브로커(20)들을 클라이언트(10a 내지 10j)에 적절히 매핑하기 위하여, 본 발명은 코디네이션(coordination) 서비스를 이용한다. 여기서, 코디네이션 서비스는 예를 들면 주키퍼(zookeeper)와 같이 분산 코디네이션을 위한 소프트웨어나 어플리케이션을 의미할 수 있다. 코디네이션 서비스는 동기화, 설정 관리, 그룹핑 및 네이밍(naming)과 같이 코디네이션을 위한 다양한 서비스를 제공한다. 코디네이션 서비스는 앙상블(ensemble)이라고도 명명될 수 있는 복수개의 서버들이 포함된 그룹에 복제되므로, 클라이언트(10a 내지 10j)는 앙상블에 속한 어떠한 서버에 연결하더라도 코디네이션 서비스를 이용할 수 있다.In order to properly map the distributed
한편, 앙상블은 선출 알고리즘을 통하여 어느 하나의 서버를 리더(leader)로 선출할 수 있다. 이에 따라, 앙상블은 리더와 리더를 제외한 나머지 서버들의 집합인 팔로워(follower)로 구성된다. 만일 클라이언트(10a 내지 10j)로부터의 요청이 실패(fail)하게 되면, 팔로워들의 합의를 통하여 새로운 리더를 선출할 수도 있다.Meanwhile, the ensemble may select any one server as a leader through a selection algorithm. Accordingly, the ensemble consists of a leader and a follower that is a set of servers excluding the leader. If the request from the
상술한 코디네이션 서비스는 코디네이터 시스템(30)에 의해 제공된다. 코디네이터 시스템(30)은 클라이언트(10a 내지 10j)로부터의 작업 요청에 따라 분산 브로커(20)들을 코디네이터하는 역할을 수행한다. 여기서, 코디네이터란 분산 브로커(20)들을 클라이언트(10a 내지 10j)에게 적절히 매핑하는 것을 의미할 수 있다. 또한, 코디네이터 시스템(30)에 의해 제공되는 코디네이션 서비스에 문제가 발생하게 되면 전체 시스템의 장애를 유발할 수 있으므로, 코디네이터 시스템(30)은 계층화된 데이터 모델을 이용하고, 분산 브로커(20)들의 리더를 선출함으로써 전체 시스템의 장애를 막는다. 코디네이터 시스템(30)에 대한 상세한 설명은 후술하기로 한다.The coordination service described above is provided by the
도 2는 본 발명의 일 실시 예에 따른 분산 브로커 시스템의 블록도이다.2 is a block diagram of a distributed broker system according to an embodiment of the present invention.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 분산 브로커 시스템(1)은 분산 브로커(20) 및 코디네이터 시스템(30)을 포함한다.2, the distributed
분산 브로커(20)는 클라이언트(10a,10b)들 간에 발행/구독(publish/subscribe) 방식으로 메시지를 주고받을 수 있도록 중개 역할을 수행하며, 특히 본 발명의 경우 부하 분산을 위하여 코디네이터 시스템(30)과 클라이언트(10a,10b)들 사이에 복수개의 분산 브로커(20)들이 배치된다. 분산 브로커(20)는 임의의 클라이언트(10a,10b)가 특정 토픽에 대한 메시지를 발행하면 지정해준 토픽을 구독하는 구독 클라이언트(10a,10b)들에게 메시지를 전달한다.The
이를 위하여, 분산 브로커(20)는 클라이언트(10a,10b) 간에 발행/구독(Pub/Sub) 정보를 포함하는 발행/구독 테이블 및 구독 신청한 토픽에 대한 정보를 포함하는 토픽 라우팅 테이블을 포함하는 발행/구독 모듈(210)을 포함할 수 있다. 발행/구독 모듈(210)은 발행/구독 테이블과 토픽 라우팅 테이블에 토픽별로 구독을 신청한 클라이언트(10a,10b)들에 대한 데이터와 라우팅을 위한 토픽 데이터들을 저장하고, 이를 이용하여 발행/구독 모델에 따른 메시지 라우팅을 수행한다.To this end, the distributed
여기에, 분산 브로커(20)는 브릿징 매니저 모듈(230)을 포함할 수 있다. 브릿징 매니저 모듈(230)은 분산 브로커(20)를 코디네이터 서버(310)와 연결하여 데이터를 주고받도록 한다. 즉, 발행/구독 모듈(210)의 발행/구독 테이블과 토픽 라우팅 테이블에 저장된 데이터를 코디네이터 서버(310)에 전송하거나, 코디네이터 서버(310)로부터 브로커 매핑 정보를 수신한다.Here, the
한편, 분산 브로커 시스템(1)에서는 상술한 분산 브로커(20)들이 복수개가 복제되어 분산 컴퓨팅 모델에서 각 계층 및 각 도메인별로 각각 분산 배치된다. 분산 배치된 분산 브로커(20)들은 각 계층 및 각 도메인에 따라 앙상블을 형성할 수 있으며, 각 앙상블은 앙상블에 속한 복수개의 분산 브로커(20)들 중에서 선출된 분산 브로커 리더(broker leader)를 포함할 수 있다. 선출된 분산 브로커 리더를 통하여 클라이언트(10a,10b)는 데이터를 읽고 쓸 수 있다. 분산 브로커 리더는 각 앙상블별로 존재하므로, 분산 컴퓨팅 모델에 따라 적어도 하나 이상의 분산 브로커 리더가 존재할 수 있다. 이러한 분산 브로커 리더는 클라이언트(10a,10b)로부터 브로커 연결 정보 요청을 전송받으면 분산 브로커 리더가 포함된 브로커 그룹에서 클라이언트(10a,10b)와 가장 가까운 곳에 위치한 분산 브로커(20)를 최적의 분산 브로커로 선출하고, 최적의 분산 브로커(20)에 대한 정보가 포함된 브로커 연결 정보를 클라이언트(10a,10b)에 전송할 수 있다.On the other hand, in the distributed
코디네이터 시스템(30)은 상술한 바와 같이 클라이언트(10a,10b)로부터의 작업 요청에 따라 분산 브로커(20)들을 코디네이터하는 역할을 수행하며, 이를 위하여 코디네이터 서버(310)와 프로세싱 서버(330)를 포함한다.The
코디네이터 서버(310)는 클라이언트(10a,10b)로부터 브로커 매핑 정보 요청을 수신하고, 상기 브로커 매핑 정보 요청에 따라 프로세싱 서버(330)에 브로커 매핑 작업을 할당한다. 또한, 브로커 매핑 작업에 따라 선출된 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 클라이언트(10a,10b)에 전송한다.The
코디네이터 서버(310)는 디렉토리 형식을 갖는 계층화된 데이터 모델을 기반으로 동작할 수 있다. 디렉토리 형식을 사용하면 데이터를 계층화된 구조로 저장하기 용이하다는 장점이 있다. 계층화된 데이터 모델은 예를 들면 트리 구조의 노드일 수 있다.The
코디네이터 시스템(30)의 계층화된 데이터 모델의 일 예를 도시한 도 3을 참조하면, 코디네이터 서버(310)는 디렉토리(/) 형식에 따라 각 노드에 데이터를 저장하며, 각 노드에 저장된 데이터를 읽거나 쓰는 기능을 제공한다. 예를 들어, Participants 노드에는 클라이언트(10a,10b)들의 데이터가 저장되며, ProcessingServers 노드에는 프로세싱 서버(330)의 데이터가 저장되며, Fog_Domain이나 Cloud_Domain 노드에는 분산 브로커(20)들의 데이터가 저장된다. 또한, Topics 노드에는 각각의 분산 브로커(20)들이 가지고 있는 토픽 데이터가 저장되어 분산 브로커(20)들을 코디네이션할 수 있다.Referring to FIG. 3, which shows an example of a layered data model of the
프로세싱 서버(330)는 클라이언트(10a,10b)의 요청에 따라 코디네이터 서버(310)로부터 브로커 매핑 작업을 할당받으면 복수개의 분산 브로커 리더들 중에서 최적의 분산 브로커 리더를 선출하여 클라이언트(10a,10b)에 매핑한다. 여기서, 최적의 분산 브로커 리더란 복수개의 분산 브로커 리더들 중에서 브로커 매핑 정보를 요청한 클라이언트(10a,10b)와 가장 가까운 곳에 위치한 분산 브로커 리더를 의미할 수 있다.The
일 실시 예에 따라 코디네이터 시스템(30)은 복수개의 프로세싱 서버(330)들을 포함할 수 있다. 이 경우 복수개의 프로세싱 서버(330)들 중에서 어느 하나의 프로세싱 서버(330)는 리더로 선출되어 코디네이터 서버(310) 및 나머지 프로세싱 서버(330)들 사이에서 데이터를 전달하는 역할을 수행한다. 보다 구체적으로, 프로세싱 서버 리더는 코디네이터 서버(310)로부터 할당받은 작업을 프로세싱 서버(330)에 토픽 형식으로 전달하며 이에 따라 부하를 분산하고 지연 시간(latency)을 줄일 수 있다.According to an embodiment, the
여기에, 코디네이터 시스템(30)은 계층화된 데이터 모델을 저장하기 위한 코디네이션 데이터베이스(250)을 더 포함할 수 있다.Here, the
도 4는 본 발명의 일 실시 예에 따른 코디네이터 방법의 순서도이다. 이하에서는 앞서 설명한 부분과 중복되는 부분에 대한 상세한 설명은 생략하기로 한다.4 is a flowchart of a coordinator method according to an embodiment of the present invention. Hereinafter, detailed descriptions of parts overlapping with those described above will be omitted.
도 4를 참조하면, 본 발명의 일 실시 예에 따른 코디네이터 방법은 브로커 매핑 정보를 요청하는 단계(S110), 브로커 리더 매핑 작업을 할당하는 단계(S115), 최적의 분산 브로커 리더를 선출하는 단계(S120), 클라이언트에 브로커 매핑 정보를 전송하는 단계(S125), 브로커 연결 정보를 요청하는 단계(S130), 최적의 분산 브로커를 선출하는 단계(S135), 클라이언트에 브로커 연결 정보를 전송하는 단계(S140) 및 최적의 분산 브로커 연결 단계(S145)를 포함한다.4, the coordinator method according to an embodiment of the present invention comprises the steps of requesting broker mapping information (S110), allocating a broker reader mapping operation (S115), and selecting an optimal distributed broker leader ( S120), transmitting broker mapping information to the client (S125), requesting broker connection information (S130), selecting an optimal distributed broker (S135), transmitting broker connection information to the client (S140) ) And an optimal distributed broker connection step (S145 ).
분산 브로커 코디네이션을 위하여, S110 단계에서 클라이언트는 코디네이터 서버에 브로커 매핑 정보를 요청한다. 브로커 매핑 정보 요청과 동시에 코디네이터 서버는 클라이언트의 연결을 감지하여 계층화된 데이터 모델을 생성하고, 이벤트 리스너(listener)를 등록할 수 있다. 예를 들어 코디네이터 서버가 주키퍼 서비스를 기반으로 동작하는 경우, 상기 계층화된 데이터 모델은 z노드일 수 있다.For distributed broker coordination, in step S110, the client requests broker mapping information from the coordinator server. At the same time as requesting the broker mapping information, the coordinator server can detect the connection of the client, create a layered data model, and register an event listener. For example, when the coordinator server operates based on the main keeper service, the layered data model may be a z node.
브로커 매핑 정보 요청을 코디네이터 서버가 수신하면, S115 단계에서는 코디네이터 서버가 프로세싱 서버에 브로커 리더 매핑 작업을 할당한다.When the coordinator server receives the broker mapping information request, in step S115, the coordinator server allocates a broker reader mapping operation to the processing server.
한편, 일 실시 예에 따라 프로세싱 서버가 복수개 존재하고, 프로세싱 서버들 중에서 코디네이터 서버 및 나머지 프로세싱 서버들 사이에서 데이터를 전달하는 역할을 수행하기 위하여 선출된 프로세싱 서버 리더가 존재할 경우 S115 단계는 프로세싱 서버 리더에 대하여 수행될 수 있다. 즉, 코디네이터 서버는 프로세싱 서버 리더에게 브로커 리더 매핑 작업을 할당하게 된다.On the other hand, if there are a plurality of processing servers according to an embodiment, and there is a processing server leader elected to perform a role of transferring data between the coordinator server and the remaining processing servers among the processing servers, step S115 is the processing server leader. Can be performed against. That is, the coordinator server allocates the broker leader mapping job to the processing server leader.
S120 단계에서는 브로커 리더 매핑 작업을 할당받은 프로세싱 서버가 브로커 리더 매핑을 수행하여 최적의 분산 브로커 리더를 선출한다.In step S120, the processing server assigned to the broker leader mapping operation performs broker leader mapping to select the optimal distributed broker leader.
한편, 일 실시 예에 따라 프로세싱 서버 리더가 브로커 리더 매핑 작업을 할당받은 경우 프로세싱 서버 리더가 코디네이터 서버로부터 할당받은 작업을 복수개의 프로세싱 서버들 중 어느 하나의 프로세싱 서버에 토픽 형식으로 전달하는 단계(S121 단계)를 더 포함할 수도 있다. 이에 따라, 프로세싱 서버 리더로부터 작업을 전달받은 프로세싱 서버가 최적의 분산 브로커 리더를 선출하게 된다(S122 단계).On the other hand, if the processing server leader is assigned a broker leader mapping job according to an embodiment, the processing server leader delivers the job allocated from the coordinator server to a processing server in one of a plurality of processing servers in a topic format (S121). Step) may be further included. Accordingly, the processing server receiving the job from the processing server leader selects the optimal distributed broker leader (step S122).
S125 단계에서는 프로세싱 서버가 S120 단계를 통하여 선출된 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 클라이언트에 전송한다.In step S125, the processing server transmits broker mapping information including information about the optimal distributed broker leader selected through step S120 to the client.
브로커 매핑 정보를 전송받은 클라이언트는 S130 단계를 통하여 브로커 매핑 정보에 따라 최적의 분산 브로커 리더에 브로커 연결 정보를 요청한다.The client that receives the broker mapping information requests broker connection information to the optimal distributed broker reader according to the broker mapping information through step S130.
S135 단계에서는 클라이언트로부터 브로커 연결 정보를 수신한 최적의 분산 브로커 리더가 브로커 연결 정보에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 최적의 분산 브로커를 선출한다. 여기서, 최적의 분산 브로커는 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 클라이언트와 가장 가까운 곳에 위치한 분산 브로커를 의미할 수 있다.In step S135, the optimal distributed broker leader receiving the broker connection information from the client selects the optimal distributed broker from the broker group including the optimal distributed broker leader according to the broker connection information. Here, the optimal distributed broker may mean a distributed broker located closest to a client in a broker group including the optimal distributed broker leader.
최적의 분산 브로커 리더는 선출된 최적의 분산 브로커에 대한 정보가 포함된 브로커 연결 정보를 클라이언트에 전송하게 되고(S140 단계), 클라이언트는 전송받은 브로커 연결 정보에 따라 최적의 분산 브로커에 연결된다(S145 단계).The optimal distributed broker reader transmits broker connection information including information about the selected optimal distributed broker to the client (step S140), and the client connects to the optimal distributed broker according to the received broker connection information (S145) step).
최적의 분산 브로커에 연결되고 나면 클라이언트는 연결된 분산 브로커를 통하여 메시지를 전달할 수 있다. 예를 들어, 클라이언트가 브로커에 메시지를 전송하면 클라이언트와 연결된 최적의 분산 브로커가 발행(Pub) 클라이언트로부터 특정 토픽에 대한 메시지를 수신하고, 상기 특정 토픽을 구독하는 구독(Sub) 클라이언트에게 상기 메시지를 송신할 수 있다.Once connected to the optimal distributed broker, the client can deliver the message through the connected distributed broker. For example, when a client sends a message to a broker, the optimal distributed broker connected to the client receives a message for a specific topic from a Pub client, and sends the message to a Sub client that subscribes to the specific topic. I can send it.
최적의 분산 Optimal dispersion 브로커에 대한 연결 요청Request a connection to the broker 실패시 On failure
도 5는 분산 브로커에 대한 연결 요청 실패시 코디네이터 방법의 순서도이다.5 is a flowchart of a coordinator method when a connection request to a distributed broker fails.
도 5를 참조하면, 상술한 분산 브로커 코디네이터 방법에 따라 선출된 최적의 분산 브로커에 대한 클라이언트의 연결 요청이 실패한 경우, 클라이언트에 다른 분산 브로커를 연결하기 위하여 S145 단계 내지 S165 단계를 포함한다.Referring to FIG. 5, when the client's connection request to the optimal distributed broker selected according to the above-described distributed broker coordinator method fails, steps S145 to S165 are included to connect another distributed broker to the client.
S145 단계에서 최적의 분산 브로커 연결을 시도하게 되는데, S150 단계에서 연결 여부를 판단한다. 만약 연결이 실패한 것으로 판단되면, S155 단계에서는 클라이언트는 최적의 분산 브로커 리더에 브로커 연결 정보를 재요청한다.In step S145, an optimal distributed broker connection is attempted. In step S150, it is determined whether to connect. If it is determined that the connection has failed, in step S155, the client re-requests broker connection information to the optimal distributed broker reader.
S160 단계에서는 재요청을 받은 최적의 분산 브로커 리더가 브로커 연결 정보 재요청에 따라 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 연결 요청이 실패한 최적의 분산 브로커를 제외한 나머지 분산 브로커들 중에서 다시 한 번 최적의 분산 브로커를 재선출하고, 상기 재선출된 최적의 분산 브로커에 대한 정보가 포함된 브로커 연결 정보를 클라이언트에 전송한다.In step S160, the optimum distributed broker leader that has received the re-request is re-established among the remaining distributed brokers except the optimal distributed broker whose connection request has failed in the broker group including the optimal distributed broker leader according to the broker connection information re-request. Re-elects the best distributed broker at times, and sends broker connection information including information on the re-elected optimal distributed broker to the client.
최종적으로, S165 단계에서는 클라이언트가 재선출된 최적의 분산 브로커에 연결된다. 따라서, 본 발명에서는 연결 요청이 실패하더라도 코디네이터를 통하여 데이터 손실을 없애고 fail over/fail back이 가능하다는 장점이 있다.Finally, in step S165, the client is connected to the optimal distributed broker that has been re-elected. Therefore, in the present invention, even if the connection request fails, there is an advantage in that data loss can be eliminated through the coordinator and fail over/fail back is possible.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The device described above may be implemented with hardware components, software components, and/or combinations of hardware components and software components. For example, the devices and components described in the embodiments include, for example, processors, controllers, arithmetic logic units (ALUs), digital signal processors (micro signal processors), microcomputers, field programmable arrays (FPAs), It may be implemented using one or more general purpose computers or special purpose computers, such as a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. The processing device may run an operating system (OS) and one or more software applications running on the operating system. In addition, the processing device may access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of understanding, a processing device may be described as one being used, but a person having ordinary skill in the art, the processing device may include a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include. For example, the processing device may include a plurality of processors or a processor and a controller. In addition, other processing configurations, such as parallel processors, are possible.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instruction, or a combination of one or more of these, and configure the processing device to operate as desired, or process independently or collectively You can command the device. Software and/or data may be interpreted by a processing device, or to provide instructions or data to a processing device, of any type of machine, component, physical device, virtual equipment, computer storage medium or device. , Or may be permanently or temporarily embodied in the transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. The computer-readable medium may include program instructions, data files, data structures, or the like alone or in combination. The program instructions recorded in the medium may be specially designed and configured for the embodiments or may be known and usable by those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical media such as CD-ROMs, DVDs, and magnetic media such as floptical disks. -Hardware devices specifically configured to store and execute program instructions such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language code that can be executed by a computer using an interpreter, etc., as well as machine language codes produced by a compiler. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the embodiments, and vice versa.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.Although the embodiments have been described by the limited drawings as described above, a person skilled in the art can make various modifications and variations from the above description. For example, the described techniques are performed in a different order than the described method, and/or the components of the described system, structure, device, circuit, etc. are combined or combined in a different form from the described method, or other components Alternatively, even if replaced or substituted by equivalents, appropriate results can be achieved.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.
1 : 분산 브로커 시스템
10 : 클라이언트
20 : 분산 브로커
210 : 발행/구독 모듈 230 : 브릿징 매니저 모듈
30 : 코디네이터 시스템
310 : 코디네이터 서버 330 : 프로세싱 서버
350 : 코디네이션 데이터베이스1: distributed broker system
10: client
20: distributed broker
210: publish/subscribe module 230: bridging manager module
30: coordinator system
310: coordinator server 330: processing server
350: Coordination database
Claims (14)
상기 코디네이터 서버로부터 브로커 매핑 작업을 할당받아 복수개의 분산 브로커 리더(broker leader)들 - 복수개의 분산 브로커들 중에서 선출된 어느 하나의 분산 브로커 리더 - 중에서 최적의 분산 브로커 리더를 선출하여 상기 클라이언트에 매핑하는 프로세싱(processing) 서버를 포함하는 코디네이터 시스템.
A coordinator server server that receives a broker mapping information request from a client and allocates a broker mapping operation according to the broker mapping information request; And
Selecting the best distributed broker leader among a plurality of distributed broker leaders-one distributed broker leader selected from a plurality of distributed brokers-by assigning a broker mapping task from the coordinator server to map to the client A coordinator system comprising a processing server.
상기 프로세싱 서버는 상기 복수개의 분산 브로커 리더들 중에서 상기 클라이언트와 가장 가까운 거리에 있는 분산 브로커 리더를 상기 최적의 분산 브로커 리더로서 선출하는 코디네이터 시스템.
According to claim 1,
The processing server is a coordinator system that selects a distributed broker leader closest to the client from among the plurality of distributed broker leaders as the optimal distributed broker leader.
상기 코디네이터 서버는 상기 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 상기 클라이언트에 전송하는 코디네이터 시스템.
According to claim 1,
The coordinator server transmits broker mapping information including information about the optimal distributed broker reader to the client.
상기 분산 브로커는
상기 클라이언트 간에 발행/구독(Pub/Sub) 정보를 포함하는 발행/구독 테이블 및 상기 클라이언트가 구독 신청한 토픽에 대한 정보를 포함하는 토픽(topic) 라우팅 테이블을 포함하는 발행/구독 모듈; 및
상기 코디네이터 서버와 상기 분산 브로커를 연결하여 데이터를 주고받는 브릿징 매니저 모듈을 포함하는 코디네이터 시스템.
According to claim 1,
The distributed broker
A publish/subscribe module including a publish/subscribe table including publish/subscribe (Pub/Sub) information between the clients and a topic routing table containing information on topics subscribed to by the client; And
And a bridging manager module that connects the coordinator server and the distributed broker to exchange data.
상기 코디네이터 서버로부터 할당받은 작업을 상기 프로세싱 서버에 토픽 형식으로 전달하는 프로세싱 서버 리더를 더 포함하는 코디네이터 시스템.
According to claim 1,
A coordinator system further comprising a processing server reader that delivers the tasks assigned from the coordinator server to the processing server in a topic format.
상기 최적의 분산 브로커 리더는 상기 클라이언트로부터 제1 브로커 연결 정보 요청을 수신하고, 상기 제1 브로커 연결 정보 요청에 따라 분산 브로커 리더가 선출된 복수개의 분산 브로커들에서 상기 클라이언트에 가장 가까운 거리에 있는 분산 브로커인 제1 최적의 분산 브로커를 선출하고, 상기 제1 최적의 분산 브로커에 대한 정보가 포함된 제1 브로커 연결 정보를 상기 클라이언트에 전송하는 코디네이터 시스템.
According to claim 1,
The optimal distributed broker leader receives a first broker connection information request from the client, and a distribution that is closest to the client from a plurality of distributed brokers selected by the distributed broker leader according to the first broker connection information request A coordinator system that elects a first optimal distributed broker that is a broker, and transmits first broker connection information including information about the first optimal distributed broker to the client.
상기 클라이언트의 상기 제1 최적의 분산 브로커에 대한 연결 요청이 실패(fail)한 경우, 상기 최적의 분산 브로커 리더는 상기 클라이언트로부터 제2 브로커 연결 정보 요청을 수신하고, 상기 제2 브로커 연결 정보 요청에 따라 분산 브로커 리더가 선출된 복수개의 분산 브로커들에서 상기 연결 요청이 실패한 제1 최적의 분산 브로커를 제외한 나머지 분산 브로커들 중에서 상기 클라이언트에 가장 가까운 거리에 있는 분산 브로커인 제2 최적의 분산 브로커를 선출하고, 상기 제2 최적의 분산 브로커에 대한 정보가 포함된 제2 브로커 연결 정보를 상기 클라이언트에 전송하는 코디네이터 시스템.
The method of claim 7,
When the client's connection request to the first optimal distributed broker fails, the optimal distributed broker reader receives a second broker connection information request from the client, and requests the second broker connection information request. Accordingly, among a plurality of distributed brokers from which a distributed broker leader has been elected, a second optimal distributed broker, which is a distributed broker closest to the client, is selected from among the remaining distributed brokers except for the first optimal distributed broker whose connection request has failed. And a second broker connection information including information on the second optimal distributed broker to the client.
클라이언트가 코디네이터(coordinator) 서버에 브로커 매핑 정보를 요청하는 단계;
상기 코디네이터 서버가 프로세싱(processing) 서버에 브로커 리더 매핑 작업을 할당하는 단계;
상기 프로세싱 서버가 브로커 리더 매핑 작업을 할당받아 복수개의 분산 브로커 리더(broker leader)들 - 복수개의 분산 브로커들 중에서 선출된 어느 하나의 분산 브로커 리더 - 중에서 최적의 분산 브로커 리더를 선출하고, 상기 최적의 분산 브로커 리더에 대한 정보가 포함된 브로커 매핑 정보를 상기 클라이언트에 전송하는 단계;
상기 클라이언트가 상기 최적의 분산 브로커 리더에 제1 브로커 연결 정보를 요청하는 단계;
상기 최적의 분산 브로커 리더가 상기 제1 브로커 연결 정보 요청에 따라 분산 브로커 리더가 선출된 복수개의 분산 브로커들에서 제1 최적의 분산 브로커를 선출하고, 상기 제1 최적의 분산 브로커에 대한 정보가 포함된 제1 브로커 연결 정보를 상기 클라이언트에 전송하는 단계; 및
상기 클라이언트가 상기 제1 최적의 분산 브로커에 연결되는 단계를 포함하는 코디네이터 방법.
A coordinator method performed by a coordinator system,
A client requesting broker mapping information from a coordinator server;
The coordinator server assigning a broker leader mapping job to a processing server;
The processing server is assigned the broker leader mapping operation, and selects the optimal distributed broker leader among a plurality of distributed broker leaders-any one distributed broker leader selected from among multiple distributed brokers, and the optimal Transmitting broker mapping information including information on a distributed broker reader to the client;
Requesting, by the client, first broker connection information from the optimal distributed broker reader;
The optimal distributed broker leader selects the first optimal distributed broker from a plurality of distributed brokers selected by the distributed broker leader according to the first broker connection information request, and includes information about the first optimal distributed broker Transmitting the first broker connection information to the client; And
And the client connecting to the first optimal distributed broker.
상기 제1 최적의 분산 브로커에 연결되는 단계에서 상기 제1 최적의 분산 브로커에 대한 연결 요청이 실패(fail)한 경우,
상기 클라이언트가 상기 최적의 분산 브로커 리더에 제2 브로커 연결 정보를 요청하는 단계;
상기 최적의 분산 브로커 리더가 상기 제2 브로커 연결 정보 요청에 따라 분산 브로커 리더가 선출된 복수개의 분산 브로커들에서 상기 연결 요청이 실패한 제1 최적의 분산 브로커를 제외한 나머지 분산 브로커들 중에서 제2 최적의 분산 브로커를 선출하고, 상기 제2 최적의 분산 브로커에 대한 정보가 포함된 제2 브로커 연결 정보를 상기 클라이언트에 전송하는 단계; 및
상기 클라이언트가 상기 제2 최적의 분산 브로커에 연결되는 단계를 더 포함하는 코디네이터 방법.
The method of claim 9,
When the connection request to the first optimal distributed broker fails in the step of connecting to the first optimal distributed broker,
Requesting, by the client, second broker connection information from the optimal distributed broker reader;
The optimal distributed broker leader is the second optimal among the remaining distributed brokers except for the first optimal distributed broker in which the connection request has failed in a plurality of distributed brokers from which the distributed broker leader has been elected according to the second broker connection information request. Selecting a distributed broker, and transmitting second broker connection information including information about the second optimal distributed broker to the client; And
And the client connecting to the second optimal distributed broker.
상기 브로커 리더 매핑 작업을 할당하는 단계는 복수개의 프로세싱 서버들 중에서 상기 코디네이터 서버 및 나머지 프로세싱 서버들 사이에서 데이터를 전달하는 역할을 수행하기 위하여 선출된 프로세싱 서버 리더가 존재할 경우 상기 프로세싱 서버 리더에 상기 브로커 리더 매핑 작업을 할당하는 코디네이터 방법.
The method of claim 9,
The step of allocating the broker leader mapping operation is to include the broker in the processing server leader when there is a processing server leader elected to serve to transfer data between the coordinator server and the remaining processing servers among a plurality of processing servers. Coordinator method to assign leader mapping tasks.
상기 브로커 리더 매핑 작업을 할당하는 단계는
상기 프로세싱 서버 리더가 상기 코디네이터 서버로부터 할당받은 작업을 상기 복수개의 프로세싱 서버들 중 어느 하나의 프로세싱 서버에 토픽 형식으로 전달하는 단계를 더 포함하는 코디네이터 방법.
The method of claim 11,
The step of allocating the broker leader mapping operation is
And transmitting, by the processing server leader, a task allocated from the coordinator server to a processing server of any one of the plurality of processing servers in a topic format.
상기 제1 최적의 분산 브로커가 발행(Pub) 클라이언트로부터 특정 토픽(topic)에 대한 메시지를 수신하는 단계; 및
상기 특정 토픽을 구독하는 구독(Sub) 클라이언트에게 상기 메시지를 송신하는 단계를 더 포함하는 코디네이터 방법.
The method of claim 9,
Receiving, by the first optimal distribution broker, a message for a specific topic from a publishing client; And
And sending the message to a subscription client subscribing to the specific topic.
상기 최적의 분산 브로커 리더는 상기 복수개의 분산 브로커 리더들 중에서 상기 클라이언트와 가장 가까운 위치에 있는 분산 브로커이고,
상기 제1 최적의 분산 브로커는 상기 최적의 분산 브로커 리더가 포함된 브로커 그룹에서 상기 클라이언트에 가장 가까운 분산 브로커인 코디네이터 방법.The method of claim 9,
The optimal distributed broker leader is a distributed broker located closest to the client among the plurality of distributed broker leaders,
The first optimal distributed broker is a distributed broker closest to the client in a broker group including the optimal distributed broker leader.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR20170124113 | 2017-09-26 | ||
| KR1020170124113 | 2017-09-26 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20190035592A KR20190035592A (en) | 2019-04-03 |
| KR102119456B1 true KR102119456B1 (en) | 2020-06-05 |
Family
ID=66165110
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020180114865A Active KR102119456B1 (en) | 2017-09-26 | 2018-09-27 | Distributed Broker Coordinator System and Method in a Distributed Cloud Environment |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR102119456B1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11558474B2 (en) | 2021-02-01 | 2023-01-17 | Electronics and Telecommunications Research Instiitute | Brokering apparatus and brokering method for trusted reality service |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20220097555A (en) * | 2020-10-21 | 2022-07-08 | 한국전자기술연구원 | Container orchestrator based Memory Sharing Method for Multiple Message Protocols |
| WO2024135866A1 (en) * | 2022-12-19 | 2024-06-27 | 한국전자기술연구원 | Multilayer distributed processing system for user service requests in digital twin environment |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101877188B1 (en) | 2014-07-21 | 2018-07-10 | 콘비다 와이어리스, 엘엘씨 | Service layer interworking using mqtt protocol |
| KR20170058201A (en) | 2015-11-18 | 2017-05-26 | 한국전자통신연구원 | System for providing virtual network service in multi cloud environment and method thereof |
-
2018
- 2018-09-27 KR KR1020180114865A patent/KR102119456B1/en active Active
Non-Patent Citations (1)
| Title |
|---|
| 허의남외 2인, 'Publish/subscribe 시스템에서 효율적인 이벤트 전달을 위한 계층구조 기반 혼합 모델', 2016.06. |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11558474B2 (en) | 2021-02-01 | 2023-01-17 | Electronics and Telecommunications Research Instiitute | Brokering apparatus and brokering method for trusted reality service |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20190035592A (en) | 2019-04-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12047441B2 (en) | Multi-cluster ingress | |
| US11902429B2 (en) | Distributed secure multi party computation | |
| US6892316B2 (en) | Switchable resource management in clustered computer system | |
| JP7441823B2 (en) | Reduce latency for distributed storage operations using segment routing techniques | |
| CN105579965B (en) | Client Premises Resource Control via Provider Defined Interface | |
| US7089281B1 (en) | Load balancing in a dynamic session redirector | |
| CN113014611B (en) | Load balancing method and related equipment | |
| US9819626B1 (en) | Placement-dependent communication channels in distributed systems | |
| US20150012914A1 (en) | Distributed update service | |
| CN111309491B (en) | Operation cooperative processing method and system | |
| US20170024450A1 (en) | Systems and methods for autonomous, scalable, and distributed database management | |
| JP2004519024A (en) | System and method for managing a cluster containing multiple nodes | |
| CN108063813B (en) | Method and system for parallelizing password service network in cluster environment | |
| KR20020013401A (en) | Merge protocol for clustered computer system | |
| KR102119456B1 (en) | Distributed Broker Coordinator System and Method in a Distributed Cloud Environment | |
| US7966394B1 (en) | Information model registry and brokering in virtualized environments | |
| US12348593B2 (en) | Data streaming service with virtualized broker clusters | |
| US11872497B1 (en) | Customer-generated video game player matchmaking in a multi-tenant environment | |
| US10481963B1 (en) | Load-balancing for achieving transaction fault tolerance | |
| JPH076138A (en) | Subentry point interface architecture for change control in computer network | |
| US9942314B2 (en) | System and method for optimizing web service availability with a node group agreement protocol | |
| CN120017617B (en) | Multicast communication method and device, system, storage medium and program product | |
| CN113992683B (en) | Methods, systems, equipment and media to achieve effective isolation of dual networks in the same cluster | |
| CN112346853A (en) | Method and apparatus for distributing applications | |
| Namikata et al. | Methods of dynamic scaling with VM for high availability server clusters |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A201 | Request for examination | ||
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-3-3-R10-R18-oth-X000 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 5 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| P14-X000 | Amendment of ip right document requested |
St.27 status event code: A-5-5-P10-P14-nap-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R11-asn-PN2301 |
|
| P16-X000 | Ip right document amended |
St.27 status event code: A-5-5-P10-P16-nap-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-5-5-R10-R14-asn-PN2301 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 6 |
|
| R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
| S20 | Security interest recorded |
Free format text: ST27 STATUS EVENT CODE: A-4-4-S10-S20-LIC-X000 (AS PROVIDED BY THE NATIONAL OFFICE) |
|
| S20-X000 | Security interest recorded |
St.27 status event code: A-4-4-S10-S20-lic-X000 |