KR20140040948A - System and method for dynamic message routing - Google Patents
System and method for dynamic message routing Download PDFInfo
- Publication number
- KR20140040948A KR20140040948A KR1020120107654A KR20120107654A KR20140040948A KR 20140040948 A KR20140040948 A KR 20140040948A KR 1020120107654 A KR1020120107654 A KR 1020120107654A KR 20120107654 A KR20120107654 A KR 20120107654A KR 20140040948 A KR20140040948 A KR 20140040948A
- Authority
- KR
- South Korea
- Prior art keywords
- message
- server
- terminal
- servers
- session
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/214—Monitoring or handling of messages using selective forwarding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
본 발명은 동적 메시지 라우팅 시스템 및 방법에 관한 것으로서, 특히 동적으로 특정 단말 또는 세션과 서버 간의 연관 관계를 정하고 라우팅함으로써 메시지를 효율적으로 전달하기 위한 기술과 관련된다.
TECHNICAL FIELD The present invention relates to dynamic message routing systems and methods, and more particularly to techniques for efficiently delivering messages by dynamically establishing and routing associations between specific terminals or sessions and servers.
스마트폰 등의 모바일 단말의 사용이 증가하면서, 모바일 단말에 서비스를 제공하기 위한 서버 측 구조 또한 점차 대형화, 복잡화되고 있다. 일반적으로 특정 네트워크 내 엔티티(entity)가 원하는 단말 또는 세션에 메시지를 송신하기 위해서는, 메시지 전송 시마다 관련된 접속 정보를 저장하고 있는 데이터베이스에 해당 단말 또는 세션과 접속된 메시지 서버의 정보를 질의하거나, 또는 메시지 자체에 단말 또는 세션의 정보를 포함하여야 한다. As the use of mobile terminals such as smartphones increases, the server-side structure for providing services to mobile terminals is also becoming larger and more complicated. In general, in order to send a message to a terminal or a session desired by an entity in a specific network, a query for information on a message server connected to the terminal or session is queried in a database that stores relevant connection information each time a message is transmitted, or a message It should include information of terminal or session in itself.
그러나 이와 같이 메시지 전송 시마다 데이터베이스에 메시지 서버의 정보를 질의할 경우, 메시지가 증가할수록 데이터베이스로의 액세스 또한 함께 증가하게 되며 이 과정에서 심각한 병목 현상이 발생되는 문제가 있었다. 또한, 이를 해결하기 위하여 메시지 자체에 모든 대상 단말들에 대한 주소 정보를 부가할 경우 이에 따른 메시지의 용량 증가로 인하여 메시지 전송의 오버헤드가 증가하는 문제가 존재하였다.
However, in the case of querying the information of the message server to the database every time the message is transmitted, access to the database also increases as the message increases, and there is a problem that a serious bottleneck occurs in this process. In addition, in order to solve this problem, when address information about all target terminals is added to the message itself, there is a problem in that an overhead of message transmission increases due to an increase in the capacity of the message.
본 발명의 실시예들은 동적으로 특정 단말 또는 세션과 메시지 서버간의 연결 관계를 정하고 이에 따라 메시지를 라우팅함으로써 메시지 처리의 효율성을 향상시킬 수 있는 동적 메시지 라우팅 기술을 제공하기 위한 것이다.
Embodiments of the present invention are to provide a dynamic message routing technique that can improve the efficiency of message processing by dynamically establishing a connection relationship between a specific terminal or session and a message server and routing messages accordingly.
본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템은, 하나의 서버군을 형성하는 복수 개의 메시지 서버, 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 메시지 라우팅 서버, 및 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하며, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 디렉토리 서버를 포함한다.A dynamic message routing system according to an embodiment of the present invention receives a message related to a plurality of message servers, a specific terminal or a session forming one server group, and is assigned to the terminal or session among the plurality of message servers. A message routing server for routing the message to a message server, and one or more hash values for each message server are generated using identification keys of the plurality of message servers, and the plurality of message servers are generated according to the generated hash values. And a directory server for generating a group of logical servers arranged in a ring form, and allocating one message server among the message servers included in the logical server group to the terminal or the session.
한편, 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법은, 디렉토리 서버에서, 하나의 서버군을 형성하는 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 단계, 메시지 라우팅 서버에서, 특정 단말 또는 세션과 관련된 메시지를 수신하는 단계, 상기 디렉토리 서버에서, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 단계, 및 상기 메시지 라우팅 서버에서, 상기 디렉토리 서버에 의해 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 단계를 포함한다.On the other hand, in the dynamic message routing method according to an embodiment of the present invention, at least one hash value is generated for each message server by using the identification keys of each of the plurality of message servers forming one server group in the directory server. Generating a logical server group in which the plurality of message servers are arranged in a ring form according to the generated hash value, receiving a message related to a specific terminal or a session at a message routing server, and at the directory server, Assigning one message server among the message servers included in the server group to the terminal or session, and routing the message from the message routing server to the message server assigned to the terminal or session by the directory server. It includes.
한편, 본 발명의 일 실시예에 따른 디렉토리 서버는, 하나의 서버군을 형성하는 복수 개의 메시지 서버에 대하여, 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 논리 서버군 생성 모듈, 및 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 특정 단말 또는 세션에 할당하는 메시지 서버 할당 모듈을 포함한다.
Meanwhile, the directory server according to an embodiment of the present invention generates one or more hash values for each message server by using identification keys of each of the plurality of message servers, for a plurality of message servers forming one server group. And a logical server group generation module for generating a logical server group in which the plurality of message servers are arranged in a ring form according to the generated hash value, and one message server among the message servers included in the logical server group. Or a message server assignment module for allocating sessions.
본 발명의 실시예들에 따를 경우, 특정 단말 또는 세션에 할당된 메시지 서버의 정보를 알기 위하여 별도의 데이터베이스에 액세스할 필요가 없으므로, 데이터베이스 액세스로 인한 병목 현상을 없앨 수 있으며 이에 따라 시스템 전체의 처리 성능을 향상시킬 수 있는 장점이 있다.According to embodiments of the present invention, since it is not necessary to access a separate database to know the information of the message server assigned to a specific terminal or session, it is possible to eliminate the bottleneck caused by the database access, thereby processing the entire system This has the advantage of improving performance.
또한, 본 발명의 실시예들에 따르면, 특정 세션에 속한 단말들로 메시지 송신 시 해당 메시지에 각 대상 단말들의 네트워크 주소를 포함할 필요 없이 해당 세션 아이디만을 메시지에 포함하면 되므로, 메시지 용량의 오버헤드를 감소시킬 수 있다. 이에 따라 해당 메시지를 처리하기 위한 네트워크 대역폭 및 서버 자원(CPU, 메모리 I/O) 또한 종래기술에 비해 대폭 절감할 수 있게 된다. 이는 특히 작은 용량의 메시지 송수신이 매우 빈번하게 일어나는 개인간/그룹간 인스턴트 메시징 또는 VoIP 등의 처리에 매우 효과적이다.
In addition, according to embodiments of the present invention, when transmitting a message to the terminals belonging to a particular session, only the corresponding session ID is included in the message without including the network address of each target terminal in the corresponding message. Can be reduced. Accordingly, network bandwidth and server resources (CPU, memory I / O) for processing the message can also be significantly reduced compared to the prior art. This is particularly effective for processing between individual / group instant messaging or VoIP, where small messages are transmitted and received very frequently.
도 1은 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 생성된 논리 서버군을 예시한 도면이다.
도 3은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 가능 상태에서 접속 불가 상태로 전환된 예를 설명하기 위한 도면이다.
도 4은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 불가 상태에서 접속 가능 상태로 전환된 예를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법(500)을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 디렉토리 서버(106)의 상세 구성을 나타낸 도면이다.1 is a diagram illustrating a dynamic
2 is a diagram illustrating a logical server group created according to an embodiment of the present invention.
3 is a view for explaining an example in which some of the servers belonging to the plurality of
4 is a view for explaining an example in which some of the servers belonging to the plurality of
5 is a diagram illustrating a dynamic
6 is a diagram showing the detailed configuration of the
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. However, this is merely an example and the present invention is not limited thereto.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. In the following description, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear. The following terms are defined in consideration of the functions of the present invention, and may be changed according to the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
The technical idea of the present invention is determined by the claims, and the following embodiments are merely a means for effectively explaining the technical idea of the present invention to a person having ordinary skill in the art to which the present invention belongs.
도 1은 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)을 설명하기 위한 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)은 복수 개의 메시지 서버(102), 메시지 라우팅 서버(104), 디렉토리 서버(106) 및 감시 서버(108)를 포함하며, 상기 각 구성요소들은 유/무선 네트워크(110)를 통하여 서로 연결되어 데이터를 송수신한다.1 is a diagram illustrating a dynamic
메시지 서버(102)는 특정 단말(미도시) 또는 세션과 접속되어 상기 단말 또는 세션과 관련된 메시지를 처리하기 위한 서버이다. 예를 들어, 메시지 서버(102)는 복수 개의 단말들이 참여하는 그룹 채팅방을 개설하고, 상기 그룹 채팅방 내에서의 그룹 채팅을 처리하기 위한 채팅 서버이거나, 또는 단말간의 음성 채팅, 또는 복수 개의 단말 사이의 다자간 음성/영상 회의 등을 중계하는 서버일 수 있다. 다만, 본 발명은 이에 한정되는 것은 아니며, 하나 이상의 단말과 접속되어 해당 단말로부터 수신되는 메시지를 처리하기 위한 서버라면 제한 없이 본 발명의 메시지 서버(102)가 될 수 있다. 본 발명에서는 동일한 기능을 수행하는 다수 개의 메시지 서버들을 병렬로 배치하여 하나의 서버군을 형성하며, 상기 서버군에 속한 메시지 서버(102)들은 각각 소정의 서버 할당 규칙에 따라 특정 단말 또는 세션에 할당된다.The
이때, 상기 단말은 복수 개의 메시지 서버(102) 중 하나와 접속을 유지하면서 접속중인 메시지 서버로부터 메시지를 수신하거나 또는 해당 메시지 서버로 메시지를 송신하기 위한 네트워크 내 구성요소를 의미한다. 본 발명의 실시예에서 단말은 스마트폰, 태블릿 PC, 셀룰러폰 등의 모바일 디바이스, 데스크탑 또는 노트북 컴퓨터 등의 개인용 또는 휴대용 사용자 기기들을 포함할 수 있다. 한편, 본 발명의 실시예에서 단말은 반드시 클라이언트측 디바이스만을 의미하는 것은 아니며, 애플리케이션 서버 또는 다른 형태의 서버 또한 메시지 서버(102)와 메시지를 송수신할 경우 본 발명에서의 단말이 될 수 있다. 또한 상기 단말은 메시지 서버(102)와 직접 연결될 수도 있으며, 별도의 연결 서버를 경유하여 메시지 서버(102)와 연결될 수도 있다.In this case, the terminal refers to a component in the network for receiving a message from the message server being connected or transmitting a message to the message server while maintaining a connection with one of the plurality of
한편, 전술한 바와 같이 메시지 서버(102) 각각에 단말이 할당될 경우, 메시지 서버(102)는 자신에게 할당된 단말로부터 메시지 수신자 리스트를 수신하여 저장할 수 있다. 이때 상기 메시지 수신자 리스트는 해당 단말이 송신하는 멀티캐스트 메시지를 수신할 단말의 목록으로서, 예를 들어 상기 단말에 저장된 주소록(contact list)일 수 있다. 이와 같이 메시지 서버(102)에 메시지 수신자 리스트가 저장될 경우, 단말은 메시지 서버(102)로 멀티캐스트 메시지를 송신할 수 있으며, 이를 수신한 메시지 서버(102)는 상기 메시지 수신자 리스트에 포함된 단말들로 수신된 상기 멀티캐스트 메시지를 송신할 수 있다. 이와 같이 단말과 연결된 메시지 서버(102)가 단말 별 메시지 수신자 리스트를 저장할 경우에는 메시지 멀티캐스팅 시마다 별도의 데이터베이스 룩업(lookup) 등을 통하여 멀티캐스트 메시지 수신 대상 단말의 정보를 조회할 필요가 없으므로 메시지 전송의 오버헤드를 감소할 수 있다. 이는 특히 인스턴트 메시징 등에서 특정 단말의 프로필 변경 등을 타 단말에 전달할 경우 효과적으로 사용될 수 있다.On the other hand, when the terminal is assigned to each of the
한편, 상기 단말과 연결된 메시지 서버(102)에 장애가 발생하거나, 또는 새로운 메시지 서버(102)가 추가되는 등으로 인하여 상기 단말과 연결된 메시지 서버(102)가 변경될 경우, 상기 단말은 변경된 메시지 서버(102)로 상기 메시지 수신자 리스트를 재송신할 수 있다.On the other hand, when the
한편, 상기 세션은 둘 이상의 단말 상호간의(또는 단말과 서버 상호간의) 일련의 연속적인 커뮤니케이션(interactive communication dialog)을 의미한다. 예를 들어 상기 세션은 1:1 또는 그룹 채팅 등이 될 수 있다. 즉, 메시지 서버(102)는 복수 개의 단말들이 참여하는 특정 채팅 그룹에 할당되어 해당 채팅 그룹과 관련된 메시지들을 처리하도록 구성될 수 있다.Meanwhile, the session refers to a series of interactive communication dialogs between two or more terminals (or terminals and servers). For example, the session may be 1: 1 or group chat. That is, the
메시지 라우팅 서버(104)는 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅한다. 상기 메시지는 네트워크 내에 존재하는 네트워크 엔티티로부터 수신된 것일 수 있으며, 상기 네트워크 엔티티는 예를 들어 네트워크 내의 특정 서버 또는 다른 단말 등이 될 수 있다. 구체적으로, 메시지 라우팅 서버(104)는 상기 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 단말 또는 세션에 할당된 메시지 서버(102)가 어떤 것인지를 후술할 디렉토리 서버(106)에 질의한다. 이후, 메시지 라우팅 서버(104)는 상기 질의에 대한 응답으로 디렉토리 서버(106)로부터 메시지 서버(102)의 정보를 수신하고, 수신된 상기 정보를 이용하여 수신된 상기 메시지를 라우팅한다. 또한, 메시지 라우팅 서버(104)는 네트워크 내 다른 엔티티로부터 메시지를 수신하여 이를 라우팅하는 것이 아니라, 직접 특정 단말로 전송할 메시지를 생성하여 이를 메시지 서버(102)로 라우팅할 수도 있다.The
디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 해시값에 따라 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성한다. 또한, 디렉토리 서버(106)는 메시지 라우팅 서버(104)로부터 특정 단말 또는 세션에 할당된 메시지 서버(102)에 대한 질의를 수신하고, 이에 따라 상기 논리 서버군에 속한 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버(102)에 대한 정보를 메시지 라우팅 서버(104)로 제공한다. 상기 논리 서버군 생성 및 각 메시지 서버의 할당과 관련된 상세한 사항은 후술하기로 한다.The
한편, 도시된 실시예에서는 복수 개의 메시지 서버(102)와 별도로 메시지 라우팅 서버(104) 및 디렉토리 서버(106)가 존재하는 것으로 도시하였으나, 이는 단지 기능적인 분류에 불과하다. 즉, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 물리적으로 복수 개의 메시지 서버(102)와 별도의 컴퓨터 장치로 구현될 수도 있고, 또는 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106) 중 적어도 하나의 역할을 겸할 수 있으며, 두 경우 모두 본 발명의 권리범위 내에 포함된다. 만약 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106)의 역할을 겸하도록 구성되는 경우, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 메시지 서버(102)를 구성하는 일 구성요소로서 존재하게 되며, 이 경우 특정 단말 또는 세션과 관계된 메시지는 일차적으로 복수 개의 메시지 서버(102) 중 임의로 선택된 하나의 메시지 서버로 전달되었다가, 해당 단말 또는 세션에 할당된 다른 메시지 서버로 라우팅될 수 있다.Meanwhile, in the illustrated embodiment, the
이를 예를 들어 설명하면 다음과 같다. 먼저, 네트워크 내의 특정 단말(송신측 단말)이 상기 네트워크 내의 다른 단말(수신측 단말)로 메시지를 전달한다고 가정하자. 이 경우 상기 송신측 단말은 자신에게 할당된 메시지 서버(102)로 상기 메시지를 전송하며, 이때 상기 메시지에는 수신측 단말의 네트워크 주소가 포함된다. 상기 메시지를 수신한 메시지 서버(102)는 상기 메시지를 메시지 라우팅 서버(104)로 전송하며, 메시지 라우팅 서버(104)는 상기 메시지에 포함된 수신측 단말의 네트워크 주소를 이용하여 디렉토리 서버(106)에 상기 수신측 단말과 연결된 메시지 서버(102)를 할당해 줄 것을 요청한다. 그러면 디렉토리 서버(106)는 상기 요청에 따라 상기 수신측 단말에 할당된 메시지 서버 정보를 송신측 메시지 서버(102)로 회신한다. 이후, 메시지 라우팅 서버(104)는 회신된 상기 메시지 서버 정보에 따라 상기 메시지를 수신측 단말과 연결된 메시지 서버(102)로 전달하며, 이를 수신한 메시지 서버(102)는 수신된 메시지를 수신측 단말로 전송한다. 즉, 이 경우 상기 메시지는 다음과 같은 경로를 거쳐 전달될 수 있다.
An example of this is as follows. First, assume that a specific terminal (transmitting terminal) in a network delivers a message to another terminal (receiving terminal) in the network. In this case, the transmitting terminal transmits the message to the
송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Sending terminal-> Message server connected with sending terminal-> Message routing server-> Message server connected with receiving terminal-> Receiving terminal
한편, 실시예에 따라 송신측 단말은 자신과 연결된 메시지 서버(102)를 거치지 않고 직접 메시지 라우팅 서버(104)로 메시지를 전송할 수도 있으며, 이 경우 상기 메시지는 다음과 같은 경로를 거쳐 전달될 수 있다.
Meanwhile, according to an embodiment, the transmitting terminal may transmit a message directly to the
송신측 단말 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Sending terminal-> Message routing server-> Message server connected with receiving terminal-> Receiving terminal
또한, 실시예에 따라 메시지 라우팅 서버(104)는 별도의 하드웨어적 구성으로 네트워크 내에 존재하는 것이 아니라, 각 메시지 서버(102)들이 메시지 라우팅 서버(104)의 기능을 겸할 수 있다. 이 경우, 상기 경로는 다음과 같이 구성될 수 있다.
In addition, according to an embodiment, the
송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Sending terminal-> Message server connected with sending terminal-> Message server connected with receiving terminal-> Receiving terminal
즉, 이 경우 송신측 단말과 연결된 메시지 서버(102)가 기 설정된 서버 할당 규칙을 이용하여 수신측 단말과 연결된 메시지 서버를 알아내고 해당 메시지 서버로 메시지를 바로 전달할 수 있다.That is, in this case, the
또한, 메시지 라우팅 서버(104)는 다른 단말 뿐만 아니라, 네트워크내 다른 서버(애플리케이션 서버 등)로부터 메시지를 수신하고, 이를 단말로 전송할 수도 있다. 이 경우 메시지 전송 경로는 다음과 같다.
In addition, the
네트워크 내 다른 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Other servers in the network-> Message routing server-> Message server connected to receiving terminal-> Receiving terminal
또한, 전술한 바와 같이 각 메시지 서버(102)가 메시지 라우팅 서버(104)의 기능을 겸할 경우, 상기 메시지는 메시지 라우팅 서버(104)로 전달되는 것이 아니라 임의의 메시지 서버(102)로 전달될 수 있다. 즉, 상기 메시지는 다음과 같이 전송될 수 있다.
In addition, as described above, when each
네트워크 내 다른 서버 -> 임의의 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Other servers in the network-> Any message server-> Message server connected to the receiving terminal-> Receiving terminal
한편, 메시지 라우팅 서버(104)에서 직접 메시지를 생성하여 단말로 전송하는 것도 가능하며, 이 경우 메시지 전송 경로는 다음과 같다.
On the other hand, it is also possible to generate a message directly from the
메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Message routing server-> Message server connected with receiving terminal-> receiving terminal
다음으로, 감시 서버(108)는 주키퍼(zookeeper)라고도 하며, 복수 개의 메시지 서버(102)들의 동작 상태를 감시하고, 복수 개의 메시지 서버(102) 중 적어도 하나의 메시지 서버의 동작 상태가 변화할 경우 이를 상기 서버군에 속한 다른 메시지 서버들 및 디렉토리 서버(106)에 통지한다. 예를 들어, 감시 서버(108)는 복수 개의 메시지 서버(102) 중 어느 하나의 서버의 동작이 중지되어 단말의 접속이 불가능한 경우, 동작이 중지된 서버가 다시 동작할 경우(즉, 접속 가능 상태로 변경될 경우) 또는 새로운 메시지 서버가 추가된 경우 등의 이유로 인해 메시지 서버들의 동작 상태가 변화할 경우, 이에 대한 정보를 복수 개의 메시지 서버(102) 및 디렉토리 서버(106)에 통지한다. 이에 따라 디렉토리 서버(106)는 현재 어떤 서버가 살아있는지 또는 죽었는지의 정보를 실시간으로 수신할 수 있으며, 이를 이용하여 현재 동작 중인(살아 있는) 서버만을 포함하도록 상기 논리 서버군을 생성하게 된다. 또한 디렉토리 서버(106)는 감시 서버(108)로부터 복수 개의 메시지 서버(102) 중 적어도 하나의 서버의 동작 상태 변경을 수신할 경우(즉, 특정 서버가 죽거나 살아난 경우 또는 새로운 서버가 추가된 경우) 기 생성된 논리 서버군에 상기 변경을 반영하여 논리 서버군을 재생성(업데이트)하게 된다.Next, the
도 2는 본 발명의 일 실시예에 따라 생성된 논리 서버군을 예시한 도면이다. 도면에서는 복수 개의 메시지 서버(102)가 서버 A, B, C 및 D의 4개의 서버로 구성되는 예를 도시한 것이나, 복수 개의 메시지 서버(102) 내에 포함되는 메시지 서버의 개수에는 제한이 없으며, 필요한 개수만큼 메시지 서버를 구비할 수 있다.2 is a diagram illustrating a logical server group created according to an embodiment of the present invention. In the drawings, an example in which the plurality of
디렉토리 서버(106)에서 논리 서버군을 생성하는 과정은 다음과 같다. 먼저, 디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 N개(N은 1 이상의 정수)의 해시값을 생성한다. 이때, 상기 복수 개의 메시지 서버(102) 각각의 식별키는 예를 들어 각 메시지 서버의 IP 또는 맥 어드레스 등이 될 수 있다. 또한, 각 메시지 서버 별로 생성되는 N개의 해시값들은 각각 서로 다른 값을 가지도록 구성된다.The process of creating a logical server group in the
예를 들어, 만약 각 메시지 서버의 IP를 이용하여 해시값을 생성할 경우에는 다음과 같은 수학식을 이용하여 해시값을 생성할 수 있다.
For example, if a hash value is generated using the IP of each message server, the hash value can be generated using the following equation.
[수학식 1][Equation 1]
해시값 = 해시함수(서버의 IP주소 + I, I = 1, ...,N)
Hash value = hash function (server's IP address + I, I = 1, ..., N)
즉, 각 메시지 서버의 IP주소에 1부터 N까지의 정수를 차례로 더한 값을 각각 해시함수를 이용하여 해싱(hashing)함으로써 N개의 해시값을 생성할 수 있다. 그러나, 상술한 해시값 생성 방법은 단지 하나의 예일 뿐, 이밖에 위 조건들을 만족하는 어떠한 방법으로도 해시값을 생성할 수 있음은 자명하다.That is, N hash values can be generated by hashing each message server's IP address by adding an integer from 1 to N in turn using a hash function. However, the above-described hash value generating method is just one example, and it is apparent that the hash value may be generated by any method satisfying the above conditions.
상기와 같은 방법을 통하여 각 메시지 서버 별로 N개씩의 해시값이 생성되면, 디렉토리 서버(106)는 생성된 해시값에 따라 복수 개의 메시지 서버(102)를 고리 형태로 배열한다. 예를 들어, 디렉토리 서버(106)는 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 고리 내에 배열되도록 논리 서버군을 생성할 수 있다. 이때, 복수 개의 메시지 서버(102) 각각은 생성된 해시값의 개수(N)만큼 상기 고리 내에 중복되어 배열된다.When N hash values are generated for each message server through the above method, the
만약, 메시지 서버 A, B, C 및 D에 대하여 4개씩(N=4)의 해시값을 계산한 결과가 다음과 같다고 가정하자.
Suppose that the results of calculating four hash values for message servers A, B, C, and D (N = 4) are as follows.
서버 A: 0, 54, 20, 72Server A: 0, 54, 20, 72
서버 B: 37, 65, 7, 86Server B: 37, 65, 7, 86
서버 C: 94, 51, 13, 25Server C: 94, 51, 13, 25
서버 D: 16, 46, 61, 82
Server D: 16, 46, 61, 82
상기 해시값을 이용하여 4개의 메시지 서버를 고리 내에 해시값에 따른 오름차순으로 배열하면 도 2와 같다(도면에서 괄호 안의 숫자는 계산된 해시값을 의미). 도시된 바와 같이, 각 메시지 서버 별로 4개씩의 해시값을 계산하였으므로, 논리 서버군 내에서도 동일한 서버가 해시값에 따라 4번씩 중복되어 나타난다.If four message servers are arranged in an ascending order according to hash values in a ring using the hash values, the message servers are shown in FIG. 2 (the numbers in parentheses in the figure mean calculated hash values). As shown, since four hash values are calculated for each message server, the same server is duplicated four times according to the hash value in the logical server group.
이와 같이 논리 서버군이 생성된 이후, 디렉토리 서버(106)는 메시지 라우팅 서버(104)로부터 특정 단말 또는 세션과 관련된 메시지의 라우팅을 위한 메시지 서버 할당 요청을 수신하고, 해당 단말 또는 세션의 식별키로부터 생성된 해시값 및 기 설정된 서버 할당 규칙을 이용하여 논리 서버군에 포함된 복수 개의 메시지 서버 중 하나를 단말에 할당한다.After the logical server group is generated as described above, the
예를 들어, 디렉토리 서버(106)는 상기 단말의 식별키(해당 단말의 IP주소 또는 맥 어드레스 등) 또는 상기 세션의 식별키(세션 아이디 등)을 기 설정된 해시함수를 이용하여 해싱함으로써 해시값(질의 해시값)을 계산할 수 있다.For example, the
또한, 상기 서버 할당 규칙은, 예를 들어 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성되거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성될 수 있다. 그러나 상술한 서버 할당 규칙은 단지 예시에 불과한 것으로서, 단말 또는 세션의 식별키에 따라 메시지 서버를 할당하기 위한 다른 종류의 규칙 또한 제한 없이 적용 가능하다.In addition, the server assignment rule is configured to allocate, for example, a message server having the smallest hash value among the message servers having a hash value larger than the query hash value to the terminal, or a hash value smaller than the query hash value. The branch may be configured to allocate a message server having the largest hash value among the message servers to the terminal. However, the above-described server allocation rule is merely an example, and other types of rules for allocating a message server according to an identification key of a terminal or a session may also be applied without limitation.
이를 예를 들어 설명하면 다음과 같다. 만약 특정 단말의 IP 주소로부터 생성된 질의 해시값이 다음과 같다고 가정하자.
An example of this is as follows. Assume that the query hash value generated from the IP address of a specific terminal is as follows.
해시함수(클라이언트 IP 주소) = 22
Hash Function (Client IP Address) = 22
만약 상기 서버 할당 규칙이 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 서버를 단말에 할당하도록 구성될 경우, 도 2에서 22보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버는 25의 해시값을 가지는 서버 C이므로, 디렉토리 서버(106)는 단말에 서버 C를 할당하고, 이에 따른 서버 할당 메시지를 단말에 송신한다. 그러면 이를 수신한 단말은 서버 C에 접속을 수행한다.
If the server assignment rule is configured to assign a server having the smallest hash value among the message servers having a hash value larger than the query hash value to the terminal, the smallest hash among the message servers having a hash value greater than 22 in FIG. 2. Since the message server having a value is a server C having a hash value of 25, the
도 3은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 메시지 서버 중 일부가 접속 가능 상태에서 접속 불가 상태로 전환된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 불가 상태로 전환된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 불가 상태로 전환된 경우에도 이와 동일한 알고리즘이 적용된다.3 is a diagram illustrating an example in which some of the message servers belonging to the plurality of
도시된 실시예에서와 같이 서버 C가 접속 불가 상태로 전환된 경우, 디렉토리 서버(106)로부터 서버 C를 할당받은 메시지 전송 서버(104)는 먼저 서버 C에 대한 접속을 시도한다. 그러나 서버 C는 현재 장애 등의 이유로 접속이 불가능하므로, 메시지 전송 서버(104)는 디렉토리 서버(106)로부터 서버 C를 대체할 예비 서버의 정보를 수신하고 수신된 정보에 따라 예비 서버로 상기 메시지를 전송할 수 있다.When server C is switched to the unreachable state as in the illustrated embodiment, the
상기 예비 서버는, 예를 들어 상기 논리 서버군에 속한 서버 중 주 서버(메시지 서버 할당 알고리즘에 따라 선택된 서버)가 없다고 가정할 경우 해당 단말 또는 세션에 할당되었을 것이라고 가정되는 서버가 될 수 있다. 예를 들어, 전술한 실시예에서 단말(102)의 해시값이 22일 경우, 만약 서버 C가 없다고 가정하면 해시값 37을 가지는 서버 B가 할당되었을 것이므로, 디렉토리 서버(106)는 주 서버로 서버 C를, 예비 서버로 서버 B를 할당할 수 있다. 그러나 이와 같은 예비 서버 할당 알고리즘은 예시적인 것으로서, 본 발명은 특정 예비 서버 할당 알고리즘에 한정되는 것은 아님에 유의한다. The spare server may be, for example, a server that is assumed to have been allocated to the corresponding terminal or session when it is assumed that there is no main server (server selected according to the message server allocation algorithm) among servers belonging to the logical server group. For example, in the above-described embodiment, if the hash value of the terminal 102 is 22, the server B having the hash value 37 would have been allocated, assuming that there was no server C, the
이와 같이 주 서버와 예비 서버가 함께 할당될 경우 메시지 전송 서버(104)는 먼저 주 서버로의 메시지 송신을 시도하고, 주 서버로의 접속이 불가능하다고 판단되는 경우 예비 서버로 메시지를 전송하게 된다. 예를 들어, 단말의 해시값이 47일 경우 전술한 알고리즘에 따라 단말은 주 서버로 서버 C(해시값 51), 예비 서버로 서버 A(해시값 54)를 각각 할당받으므로, 예비 서버인 서버 A에 접속하게 된다.As such, when the main server and the spare server are allocated together, the
이후, 시간이 지나면 디렉토리 서버(106) 또한 서버 C의 접속 불가 상태를 반영하여 논리 서버군을 재생성하므로, 서버 A는 자연스럽게 해당 단말 또는 세션에 대한 예비 서버가 아닌 주 서버가 된다. 즉, 디렉토리 서버(106)는 기 설정된 주기 별로 각 메시지 서버의 상태를 반영하여 논리 서버군을 재생성하도록 구성되는 바, 해당 주기가 경과되면 서버 C는 재생성된 논리 서버군에서 제외되므로 서버 A가 해당 단말 또는 세션에 대한 주 서버가 된다. 상기 주기는 메시지 서버 등의 특성을 고려하여 적절하게 정해질 수 있다.
Then, as time passes, the
도 4는 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 불가 상태에서 접속 가능 상태로 전환되거나, 또는 새로운 메시지 서버가 추가된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태에서 접속 가능 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 가능 상태로 전환되거나 또는 추가된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 가능 상태로 전환되거나 또는 추가된 경우에도 이와 동일한 알고리즘이 적용된다.4 is a view for explaining an example in which some of the servers belonging to the plurality of
도시된 실시예에서와 같이 서버 C가 접속 불가 상태에서 접속 가능 상태로 전환된 경우, 다른 서버들에 접속된 단말 중 상기 서버 C로 접속되어야 할 단말들이 존재할 수 있다. 예를 들어, 해시값이 11인 단말 또는 세션은 서버 C가 존재하지 않는 환경에서는 서버 D(해시값 16)에서 처리되나, 서버 C(해시값 13)가 접속 가능할 경우에는 서버 C에서 처리되어야 한다. 따라서 이 경우 각 메시지 서버들은 자신에게 할당된 단말 또는 세션 중 새로 추가된 메시지 서버에 접속되어야 한다고 판단되는 단말 또는 세션에 추가된 메시지 서버로의 접속 변경 요청을 송신하여 각 단말들이 정상적인 주 서버에 접속될 수 있도록 한다.As shown in the illustrated embodiment, when the server C is switched from the unreachable state to the accessible state, there may be terminals to be connected to the server C among terminals connected to other servers. For example, a terminal or session with a hash value of 11 should be handled by server D (hash value 16) in an environment where server C does not exist, but should be handled by server C when server C (hash value 13) is accessible. . Therefore, in this case, each message server sends a connection change request to the terminal assigned to it or the message server added to the session or the terminal determined to be connected to the newly added message server among the sessions, so that each terminal accesses the normal main server. To be possible.
한편, 이 경우 각 메시지 서버들이 동시에 자신에게 할당된 단말 또는 세션에 접속 변경 요청을 송신할 경우에는 일시적으로 새로운 서버로의 접속 요청이 한꺼번에 일어나게 되어 네트워크 트래픽이 순간적으로 폭증할 우려가 있다. 따라서 이를 방지하기 위하여, 각 메시지 서버들은 기 설정된 최대 지연 시간의 범위 내에서 임의로 선택된 지연 시간만큼 대기한 후 주 서버로의 접속 변경 요청을 송신하도록 구성될 수 있다. 예를 들어, 도시된 실시예에서 최대 지연 시간이 1분일 경우, 서버 A는 13초만큼, 서버 B는 32초만큼, 서버 D는 52초만큼 대기한 후 자신에 연결된 단말로 접속 변경 요청을 송신할 수 있으며, 이와 같이 구성됨으로써 시간대별로 트래픽을 분산할 수 있게 된다.On the other hand, in this case, when each message server simultaneously transmits a connection change request to a terminal or a session allocated to it, a connection request to a new server may occur temporarily, and network traffic may explode momentarily. Therefore, in order to prevent this, each message server may be configured to transmit a connection change request to the main server after waiting for a randomly selected delay time within a preset maximum delay time. For example, in the illustrated embodiment, when the maximum delay time is 1 minute, server A waits for 13 seconds, server B for 32 seconds, and server D waits for 52 seconds, and then transmits a connection change request to a terminal connected to the terminal. In this way, the traffic can be distributed according to time slots.
또한, 상기 접속 변경 요청을 송신하기 전이라도, 각 메시지 서버들은 자신에게 접속한 단말 중 새로 추가된 메시지 서버에 접속되어야 한다고 판단되는 클라이언트에 대한 연결 정보를 추가된 메시지 서버에 전송할 수 있다. 이와 같이 구성될 경우 추가된 메시지 서버는 자신과 연결되어야 하나 아직 실제로 연결되지 않은 단말 또는 세션으로 송신한 메시지를 메시지 라우팅 서버(104)로부터 수신할 경우, 실제 단말과 접속된 메시지 서버로부터 받은 정보를 이용하여 해당 메시지 서버로 수신한 메시지를 포워딩할 수 있다.In addition, even before transmitting the connection change request, each message server may transmit connection information about a client determined to be connected to a newly added message server among terminals connected to the message server. When the message server is configured in this way, the added message server should be connected with itself, but when it receives a message transmitted from the
예를 들어, 도면에서 서버 D에 연결되어 있던 단말의 경우, 서버 C의 추가로 인하여 서버 D가 아닌 서버 C에 연결되어야 할 경우가 발생할 수 있다. 이 경우 서버 D는 소정 시간이 경과한 후 단말로 서버 C로 재접속할 것을 요청하게 된다. 그러나 만약 상기 재접속 수행 전 메시지 라우팅 서버(104)로부터 단말로 송신할 메시지가 존재하는 경우 해당 메시지는 업데이트된 논리 서버군 정보에 따라 서버 C로 전송되게 된다. 이러한 경우의 효율적인 처리를 위해 서버 D는 단말의 재접속 수행 전까지 해당 단말이 자신과 접속하고 있다는 정보를 서버 C로 전송하게 되며, 이에 따라 서버 C는 메시지 라우팅 서버(104)로부터 수신된 메시지를 서버 D로 전달하여 단말로 전달될 수 있도록 한다.
For example, in the case of the terminal connected to the server D in the drawing, it may occur when the connection to the server C rather than the server D due to the addition of the server C. In this case, the server D requests the terminal to reconnect to the server C after a predetermined time elapses. However, if there is a message to be transmitted from the
도 5는 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법(500)을 설명하기 위한 순서도이다.5 is a flowchart illustrating a dynamic
먼저, 디렉토리 서버(106)에서 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다(502). 전술한 바와 같이, 본 단계는 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있으며, 이 경우 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.First, for the plurality of
다음으로, 메시지 라우팅 서버(104)에서 특정 단말 또는 세션과 관련된 메시지를 수신하고(504), 상기 논리 서버군에 포함된 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 대응되는 메시지 서버의 정보를 디렉토리 서버(106)로 요청한다(506).Next, the
다음으로, 디렉토리 서버(106)는 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 해시값 및 기 설정된 서버 할당 규칙을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하고(508) 이에 대한 정보를 메시지 라우팅 서버(104)로 제공한다(510).Next, the
이후, 메시지 라우팅 서버(104)는 디렉토리 서버(106)로부터 제공된 메시지 서버 정보를 이용하여 상기 메시지를 라우팅한다(512).
The
도 6은 본 발명의 일 실시예에 따른 디렉토리 서버(106)의 상세 구성을 나타낸 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 디렉토리 서버(106)는 논리 서버군 생성 모듈(600) 및 메시지 서버 할당 모듈(602)을 포함한다.6 is a diagram showing the detailed configuration of the
논리 서버군 생성 모듈(600)은 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다. 이때, 논리 서버군 생성 모듈(600)은 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있다. 또한, 논리 서버군 생성 모듈(600)은 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 복수 개의 메시지 서버(102)들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.The logical server
그리고 메시지 서버 할당 모듈(602)은 상기 논리 서버군에 포함된 메시지 서버(102) 중 하나의 메시지 서버(102)를 특정 단말 또는 세션에 할당한다.The message
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
On the other hand, an embodiment of the present invention may include a computer-readable recording medium including a program for performing the methods described herein on a computer. The computer-readable recording medium may include a program command, a local data file, a local data structure, or the like, alone or in combination. The media may be those specially designed and constructed for the present invention or may be known and available to those of ordinary skill in the computer software arts. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floppy disks, and magnetic media such as ROMs, And hardware devices specifically configured to store and execute program instructions. Examples of program instructions may include machine language code such as those generated by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is clearly understood that the same is by way of illustration and example only and is not to be construed as limiting the scope of the present invention. I will understand.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by equivalents to the appended claims, as well as the appended claims.
100: 동적 메시지 라우팅 시스템
102: 메시지 서버
104: 메시지 라우팅 서버
106: 디렉토리 서버
108: 감시 서버
110: 네트워크
600: 논리 서버군 생성 모듈
602: 메시지 서버 할당 모듈100: dynamic message routing system
102: message server
104: Message Routing Server
106: directory server
108: watchdog server
110: network
600: logical server group generation module
602: Message Server Allocation Module
Claims (21)
특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 메시지 라우팅 서버; 및
상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하며, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 디렉토리 서버를 포함하는 메시지 라우팅 시스템.
A plurality of message servers forming one server group;
A message routing server that receives a message related to a specific terminal or session and routes the message to a message server assigned to the terminal or session among the plurality of message servers; And
Generating one or more hash values for each message server by using identification keys of each of the plurality of message servers, and generating a logical server group in which the plurality of message servers are arranged in a ring form according to the generated hash values; And a directory server which assigns one message server among the message servers included in the logical server group to the terminal or the session.
상기 디렉토리 서버는 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는, 메시지 라우팅 시스템.
The method according to claim 1,
And the directory server provides the message routing server with message server information assigned to the terminal or session in response to a request of the message routing server.
상기 디렉토리 서버는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
The method according to claim 1,
And the directory server creates the logical server group such that the plurality of message servers are arranged in the ring in ascending or descending order according to a calculated hash value.
상기 디렉토리 서버는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
The method of claim 3,
And the directory server generates the logical server group such that the plurality of message servers are arranged in the loop by the number of hash values generated for each message server.
상기 디렉토리 서버는, 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
The method according to claim 1,
And the directory server assigns one of the message servers included in the logical server group to the terminal or session using the query hash value generated from the terminal identification key or the session identification key.
상기 디렉토리 서버는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
The method of claim 5,
The directory server may assign a message server having the smallest hash value among the message servers having a hash value larger than the query hash value to the terminal or the session, or the message server having a hash value smaller than the query hash value. And a message server having a large hash value for the terminal or session.
상기 복수 개의 메시지 서버들의 동작 상태를 감시하고, 상기 복수 개의 메시지 서버 중 적어도 하나의 메시지 서버의 동작 상태가 변화할 경우 이를 상기 서버군에 속한 다른 메시지 서버들 및 상기 디렉토리 서버에 통지하는 감시 서버를 더 포함하는, 메시지 라우팅 시스템.
The method according to claim 1,
A monitoring server that monitors an operation state of the plurality of message servers and notifies other message servers belonging to the server group and the directory server when an operation state of at least one message server of the plurality of message servers changes. Further comprising, a message routing system.
상기 디렉토리 서버는, 상기 감시 서버로부터 수신되는 상기 메시지 서버들의 동작 상태 변화 정보에 따라 상기 논리 서버군을 업데이트하는, 메시지 라우팅 시스템.
The method of claim 7,
And the directory server updates the logical server group according to operation state change information of the message servers received from the monitoring server.
상기 복수 개의 메시지 서버는, 상기 감시 서버를 통하여 다른 메시지 서버들의 동작 상태 변화를 감지하고, 자신과 접속 중인 단말 또는 세션 중 상기 동작 상태 변화에 따라 다른 메시지 서버에 접속되어야 할 단말 또는 세션이 존재하는 경우, 해당 단말 또는 세션에 접속 변경 요청을 송신하는, 메시지 라우팅 시스템.
The method of claim 8,
The plurality of message servers detect a change in the operation state of other message servers through the monitoring server, and there is a terminal or a session to be connected to another message server according to the change of the operation state among terminals or sessions connected to the plurality of message servers. If so, sending a connection change request to the terminal or session.
상기 복수 개의 메시지 서버는, 기 설정된 최대 지연 시간의 범위 내에서 임의로 선택된 지연 시간만큼 대기한 후 상기 접속 변경 요청을 송신하는 동적 메시지 라우팅 시스템.
The method of claim 9,
And the plurality of message servers transmits the connection change request after waiting for a randomly selected delay time within a preset maximum delay time range.
상기 특정 단말에 할당된 메시지 서버는, 상기 특정 단말로부터 메시지 수신자 리스트를 수신하여 저장하며, 상기 특정 단말로부터 멀티캐스트 메시지를 수신할 경우, 상기 메시지 수신자 리스트에 포함된 타 단말로 상기 멀티캐스트 메시지를 송신하는, 메시지 라우팅 시스템.
The method according to claim 1,
The message server assigned to the specific terminal receives and stores a message recipient list from the specific terminal, and when receiving the multicast message from the specific terminal, transmits the multicast message to another terminal included in the message recipient list. Message routing system.
메시지 라우팅 서버에서, 특정 단말 또는 세션과 관련된 메시지를 수신하는 단계;
상기 디렉토리 서버에서, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 단계; 및
상기 메시지 라우팅 서버에서, 상기 디렉토리 서버에 의해 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 단계를 포함하는 메시지 라우팅 방법.
In the directory server, one or more hash values are generated for each message server by using identification keys of each of the plurality of message servers forming one server group, and the plurality of message servers are looped according to the generated hash value. Creating an array of logical server groups;
At a message routing server, receiving a message associated with a particular terminal or session;
Assigning, at the directory server, one message server among the message servers included in the logical server group to the terminal or session; And
In the message routing server, routing the message by the directory server to a message server assigned to the terminal or session.
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계의 수행 이후, 상기 디렉토리 서버에서, 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는 단계를 더 포함하는, 메시지 라우팅 방법.
The method of claim 12,
After the step of assigning the message server to the terminal or session, providing the message routing server with message server information assigned to the terminal or session at the request of the message routing server. Message routing method.
상기 논리 서버군을 생성하는 단계는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
The method of claim 12,
The generating of the logical server group comprises: generating the logical server group such that the plurality of message servers are arranged in the ring in ascending or descending order according to a calculated hash value.
상기 논리 서버군을 생성하는 단계는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
15. The method of claim 14,
The generating of the logical server group may include generating the logical server group such that the plurality of message servers are arranged in the loop by the number of hash values generated for each message server.
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 단말의 식별키 또는 상기 세션의 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
The method of claim 12,
The step of allocating the message server to the terminal or the session may include selecting one of the message servers included in the logical server group using the query hash value generated from the identification key of the terminal or the identification key of the session. To the message routing method.
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
18. The method of claim 16,
The step of allocating the message server to the terminal or the session may include assigning a message server having the smallest hash value among the message servers having a hash value greater than the query hash value to the terminal or the session, or more than the query hash value. The message routing method of allocating a message server having the largest hash value among the message server having a small hash value to the terminal or the session.
A computer-readable recording medium having recorded thereon a program for performing the method according to any one of claims 12 to 17 on a computer.
상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 특정 단말 또는 세션에 할당하는 메시지 서버 할당 모듈을 포함하는 디렉토리 서버.
For a plurality of message servers forming one server group, one or more hash values are generated for each message server using identification keys of each of the plurality of message servers, and the plurality of message servers are generated according to the generated hash values. A logical server group generation module for generating a logical server group in which they are arranged in a ring form; And
And a message server assignment module for allocating one message server among the message servers included in the logical server group to a specific terminal or session.
상기 논리 서버군 생성 모듈은, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.
The method of claim 19,
And the logical server group generation module generates the logical server group such that the plurality of message servers are arranged in the ring in ascending or descending order according to a calculated hash value.
상기 논리 서버군 생성 모듈은, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.The method of claim 19,
The logical server group generating module generates the logical server group such that the plurality of message servers are arranged in the loop by the number of hash values generated for each message server.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120107654A KR101382177B1 (en) | 2012-09-27 | 2012-09-27 | System and method for dynamic message routing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020120107654A KR101382177B1 (en) | 2012-09-27 | 2012-09-27 | System and method for dynamic message routing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140040948A true KR20140040948A (en) | 2014-04-04 |
KR101382177B1 KR101382177B1 (en) | 2014-04-07 |
Family
ID=50650862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020120107654A KR101382177B1 (en) | 2012-09-27 | 2012-09-27 | System and method for dynamic message routing |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101382177B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352716A (en) * | 2020-03-10 | 2020-06-30 | 深圳市腾讯计算机系统有限公司 | Task request method, device and system based on big data and storage medium |
US11784955B1 (en) * | 2022-12-09 | 2023-10-10 | Salesforce, Inc. | Virtual space server redundancy across geographic regions |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100454214B1 (en) * | 2001-07-09 | 2004-10-26 | 한국전자통신연구원 | a method for managing asynchronous a workflow using a messaging technique |
US9219686B2 (en) * | 2006-03-31 | 2015-12-22 | Alcatel Lucent | Network load balancing and overload control |
US8135774B2 (en) * | 2006-12-27 | 2012-03-13 | Genesys Telecommunications Laboratories, Inc. | Virtual contact center with dynamic routing |
US8160063B2 (en) * | 2008-06-09 | 2012-04-17 | Microsoft Corporation | Data center interconnect and traffic engineering |
-
2012
- 2012-09-27 KR KR1020120107654A patent/KR101382177B1/en active IP Right Grant
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111352716A (en) * | 2020-03-10 | 2020-06-30 | 深圳市腾讯计算机系统有限公司 | Task request method, device and system based on big data and storage medium |
CN111352716B (en) * | 2020-03-10 | 2024-03-01 | 深圳市腾讯计算机系统有限公司 | Task request method, device and system based on big data and storage medium |
US11784955B1 (en) * | 2022-12-09 | 2023-10-10 | Salesforce, Inc. | Virtual space server redundancy across geographic regions |
Also Published As
Publication number | Publication date |
---|---|
KR101382177B1 (en) | 2014-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10419531B2 (en) | Method for setting gateway device identity, and management gateway device | |
US9509615B2 (en) | Managing link aggregation traffic in a virtual environment | |
US10182091B2 (en) | Decentralized, hierarchical, and overlay-driven mobility support architecture for information-centric networks | |
JP5381998B2 (en) | Cluster control system, cluster control method, and program | |
CN102447624B (en) | Load balancing method in server cluster, as well as node server and cluster | |
WO2015101260A1 (en) | Method and system for processing instant communication service | |
US9350666B2 (en) | Managing link aggregation traffic in a virtual environment | |
CN109067578B (en) | Method and device for multicast fast switching | |
US9686178B2 (en) | Configuring link aggregation groups to perform load balancing in a virtual environment | |
CN111787079B (en) | Communication method, device, server, system and medium based on communication group | |
US10476746B2 (en) | Network management method, device, and system | |
Buyakar et al. | Prototyping and load balancing the service based architecture of 5G core using NFV | |
CN112968965B (en) | Metadata service method, server and storage medium for NFV network node | |
KR101920630B1 (en) | System and method for assigining server to terminal and efficiently delivering messages to the terminal | |
CN105721328B (en) | VRRP load balancing method, device and router | |
JP2018524922A (en) | Method, apparatus and system for floor control for multiple MCPTT systems | |
WO2023207189A1 (en) | Load balancing method and system, computer storage medium, and electronic device | |
CN109495526A (en) | A kind of file transmitting method, device, system, electronic equipment and storage medium | |
CN106375355B (en) | Load balancing processing method and device | |
CN109120556B (en) | A kind of method and system of cloud host access object storage server | |
KR101382177B1 (en) | System and method for dynamic message routing | |
CN105025042B (en) | A kind of method and system of determining data information, proxy server | |
CN102647424B (en) | Data transmission method and data transmission device | |
RU2679340C1 (en) | Stateless message routing | |
CN110474781B (en) | Method and device for forwarding multicast data |
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 | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20170309 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20180403 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20190401 Year of fee payment: 6 |