KR20140040948A - System and method for dynamic message routing - Google Patents

System and method for dynamic message routing Download PDF

Info

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
Application number
KR1020120107654A
Other languages
Korean (ko)
Other versions
KR101382177B1 (en
Inventor
윤일지
Original Assignee
삼성에스디에스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성에스디에스 주식회사 filed Critical 삼성에스디에스 주식회사
Priority to KR1020120107654A priority Critical patent/KR101382177B1/en
Publication of KR20140040948A publication Critical patent/KR20140040948A/en
Application granted granted Critical
Publication of KR101382177B1 publication Critical patent/KR101382177B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/214Monitoring or handling of messages using selective forwarding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address 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

A system and a method for dynamic message routing are disclosed. The system for dynamic message routing according to an embodiment of the present invention comprises a plurality of message servers forming one server group; a message routing server for receiving a message related to a specific terminal or a specific session, routing the message to a message server allocated to the terminal or the session among the message servers; and a directory server for generating one and more hash values for each message server by using the identification key of each message server, generating a logic server group arranging the message servers in a ring shape according to the generated hash value, and transmitting information on the message server allocated to the terminal or the session among the message servers included in the logic server group to the message routing server. [Reference numerals] (102) Message server; (104) Message routing server; (106) Directory server; (108) Monitoring server; (110) Network

Description

동적 메시지 라우팅 시스템 및 방법{SYSTEM AND METHOD FOR DYNAMIC MESSAGE ROUTING}Dynamic Message Routing System and Method {SYSTEM AND METHOD FOR DYNAMIC MESSAGE ROUTING}

본 발명은 동적 메시지 라우팅 시스템 및 방법에 관한 것으로서, 특히 동적으로 특정 단말 또는 세션과 서버 간의 연관 관계를 정하고 라우팅함으로써 메시지를 효율적으로 전달하기 위한 기술과 관련된다.
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 message routing system 100 according to an embodiment of the present invention.
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 message servers 102 are switched from the accessible state to the unreachable state according to an embodiment of the present invention.
4 is a view for explaining an example in which some of the servers belonging to the plurality of message servers 102 are switched from the accessible state to the accessible state according to an embodiment of the present invention.
5 is a diagram illustrating a dynamic message routing method 500 according to an embodiment of the present invention.
6 is a diagram showing the detailed configuration of the directory server 106 according to an embodiment of the present invention.

이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.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 message routing system 100 according to an embodiment of the present invention. As shown, the dynamic message routing system 100 according to an embodiment of the present invention includes a plurality of message servers 102, a message routing server 104, a directory server 106, and a monitoring server 108. Each of the above components is connected to each other through the wired / wireless network 110 to transmit and receive data.

메시지 서버(102)는 특정 단말(미도시) 또는 세션과 접속되어 상기 단말 또는 세션과 관련된 메시지를 처리하기 위한 서버이다. 예를 들어, 메시지 서버(102)는 복수 개의 단말들이 참여하는 그룹 채팅방을 개설하고, 상기 그룹 채팅방 내에서의 그룹 채팅을 처리하기 위한 채팅 서버이거나, 또는 단말간의 음성 채팅, 또는 복수 개의 단말 사이의 다자간 음성/영상 회의 등을 중계하는 서버일 수 있다. 다만, 본 발명은 이에 한정되는 것은 아니며, 하나 이상의 단말과 접속되어 해당 단말로부터 수신되는 메시지를 처리하기 위한 서버라면 제한 없이 본 발명의 메시지 서버(102)가 될 수 있다. 본 발명에서는 동일한 기능을 수행하는 다수 개의 메시지 서버들을 병렬로 배치하여 하나의 서버군을 형성하며, 상기 서버군에 속한 메시지 서버(102)들은 각각 소정의 서버 할당 규칙에 따라 특정 단말 또는 세션에 할당된다.The message server 102 is a server connected to a specific terminal (not shown) or session to process messages related to the terminal or session. For example, the message server 102 establishes a group chat room in which a plurality of terminals participate, and is a chat server for processing a group chat in the group chat room, or a voice chat between terminals, or between a plurality of terminals. It may be a server that relays a multi-party voice / video conference. However, the present invention is not limited thereto, and the server may be the message server 102 of the present invention without limitation as long as the server is connected to one or more terminals and processes a message received from the terminal. In the present invention, a plurality of message servers performing the same function are arranged in parallel to form one server group, and the message servers 102 belonging to the server group are assigned to specific terminals or sessions according to predetermined server assignment rules. do.

이때, 상기 단말은 복수 개의 메시지 서버(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 message servers 102. In an embodiment of the present invention, the terminal may include personal or portable user devices such as a mobile device such as a smartphone, a tablet PC, a cellular phone, a desktop or a notebook computer, and the like. Meanwhile, in the embodiment of the present invention, the terminal does not necessarily mean the client-side device, and the application server or another type of server may also be the terminal in the present invention when transmitting and receiving a message with the message server 102. In addition, the terminal may be directly connected to the message server 102, or may be connected to the message server 102 via a separate connection server.

한편, 전술한 바와 같이 메시지 서버(102) 각각에 단말이 할당될 경우, 메시지 서버(102)는 자신에게 할당된 단말로부터 메시지 수신자 리스트를 수신하여 저장할 수 있다. 이때 상기 메시지 수신자 리스트는 해당 단말이 송신하는 멀티캐스트 메시지를 수신할 단말의 목록으로서, 예를 들어 상기 단말에 저장된 주소록(contact list)일 수 있다. 이와 같이 메시지 서버(102)에 메시지 수신자 리스트가 저장될 경우, 단말은 메시지 서버(102)로 멀티캐스트 메시지를 송신할 수 있으며, 이를 수신한 메시지 서버(102)는 상기 메시지 수신자 리스트에 포함된 단말들로 수신된 상기 멀티캐스트 메시지를 송신할 수 있다. 이와 같이 단말과 연결된 메시지 서버(102)가 단말 별 메시지 수신자 리스트를 저장할 경우에는 메시지 멀티캐스팅 시마다 별도의 데이터베이스 룩업(lookup) 등을 통하여 멀티캐스트 메시지 수신 대상 단말의 정보를 조회할 필요가 없으므로 메시지 전송의 오버헤드를 감소할 수 있다. 이는 특히 인스턴트 메시징 등에서 특정 단말의 프로필 변경 등을 타 단말에 전달할 경우 효과적으로 사용될 수 있다.On the other hand, when the terminal is assigned to each of the message server 102 as described above, the message server 102 may receive and store a message recipient list from the terminal assigned to it. In this case, the message recipient list is a list of terminals to receive a multicast message transmitted by the corresponding terminal, and may be, for example, a contact list stored in the terminal. As such, when the message receiver list is stored in the message server 102, the terminal may transmit a multicast message to the message server 102, and the message server 102 receiving the message may be a terminal included in the message receiver list. May transmit the multicast message received. When the message server 102 connected to the terminal stores the message recipient list for each terminal, it is not necessary to inquire the information of the terminal to receive the multicast message through a separate database lookup every time the message is multicasted. Can reduce the overhead. This can be effectively used when transferring a profile change of a specific terminal to another terminal, especially in instant messaging.

한편, 상기 단말과 연결된 메시지 서버(102)에 장애가 발생하거나, 또는 새로운 메시지 서버(102)가 추가되는 등으로 인하여 상기 단말과 연결된 메시지 서버(102)가 변경될 경우, 상기 단말은 변경된 메시지 서버(102)로 상기 메시지 수신자 리스트를 재송신할 수 있다.On the other hand, when the message server 102 connected to the terminal is changed due to a failure in the message server 102 connected to the terminal or a new message server 102 is added, the terminal may change the message server ( 102 may retransmit the message recipient list.

한편, 상기 세션은 둘 이상의 단말 상호간의(또는 단말과 서버 상호간의) 일련의 연속적인 커뮤니케이션(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 message server 102 may be configured to process messages related to the chat group by being assigned to a specific chat group in which a plurality of terminals participate.

메시지 라우팅 서버(104)는 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅한다. 상기 메시지는 네트워크 내에 존재하는 네트워크 엔티티로부터 수신된 것일 수 있으며, 상기 네트워크 엔티티는 예를 들어 네트워크 내의 특정 서버 또는 다른 단말 등이 될 수 있다. 구체적으로, 메시지 라우팅 서버(104)는 상기 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 단말 또는 세션에 할당된 메시지 서버(102)가 어떤 것인지를 후술할 디렉토리 서버(106)에 질의한다. 이후, 메시지 라우팅 서버(104)는 상기 질의에 대한 응답으로 디렉토리 서버(106)로부터 메시지 서버(102)의 정보를 수신하고, 수신된 상기 정보를 이용하여 수신된 상기 메시지를 라우팅한다. 또한, 메시지 라우팅 서버(104)는 네트워크 내 다른 엔티티로부터 메시지를 수신하여 이를 라우팅하는 것이 아니라, 직접 특정 단말로 전송할 메시지를 생성하여 이를 메시지 서버(102)로 라우팅할 수도 있다.The message routing server 104 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 102. The message may be received from a network entity residing in a network, which may be, for example, a particular server or other terminal in the network. Specifically, the message routing server 104 receives a message related to the specific terminal or session, and queries the directory server 106 which will be described later which message server 102 is assigned to the terminal or session. The message routing server 104 then receives the information of the message server 102 from the directory server 106 in response to the query and routes the received message using the received information. In addition, the message routing server 104 may not receive and route a message from another entity in the network, but may generate a message to be transmitted directly to a specific terminal and route it to the message server 102.

디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 해시값에 따라 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성한다. 또한, 디렉토리 서버(106)는 메시지 라우팅 서버(104)로부터 특정 단말 또는 세션에 할당된 메시지 서버(102)에 대한 질의를 수신하고, 이에 따라 상기 논리 서버군에 속한 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버(102)에 대한 정보를 메시지 라우팅 서버(104)로 제공한다. 상기 논리 서버군 생성 및 각 메시지 서버의 할당과 관련된 상세한 사항은 후술하기로 한다.The directory server 106 generates one or more hash values for each message server 102 by using identification keys of the plurality of message servers 102, and arranges the plurality of message servers in a ring form according to the generated hash values. Create a set of logical servers. In addition, the directory server 106 receives a query for the message server 102 assigned to a specific terminal or session from the message routing server 104, and thus the terminal among the message servers 102 belonging to the logical server group. Or provide information about the message server 102 assigned to the session to the message routing server 104. Details related to the logical server group generation and the allocation of each message server will be described later.

한편, 도시된 실시예에서는 복수 개의 메시지 서버(102)와 별도로 메시지 라우팅 서버(104) 및 디렉토리 서버(106)가 존재하는 것으로 도시하였으나, 이는 단지 기능적인 분류에 불과하다. 즉, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 물리적으로 복수 개의 메시지 서버(102)와 별도의 컴퓨터 장치로 구현될 수도 있고, 또는 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106) 중 적어도 하나의 역할을 겸할 수 있으며, 두 경우 모두 본 발명의 권리범위 내에 포함된다. 만약 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106)의 역할을 겸하도록 구성되는 경우, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 메시지 서버(102)를 구성하는 일 구성요소로서 존재하게 되며, 이 경우 특정 단말 또는 세션과 관계된 메시지는 일차적으로 복수 개의 메시지 서버(102) 중 임의로 선택된 하나의 메시지 서버로 전달되었다가, 해당 단말 또는 세션에 할당된 다른 메시지 서버로 라우팅될 수 있다.Meanwhile, in the illustrated embodiment, the message routing server 104 and the directory server 106 are illustrated as being separate from the plurality of message servers 102, but this is merely a functional classification. That is, the message routing server 104 and directory server 106 may be physically implemented as a separate computer device from the plurality of message servers 102, or each of the plurality of message servers 102 is a message routing server 104. And directory server 106 may serve as at least one, and both cases fall within the scope of the present invention. If each of the plurality of message servers 102 is configured to act as a message routing server 104 and a directory server 106, the message routing server 104 and the directory server 106 may be configured to operate the message server 102. In this case, a message related to a specific terminal or session is first delivered to one message server randomly selected among the plurality of message servers 102, and then another message assigned to the terminal or session. Can be routed to a server.

이를 예를 들어 설명하면 다음과 같다. 먼저, 네트워크 내의 특정 단말(송신측 단말)이 상기 네트워크 내의 다른 단말(수신측 단말)로 메시지를 전달한다고 가정하자. 이 경우 상기 송신측 단말은 자신에게 할당된 메시지 서버(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 message server 102 assigned thereto, and the message includes the network address of the receiving terminal. The message server 102 receiving the message transmits the message to the message routing server 104, and the message routing server 104 uses the network address of the receiving terminal included in the message to the directory server 106. Request to allocate the message server 102 connected to the receiving terminal. The directory server 106 then returns the message server information assigned to the receiving terminal to the transmitting message server 102 in response to the request. Thereafter, the message routing server 104 transmits the message to the message server 102 connected to the receiving terminal according to the returned message server information, and the receiving message server 102 transmits the received message to the receiving terminal. To send. That is, in this case, the message may be delivered through the following path.

송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
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 message routing server 104 without passing through the message server 102 connected thereto. In this case, the message may be transmitted through the following path. .

송신측 단말 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Sending terminal-> Message routing server-> Message server connected with receiving terminal-> Receiving terminal

또한, 실시예에 따라 메시지 라우팅 서버(104)는 별도의 하드웨어적 구성으로 네트워크 내에 존재하는 것이 아니라, 각 메시지 서버(102)들이 메시지 라우팅 서버(104)의 기능을 겸할 수 있다. 이 경우, 상기 경로는 다음과 같이 구성될 수 있다.
In addition, according to an embodiment, the message routing server 104 does not exist in the network in a separate hardware configuration, but each message server 102 may function as the message routing server 104. In this case, the path may be configured as follows.

송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
Sending terminal-> Message server connected with sending terminal-> Message server connected with receiving terminal-> Receiving terminal

즉, 이 경우 송신측 단말과 연결된 메시지 서버(102)가 기 설정된 서버 할당 규칙을 이용하여 수신측 단말과 연결된 메시지 서버를 알아내고 해당 메시지 서버로 메시지를 바로 전달할 수 있다.That is, in this case, the message server 102 connected to the sending terminal can find out the message server connected to the receiving terminal by using a preset server assignment rule and transfer the message directly to the corresponding message server.

또한, 메시지 라우팅 서버(104)는 다른 단말 뿐만 아니라, 네트워크내 다른 서버(애플리케이션 서버 등)로부터 메시지를 수신하고, 이를 단말로 전송할 수도 있다. 이 경우 메시지 전송 경로는 다음과 같다.
In addition, the message routing server 104 may receive a message from not only other terminals but also other servers (application servers, etc.) in the network, and transmit the message to the terminal. In this case, the message transmission path is as follows.

네트워크 내 다른 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
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 message server 102 also functions as the message routing server 104, the message may be delivered to any message server 102 rather than to the message routing server 104. have. That is, the message may be transmitted as follows.

네트워크 내 다른 서버 -> 임의의 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
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 104 and transmit it to the terminal, in this case, the message transmission path is as follows.

메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
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 monitoring server 108 may also be referred to as a zookeeper, and monitors an operation state of the plurality of message servers 102, and an operation state of at least one message server of the plurality of message servers 102 may change. If so, it notifies other message servers and directory servers 106 belonging to the server group. For example, the monitoring server 108 may be disconnected when the operation of any one of the plurality of message servers 102 is disabled, and when the server where the operation is stopped is operated again (that is, the connection is available). If the operation state of the message server changes due to the reason (for example, if the change is changed to) or when a new message server is added, etc., the plurality of message servers 102 and the directory server 106 are notified. Accordingly, the directory server 106 may receive in real time information of which server is currently alive or dead, and use this to generate the logical server group to include only the currently active (live) server. Directory server 106 also receives from the monitoring server 108 a change in the operational state of at least one of the plurality of message servers 102 (ie, when a particular server is dead or alive or a new server is added). The logical server group is regenerated (updated) by reflecting the above change in the generated logical server group.

도 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 message servers 102 includes four servers A, B, C, and D is illustrated, but the number of message servers included in the plurality of message servers 102 is not limited. You can have as many message servers as you need.

디렉토리 서버(106)에서 논리 서버군을 생성하는 과정은 다음과 같다. 먼저, 디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 N개(N은 1 이상의 정수)의 해시값을 생성한다. 이때, 상기 복수 개의 메시지 서버(102) 각각의 식별키는 예를 들어 각 메시지 서버의 IP 또는 맥 어드레스 등이 될 수 있다. 또한, 각 메시지 서버 별로 생성되는 N개의 해시값들은 각각 서로 다른 값을 가지도록 구성된다.The process of creating a logical server group in the directory server 106 is as follows. First, the directory server 106 generates N hash values (N is an integer of 1 or more) for each message server using identification keys of the plurality of message servers 102. At this time, the identification key of each of the plurality of message servers 102 may be, for example, the IP or MAC address of each message server. In addition, the N hash values generated for each message server are configured to have different values.

예를 들어, 만약 각 메시지 서버의 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 directory server 106 arranges the plurality of message servers 102 in a ring form according to the generated hash values. For example, directory server 106 may create a logical server group such that the plurality of message servers 102 are arranged in a ring in ascending or descending order according to the calculated hash value. In this case, each of the plurality of message servers 102 is arranged in the loop by the number N of generated hash values.

만약, 메시지 서버 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 directory server 106 receives a message server assignment request for routing of a message related to a specific terminal or session from the message routing server 104, and from the identification key of the terminal or session. One of the plurality of message servers included in the logical server group is allocated to the terminal by using the generated hash value and a preset server allocation rule.

예를 들어, 디렉토리 서버(106)는 상기 단말의 식별키(해당 단말의 IP주소 또는 맥 어드레스 등) 또는 상기 세션의 식별키(세션 아이디 등)을 기 설정된 해시함수를 이용하여 해싱함으로써 해시값(질의 해시값)을 계산할 수 있다.For example, the directory server 106 hashes an identification key (such as the IP address or MAC address of the terminal) of the terminal or an identification key (session ID, etc.) of the session by using a predetermined hash function. Query hash).

또한, 상기 서버 할당 규칙은, 예를 들어 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성되거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성될 수 있다. 그러나 상술한 서버 할당 규칙은 단지 예시에 불과한 것으로서, 단말 또는 세션의 식별키에 따라 메시지 서버를 할당하기 위한 다른 종류의 규칙 또한 제한 없이 적용 가능하다.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 directory server 106 assigns the server C to the terminal and transmits the server assignment message to the terminal. Then, the terminal receiving the terminal accesses the server C.

도 3은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 메시지 서버 중 일부가 접속 가능 상태에서 접속 불가 상태로 전환된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 불가 상태로 전환된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 불가 상태로 전환된 경우에도 이와 동일한 알고리즘이 적용된다.3 is a diagram illustrating an example in which some of the message servers belonging to the plurality of message servers 102 are switched from the accessible state to the unreachable state according to an embodiment of the present invention. In the illustrated embodiment, an example is shown in which the server C is converted into an unreachable state. In the illustrated embodiment, only one message server of the plurality of message servers 102 is shown in an unreachable state. However, the same algorithm is applied to two or more message servers.

도시된 실시예에서와 같이 서버 C가 접속 불가 상태로 전환된 경우, 디렉토리 서버(106)로부터 서버 C를 할당받은 메시지 전송 서버(104)는 먼저 서버 C에 대한 접속을 시도한다. 그러나 서버 C는 현재 장애 등의 이유로 접속이 불가능하므로, 메시지 전송 서버(104)는 디렉토리 서버(106)로부터 서버 C를 대체할 예비 서버의 정보를 수신하고 수신된 정보에 따라 예비 서버로 상기 메시지를 전송할 수 있다.When server C is switched to the unreachable state as in the illustrated embodiment, the message transmission server 104 assigned server C from directory server 106 first attempts to connect to server C. However, since server C cannot be contacted due to a current failure or the like, the message transmission server 104 receives the information of the spare server to replace the server C from the directory server 106 and sends the message to the spare server according to the received information. Can transmit

상기 예비 서버는, 예를 들어 상기 논리 서버군에 속한 서버 중 주 서버(메시지 서버 할당 알고리즘에 따라 선택된 서버)가 없다고 가정할 경우 해당 단말 또는 세션에 할당되었을 것이라고 가정되는 서버가 될 수 있다. 예를 들어, 전술한 실시예에서 단말(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 directory server 106 is a server as the main server. You can assign C to server B as a spare server. However, it is noted that such a reserved server allocation algorithm is exemplary, and the present invention is not limited to a specific reserved server allocation algorithm.

이와 같이 주 서버와 예비 서버가 함께 할당될 경우 메시지 전송 서버(104)는 먼저 주 서버로의 메시지 송신을 시도하고, 주 서버로의 접속이 불가능하다고 판단되는 경우 예비 서버로 메시지를 전송하게 된다. 예를 들어, 단말의 해시값이 47일 경우 전술한 알고리즘에 따라 단말은 주 서버로 서버 C(해시값 51), 예비 서버로 서버 A(해시값 54)를 각각 할당받으므로, 예비 서버인 서버 A에 접속하게 된다.As such, when the main server and the spare server are allocated together, the message transmission server 104 first attempts to transmit a message to the main server, and transmits a message to the spare server when it is determined that the connection to the main server is impossible. For example, if the hash value of the terminal is 47, the terminal is assigned a server C (hash value 51) as a main server and a server A (hash value 54) as a main server, according to the algorithm described above. You are connected to A.

이후, 시간이 지나면 디렉토리 서버(106) 또한 서버 C의 접속 불가 상태를 반영하여 논리 서버군을 재생성하므로, 서버 A는 자연스럽게 해당 단말 또는 세션에 대한 예비 서버가 아닌 주 서버가 된다. 즉, 디렉토리 서버(106)는 기 설정된 주기 별로 각 메시지 서버의 상태를 반영하여 논리 서버군을 재생성하도록 구성되는 바, 해당 주기가 경과되면 서버 C는 재생성된 논리 서버군에서 제외되므로 서버 A가 해당 단말 또는 세션에 대한 주 서버가 된다. 상기 주기는 메시지 서버 등의 특성을 고려하여 적절하게 정해질 수 있다.
Then, as time passes, the directory server 106 also regenerates the logical server group by reflecting the connection state of the server C, so that the server A naturally becomes the main server and not the spare server for the terminal or session. That is, the directory server 106 is configured to regenerate the logical server group by reflecting the state of each message server at predetermined intervals, and when the period elapses, the server C is excluded from the regenerated logical server group. It becomes the main server for the terminal or session. The period may be appropriately determined in consideration of characteristics of the message server.

도 4는 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 불가 상태에서 접속 가능 상태로 전환되거나, 또는 새로운 메시지 서버가 추가된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태에서 접속 가능 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 가능 상태로 전환되거나 또는 추가된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 가능 상태로 전환되거나 또는 추가된 경우에도 이와 동일한 알고리즘이 적용된다.4 is a view for explaining an example in which some of the servers belonging to the plurality of message servers 102 are switched from the unreachable state to the accessible state or a new message server is added according to an embodiment of the present invention. In the illustrated embodiment, an example is shown in which the server C is switched from an unreachable state to a connectable state. Although the illustrated embodiment shows an example in which only one message server of the plurality of message servers 102 is switched or added, the same may be true even when two or more message servers are switched or added. The same algorithm applies.

도시된 실시예에서와 같이 서버 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 message routing server 104 to the terminal or session that is not actually connected, it receives information received from the message server connected with the actual terminal. Forward messages received by the message server.

예를 들어, 도면에서 서버 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 message routing server 104 to the terminal before performing the reconnection, the message is transmitted to the server C according to the updated logical server group information. In order to efficiently handle such a case, the server D transmits information to the server C that the terminal is connected to the terminal C until the terminal reconnects, so that the server C sends the message received from the message routing server 104 to the server D. FIG. To be delivered to the terminal.

도 5는 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법(500)을 설명하기 위한 순서도이다.5 is a flowchart illustrating a dynamic message routing method 500 according to an embodiment of the present invention.

먼저, 디렉토리 서버(106)에서 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다(502). 전술한 바와 같이, 본 단계는 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있으며, 이 경우 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.First, for the plurality of message servers 102 forming one server group in the directory server 106, one or more hash values are generated for each message server by using identification keys of the message servers 102, and are generated. According to the hash value, the plurality of message servers 102 generates a logical server group arranged in a ring form (502). As described above, this step may generate the logical server group such that a plurality of message servers 102 are arranged in the ring in ascending or descending order according to the calculated hash value, in which case each message server 102 The logical server group may be generated such that the plurality of message servers are arranged in the loop by the number of generated hash values.

다음으로, 메시지 라우팅 서버(104)에서 특정 단말 또는 세션과 관련된 메시지를 수신하고(504), 상기 논리 서버군에 포함된 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 대응되는 메시지 서버의 정보를 디렉토리 서버(106)로 요청한다(506).Next, the message routing server 104 receives a message related to a specific terminal or session (504), and information of the message server corresponding to the terminal or session among the plurality of message servers 102 included in the logical server group. Request 506 to directory server 106.

다음으로, 디렉토리 서버(106)는 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 해시값 및 기 설정된 서버 할당 규칙을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하고(508) 이에 대한 정보를 메시지 라우팅 서버(104)로 제공한다(510).Next, the directory server 106 uses one of the message servers included in the logical server group using the hash value generated from the terminal identification key or the session identification key and a preset server assignment rule. It is assigned to the session (508) and provides information about it to the message routing server 104 (510).

이후, 메시지 라우팅 서버(104)는 디렉토리 서버(106)로부터 제공된 메시지 서버 정보를 이용하여 상기 메시지를 라우팅한다(512).
The message routing server 104 then routes 512 the message using the message server information provided from the directory server 106.

도 6은 본 발명의 일 실시예에 따른 디렉토리 서버(106)의 상세 구성을 나타낸 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 디렉토리 서버(106)는 논리 서버군 생성 모듈(600) 및 메시지 서버 할당 모듈(602)을 포함한다.6 is a diagram showing the detailed configuration of the directory server 106 according to an embodiment of the present invention. As shown, the directory server 106 according to an embodiment of the present invention includes a logical server group generation module 600 and a message server assignment module 602.

논리 서버군 생성 모듈(600)은 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다. 이때, 논리 서버군 생성 모듈(600)은 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있다. 또한, 논리 서버군 생성 모듈(600)은 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 복수 개의 메시지 서버(102)들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.The logical server group generation module 600 uses one or more hashes for each message server 102 using the identification key of each of the plurality of message servers 102 for the plurality of message servers 102 forming one server group. A value is generated, and a group of logical servers in which a plurality of message servers 102 are arranged in a ring form is generated according to the generated hash value. In this case, the logical server group generation module 600 may generate the logical server group such that the plurality of message servers 102 are arranged in the ring in ascending or descending order according to the calculated hash value. In addition, the logical server group generation module 600 may generate the logical server group such that the plurality of message servers 102 are arranged in the loop by the number of hash values generated for each message server 102.

그리고 메시지 서버 할당 모듈(602)은 상기 논리 서버군에 포함된 메시지 서버(102) 중 하나의 메시지 서버(102)를 특정 단말 또는 세션에 할당한다.The message server assignment module 602 assigns one message server 102 of the message servers 102 included in the logical server group to a specific terminal or session.

한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, 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.
청구항 1에 있어서,
상기 디렉토리 서버는 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는, 메시지 라우팅 시스템.
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.
청구항 1에 있어서,
상기 디렉토리 서버는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
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.
청구항 3에 있어서,
상기 디렉토리 서버는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
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.
청구항 1에 있어서,
상기 디렉토리 서버는, 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
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.
청구항 5에 있어서,
상기 디렉토리 서버는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
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.
청구항 1에 있어서,
상기 복수 개의 메시지 서버들의 동작 상태를 감시하고, 상기 복수 개의 메시지 서버 중 적어도 하나의 메시지 서버의 동작 상태가 변화할 경우 이를 상기 서버군에 속한 다른 메시지 서버들 및 상기 디렉토리 서버에 통지하는 감시 서버를 더 포함하는, 메시지 라우팅 시스템.
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.
청구항 7에 있어서,
상기 디렉토리 서버는, 상기 감시 서버로부터 수신되는 상기 메시지 서버들의 동작 상태 변화 정보에 따라 상기 논리 서버군을 업데이트하는, 메시지 라우팅 시스템.
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.
청구항 8에 있어서,
상기 복수 개의 메시지 서버는, 상기 감시 서버를 통하여 다른 메시지 서버들의 동작 상태 변화를 감지하고, 자신과 접속 중인 단말 또는 세션 중 상기 동작 상태 변화에 따라 다른 메시지 서버에 접속되어야 할 단말 또는 세션이 존재하는 경우, 해당 단말 또는 세션에 접속 변경 요청을 송신하는, 메시지 라우팅 시스템.
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.
청구항 9에 있어서,
상기 복수 개의 메시지 서버는, 기 설정된 최대 지연 시간의 범위 내에서 임의로 선택된 지연 시간만큼 대기한 후 상기 접속 변경 요청을 송신하는 동적 메시지 라우팅 시스템.
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.
청구항 1에 있어서,
상기 특정 단말에 할당된 메시지 서버는, 상기 특정 단말로부터 메시지 수신자 리스트를 수신하여 저장하며, 상기 특정 단말로부터 멀티캐스트 메시지를 수신할 경우, 상기 메시지 수신자 리스트에 포함된 타 단말로 상기 멀티캐스트 메시지를 송신하는, 메시지 라우팅 시스템.
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.
청구항 12에 있어서,
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계의 수행 이후, 상기 디렉토리 서버에서, 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는 단계를 더 포함하는, 메시지 라우팅 방법.
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.
청구항 12에 있어서,
상기 논리 서버군을 생성하는 단계는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
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.
청구항 14에 있어서,
상기 논리 서버군을 생성하는 단계는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
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.
청구항 12에 있어서,
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 단말의 식별키 또는 상기 세션의 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
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.
청구항 16에 있어서,
상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
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.
청구항 12 내지 17 중 어느 한 항에 기재된 방법을 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
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.
청구항 19에 있어서,
상기 논리 서버군 생성 모듈은, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.
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.
청구항 19에 있어서,
상기 논리 서버군 생성 모듈은, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.
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.
KR1020120107654A 2012-09-27 2012-09-27 System and method for dynamic message routing KR101382177B1 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (3)

* Cited by examiner, † Cited by third party
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