KR20140040948A - 동적 메시지 라우팅 시스템 및 방법 - Google Patents

동적 메시지 라우팅 시스템 및 방법 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
English (en)
Other versions
KR101382177B1 (ko
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/ko
Publication of KR20140040948A publication Critical patent/KR20140040948A/ko
Application granted granted Critical
Publication of KR101382177B1 publication Critical patent/KR101382177B1/ko

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

동적 메시지 라우팅 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템은, 하나의 서버군을 형성하는 복수 개의 메시지 서버, 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 메시지 라우팅 서버, 및 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하며, 상기 논리 서버군에 포함된 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버의 정보를 상기 메시지 라우팅 서버로 송신하는 디렉토리 서버를 포함한다.

Description

동적 메시지 라우팅 시스템 및 방법{SYSTEM AND METHOD FOR DYNAMIC MESSAGE ROUTING}
본 발명은 동적 메시지 라우팅 시스템 및 방법에 관한 것으로서, 특히 동적으로 특정 단말 또는 세션과 서버 간의 연관 관계를 정하고 라우팅함으로써 메시지를 효율적으로 전달하기 위한 기술과 관련된다.
스마트폰 등의 모바일 단말의 사용이 증가하면서, 모바일 단말에 서비스를 제공하기 위한 서버 측 구조 또한 점차 대형화, 복잡화되고 있다. 일반적으로 특정 네트워크 내 엔티티(entity)가 원하는 단말 또는 세션에 메시지를 송신하기 위해서는, 메시지 전송 시마다 관련된 접속 정보를 저장하고 있는 데이터베이스에 해당 단말 또는 세션과 접속된 메시지 서버의 정보를 질의하거나, 또는 메시지 자체에 단말 또는 세션의 정보를 포함하여야 한다.
그러나 이와 같이 메시지 전송 시마다 데이터베이스에 메시지 서버의 정보를 질의할 경우, 메시지가 증가할수록 데이터베이스로의 액세스 또한 함께 증가하게 되며 이 과정에서 심각한 병목 현상이 발생되는 문제가 있었다. 또한, 이를 해결하기 위하여 메시지 자체에 모든 대상 단말들에 대한 주소 정보를 부가할 경우 이에 따른 메시지의 용량 증가로 인하여 메시지 전송의 오버헤드가 증가하는 문제가 존재하였다.
본 발명의 실시예들은 동적으로 특정 단말 또는 세션과 메시지 서버간의 연결 관계를 정하고 이에 따라 메시지를 라우팅함으로써 메시지 처리의 효율성을 향상시킬 수 있는 동적 메시지 라우팅 기술을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템은, 하나의 서버군을 형성하는 복수 개의 메시지 서버, 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 메시지 라우팅 서버, 및 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하며, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 디렉토리 서버를 포함한다.
한편, 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법은, 디렉토리 서버에서, 하나의 서버군을 형성하는 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 단계, 메시지 라우팅 서버에서, 특정 단말 또는 세션과 관련된 메시지를 수신하는 단계, 상기 디렉토리 서버에서, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 단계, 및 상기 메시지 라우팅 서버에서, 상기 디렉토리 서버에 의해 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 단계를 포함한다.
한편, 본 발명의 일 실시예에 따른 디렉토리 서버는, 하나의 서버군을 형성하는 복수 개의 메시지 서버에 대하여, 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 논리 서버군 생성 모듈, 및 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 특정 단말 또는 세션에 할당하는 메시지 서버 할당 모듈을 포함한다.
본 발명의 실시예들에 따를 경우, 특정 단말 또는 세션에 할당된 메시지 서버의 정보를 알기 위하여 별도의 데이터베이스에 액세스할 필요가 없으므로, 데이터베이스 액세스로 인한 병목 현상을 없앨 수 있으며 이에 따라 시스템 전체의 처리 성능을 향상시킬 수 있는 장점이 있다.
또한, 본 발명의 실시예들에 따르면, 특정 세션에 속한 단말들로 메시지 송신 시 해당 메시지에 각 대상 단말들의 네트워크 주소를 포함할 필요 없이 해당 세션 아이디만을 메시지에 포함하면 되므로, 메시지 용량의 오버헤드를 감소시킬 수 있다. 이에 따라 해당 메시지를 처리하기 위한 네트워크 대역폭 및 서버 자원(CPU, 메모리 I/O) 또한 종래기술에 비해 대폭 절감할 수 있게 된다. 이는 특히 작은 용량의 메시지 송수신이 매우 빈번하게 일어나는 개인간/그룹간 인스턴트 메시징 또는 VoIP 등의 처리에 매우 효과적이다.
도 1은 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따라 생성된 논리 서버군을 예시한 도면이다.
도 3은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 가능 상태에서 접속 불가 상태로 전환된 예를 설명하기 위한 도면이다.
도 4은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 불가 상태에서 접속 가능 상태로 전환된 예를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법(500)을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 디렉토리 서버(106)의 상세 구성을 나타낸 도면이다.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
본 발명의 기술적 사상은 청구범위에 의해 결정되며, 이하의 실시예는 본 발명의 기술적 사상을 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 효율적으로 설명하기 위한 일 수단일 뿐이다.
도 1은 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)을 설명하기 위한 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 동적 메시지 라우팅 시스템(100)은 복수 개의 메시지 서버(102), 메시지 라우팅 서버(104), 디렉토리 서버(106) 및 감시 서버(108)를 포함하며, 상기 각 구성요소들은 유/무선 네트워크(110)를 통하여 서로 연결되어 데이터를 송수신한다.
메시지 서버(102)는 특정 단말(미도시) 또는 세션과 접속되어 상기 단말 또는 세션과 관련된 메시지를 처리하기 위한 서버이다. 예를 들어, 메시지 서버(102)는 복수 개의 단말들이 참여하는 그룹 채팅방을 개설하고, 상기 그룹 채팅방 내에서의 그룹 채팅을 처리하기 위한 채팅 서버이거나, 또는 단말간의 음성 채팅, 또는 복수 개의 단말 사이의 다자간 음성/영상 회의 등을 중계하는 서버일 수 있다. 다만, 본 발명은 이에 한정되는 것은 아니며, 하나 이상의 단말과 접속되어 해당 단말로부터 수신되는 메시지를 처리하기 위한 서버라면 제한 없이 본 발명의 메시지 서버(102)가 될 수 있다. 본 발명에서는 동일한 기능을 수행하는 다수 개의 메시지 서버들을 병렬로 배치하여 하나의 서버군을 형성하며, 상기 서버군에 속한 메시지 서버(102)들은 각각 소정의 서버 할당 규칙에 따라 특정 단말 또는 세션에 할당된다.
이때, 상기 단말은 복수 개의 메시지 서버(102) 중 하나와 접속을 유지하면서 접속중인 메시지 서버로부터 메시지를 수신하거나 또는 해당 메시지 서버로 메시지를 송신하기 위한 네트워크 내 구성요소를 의미한다. 본 발명의 실시예에서 단말은 스마트폰, 태블릿 PC, 셀룰러폰 등의 모바일 디바이스, 데스크탑 또는 노트북 컴퓨터 등의 개인용 또는 휴대용 사용자 기기들을 포함할 수 있다. 한편, 본 발명의 실시예에서 단말은 반드시 클라이언트측 디바이스만을 의미하는 것은 아니며, 애플리케이션 서버 또는 다른 형태의 서버 또한 메시지 서버(102)와 메시지를 송수신할 경우 본 발명에서의 단말이 될 수 있다. 또한 상기 단말은 메시지 서버(102)와 직접 연결될 수도 있으며, 별도의 연결 서버를 경유하여 메시지 서버(102)와 연결될 수도 있다.
한편, 전술한 바와 같이 메시지 서버(102) 각각에 단말이 할당될 경우, 메시지 서버(102)는 자신에게 할당된 단말로부터 메시지 수신자 리스트를 수신하여 저장할 수 있다. 이때 상기 메시지 수신자 리스트는 해당 단말이 송신하는 멀티캐스트 메시지를 수신할 단말의 목록으로서, 예를 들어 상기 단말에 저장된 주소록(contact list)일 수 있다. 이와 같이 메시지 서버(102)에 메시지 수신자 리스트가 저장될 경우, 단말은 메시지 서버(102)로 멀티캐스트 메시지를 송신할 수 있으며, 이를 수신한 메시지 서버(102)는 상기 메시지 수신자 리스트에 포함된 단말들로 수신된 상기 멀티캐스트 메시지를 송신할 수 있다. 이와 같이 단말과 연결된 메시지 서버(102)가 단말 별 메시지 수신자 리스트를 저장할 경우에는 메시지 멀티캐스팅 시마다 별도의 데이터베이스 룩업(lookup) 등을 통하여 멀티캐스트 메시지 수신 대상 단말의 정보를 조회할 필요가 없으므로 메시지 전송의 오버헤드를 감소할 수 있다. 이는 특히 인스턴트 메시징 등에서 특정 단말의 프로필 변경 등을 타 단말에 전달할 경우 효과적으로 사용될 수 있다.
한편, 상기 단말과 연결된 메시지 서버(102)에 장애가 발생하거나, 또는 새로운 메시지 서버(102)가 추가되는 등으로 인하여 상기 단말과 연결된 메시지 서버(102)가 변경될 경우, 상기 단말은 변경된 메시지 서버(102)로 상기 메시지 수신자 리스트를 재송신할 수 있다.
한편, 상기 세션은 둘 이상의 단말 상호간의(또는 단말과 서버 상호간의) 일련의 연속적인 커뮤니케이션(interactive communication dialog)을 의미한다. 예를 들어 상기 세션은 1:1 또는 그룹 채팅 등이 될 수 있다. 즉, 메시지 서버(102)는 복수 개의 단말들이 참여하는 특정 채팅 그룹에 할당되어 해당 채팅 그룹과 관련된 메시지들을 처리하도록 구성될 수 있다.
메시지 라우팅 서버(104)는 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅한다. 상기 메시지는 네트워크 내에 존재하는 네트워크 엔티티로부터 수신된 것일 수 있으며, 상기 네트워크 엔티티는 예를 들어 네트워크 내의 특정 서버 또는 다른 단말 등이 될 수 있다. 구체적으로, 메시지 라우팅 서버(104)는 상기 특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 단말 또는 세션에 할당된 메시지 서버(102)가 어떤 것인지를 후술할 디렉토리 서버(106)에 질의한다. 이후, 메시지 라우팅 서버(104)는 상기 질의에 대한 응답으로 디렉토리 서버(106)로부터 메시지 서버(102)의 정보를 수신하고, 수신된 상기 정보를 이용하여 수신된 상기 메시지를 라우팅한다. 또한, 메시지 라우팅 서버(104)는 네트워크 내 다른 엔티티로부터 메시지를 수신하여 이를 라우팅하는 것이 아니라, 직접 특정 단말로 전송할 메시지를 생성하여 이를 메시지 서버(102)로 라우팅할 수도 있다.
디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 해시값에 따라 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성한다. 또한, 디렉토리 서버(106)는 메시지 라우팅 서버(104)로부터 특정 단말 또는 세션에 할당된 메시지 서버(102)에 대한 질의를 수신하고, 이에 따라 상기 논리 서버군에 속한 메시지 서버(102) 중 상기 단말 또는 세션에 할당된 메시지 서버(102)에 대한 정보를 메시지 라우팅 서버(104)로 제공한다. 상기 논리 서버군 생성 및 각 메시지 서버의 할당과 관련된 상세한 사항은 후술하기로 한다.
한편, 도시된 실시예에서는 복수 개의 메시지 서버(102)와 별도로 메시지 라우팅 서버(104) 및 디렉토리 서버(106)가 존재하는 것으로 도시하였으나, 이는 단지 기능적인 분류에 불과하다. 즉, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 물리적으로 복수 개의 메시지 서버(102)와 별도의 컴퓨터 장치로 구현될 수도 있고, 또는 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106) 중 적어도 하나의 역할을 겸할 수 있으며, 두 경우 모두 본 발명의 권리범위 내에 포함된다. 만약 복수 개의 메시지 서버(102) 각각이 메시지 라우팅 서버(104) 및 디렉토리 서버(106)의 역할을 겸하도록 구성되는 경우, 메시지 라우팅 서버(104) 및 디렉토리 서버(106)는 메시지 서버(102)를 구성하는 일 구성요소로서 존재하게 되며, 이 경우 특정 단말 또는 세션과 관계된 메시지는 일차적으로 복수 개의 메시지 서버(102) 중 임의로 선택된 하나의 메시지 서버로 전달되었다가, 해당 단말 또는 세션에 할당된 다른 메시지 서버로 라우팅될 수 있다.
이를 예를 들어 설명하면 다음과 같다. 먼저, 네트워크 내의 특정 단말(송신측 단말)이 상기 네트워크 내의 다른 단말(수신측 단말)로 메시지를 전달한다고 가정하자. 이 경우 상기 송신측 단말은 자신에게 할당된 메시지 서버(102)로 상기 메시지를 전송하며, 이때 상기 메시지에는 수신측 단말의 네트워크 주소가 포함된다. 상기 메시지를 수신한 메시지 서버(102)는 상기 메시지를 메시지 라우팅 서버(104)로 전송하며, 메시지 라우팅 서버(104)는 상기 메시지에 포함된 수신측 단말의 네트워크 주소를 이용하여 디렉토리 서버(106)에 상기 수신측 단말과 연결된 메시지 서버(102)를 할당해 줄 것을 요청한다. 그러면 디렉토리 서버(106)는 상기 요청에 따라 상기 수신측 단말에 할당된 메시지 서버 정보를 송신측 메시지 서버(102)로 회신한다. 이후, 메시지 라우팅 서버(104)는 회신된 상기 메시지 서버 정보에 따라 상기 메시지를 수신측 단말과 연결된 메시지 서버(102)로 전달하며, 이를 수신한 메시지 서버(102)는 수신된 메시지를 수신측 단말로 전송한다. 즉, 이 경우 상기 메시지는 다음과 같은 경로를 거쳐 전달될 수 있다.
송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
한편, 실시예에 따라 송신측 단말은 자신과 연결된 메시지 서버(102)를 거치지 않고 직접 메시지 라우팅 서버(104)로 메시지를 전송할 수도 있으며, 이 경우 상기 메시지는 다음과 같은 경로를 거쳐 전달될 수 있다.
송신측 단말 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
또한, 실시예에 따라 메시지 라우팅 서버(104)는 별도의 하드웨어적 구성으로 네트워크 내에 존재하는 것이 아니라, 각 메시지 서버(102)들이 메시지 라우팅 서버(104)의 기능을 겸할 수 있다. 이 경우, 상기 경로는 다음과 같이 구성될 수 있다.
송신측 단말 -> 송신측 단말과 연결된 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
즉, 이 경우 송신측 단말과 연결된 메시지 서버(102)가 기 설정된 서버 할당 규칙을 이용하여 수신측 단말과 연결된 메시지 서버를 알아내고 해당 메시지 서버로 메시지를 바로 전달할 수 있다.
또한, 메시지 라우팅 서버(104)는 다른 단말 뿐만 아니라, 네트워크내 다른 서버(애플리케이션 서버 등)로부터 메시지를 수신하고, 이를 단말로 전송할 수도 있다. 이 경우 메시지 전송 경로는 다음과 같다.
네트워크 내 다른 서버 -> 메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
또한, 전술한 바와 같이 각 메시지 서버(102)가 메시지 라우팅 서버(104)의 기능을 겸할 경우, 상기 메시지는 메시지 라우팅 서버(104)로 전달되는 것이 아니라 임의의 메시지 서버(102)로 전달될 수 있다. 즉, 상기 메시지는 다음과 같이 전송될 수 있다.
네트워크 내 다른 서버 -> 임의의 메시지 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
한편, 메시지 라우팅 서버(104)에서 직접 메시지를 생성하여 단말로 전송하는 것도 가능하며, 이 경우 메시지 전송 경로는 다음과 같다.
메시지 라우팅 서버 -> 수신측 단말과 연결된 메시지 서버 -> 수신측 단말
다음으로, 감시 서버(108)는 주키퍼(zookeeper)라고도 하며, 복수 개의 메시지 서버(102)들의 동작 상태를 감시하고, 복수 개의 메시지 서버(102) 중 적어도 하나의 메시지 서버의 동작 상태가 변화할 경우 이를 상기 서버군에 속한 다른 메시지 서버들 및 디렉토리 서버(106)에 통지한다. 예를 들어, 감시 서버(108)는 복수 개의 메시지 서버(102) 중 어느 하나의 서버의 동작이 중지되어 단말의 접속이 불가능한 경우, 동작이 중지된 서버가 다시 동작할 경우(즉, 접속 가능 상태로 변경될 경우) 또는 새로운 메시지 서버가 추가된 경우 등의 이유로 인해 메시지 서버들의 동작 상태가 변화할 경우, 이에 대한 정보를 복수 개의 메시지 서버(102) 및 디렉토리 서버(106)에 통지한다. 이에 따라 디렉토리 서버(106)는 현재 어떤 서버가 살아있는지 또는 죽었는지의 정보를 실시간으로 수신할 수 있으며, 이를 이용하여 현재 동작 중인(살아 있는) 서버만을 포함하도록 상기 논리 서버군을 생성하게 된다. 또한 디렉토리 서버(106)는 감시 서버(108)로부터 복수 개의 메시지 서버(102) 중 적어도 하나의 서버의 동작 상태 변경을 수신할 경우(즉, 특정 서버가 죽거나 살아난 경우 또는 새로운 서버가 추가된 경우) 기 생성된 논리 서버군에 상기 변경을 반영하여 논리 서버군을 재생성(업데이트)하게 된다.
도 2는 본 발명의 일 실시예에 따라 생성된 논리 서버군을 예시한 도면이다. 도면에서는 복수 개의 메시지 서버(102)가 서버 A, B, C 및 D의 4개의 서버로 구성되는 예를 도시한 것이나, 복수 개의 메시지 서버(102) 내에 포함되는 메시지 서버의 개수에는 제한이 없으며, 필요한 개수만큼 메시지 서버를 구비할 수 있다.
디렉토리 서버(106)에서 논리 서버군을 생성하는 과정은 다음과 같다. 먼저, 디렉토리 서버(106)는 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 N개(N은 1 이상의 정수)의 해시값을 생성한다. 이때, 상기 복수 개의 메시지 서버(102) 각각의 식별키는 예를 들어 각 메시지 서버의 IP 또는 맥 어드레스 등이 될 수 있다. 또한, 각 메시지 서버 별로 생성되는 N개의 해시값들은 각각 서로 다른 값을 가지도록 구성된다.
예를 들어, 만약 각 메시지 서버의 IP를 이용하여 해시값을 생성할 경우에는 다음과 같은 수학식을 이용하여 해시값을 생성할 수 있다.
[수학식 1]
해시값 = 해시함수(서버의 IP주소 + I, I = 1, ...,N)
즉, 각 메시지 서버의 IP주소에 1부터 N까지의 정수를 차례로 더한 값을 각각 해시함수를 이용하여 해싱(hashing)함으로써 N개의 해시값을 생성할 수 있다. 그러나, 상술한 해시값 생성 방법은 단지 하나의 예일 뿐, 이밖에 위 조건들을 만족하는 어떠한 방법으로도 해시값을 생성할 수 있음은 자명하다.
상기와 같은 방법을 통하여 각 메시지 서버 별로 N개씩의 해시값이 생성되면, 디렉토리 서버(106)는 생성된 해시값에 따라 복수 개의 메시지 서버(102)를 고리 형태로 배열한다. 예를 들어, 디렉토리 서버(106)는 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 고리 내에 배열되도록 논리 서버군을 생성할 수 있다. 이때, 복수 개의 메시지 서버(102) 각각은 생성된 해시값의 개수(N)만큼 상기 고리 내에 중복되어 배열된다.
만약, 메시지 서버 A, B, C 및 D에 대하여 4개씩(N=4)의 해시값을 계산한 결과가 다음과 같다고 가정하자.
서버 A: 0, 54, 20, 72
서버 B: 37, 65, 7, 86
서버 C: 94, 51, 13, 25
서버 D: 16, 46, 61, 82
상기 해시값을 이용하여 4개의 메시지 서버를 고리 내에 해시값에 따른 오름차순으로 배열하면 도 2와 같다(도면에서 괄호 안의 숫자는 계산된 해시값을 의미). 도시된 바와 같이, 각 메시지 서버 별로 4개씩의 해시값을 계산하였으므로, 논리 서버군 내에서도 동일한 서버가 해시값에 따라 4번씩 중복되어 나타난다.
이와 같이 논리 서버군이 생성된 이후, 디렉토리 서버(106)는 메시지 라우팅 서버(104)로부터 특정 단말 또는 세션과 관련된 메시지의 라우팅을 위한 메시지 서버 할당 요청을 수신하고, 해당 단말 또는 세션의 식별키로부터 생성된 해시값 및 기 설정된 서버 할당 규칙을 이용하여 논리 서버군에 포함된 복수 개의 메시지 서버 중 하나를 단말에 할당한다.
예를 들어, 디렉토리 서버(106)는 상기 단말의 식별키(해당 단말의 IP주소 또는 맥 어드레스 등) 또는 상기 세션의 식별키(세션 아이디 등)을 기 설정된 해시함수를 이용하여 해싱함으로써 해시값(질의 해시값)을 계산할 수 있다.
또한, 상기 서버 할당 규칙은, 예를 들어 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성되거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 단말에 할당하도록 구성될 수 있다. 그러나 상술한 서버 할당 규칙은 단지 예시에 불과한 것으로서, 단말 또는 세션의 식별키에 따라 메시지 서버를 할당하기 위한 다른 종류의 규칙 또한 제한 없이 적용 가능하다.
이를 예를 들어 설명하면 다음과 같다. 만약 특정 단말의 IP 주소로부터 생성된 질의 해시값이 다음과 같다고 가정하자.
해시함수(클라이언트 IP 주소) = 22
만약 상기 서버 할당 규칙이 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 서버를 단말에 할당하도록 구성될 경우, 도 2에서 22보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버는 25의 해시값을 가지는 서버 C이므로, 디렉토리 서버(106)는 단말에 서버 C를 할당하고, 이에 따른 서버 할당 메시지를 단말에 송신한다. 그러면 이를 수신한 단말은 서버 C에 접속을 수행한다.
도 3은 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 메시지 서버 중 일부가 접속 가능 상태에서 접속 불가 상태로 전환된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 불가 상태로 전환된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 불가 상태로 전환된 경우에도 이와 동일한 알고리즘이 적용된다.
도시된 실시예에서와 같이 서버 C가 접속 불가 상태로 전환된 경우, 디렉토리 서버(106)로부터 서버 C를 할당받은 메시지 전송 서버(104)는 먼저 서버 C에 대한 접속을 시도한다. 그러나 서버 C는 현재 장애 등의 이유로 접속이 불가능하므로, 메시지 전송 서버(104)는 디렉토리 서버(106)로부터 서버 C를 대체할 예비 서버의 정보를 수신하고 수신된 정보에 따라 예비 서버로 상기 메시지를 전송할 수 있다.
상기 예비 서버는, 예를 들어 상기 논리 서버군에 속한 서버 중 주 서버(메시지 서버 할당 알고리즘에 따라 선택된 서버)가 없다고 가정할 경우 해당 단말 또는 세션에 할당되었을 것이라고 가정되는 서버가 될 수 있다. 예를 들어, 전술한 실시예에서 단말(102)의 해시값이 22일 경우, 만약 서버 C가 없다고 가정하면 해시값 37을 가지는 서버 B가 할당되었을 것이므로, 디렉토리 서버(106)는 주 서버로 서버 C를, 예비 서버로 서버 B를 할당할 수 있다. 그러나 이와 같은 예비 서버 할당 알고리즘은 예시적인 것으로서, 본 발명은 특정 예비 서버 할당 알고리즘에 한정되는 것은 아님에 유의한다.
이와 같이 주 서버와 예비 서버가 함께 할당될 경우 메시지 전송 서버(104)는 먼저 주 서버로의 메시지 송신을 시도하고, 주 서버로의 접속이 불가능하다고 판단되는 경우 예비 서버로 메시지를 전송하게 된다. 예를 들어, 단말의 해시값이 47일 경우 전술한 알고리즘에 따라 단말은 주 서버로 서버 C(해시값 51), 예비 서버로 서버 A(해시값 54)를 각각 할당받으므로, 예비 서버인 서버 A에 접속하게 된다.
이후, 시간이 지나면 디렉토리 서버(106) 또한 서버 C의 접속 불가 상태를 반영하여 논리 서버군을 재생성하므로, 서버 A는 자연스럽게 해당 단말 또는 세션에 대한 예비 서버가 아닌 주 서버가 된다. 즉, 디렉토리 서버(106)는 기 설정된 주기 별로 각 메시지 서버의 상태를 반영하여 논리 서버군을 재생성하도록 구성되는 바, 해당 주기가 경과되면 서버 C는 재생성된 논리 서버군에서 제외되므로 서버 A가 해당 단말 또는 세션에 대한 주 서버가 된다. 상기 주기는 메시지 서버 등의 특성을 고려하여 적절하게 정해질 수 있다.
도 4는 본 발명의 일 실시예에 따라 복수 개의 메시지 서버(102)에 속한 서버 중 일부가 접속 불가 상태에서 접속 가능 상태로 전환되거나, 또는 새로운 메시지 서버가 추가된 예를 설명하기 위한 도면이다. 도시된 실시예에서는 서버 C가 접속 불가 상태에서 접속 가능 상태로 전환된 예를 나타내었다. 도시된 실시예에서는 복수 개의 메시지 서버(102) 중 하나의 메시지 서버만이 접속 가능 상태로 전환되거나 또는 추가된 예를 나타내었으나, 둘 이상의 메시지 서버가 접속 가능 상태로 전환되거나 또는 추가된 경우에도 이와 동일한 알고리즘이 적용된다.
도시된 실시예에서와 같이 서버 C가 접속 불가 상태에서 접속 가능 상태로 전환된 경우, 다른 서버들에 접속된 단말 중 상기 서버 C로 접속되어야 할 단말들이 존재할 수 있다. 예를 들어, 해시값이 11인 단말 또는 세션은 서버 C가 존재하지 않는 환경에서는 서버 D(해시값 16)에서 처리되나, 서버 C(해시값 13)가 접속 가능할 경우에는 서버 C에서 처리되어야 한다. 따라서 이 경우 각 메시지 서버들은 자신에게 할당된 단말 또는 세션 중 새로 추가된 메시지 서버에 접속되어야 한다고 판단되는 단말 또는 세션에 추가된 메시지 서버로의 접속 변경 요청을 송신하여 각 단말들이 정상적인 주 서버에 접속될 수 있도록 한다.
한편, 이 경우 각 메시지 서버들이 동시에 자신에게 할당된 단말 또는 세션에 접속 변경 요청을 송신할 경우에는 일시적으로 새로운 서버로의 접속 요청이 한꺼번에 일어나게 되어 네트워크 트래픽이 순간적으로 폭증할 우려가 있다. 따라서 이를 방지하기 위하여, 각 메시지 서버들은 기 설정된 최대 지연 시간의 범위 내에서 임의로 선택된 지연 시간만큼 대기한 후 주 서버로의 접속 변경 요청을 송신하도록 구성될 수 있다. 예를 들어, 도시된 실시예에서 최대 지연 시간이 1분일 경우, 서버 A는 13초만큼, 서버 B는 32초만큼, 서버 D는 52초만큼 대기한 후 자신에 연결된 단말로 접속 변경 요청을 송신할 수 있으며, 이와 같이 구성됨으로써 시간대별로 트래픽을 분산할 수 있게 된다.
또한, 상기 접속 변경 요청을 송신하기 전이라도, 각 메시지 서버들은 자신에게 접속한 단말 중 새로 추가된 메시지 서버에 접속되어야 한다고 판단되는 클라이언트에 대한 연결 정보를 추가된 메시지 서버에 전송할 수 있다. 이와 같이 구성될 경우 추가된 메시지 서버는 자신과 연결되어야 하나 아직 실제로 연결되지 않은 단말 또는 세션으로 송신한 메시지를 메시지 라우팅 서버(104)로부터 수신할 경우, 실제 단말과 접속된 메시지 서버로부터 받은 정보를 이용하여 해당 메시지 서버로 수신한 메시지를 포워딩할 수 있다.
예를 들어, 도면에서 서버 D에 연결되어 있던 단말의 경우, 서버 C의 추가로 인하여 서버 D가 아닌 서버 C에 연결되어야 할 경우가 발생할 수 있다. 이 경우 서버 D는 소정 시간이 경과한 후 단말로 서버 C로 재접속할 것을 요청하게 된다. 그러나 만약 상기 재접속 수행 전 메시지 라우팅 서버(104)로부터 단말로 송신할 메시지가 존재하는 경우 해당 메시지는 업데이트된 논리 서버군 정보에 따라 서버 C로 전송되게 된다. 이러한 경우의 효율적인 처리를 위해 서버 D는 단말의 재접속 수행 전까지 해당 단말이 자신과 접속하고 있다는 정보를 서버 C로 전송하게 되며, 이에 따라 서버 C는 메시지 라우팅 서버(104)로부터 수신된 메시지를 서버 D로 전달하여 단말로 전달될 수 있도록 한다.
도 5는 본 발명의 일 실시예에 따른 동적 메시지 라우팅 방법(500)을 설명하기 위한 순서도이다.
먼저, 디렉토리 서버(106)에서 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다(502). 전술한 바와 같이, 본 단계는 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있으며, 이 경우 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.
다음으로, 메시지 라우팅 서버(104)에서 특정 단말 또는 세션과 관련된 메시지를 수신하고(504), 상기 논리 서버군에 포함된 복수 개의 메시지 서버(102) 중 상기 단말 또는 세션에 대응되는 메시지 서버의 정보를 디렉토리 서버(106)로 요청한다(506).
다음으로, 디렉토리 서버(106)는 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 해시값 및 기 설정된 서버 할당 규칙을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하고(508) 이에 대한 정보를 메시지 라우팅 서버(104)로 제공한다(510).
이후, 메시지 라우팅 서버(104)는 디렉토리 서버(106)로부터 제공된 메시지 서버 정보를 이용하여 상기 메시지를 라우팅한다(512).
도 6은 본 발명의 일 실시예에 따른 디렉토리 서버(106)의 상세 구성을 나타낸 도면이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 디렉토리 서버(106)는 논리 서버군 생성 모듈(600) 및 메시지 서버 할당 모듈(602)을 포함한다.
논리 서버군 생성 모듈(600)은 하나의 서버군을 형성하는 복수 개의 메시지 서버(102)에 대하여, 복수 개의 메시지 서버(102) 각각의 식별키를 이용하여 각 메시지 서버(102) 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 복수 개의 메시지 서버(102)들이 고리 형태로 배열된 논리 서버군을 생성한다. 이때, 논리 서버군 생성 모듈(600)은 복수 개의 메시지 서버(102)들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성할 수 있다. 또한, 논리 서버군 생성 모듈(600)은 각 메시지 서버(102) 별로 생성된 해시값의 개수만큼 복수 개의 메시지 서버(102)들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성할 수 있다.
그리고 메시지 서버 할당 모듈(602)은 상기 논리 서버군에 포함된 메시지 서버(102) 중 하나의 메시지 서버(102)를 특정 단말 또는 세션에 할당한다.
한편, 본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야에서 통상의 지식을 가진 자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플로피 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다.
그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 동적 메시지 라우팅 시스템
102: 메시지 서버
104: 메시지 라우팅 서버
106: 디렉토리 서버
108: 감시 서버
110: 네트워크
600: 논리 서버군 생성 모듈
602: 메시지 서버 할당 모듈

Claims (21)

  1. 하나의 서버군을 형성하는 복수 개의 메시지 서버;
    특정 단말 또는 세션과 관련된 메시지를 수신하고, 상기 복수 개의 메시지 서버 중 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 메시지 라우팅 서버; 및
    상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하며, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 디렉토리 서버를 포함하는 메시지 라우팅 시스템.
  2. 청구항 1에 있어서,
    상기 디렉토리 서버는 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는, 메시지 라우팅 시스템.
  3. 청구항 1에 있어서,
    상기 디렉토리 서버는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
  4. 청구항 3에 있어서,
    상기 디렉토리 서버는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 시스템.
  5. 청구항 1에 있어서,
    상기 디렉토리 서버는, 상기 단말 식별키 또는 상기 세션 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
  6. 청구항 5에 있어서,
    상기 디렉토리 서버는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 시스템.
  7. 청구항 1에 있어서,
    상기 복수 개의 메시지 서버들의 동작 상태를 감시하고, 상기 복수 개의 메시지 서버 중 적어도 하나의 메시지 서버의 동작 상태가 변화할 경우 이를 상기 서버군에 속한 다른 메시지 서버들 및 상기 디렉토리 서버에 통지하는 감시 서버를 더 포함하는, 메시지 라우팅 시스템.
  8. 청구항 7에 있어서,
    상기 디렉토리 서버는, 상기 감시 서버로부터 수신되는 상기 메시지 서버들의 동작 상태 변화 정보에 따라 상기 논리 서버군을 업데이트하는, 메시지 라우팅 시스템.
  9. 청구항 8에 있어서,
    상기 복수 개의 메시지 서버는, 상기 감시 서버를 통하여 다른 메시지 서버들의 동작 상태 변화를 감지하고, 자신과 접속 중인 단말 또는 세션 중 상기 동작 상태 변화에 따라 다른 메시지 서버에 접속되어야 할 단말 또는 세션이 존재하는 경우, 해당 단말 또는 세션에 접속 변경 요청을 송신하는, 메시지 라우팅 시스템.
  10. 청구항 9에 있어서,
    상기 복수 개의 메시지 서버는, 기 설정된 최대 지연 시간의 범위 내에서 임의로 선택된 지연 시간만큼 대기한 후 상기 접속 변경 요청을 송신하는 동적 메시지 라우팅 시스템.
  11. 청구항 1에 있어서,
    상기 특정 단말에 할당된 메시지 서버는, 상기 특정 단말로부터 메시지 수신자 리스트를 수신하여 저장하며, 상기 특정 단말로부터 멀티캐스트 메시지를 수신할 경우, 상기 메시지 수신자 리스트에 포함된 타 단말로 상기 멀티캐스트 메시지를 송신하는, 메시지 라우팅 시스템.
  12. 디렉토리 서버에서, 하나의 서버군을 형성하는 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 단계;
    메시지 라우팅 서버에서, 특정 단말 또는 세션과 관련된 메시지를 수신하는 단계;
    상기 디렉토리 서버에서, 상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 상기 단말 또는 세션에 할당하는 단계; 및
    상기 메시지 라우팅 서버에서, 상기 디렉토리 서버에 의해 상기 단말 또는 세션에 할당된 메시지 서버로 상기 메시지를 라우팅하는 단계를 포함하는 메시지 라우팅 방법.
  13. 청구항 12에 있어서,
    상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계의 수행 이후, 상기 디렉토리 서버에서, 상기 메시지 라우팅 서버의 요청에 따라 상기 단말 또는 세션에 할당된 메시지 서버 정보를 상기 메시지 라우팅 서버에 제공하는 단계를 더 포함하는, 메시지 라우팅 방법.
  14. 청구항 12에 있어서,
    상기 논리 서버군을 생성하는 단계는, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
  15. 청구항 14에 있어서,
    상기 논리 서버군을 생성하는 단계는, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 메시지 라우팅 방법.
  16. 청구항 12에 있어서,
    상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 단말의 식별키 또는 상기 세션의 식별키로부터 생성된 질의 해시값을 이용하여 상기 논리 서버군에 포함된 메시지 서버 중 하나를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
  17. 청구항 16에 있어서,
    상기 메시지 서버를 상기 단말 또는 세션에 할당하는 단계는, 상기 질의 해시값보다 큰 해시값을 가지는 메시지 서버 중 가장 작은 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하거나, 또는 상기 질의 해시값보다 작은 해시값을 가지는 메시지 서버 중 가장 큰 해시값을 가지는 메시지 서버를 상기 단말 또는 세션에 할당하는, 메시지 라우팅 방법.
  18. 청구항 12 내지 17 중 어느 한 항에 기재된 방법을 컴퓨터상에서 수행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  19. 하나의 서버군을 형성하는 복수 개의 메시지 서버에 대하여, 상기 복수 개의 메시지 서버 각각의 식별키를 이용하여 각 메시지 서버 별로 하나 이상의 해시값을 생성하고, 생성된 상기 해시값에 따라 상기 복수 개의 메시지 서버들이 고리 형태로 배열된 논리 서버군을 생성하는 논리 서버군 생성 모듈; 및
    상기 논리 서버군에 포함된 메시지 서버 중 하나의 메시지 서버를 특정 단말 또는 세션에 할당하는 메시지 서버 할당 모듈을 포함하는 디렉토리 서버.
  20. 청구항 19에 있어서,
    상기 논리 서버군 생성 모듈은, 상기 복수 개의 메시지 서버들이 계산된 해시값에 따른 오름차순 또는 내림차순으로 상기 고리 내에 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.
  21. 청구항 19에 있어서,
    상기 논리 서버군 생성 모듈은, 각 메시지 서버 별로 생성된 해시값의 개수만큼 상기 복수 개의 메시지 서버들이 상기 고리 내에 중복되어 배열되도록 상기 논리 서버군을 생성하는, 디렉토리 서버.
KR1020120107654A 2012-09-27 2012-09-27 동적 메시지 라우팅 시스템 및 방법 KR101382177B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120107654A KR101382177B1 (ko) 2012-09-27 2012-09-27 동적 메시지 라우팅 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120107654A KR101382177B1 (ko) 2012-09-27 2012-09-27 동적 메시지 라우팅 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20140040948A true KR20140040948A (ko) 2014-04-04
KR101382177B1 KR101382177B1 (ko) 2014-04-07

Family

ID=50650862

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120107654A KR101382177B1 (ko) 2012-09-27 2012-09-27 동적 메시지 라우팅 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101382177B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352716A (zh) * 2020-03-10 2020-06-30 深圳市腾讯计算机***有限公司 一种基于大数据的任务请求方法、装置、***及存储介质
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 (ko) * 2001-07-09 2004-10-26 한국전자통신연구원 메시징을 이용한 비동기 워크플로우 처리 방법
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 (zh) * 2020-03-10 2020-06-30 深圳市腾讯计算机***有限公司 一种基于大数据的任务请求方法、装置、***及存储介质
CN111352716B (zh) * 2020-03-10 2024-03-01 深圳市腾讯计算机***有限公司 一种基于大数据的任务请求方法、装置、***及存储介质
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 (ko) 2014-04-07

Similar Documents

Publication Publication Date Title
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 (ja) クラスタ制御システム、クラスタ制御方法、及びプログラム
WO2014190791A1 (zh) 一种网关设备身份设置的方法及管理网关设备
US9342575B2 (en) Providing high availability in an active/active appliance cluster
WO2015101260A1 (zh) 对即时通讯业务进行处理的方法及***
CN109067578B (zh) 一种组播快速切换的方法和装置
US9686178B2 (en) Configuring link aggregation groups to perform load balancing in a virtual environment
US9350666B2 (en) Managing link aggregation traffic in a virtual environment
US11251981B2 (en) Communication method and apparatus
CN111787079B (zh) 基于通信群组的通信方法、装置、服务器、***及介质
US10476746B2 (en) Network management method, device, and system
KR101920630B1 (ko) 단말을 서버에 할당하고 단말로의 효율적인 메시징을 위한 시스템 및 방법
CN105721328B (zh) 一种vrrp负载均衡的方法、装置和路由器
JP2018524922A (ja) 複数のmcpttシステムに関するフロア制御のための方法、装置及びシステム
Buyakar et al. Prototyping and load balancing the service based architecture of 5G core using NFV
CN106375355B (zh) 负载均衡处理方法及装置
US7984158B2 (en) Web service for coordinating actions of clients
CN112968965B (zh) Nfv网络节点的元数据服务方法、服务器及存储介质
KR101382177B1 (ko) 동적 메시지 라우팅 시스템 및 방법
US10523619B2 (en) Stateless message routing
WO2023207189A1 (zh) 负载均衡方法及***、计算机存储介质、电子设备
CN102647424B (zh) 一种数据传输方法及其装置
RU2679340C1 (ru) Маршрутизации сообщений без сохранения состояния
CN110474781B (zh) 一种组播数据转发的方法及装置

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