KR100801318B1 - 메시지 전송 시스템 - Google Patents

메시지 전송 시스템 Download PDF

Info

Publication number
KR100801318B1
KR100801318B1 KR1020060039033A KR20060039033A KR100801318B1 KR 100801318 B1 KR100801318 B1 KR 100801318B1 KR 1020060039033 A KR1020060039033 A KR 1020060039033A KR 20060039033 A KR20060039033 A KR 20060039033A KR 100801318 B1 KR100801318 B1 KR 100801318B1
Authority
KR
South Korea
Prior art keywords
message
group
server
user
user information
Prior art date
Application number
KR1020060039033A
Other languages
English (en)
Other versions
KR20070106316A (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 KR1020060039033A priority Critical patent/KR100801318B1/ko
Publication of KR20070106316A publication Critical patent/KR20070106316A/ko
Application granted granted Critical
Publication of KR100801318B1 publication Critical patent/KR100801318B1/ko

Links

Images

Classifications

    • G06Q50/50
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Abstract

본 발명은 메시지 전송 시스템에 관한 것으로서, 본 발명에 의한 시스템은 외부 서버 또는 클라이언트로부터 메시지를 수신하여 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하며, 그룹 메시지와 비그룹 메시지를 서로 다른 프로세스에 의해 처리하는 메시지 처리부-상기 그룹 메시지는 그룹 식별을 위한 그룹 아이디 정보를 포함하며 수신자 정보를 포함하지 않음-; 상기 메시지 처리부로부터 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 요청받을 경우, 해당 사용자 정보 데이터를 추출하여 상기 메시지 처리부에 제공하는 데이터베이스부를 포함하되, 상기 메시지 처리부는 상기 수신된 메시지가 비그룹 메시지일 경우, 비그룹 메시지에 포함된 수신자들에게 전송할 미리 설정된 프로토콜의 메시지 패킷을 생성하며, 상기 수신된 메시지가 그룹 메시지일 경우 상기 사용자 정보 데이터에 포함된 사용자들에게 전송할 미리 설정된 프로토콜의 메시지 패킷을 생성한다. 본 발명에 의하면, 그룹 메시지 처리로 인한 다른 메시지들의 처리 지연을 최소화할 수 있으며, 그룹 메시지 처리 시 데이터베이스에 대한 쿼리 전달 및 데이터베이스 검색 횟수를 최소화할 수 있다.
메시지, 커뮤니티, 그룹

Description

메시지 전송 시스템{Message Transmission System}
도 1은 통상적인 게임 중계 시스템의 일례를 도시한 도면.
도 2는 본 발명의 바람직한 일 실시예에 따른 서버 미러링을 이용한 게임 중계 시스템의 구성을 도시한 도면.
도 3은 본 발명의 바람직한 일 실시예에 따른 메시지 라우팅 서버에 생성되는 그룹을 도시한 도면.
도 4는 본 발명의 바람직한 일 실시예에 따른 퍼블리서 게임 서버 및 미러링 게임 서버의 게임 의 상태를 나타낸 도면.
도 5는 본 발명의 바람직한 일 실시예에 따른 방송 서버 시스템의 구성을 도시한 도면.
도 6은 본 발명의 바람직한 일 실시예에 따른 퍼블리서 게임 서버에 게임 룸 생성 시 미러링 게임 서버에 게임 룸이 생성되는 과정에 대한 순서도.
도 7은 본 발명의 바람직한 일 실시예에 따른 중계자의 해설에 대한 음성 및 영상 데이터가 퍼블리서 게임 서버 또는 미러링 게임 서버의 관전자 클라이언트들에 전송되는 과정을 도시한 순서도.
도 8은 본 발명의 바람직한 일 실시예에 따른 퍼블리서 게임 서버에서 게임 룸 삭제 시 미러링 게임 서버에서 미러링된 게임 룸이 삭제되는 과정을 도시한 순서도.
도 9는 본 발명의 바람직한 일 실시예에 따른 게임 진행 상황이 미러링 게임 서버에서 재현되도록 퍼블리서 게임 서버의 게임 룸에서 교환되는 게임 커맨드가 미러링 게임 서버에 전달되는 과정에 대한 순서도.
도 10은 본 발명의 바람직한 일 실시예에 따른 특정 미러링 게임 서버에서 장애가 발생할 경우 장애를 복구하는 과정에 대한 순서도.
도 11은 본 발명의 일 실시예에 따른 퍼블리서 게임 서버의 메시지가 메시지 라우팅 서버를 통해 서브스크라이버 그룹에 속한 미러링 게임 서버들에 전달되는 개념도를 도시한 도면.
본 발명은 메시지 전송 시스템에 관한 것으로서, 더욱 상세하게는 다수의 수신자에게 전송되는 그룹 메시지를 효율적으로 처리하는 메시지 전송 시스템에 관한 것이다.
인스턴트 메시지, 쪽지 메시지 및 전자 메일 메시지와 같은 다양한 종류의 메시지가 네트워크를 통해 전송된다. 인터넷과 같은 네트워크를 통해 전송되는 메시지는 계속적으로 증가하는 추세이며, 특히 근래에는 커뮤니티, 블로그, 미니홈피 등에 새로운 글이 작성되는 경우, 해당 사이트에 방문하지 않아도 글을 볼 수 있도록 메시지를 전송해주고 있으며, 이러한 메시지는 일반적으로 다수의 수신자에게 전송되는 그룹 메시지이다.
도 1은 종래의 커뮤니티에서 전송하는 그룹 인스턴트 메시지를 전송하기 위한 메시지 전송 시스템의 구성을 도면이다.
도 1을 참조하면, 종래의 메시지 전송 시스템은 커뮤니티 서버(100), 메시지 큐 서버(102), 메시지 처리 서버(104), 어플리케이션 서버(106), 사용자 데이터베이스(108), 커뮤니티 데이터베이스(110) 및 메시지 전달 시스템을 포함한다.
커뮤니티 서버(100)는 새로운 글이 올라오거나 운영자가 공지 사항 등을 메시지로 전송할 것을 요청할 경우, 커뮤니티 회원들에게 그룹 메시지를 전송한다.
메시지 큐 서버(102)는 커뮤니티 서버로부터 그룹 메시지를 수신하며, 수신된 그룹 메시지를 큐에 저장하고 FIFO(First Input First Output) 방식으로 출력하여 메시지 처리 서버(104)에 제공한다. 메시지 큐 서버로는 그룹 메시지뿐만 아니라 일반 메신저 사용자들이 전송하는 인스턴트 메시지 역시 전송된다.
커뮤니티 서버(100)는 그룹 메시지 전송 시 그룹 메시지를 수신할 사용자 정보를 추출하여 그룹 메시지에 포함시키며, 메시지 큐 서버(102)에 전송되는 그룹 메시지에는 이러한 수신자 정보가 포함되어 있다.
통상적으로, 커뮤니티 서버(100)는 그룹 메시지에 상응하는 커뮤니티 회원 정보를 추출하고 커뮤니티 회원 정보 추출 후 각 커뮤니티 회원이 그룹 메시지 수신을 허락하였는지 여부를 판단하여 메시지를 수신할 커뮤니티 회원 리스트를 추출 한다. 이러한 작업은 커뮤니티 서버(100)와 커뮤니티 데이터베이스간에 한번 또는 두번의 쿼리 전송 과정을 필요로 한다.
메시지 처리 서버(104)는 메시지 큐 서버로부터 그룹 메시지 또는 비그룹 메시지(일반 메신저 사용자들이 전송하는 메시지)를 수신하여 미리 설정된 프로토콜의 메시지 패킷을 생성하여 메시지 전달 시스템(112)에 제공한다.
메시지 처리 서버(104)는 그룹 메시지 처리 시 그룹 메시지에 포함된 수신자들 중 현재 온라인인 수신자를 파악하기 위해 어플리케이션 서버에 온라인인 사용자 정보를 요청하며, 온라인인 사용자 확인을 위해 다시 한번 쿼리 생성 및 데이터베이스 검색 작업이 수행된다.
또한, 메시지 처리 서버(104)는 그룹 메시지와 비그룹 메시지를 구별하지 않고 같은 방식으로 처리하였다. 이러한 종래의 처리 방식에 의할 경우, 다수의 수신자를 포함하는 그룹 메시지의 처리에 많은 시간이 소요되며, 이로 인해 다른 메시지들의 처리가 지연되는 문제점이 있었으며, 전술한 바와 같이 종래의 메시지 처리 방식은 여러 번의 쿼리 전송 및 데이터베이스 검색 작업을 필요로 하는 문제점이 있었다.
상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 그룹 메시지 처리로 인한 다른 메시지들의 처리 지연을 최소화할 수 있는 메시지 전송 시스템을 제안하고자 한다.
본 발명의 다른 목적은 그룹 메시지 처리 시 데이터베이스에 대한 쿼리 전달 및 데이터베이스 검색 횟수를 최소화할 수 메시지 전송 시스템을 제안하는 것이다.
본 발명의 또 다른 목적은 그룹 메시지 및 비그룹 메시지를 분리하여 처리함으로써 그룹 메시지의 처리 효율을 극대화할 수 있는 메시지 전송 시스템을 제안하는 것이다.
상기한 바와 같은 목적을 달성하기 위하여 본 발명의 일 측면에 따르면, 외부 서버 또는 클라이언트로부터 메시지를 수신하여 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하며, 그룹 메시지와 비그룹 메시지를 서로 다른 프로세스에 의해 처리하는 메시지 처리부-상기 그룹 메시지는 그룹 식별을 위한 그룹 아이디 정보를 포함하며 수신자 정보를 포함하지 않음-; 상기 메시지 처리부로부터 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 요청받을 경우, 해당 사용자 정보 데이터를 추출하여 상기 메시지 처리부에 제공하는 데이터베이스부를 포함하되, 상기 메시지 처리부는 상기 수신된 메시지가 비그룹 메시지일 경우, 비그룹 메시지에 포함된 수신자들에게 전송할 미리 설정된 프로토콜의 메시지 패킷을 생성하며, 상기 수신된 메시지가 그룹 메시지일 경우 상기 사용자 정보 데이터에 포함된 사용자들에게 전송할 미리 설정된 프로토콜의 메시지 패킷을 생성하는 메시지 전송 시스템이 제공된다.
상기 외부 서버는 커뮤니티 서버이며, 상기 그룹 아이디는 커뮤니티 아이디 및 게시판 아이디 중 적어도 하나를 포함할 수 있다.
상기 메시지는 인스턴트 메시지이며, 상기 데이터베이스부는 그룹 아이디 및 사용자 아이디 필드를 가지고 있는 그룹 테이블 및 온라인인 사용자 정보를 가지고 있는 온라인 테이블을 포함할 수 있다.
상기 데이터베이스부는 상기 그룹 아이디에 상응하는 사용자 수가 미리 설정된 수 이상일 경우, 미리 설정된 수의 사용자 정보를 포함하는 사용자 정보 데이터를 상기 메시지 처리부에 제공하며 상기 사용자 정보 데이터의 마지막 사용자 필드에 마지막 사용자 아이디를 포함시킨다.
상기 메시지 처리부는 상기 마지막 사용자 아이디가 포함된 사용자 정보 데이터를 수신할 경우, 상기 사용자 정보 데이터에 포함된 사용자들에 대한 미리 설정된 프로토콜의 메시지 패킷을 생성하되, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하여 큐에 저장하며, 상기 큐로부터 보류 메시지가 출력될 경우 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자에 대한 정보를 상기 데이터베이스부에 요청한다.
상기 메시지 처리부는, 상기 외부 서버 또는 클라이언트로부터 메시지를 수신하여 큐에 저장하는 메시지 큐 서버; 및 그룹 메시지 프로세스 및 비그룹 메시지 프로세스를 포함하며, 상기 메시지 큐 서버로부터 메시지를 수신하고 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하여 해당 프로세스에 의해 메시지를 처리하는 메시지 처리 서버를 포함할 수 있다.
상기 데이터베이스부는 상기 메시지 처리 서버로부터 그룹 메시지에 상응하 는 사용자 요청 정보에 응답하여 쿼리를 생성하는 어플리케이션 서버; 및 상기 어플리케이션 서버로부터의 쿼리에 응답하여 그룹 메시지에 상응하는 사용자 정보 데이터를 출력하여 상기 어플리케이션 서버에 제공하는 사용자 데이터베이스를 포함할 수 있다.
상기 메시지 처리 서버의 그룹 메시지 처리 프로세스는, 상기 메시지 큐 서버로부터 제공된 메시지가 그룹 메시지일 경우 이를 저장하는 토스 큐; 상기 토스 큐에 저장된 그룹 메시지를 독출하는 리더; 상기 리더로부터 그룹 메시지를 제공받아 그룹 메시지를 분석하며, 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 상기 어플리케이션 서버에 요청하며, 상기 어플리케이션 서버로부터 사용자 정보 데이터를 수신할 경우 사용자 정보 데이터에 포함된 사용자들에게 전송될 미리 설정된 프로토콜의 메시지 패킷을 생성하고, 상기 사용자 정보 데이터에 마지막 사용자 아이디가 포함될 경우, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하는 토스 핸들러; 및 상기 토스 핸들러가 출력하는 보류 메시지를 상기 토스 큐에 저장하는 토스 라이터를 포함하되, 상기 토스 핸들러는 상기 리더로부터 상기 보류 메시지를 제공받을 경우, 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자 정보를 상기 어플리케이션 서버에 요청한다.
상기 메시지 처리부에 의해 생성되는 미리 설정된 프로토콜의 메시지 패킷은 메시지 전달 시스템에 의해 해당 사용자에게 전송되며, 상기 메시지 전달 시스템은 인스턴트 메시지 전송 시스템, 메일 전송 시스템, 쪽지 메시지 전송 시스템을 포함할 수 있다.
상기 메시지 처리 서버는 메시지 처리에 따른 부하를 판단하여 상기 메시지 큐 서버에 메시지를 요청하며, 상기 메시지 큐 서버는 상기 메시지 처리 서버로부터의 요청에 상응하여 메시지를 제공한다.
본 발명의 다른 측면에 따르면, 외부 서버 또는 클라이언트로부터 전송되는 메시지를 처리하는 메시지 처리 서버로서, 상기 수신된 메시지가 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하며, 상기 판단된 메시지가 비그룹 메시지일 경우, 상기 비그룹 메시지를 처리하는 비그룹 메시지 처리 프로세스 및 상기 판단된 메시지가 그룹 메시지-상기 그룹 메시지는 그룹 아이디 정보를 포함하고 수신자 정보를 포함하지 않음-일 경우 상기 그룹 메시지를 처리하는 그룹 메시지 처리 프로세스를 포함하되, 상기 그룹 메시지 처리 프로세스는 상기 그룹 메시지를 저장하는 토스 큐를 포함하며, 상기 토스 큐에 저장된 그룹 메시지를 독출하여 그룹 메시지에 상응하는 사용자 정보를 어플리케이션 서버에 요청하여 상기 어플리케이션 서버로부터 사용자 정보 데이터를 수신하고, 상기 수신된 사용자 정보 데이터에 포함된 사용자들에게 전송할 미리 설정된 프로토콜의 메시지 패킷을 생성하며, 상기 어플리케이션 서버는 그룹 메시지에 상응하는 사용자들의 수가 미리 설정된 수 이상일 경우 미리 설정된 수의 사용자 정보만을 제공하며 상기 사용자 정보 데이터에 마지막 사용자 아이디를 포함시키는 메시지 처리 서버가 제공된다.
이하에서는 첨부된 도면을 참조하여 본 발명에 의한 메시지 전송 시스템 및 방법의 바람직한 실시예를 상세히 설명한다.
도 2는 본 발명의 바람직한 일 실시예에 따른 메시지 전송 시스템의 구성을 도시한 도면이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 메시지 전송 시스템은 메시지 큐 서버(200), 어플리케이션 서버(202), 사용자 데이터베이스(204), 메시지 처리 서버(206), 커뮤니티 서버(208), 커뮤니티 데이터베이스(210) 및 메시지 전달 시스템(220)을 포함할 수 있다.
본 발명은 다수의 사용자를 수신자로 하는 그룹 메시지를 효율적으로 전송하는 시스템에 관한 것이다.
이러한 그룹 메시지의 종류는 다양하다. 예를 들어, 그룹 메시지는 커뮤니티에서 커뮤니티 운영자가 커뮤니티 회원 전원을 대상으로 전송하는 메시지이거나 커뮤니티 게시판에 새 글이 올라올 경우 새로운 글에 대한 메시지일 수 있다. 또한, 그룹 메시지는 메일 사용자가 주소록에 저장된 특정 수신자 그룹 전원에게 전송하는 메시지일 수도 있다. 상술한 그룹 메시지 이외에도 다양한 종류의 그룹 메시지가 본 발명에 의한 메시지 전송 시스템에 의해 전송될 수 있을 것이다.
또한, 메시지의 종류 역시 다양할 수 있다. 그룹 메시지는 실시간으로 메시지 수신자에게 전달되는 인스턴트 메시지일 수 있다. 또한, 그룹 메시지는 사용자가 특정 시스템 접속 시 사용자에게 제공되는 쪽지 메시지일 수도 있다. 물론, 그룹 메시지는 메일 메시지 기타 다른 종류의 메시지 역시 포함할 수도 있을 것이다.
본 실시예에서는 설명의 편의를 위해 커뮤니티에서 발생하는 그룹 메시지 및 상기 커뮤니티에서 발생하는 그룹 메시지가 실시간으로 전송되는 인스턴트 메시지 인 경우를 예로 하여 설명하기로 한다.
커뮤니티 서버(208)는 커뮤니티 사용자에 의해 생성되는 그룹 메시지를 생성하여 메시지 큐 서버(200)에 전송한다. 커뮤니티 서버(208)에서 제공하는 커뮤니티 페이지는 커뮤니티 회원을 대상으로 메시지를 전송하는 그룹 메시지 기능을 제공한다. 예를 들어, 사용자가 커뮤니티의 특정 게시판에 게시물을 작성하였을 경우, 커뮤니티 서버는 해당 게시판의 게시물 작성 정보를 알림 메시지로 수신하기로 요청한 사용자들에게 그룹 메시지를 전송한다. 이러한 경우 이외에도, 커뮤니티 서버(208)는 운영자가 커뮤니티 회원 전원에게 공지 사항을 실시간으로 전송하기 위한 그룹 메시지를 생성하여 전송할 수도 있다.
종래의 경우, 커뮤니티 서버는 그룹 메시지를 생성하기 위해 커뮤니티 데이터베이스에서 메시지 수신자 정보를 추출하는 작업을 수행하였다. 커뮤니티 서버(208)는 그룹 메시지에 상응하는 커뮤니티 회원 정보 및 커뮤니티 회원 중 그룹 메시지 수신을 허용한 회원 정보를 추출하여 그룹 메시지의 메시지 수신자 정보를 포함시켰다.
따라서, 종래의 커뮤니티 서버는 한번 또는 두 번의 쿼리(query) 정보를 커뮤니티 데이터베이스에 전송하여 메시지 수신자 정보를 추출하였다.
본 발명의 바람직한 실시예에 따르면, 커뮤니티 서버(208)는 종래와 같이 커뮤니티 데이터베이스에 메시지 수신자 추출을 위한 쿼리를 전송하지 않는다. 본 발명에서 커뮤니티 데이터베이스(210)는 커뮤니티의 일반적인 기능을 제공하는 데에 활용될 뿐 그룹 메시지 전송 시 커뮤니티 서버는 커뮤니티 데이터베이스(210)로부 터 정보를 추출하지 않는다.
도 4는 본 발명의 바람직한 일 실시예에 따른 커뮤니티 서버에서 생성하는 그룹 메시지의 헤더 정보 구성을 도시한 도면이다.
도 4를 참조하면, 본 발명의 일 실시예에 따른 커뮤니티 서버에서 생성하는 그룹 메시지의 헤더 정보는 커뮤니티 아이디(400), 게시판 아이디(402) 및 송신자 아이디(404)를 포함할 수 있다.
커뮤니티 서버(208)에서 생성하는 그룹 메시지는 수신자 정보를 포함하지 않으며, 메시지 송신자, 커뮤니티 아이디, 게시판 아이디만을 포함한다. 메시지 수신자가 커뮤니티 회원 전원인 경우에는 게시판 아이디는 포함되지 않을 수도 있다. 종래의 경우, 그룹 메시지는 상술한 메신저 송신자, 커뮤니티 아이디, 게시판 아이디뿐만 아니라 메시지를 수신할 수신자 정보가 CSV(Comma Separated Value) 프로토콜의 형태로 그룹 메시지에 포함되었으나, 본 발명에서 메시지 큐 서버에 제공되는 그룹 메시지는 메시지 수신자 정보를 별도로 포함하지 않는다.
따라서, 커뮤니티 서버(208)에서 데이터베이스에 쿼리를 전송하고 데이터를 추출하는 시간 및 프로세스를 줄일 수 있으며, 메시지 큐 서버에 전송되는 그룹 메시지의 사이즈 역시 줄일 수 있는 장점이 있다.
메시지 큐 서버(200)는 커뮤니티 서버로부터 전송되는 그룹 메시지들을 큐에 저장하는 기능을 한다. 메시지 큐 서버(200)는 커뮤니티 서버로부터 전송되는 그룹 메시지 이외에도 사용자 클라이언트들로부터 전송되는 1:1 인스턴트 메시지 역시 수신할 수 있으며, 수신된 인스턴트 메시지를 큐에 저장한다.
메시지 큐 서버(200)는 큐에 저장된 메시지를 FIFO(First Input First Output) 방식으로 메시지를 출력하여 메시지 처리 서버(206)에 전송한다.
본 발명의 일 실시예에 따르면, 메시지 큐 서버(200)는 메시지 처리 서버(206)가 메시지 전송을 요청할 경우 큐에 저장된 메시지를 메시지 처리 서버(206)에 전송한다. 일반적으로, 메시지 큐 서버(200)는 다른 서버의 요청에 관계 없이 큐에 저장된 정보를 계속적으로 출력하나, 본 발명의 바람직한 실시예에 따르면, 메시지 큐 서버(200)는 메시지 처리 서버(206)의 요청에 따라 큐에 저장된 정보를 출력하도록 한다.
이와 같이, 메시지 처리 서버(206)의 요청에 따라 메시지 큐 서버(200)가 큐에 저장된 메시지를 출력하도록 하는 것은 메시지 처리 서버(206)의 메시지 처리 부하에 따라 메시지를 처리하고 메시지 처리 서버의 비즈니스 로직 업데이트 시 메시지 큐 서버에 저장된 메시지들이 유실되지 않도록 하기 위해서이다.
물론, 본 발명이 메시지 큐 서버가 메시지 처리 서버의 요청에 따라 메시지를 출력하는 것에 한정되는 것은 아니며, 이는 본 발명의 바람직한 일 실시예일 뿐이다. 메시지 큐 서버는 메시지 처리 서버의 요청에 관계 없이 계속적으로 메시지를 큐에서 출력할 수도 있다.
메시지 처리 서버(206)는 메시지 큐 서버로부터 제공되는 그룹 메시지 또는 인스턴트 메시지를 미리 설정된 프로토콜의 메시지 패킷으로 변환하여 메시지 전달 시스템(200)에 제공하는 기능을 한다.
메시지 처리 서버(206)는 일반적으로 CSV 프로토콜 형태인 메시지를 미리 설 정된 프로토콜의 메시지 패킷으로 변환하는 기능을 한다. 예를 들어, 메시지 처리 서버(206)는 메시지 전달 시스템과 메시지 처리 서버 사이의 미리 설정된 프로토콜 형태로 CSV 프로토콜의 메시지를 변환할 수 있을 것이다.
종래의 경우, 메시지 처리 서버(206)는 사용자 클라이언트들로부터 전송되는 인스턴트 메시지(1:1 메시지, 수신자가 복수일 경우 1:N 메시지일 수도 있음) 및 그룹 메시지를 구분하지 않고 처리하였다.
따라서, 종래의 메시지 처리 서버(206)는 그룹 메시지 처리 시 그룹 메시지의 수신자별로 메시지 패킷을 생성하여 메시지 전달 시스템에 전송하였으며, 그룹 메일의 수신자가 많을 경우, 각 수신자별로 메시지 패킷을 생성함으로써 다른 메시지의 처리가 지연되는 문제점이 있었다.
본 발명에서는 상술한 종래의 문제점을 해결하기 위해, 메시지 처리 서버는 비그룹 메시지 처리 프로세스 및 그룹 메시지 처리 프로세스의 두 개의 프로세스를 생성하여 메시지를 처리한다. 비그룹 메시지 처리 프로세스는 사용자 클라이언트들로부터 제공되는 일반적인 비그룹 인스턴트 메시지를 처리하는 프로세스이며, 그룹 메시지 처리 프로세스는 커뮤니티 서버 또는 기타 다른 서버 또는 클라이언트로부터 전송되는 그룹 인스턴트 메시지를 처리하는 프로세스이다.
메시지 처리 서버(206)는 메시지 큐 서버(200)로부터 메시지를 수신할 경우, 그룹 메시지인지 아닌지 여부를 판단하며, 그룹 메시지일 경우 그룹 메시지 처리 프로세스에 의해 그룹 메시지를 처리하도록 하며, 그룹 메시지가 아닐 경우 비그룹 메시지 처리 프로세스에 의해 메시지를 처리하도록 한다.
수신된 메시지가 그룹 메시지가 아닐 경우, 메시지 처리 서버는 종래와 같이 수신된 메시지를 미리 설정된 프로토콜의 메시지 패킷으로 변환하여 메시지 전달 시스템(220)에 제공한다.
수신된 메시지가 그룹 메시지일 경우, 그룹 메시지 처리 프로세스는 그룹 메시지를 별도의 큐에 저장한다. 그룹 메시지 처리 프로세스는 큐에 저장된 그룹 메시지를 순차적으로 처리하며, 각각의 그룹 메시지 처리 시 어플리케이션 서버와의 통신을 통해 메시지 수신자 정보를 수신한다.
어플리케이션 서버(204)와 결합된 사용자 데이터베이스(204)는 각 사용자의 커뮤니티 아이디 및 게시판 아이디 정보를 저장하고 있다. 어플리케이션 서버(204)는 그룹 메시지에 포함된 커뮤니티 아이디 및 게시판 아이디에 상응하는 사용자이면서 현재 온라인인 사용자 정보를 추출하여 메시지 처리 서버(206)에 제공한다.
종래의 경우, 커뮤니티 서버에서 메시지 수신자 정보를 포함하는 그룹 메시지를 메시지 큐 서버(200)에 제공하고, 메시지 처리 서버(206)가 다시 어플리케이션 서버와의 통신을 통해 온라인인 사용자 정보를 확인하고 온라인인 사용자에 대한 메시지 패킷을 생성하였다. 따라서, 종래에는 두 번 또는 세 번 데이터베이스에 쿼리를 전송하고 이에 따른 데이터 추출 작업이 수행되었으나, 본 발명에서는 단 한번의 데이터베이스 쿼리를 전송하고 이에 따른 데이터 추출 작업을 수행한다. 이를 위한 사용자 데이터베이스의 필드 구성은 별도의 도면을 통해 상세히 설명하기로 한다.
또한, 메시지 처리 서버(206)의 그룹 메시지 처리 프로세스는 그룹 메시지에 상응하는 수신자가 미리 설정된 수 이상일 경우, 메시지 패킷을 생성하는 작업을 모든 수신자에 대해 일괄적으로 수행하지 않으며 분할하여 처리한다.
예를 들어, 그룹 메시지 수신자가 500명이고 메시지 처리 서버(206)가 한번에 200명의 수신자를 처리하도록 설정되어 있을 경우, 어플리케이션 서버(202)는 500명의 그룹 메일 수신자 중 200명의 사용자 정보를 메시지 처리 서버(206)에 전송하며, 메시지 처리 서버의 그룹 메시지 처리 프로세스는 200명의 수신자에 대해 메시지 패킷을 생성하는 작업을 수행하며, 나머지 300명의 사용자에 대해서는 차후에 메시지 패킷을 생성하는 작업이 수행된다.
메시지 처리 서버에서 그룹 메시지를 분할하여 처리하는 것은 어플리케이션 서버 및 사용자 데이터베이스의 부하를 최소화하고 메시지 처리 효율을 극대화하기 위해서이다.
메시지 처리 서버에서 그룹 메시지를 분할하여 처리하는 보다 상세한 방법은 별도의 도면을 통해 상세히 설명하기로 한다.
메시지 전달 시스템(200)은 메시지 처리 서버에 의해 처리된 메시지 패킷을 해당 수신자에게 전달하는 기능을 한다. 메시지 전달 시스템은 다양한 종류의 메시지 전달 시스템을 모두 포함할 수 있다. 예를 들어, 메시지 전달 시스템은 인스턴트 메시지 전송을 위한 인스턴트 메시지 전송 시스템일 수 있으며, 비실시간 메시지인 쪽지 메시지 전송 시스템일 수도 있다.
도 3은 본 발명의 일 실시예에 따른 메시지 전달 시스템의 일례를 도시한 도면이다.
도 3은 본 발명에 적용될 수 있는 다양한 메시지 전달 시스템 중 메신저를 통해 인스턴트 메시지를 전송하는 메시지 전달 시스템을 도시한 것이다. 도 3을 참조하면, 메시지 전달 시스템은 게이트웨이 모니터링 서버(300), 메신저 중앙 서버(302) 및 인스턴트 메시지 서버(304)를 포함할 수 있다.
게이트웨이 모니터링 서버(300)는 메신저를 사용하는 클라이언트가 초기에 메시지 전달 시스템에 접속하고자 하는 경우, 접속 요청을 처리하며 메신저 클라이언트가 접속할 중앙 서버의 주소 정보를 메신저 클라이언트에 제공하는 기능을 한다. 또한, 게이트웨이 모니터링 서버(300)는 각 메신저 클라이언트들의 상태 정보(예를 들어, 자리비움, 다른 용무중 등)를 메신저 중앙 서버(302)에 제공하는 기능을 한다.
메신저 중앙 서버(302)는 게이트웨이 모니터링 서버(300)를 통해 제공되는 메시지 전달 시스템에 접속한 각 메신저 사용자들의 상태 정보를 관리하고 인스턴트 메시지 전송을 제어하는 기능을 한다.
인스턴트 메시지 서버(304)는 메신저 클라이언트들의 인스턴트 메시징 세션을 관리하며 메신저 클라이언트들간에 전송하는 메시지 및 서버(커뮤니티 서버)가 메신저 클라이언트들에 전송하는 그룹 메시지를 중계하는 기능을 한다. 인스턴트 메시지 서버(310)는 중앙 서버로부터 메시지 패킷을 전달받은 후 이를 수신자인 메신자 클라이언트2(302)에 전송한다.
도 5는 본 발명의 바람직한 일 실시예에 따른 메시지 큐 서버의 구성을 도시한 블록도이다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 메시지 큐 서버는 리스너(500), 라이터(502), 큐(504) 및 리더를 포함할 수 있다.
리스너(400)는 메시지를 전송하는 노드(커뮤니티 서버 및 메신저 클라이언트를 포함함)와의 연결 설정을 감지하고 외부로부터 전송되는 메시지를 수신하여 라이터에 전달하는 기능을 한다. 메시지는 메시지 큐 서버와 연결이 설정된 상태에서 노드로부터 메시지 큐 서버로 전송될 수 있으며, 리스너와 통상적인 TCP 연결 설정을 할 수 있을 것이다. 물론 리스너와 노드는 UDP 프로토콜의 통신을 수행할 수도 있으며 멀티캐스팅과 같이 연결 설정이 되지 않은 상태에서 전송되는 패킷을 수신할 수도 있다.
연결 설정이 완료되면, 리스너(500)는 패킷의 도착 여부를 모니터링하는 상태에 있게 된다. 본 발명의 일 실시예에 따르면, 리스너(500)는 소켓 소프트웨어 객체에 의해 구현될 수 있다.
라이터(502)는 리스너(500)로부터 메시지를 전달받아 큐에 저장하는 기능을 한다.
큐(504)에는 라이터(502)의 동작에 의해 전송된 메시지가 순차적으로 저장된다. 큐(504)는 통상의 FIFO(First Input First Output)방식으로 데이터가 출력될 수 있도록 도착한 시간 순서에 의해 메시지를 저장한다.
리더(506)는 큐(504)로부터 저장된 메시지를 읽어오는 기능을 한다. 리더(506)는 큐에 저장된 메시지를 계속적으로 읽어와 메시지 처리 서버에 제공하며, 통상적인 소켓 라이브러리에서 제공하는 리더는 큐에 저장된 데이터를 계속적으로 읽어오도록 동작한다. 그러나, 전술한 바람직한 실시예에서 설명한 바와 같이, 리더(506)는 메시지 처리 서버로부터의 요청에 상응하여 큐에 저장된 데이터를 읽어오는 것이 바람직하다.
도 6은 본 발명의 바람직한 일 실시예에 따른 메시치 처리 서버의 구성을 도시한 블록도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 메시지 처리 서버는 비그룹 메시지 처리 프로세스 및 그룹 메시지 처리 프로세스를 포함하며, 비그룹 메시지 처리 프로세서는 리스너(600), 리더(602), 핸들러(604) 및 라이터(606)를 포함하며, 그룹 메시지 처리 프로세스는 토스 큐(610), 토스 리더(612), 토스 핸들러(614) 및 토스 라이터(616)를 포함할 수 있다.
도 6에서, 리스너(600)는 메시지 큐 서버로부터 메시지를 수신하여 리더(602)에 전송하는 기능을 한다. 리스너(600)는 메시지 처리 서버의 부하가 심할 경우 메시지 큐 서버에 메시지 리드 중단을 요청할 수 있으며, 부하가 제거될 경우, 다시 메시지 큐 서버에 패킷 리드의 재개를 요청할 수 있다.
리더(602)는 리스너(600)로부터 메시지를 수신하여 핸들러(604)에 제공하는 기능을 한다.
핸들러(604)는 리더(602)로부터 메시지를 수신하며, 수신된 메시지에 대해 미리 설정된 비즈니스 로직 프로세스를 수행한다. 비그룹 메시지 프로세스의 핸들러(604)는 메시지 큐 서버로부터 전달된 메시지가 비그룹 메시지인지 그룹 메시지인지 여부를 판단한다.
핸들러(604)는 메시지 큐 서버로부터 전달된 메시지가 비그룹 메시지일 경우 메시지를 분석하여 메시지 전달 시스템과 미리 설정된 프로토콜의 메시지 패킷으로 변환하는 기능을 수행한다. 비그룹 메시지의 경우, 메시지 송신자, 메시지 수신자 정보가 CSV 프로토콜의 형태로 포함되어 있다. 핸들러(604)는 메시지는 메시지에 포함된 각 수신자별로 메시지 패킷을 생성한다. 즉, 핸들러(604)는 비그룹 메시지에 대해 종래와 같은 프로토콜 변환 작업을 수행하는 것이다.
라이터(606)는 핸들러(604)에 의해 처리된 비그룹 메시지의 메시지 패킷을 메시지 전달 시스템에 전달한다. 핸들러(604)는 메시지 패킷이 전달되어야 할 주소 정보를 메시지 패킷에 포함시키며, 라이터(414)는 해당 주소로 메시지 패킷을 전송한다.
메시지 큐 서버로부터 전달된 메시지가 커뮤니티 서버 등이 전송한 그룹 메시지일 경우, 핸들러(604)는 비그룹 메시지를 그룹 메시지 처리 프로세스의 토스 큐(610)에 제공하며, 비그룹 메시지의 처리는 비그룹 메시지 처리 프로세스에 의해 수행된다.
토스 큐(610)는 핸들러(604)로부터 제공되는 비그룹 메시지를 순차적으로 저장된다. 토스 큐(610)는 통상의 FIFO(First Input First Output)방식으로 데이터가 출력될 수 있도록 도착한 시간 순서에 의해 메시지를 저장한다.
그룹 메시지가 종래와 같이 핸들러(604)에 의해 처리되지 않고 토스 큐(610)에 저장되어 그룹 메시지 처리 프로세스에 의해 처리되므로, 다수의 수신자가 포함되는 그룹 메시지 처리로 인해 다른 메시지들의 처리가 지연되는 문제점이 해결될 수 있다.
토스 리더(612)는 토스 큐(610)에 저장된 비그룹 메시지를 순차적으로 읽어와 토스 핸들러(614)에 제공한다.
토스 핸들러(614)는 토스 리더(612)로부터 전달된 비그룹 메시지를 분석하여 미리 설정된 비즈니스 로직을 수행한다. 토스 핸들러(614)는 비그룹 메시지를 분석하여 비그룹 메시지에 포함된 커뮤니티 아이디 및 게시판 아이디를 판단하고 해당 커뮤니티 아이디 및 게시판 아이디에 상응하는 사용자 정보를 어플리케이션 서버에 요청한다.
종래의 경우, 비그룹 메시지는 수신자 정보를 포함하고 있으며, 인스턴트 메시지의 경우 수신자 중 온라인인 사용자를 판단하기 위해 어플리케이션 서버와 통신하나, 본 발명에서는 비그룹 메시지에 수신자 정보가 포함되어 있지 않으므로 토스 핸들러(614)는 커뮤니티 아이디 및 게시판 아이디(포함되지 않을 수 있음)에 상응하면서 온라인인 사용자 정보를 어플리케이션 서버에 요청한다.
어플리케이션 서버는 커뮤니티 아이디 및 게시판 아이디에 상응하면서 온라인인 사용자 정보에 대한 쿼리를 생성하여 사용자 데이터베이스에 요청하며, 사용자 데이터베이스로부터 쿼리에 상응하는 사용자 정보를 수신한다.
어플리케이션 서버는 사용자 데이터베이스로부터 수신한 사용자 수가 미리 설정된 수 이상인지 여부를 판단한다. 예를 들어, 미리 설정된 사용자 수가 200인 경우, 어플리케이션 서버는 사용자 데이터베이스로부터 수신한 사용자 수가 200 이상인지 여부를 판단한다.
어플리케이션 서버는 사용자 수가 미리 설정된 수 이하인 경우, 해당 사용자 정보를 토스 핸들러(614)에 제공하며, 사용자 수가 미리 설정된 수 이상일 경우, 미리 설정된 수의 사용자 정보만을 토스 핸들러(614)에 제공한다. 어플리케이션 서버가 토스 핸들러(614)에 제공하는 사용자 정보 데이터에는 마지막 사용자 필드가 포함되어 있으며, 전체 사용자 중 일부의 사용자 정보만을 제공할 경우, 마지막 사용자 필드에 제공되는 사용자 리스트 중 마지막 사용자 정보를 기록한다. 전체 사용자 중 일부의 사용자 정보를 제공하는 경우가 아닌 경우에는 마지막 사용자 필드에 데이터를 기록하지 않는다.
토스 핸들러(614)는 어플리케이션 서버로부터 사용자 정보 데이터를 수신할 경우, 사용자 정보 데이터의 마지막 사용자 필드에 특정 사용자 아이디가 포함되어 있는지 여부를 판단한다.
마지막 사용자 필드에 특정 사용자 아이디가 포함되어 있지 않을 경우, 어플리케이션 서버는 더 이상 제공할 사용자 정보가 없는 것이며, 따라서 토스 핸들러(614)는 사용자 정보 데이터에 포함된 사용자 들에 대한 메시지 패킷을 생성하는 작업을 수행한다. 비그룹 메시지 처리 프로세서의 핸들러(604)와 같이, 토스 핸들러(614)는 각 사용자에 대해 메시지 전달 시스템과 미리 설정된 프로토콜을 가진 메시지 패킷을 생성하여 비그룹 처리 프로세스의 라이터(606)에 제공한다.
마지막 사용자 필드에 특정 사용자 아이디가 포함되어 있지 않을 경우, 어플리케이션 서버가 메시지를 수신할 전체 사용자 중 일부 사용자 정보만을 제공한 것이며, 토스 핸들러(614)는 사용자 정보 데이터에 포함된 사용자들에게 전달될 메시 지 패킷을 생성하고, 생성된 메시지 패킷은 비그룹 메시지 처리 프로세스의 라이터(606)에 전달되어 메시지 전달 시스템으로 전송된다.
또한, 토스 핸들러(614)는 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하여 토스 라이터(616)에 제공하며, 토스 라이터(616)는 보류 메시지를 토스 큐(610)에 저장한다. 여기서 보류 메시지는 마지막 사용자 아이디 이후의 사용자들에 대한 메시지 전송이 보류되어 있다는 것을 확인하기 위한 메시지이다. 보류 메시지는 커뮤니티 서버로부터 제공되는 메시지와 같이 CSV 프로토콜인 것이 바람직하나 이에 한정되는 것은 아니다.
토스 큐(610)에 저장된 보류 메시지는 다시 토스 리더(612)에 의해 독출되어 토스 핸들러(616)에 제공되며, 보류 메시지를 처리하는 토스 핸들러(616)는 마지막 사용자 이후의 사용자들에 대한 정보를 어플리케이션 서버에 요청한다.
어플리케이션 서버는 마지막 사용자 이후에 사용자들의 정보 데이터를 사용자 데이터베이스로부터 추출하여 토스 핸들러(616)에 제공하며, 토스 핸들러(616)는 수신한 사용자들에 대해 메시지 패킷을 생성하는 작업을 수행한다. 남은 사용자들의 수가 여전히 미리 설정된 수 이상일 경우, 어플리케이션 서버는 다시 사용자 정보 데이터에 마지막 사용자 아이디를 포함시켜 차후에 남은 사용자들에 대한 메시지 패킷 생성 과정이 수행될 수 있도록 한다.
이상과 같은 리커시브 큐(recursive queue) 동작에 의해 그룹 메시지 수신자에 대한 처리를 분할하여 수행함으로써, 많은 수신자 정보를 포함하고 있는 그룹 메시지 처리로 인한 다른 메시지 처리 지연 및 사용자 데이터베이스의 부하를 최소 화할 수 있는 장점이 있다.
도 7은 본 발명의 바람직한 일 실시예에 따른 메시지 큐 서버에서 메시지 처리 서버로 메시지가 전달되는 과정에 대한 순서도이다.
도 7을 참조하면, 메시지 처리 서버는 메시지 처리가 가능한 상태일 경우, 메시지 큐 서버에 메시지를 요청한다(단계 700).
메시지 큐 서버의 리더는 메시지 처리 서버로부터 요청 정보를 수신한 경우 큐에 저장된 메시지를 독출한다(단계 702). 독출된 메시지는 메시지 처리 서버로 전송된다(단계 704).
메시지 처리 서버는 수신된 메시지에 대한 처리를 수행하며, 메시지 처리 중 미리 설정된 임계치 이상 부하가 걸리는지 여부를 판단한다(단계 706).
미리 설정된 임계치 이상 부하가 걸릴 경우, 메시지 처리 서버는 더 이상의 메시지가 메시지 처리 서버로 전송되지 못하도록 메시지 전송 중단 요청 정보를 메시지 큐 서버에 전송한다(단계 708).
메시지 큐 서버의 리더는 메시지 전송 중단 요청에 응답하여 메시지를 독출하는 작업을 중단하며, 메시지 독출은 메시지 처리 서버로부터 다시 메시지 전송 요청이 있을 때까지 유지된다(단계 710).
도 8은 본 발명의 바람직한 일 실시예에 따른 메시지 처리 서버에서의 메시지 처리 과정을 도시한 순서도이다.
도 8을 참조하면, 메시지 큐 서버로부터 메시지를 수신할 경우, 메시지 처리 서버는 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단한다(단계 800).
수신한 메시지가 그룹 메시지가 아닐 경우, 비그룹 메시지 처리 프로세스에 의해 메시지가 처리되며, 비그룹 메시지 처리 프로세스의 핸들러는 메시지를 미리 설정된 프로토콜의 메시지 패킷으로 변환한다(단계 802).
단계 802에서 변환된 메시지 패킷은 비그룹 메시지 처리 프로세스의 라이터를 통해 메시지 전달 시스템으로 전송되며, 메시지 전달 시스템은 수신된 메시지 패킷을 해당 사용자에게 전송한다(단계 804).
메시지 처리 서버에서 수신한 메시지가 그룹 메시지일 경우, 메시지 처리 서버는 토스 큐에 해당 그룹 메시지를 저장한다(단계 806).
메시지 처리 서버의 리더는 토스 큐에 저장된 그룹 메시지를 독출하여 토스 핸들러에 제공한다(단계 808).
토스 핸들러는 리더로부터 제공된 그룹 메시지를 분석하여 그룹 아이디 및 게시판 아이디에 상응하면서 온라인인 사용자 정보를 어플리케이션 서버에 요청하며, 어플리케이션 서버는 사용자 데이터베이스와의 통신을 통해 해당 사용자 정보 데이터를 제공한다(단계 810). 전술한 바와 같이, 어플리케이션 서버는 미리 설정된 수의 사용자 정보만을 사용자 정보 데이터에 포함시키며 메시지를 수신할 사용자가 더 존재할 경우, 마지막 사용자 아이디 정보를 사용자 정보 데이터에 포함시킨다.
도 9는 본 발명의 바람직한 일 실시예에 따른 사용자 데이터베이스의 필드 구성을 도시한 도면이다.
도 9를 참조하면, 온라인 테이블과 커뮤니티 테이블의 두 개의 테이블을 포 함하고 있으며, 커뮤니티 테이블은 커뮤니티 아이디 필드, 게시판 아이디 필드, 사용자 아이디 필드 및 메시지 수신 여부에 대한 정보를 저장하는 필드를 포함하고 있다.
어플리케이션 서버로부터 커뮤니티 아이디 및 그룹 아이디에 상응하는 사용자 추출을 요청받을 경우, 커뮤니티 테이블로부터 커뮤니티 아이디 및 그룹 아이디에 상응하면서 그룹 메시지 수신을 허용한 사용자 정보를 추출한다. 또한, 온라인 테이블을 참조하여 추출된 사용자 중 현재 온라인인 사용자를 추출한다.
따라서, 도 9와 같은 테이블 및 필드 구성에 의할 경우, 어플리케이션 서버는 한번의 쿼리를 전송하는 것만으로 사용자 정보를 제공받을 수 있다.
다시 도 8을 참조하면, 토스 핸들러는 어플리케이션 서버로부터 수신한 사용자들에게 전송될 미리 설정된 메시지 프로토콜 패킷을 생성하고(단계 812), 생성된 패킷을 라이터를 통해 메시지 전달 시스템에 전송한다(단계 814).
또한, 메시지 처리 서버는 어플리케이션 서버로부터 제공된 사용자 정보 데이터에 마지막 사용자 아이디가 포함되어 있는지 여부를 판단한다(단계 816). 마지막 사용자 아이디가 포함되어 있을 경우, 메시지 처리 서버는 마지막 사용자 아이디를 포함하는 보류 메시지를 토스 큐에 저장한다(단계 818). 따라서, 메시지 패킷으로의 변환이 이루어지지 않은 남은 사용자들에 대해서는 보류 메시지가 토스 큐에서 토스 핸들러로 제공되는 시점에 메시지 패킷으로의 변환이 이루어진다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
이상에서 설명한 바와 같이, 본 발명의 메시지 전송 시스템의 바람직한 실시예에 따르면, 그룹 메시지 처리로 인한 다른 메시지들의 처리 지연을 최소화할 수 있는 장점이 있다.
또한 본 발명의 바람직한 실시예에 따르면, 그룹 메시지 처리 시 데이터베이스에 대한 쿼리 전달 및 데이터베이스 검색 횟수를 최소화할 수 있으며, 그룹 메시지 및 비그룹 메시지를 분리하여 처리함으로써 그룹 메시지의 처리 효율을 극대화할 수 있는 장점이 있다.

Claims (15)

  1. 외부 서버 또는 클라이언트로부터 메시지를 수신하여 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하며, 그룹 메시지와 비그룹 메시지를 서로 다른 프로세스에 의해 처리하는 메시지 처리부-상기 그룹 메시지는 그룹 식별을 위한 그룹 아이디 정보를 포함하며 수신자 정보를 포함하지 않음-;
    상기 메시지 처리부로부터 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 요청받을 경우, 해당 사용자 정보 데이터를 추출하여 상기 메시지 처리부에 제공하는 데이터베이스부를 포함하되,
    상기 메시지 처리부는 상기 수신된 메시지가 비그룹 메시지일 경우, 비그룹 메시지에 포함된 수신자들에게 전송할 메시지 패킷을 생성하며, 상기 수신된 메시지가 그룹 메시지일 경우 상기 사용자 정보 데이터에 포함된 사용자들에게 전송할 메시지 패킷을 생성하며,
    상기 데이터베이스부는 상기 그룹 아이디에 상응하는 사용자 수가 미리 설정된 수 이상일 경우, 미리 설정된 수의 사용자 정보를 포함하는 사용자 정보 데이터를 상기 메시지 처리부에 제공하며 상기 사용자 정보 데이터의 마지막 사용자 필드에 마지막 사용자 아이디를 포함시키는 것을 특징으로 하는 메시지 전송 시스템.
  2. 제1항에 있어서,
    상기 외부 서버는 커뮤니티 서버이며, 상기 그룹 아이디는 커뮤니티 아이디 및 게시판 아이디 중 적어도 하나를 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  3. 제1항에 있어서,
    상기 메시지는 인스턴트 메시지이며, 상기 데이터베이스부는 그룹 아이디 및 사용자 아이디 필드를 가지고 있는 그룹 테이블 및 온라인인 사용자 정보를 가지고 있는 온라인 테이블을 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  4. 제1항에 있어서,
    상기 메시지 처리부는 상기 마지막 사용자 아이디가 포함된 사용자 정보 데이터를 수신할 경우, 상기 사용자 정보 데이터에 포함된 사용자들에 대한 메시지 패킷을 생성하되, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하여 토스 큐에 저장하며, 상기 토스 큐로부터 보류 메시지가 출력될 경우 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자에 대한 정보를 상기 데이터베이스부에 요청하는 것을 특징으로 하는 메시지 전송 시스템.
  5. 제1항에 있어서,
    상기 메시지 처리부는,
    상기 외부 서버 또는 클라이언트로부터 메시지를 수신하여 큐에 저장하는 메시지 큐 서버; 및
    그룹 메시지 프로세스 및 비그룹 메시지 프로세스를 포함하며, 상기 메시지 큐 서버로부터 메시지를 수신하고 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하여 해당 프로세스에 의해 메시지를 처리하는 메시지 처리 서버를 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  6. 제5항에 있어서,
    상기 데이터베이스부는 상기 메시지 처리 서버로부터 그룹 메시지에 상응하는 사용자 요청 정보에 응답하여 쿼리를 생성하는 어플리케이션 서버; 및
    상기 어플리케이션 서버로부터의 쿼리에 응답하여 그룹 메시지에 상응하는 사용자 정보 데이터를 출력하여 상기 어플리케이션 서버에 제공하는 사용자 데이터베이스를 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  7. 제5항에 있어서,
    상기 메시지 처리 서버의 그룹 메시지 처리 프로세스는,
    상기 메시지 큐 서버로부터 제공된 메시지가 그룹 메시지일 경우 이를 저장하는 토스 큐;
    상기 토스 큐에 저장된 그룹 메시지를 독출하는 리더;
    상기 리더로부터 그룹 메시지를 제공받아 그룹 메시지를 분석하며, 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 상기 어플리케이션 서버에 요청하며, 상기 어플리케이션 서버로부터 사용자 정보 데이터를 수신할 경우 사용자 정보 데이터에 포함된 사용자들에게 전송될 메시지 패킷을 생성하고, 상기 사용자 정보 데이터에 마지막 사용자 아이디가 포함될 경우, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하는 토스 핸들러; 및
    상기 토스 핸들러가 출력하는 보류 메시지를 상기 토스 큐에 저장하는 토스 라이터를 포함하되,
    상기 토스 핸들러는 상기 리더로부터 상기 보류 메시지를 제공받을 경우, 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자 정보를 상기 어플리케이션 서버에 요청하는 것을 특징으로 하는 메시지 전송 시스템.
  8. 제1항에 있어서,
    상기 메시지 처리부에 의해 생성되는 메시지 패킷은 메시지 전달 시스템에 의해 해당 사용자에게 전송되며, 상기 메시지 전달 시스템은 인스턴트 메시지 전송 시스템, 메일 전송 시스템, 쪽지 메시지 전송 시스템을 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  9. 제5항에 있어서,
    상기 메시지 처리 서버는 메시지 처리에 따른 부하를 판단하여 상기 메시지 큐 서버에 메시지를 요청하며, 상기 메시지 큐 서버는 상기 메시지 처리 서버로부터의 요청에 상응하여 메시지를 제공하는 것을 특징으로 하는 메시지 전송 시스템.
  10. 제5항에 있어서,
    상기 비그룹 메시지 처리 프로세스는,
    상기 외부 서버 또는 클라이언트로부터 생성된 메시지를 수신하는 리스너;
    상기 리스너에서 수신된 메시지를 독출하는 리더;
    상기 리더로부터 메시지를 제공받으며, 메시지가 비그룹 메시지일 경우 비그룹 메시지에 포함된 수신자 정보를 분석하여 각 수신자에 상응하는 메시지 패킷을 생성하고, 메시지가 그룹 메시지일 경우 상기 그룹 메시지 처리 프로세스의 토스 큐에 그룹 메시지를 제공하는 핸들러; 및
    상기 핸들러에 의해 생성된 메시지 패킷을 미리 설정된 메시지 전달 시스템에 전송하는 라이터를 포함하는 것을 특징으로 하는 메시지 전송 시스템.
  11. 외부 서버 또는 클라이언트로부터 전송되는 메시지를 처리하는 메시지 처리 서버로서,
    상기 수신된 메시지가 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하며,
    상기 판단된 메시지가 비그룹 메시지일 경우, 상기 비그룹 메시지를 처리하는 비그룹 메시지 처리 프로세스 및 상기 판단된 메시지가 그룹 메시지-상기 그룹 메시지는 그룹 아이디 정보를 포함하고 수신자 정보를 포함하지 않음-일 경우 상기 그룹 메시지를 처리하는 그룹 메시지 처리 프로세스를 포함하되,
    상기 그룹 메시지 처리 프로세스는 상기 그룹 메시지를 저장하는 토스 큐를 포함하며, 상기 토스 큐에 저장된 그룹 메시지를 독출하여 그룹 메시지에 상응하는 사용자 정보를 어플리케이션 서버에 요청하여 상기 어플리케이션 서버로부터 사용자 정보 데이터를 수신하고, 상기 수신된 사용자 정보 데이터에 포함된 사용자들에게 전송할 메시지 패킷을 생성하며,
    상기 어플리케이션 서버는 그룹 메시지에 상응하는 사용자들의 수가 미리 설정된 수 이상일 경우 미리 설정된 수의 사용자 정보만을 제공하며 상기 사용자 정보 데이터에 마지막 사용자 아이디를 포함시키는 것을 특징으로 하는 메시지 처리 서버.
  12. 제11항에 있어서,
    상기 비그룹 메시지 처리 프로세스는,
    상기 외부 서버 또는 클라이언트로부터 생성된 메시지를 수신하는 리스너;
    상기 리스너에서 수신된 메시지를 독출하는 리더;
    상기 리더로부터 메시지를 제공받으며, 메시지가 비그룹 메시지일 경우 비그룹 메시지에 포함된 수신자 정보를 분석하여 각 수신자에 상응하는 메시지 패킷을 생성하고, 메시지가 그룹 메시지일 경우 상기 그룹 메시지 처리 프로세스의 토스 큐에 그룹 메시지를 제공하는 핸들러; 및
    상기 핸들러에 의해 생성된 메시지 패킷을 미리 설정된 메시지 전달 시스템에 전송하는 라이터를 포함하는 것을 특징으로 하는 메시지 처리 서버.
  13. 제11항에 있어서,
    상기 그룹 메시지 처리 프로세스는,
    상기 토스 큐로부터 그룹 메시지를 독출하는 리더;
    상기 리더로부터 그룹 메시지를 제공받아 그룹 메시지를 분석하며, 그룹 메시지의 그룹 아이디에 상응하는 사용자 정보를 상기 어플리케이션 서버에 요청하며, 상기 어플리케이션 서버로부터 사용자 정보 데이터를 수신할 경우 사용자 정보 데이터에 포함된 사용자들에게 전송될 메시지 패킷을 생성하고, 상기 사용자 정보 데이터에 마지막 사용자 아이디가 포함될 경우, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하는 토스 핸들러; 및
    상기 토스 핸들러가 출력하는 보류 메시지를 상기 토스 큐에 저장하는 토스 라이터를 더 포함하되,
    상기 토스 핸들러는 상기 리더로부터 상기 보류 메시지를 제공받을 경우, 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자 정보를 상기 어플리케이션 서버에 요청하는 것을 특징으로 하는 메시지 처리 서버.
  14. 수신된 메시지가 그룹 메시지인지 또는 비그룹 메시지인지 여부를 판단하는 단계(a)-상기 그룹 메시지는 그룹 식별을 위한 그룹 아이디 정보를 포함하며, 수신자 정보를 포함하지 않음-;
    상기 수신된 메시지가 그룹 메시지일 경우, 그룹 메시지에 포함된 그룹 아이디 정보를 분석하여 그룹 아이디에 상응하는 사용자 정보 데이터를 데이터베이스로부터 추출하는 단계(b);
    상기 단계(b)에서 추출한 사용자 정보에 기초하여 상기 그룹 메시지를 상기 사용자 정보에 포함된 사용자들에게 전송할 메시지 패킷으로 변환하는 단계(c)를 포함하되,
    상기 단계(b)는 상기 그룹 아이디에 상응하는 사용자 수가 미리 설정된 수 이상일 경우, 미리 설정된 수의 사용자 정보를 포함하는 사용자 정보 데이터를 추출하며 상기 사용자 정보 데이터의 마지막 사용자 필드에 마지막 사용자 아이디를 포함시키는 것을 특징으로 하는 메시지 전송 방법.
  15. 제14항에 있어서,
    상기 마지막 사용자 아이디가 포함된 사용자 정보 데이터가 추출될 경우, 상기 마지막 사용자 아이디를 포함하는 보류 메시지를 생성하여 토스 큐에 저장하는 단계; 및
    상기 토스 큐로부터 보류 메시지가 출력될 경우 상기 보류 메시지에 포함된 마지막 사용자 이후의 사용자에 대한 정보를 데이터베이스부로부터 추출하는 것을 특징 메시지 전송 방법.
KR1020060039033A 2006-04-28 2006-04-28 메시지 전송 시스템 KR100801318B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060039033A KR100801318B1 (ko) 2006-04-28 2006-04-28 메시지 전송 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060039033A KR100801318B1 (ko) 2006-04-28 2006-04-28 메시지 전송 시스템

Publications (2)

Publication Number Publication Date
KR20070106316A KR20070106316A (ko) 2007-11-01
KR100801318B1 true KR100801318B1 (ko) 2008-02-11

Family

ID=39062323

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060039033A KR100801318B1 (ko) 2006-04-28 2006-04-28 메시지 전송 시스템

Country Status (1)

Country Link
KR (1) KR100801318B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101681845B1 (ko) * 2015-10-01 2016-12-01 홍승재 중앙제어형 그룹 콜백 메시지 전송방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990016014A (ko) * 1997-08-12 1999-03-05 윤종용 이동통신 글로벌 시스템에서 쇼트메시지 그룹 전송방법
KR20010009629A (ko) * 1999-07-12 2001-02-05 윤종용 휴대전화단말장치의 단문메시지 멀티전송방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990016014A (ko) * 1997-08-12 1999-03-05 윤종용 이동통신 글로벌 시스템에서 쇼트메시지 그룹 전송방법
KR20010009629A (ko) * 1999-07-12 2001-02-05 윤종용 휴대전화단말장치의 단문메시지 멀티전송방법

Also Published As

Publication number Publication date
KR20070106316A (ko) 2007-11-01

Similar Documents

Publication Publication Date Title
US7529801B2 (en) Method and system for multiple instant messaging login sessions
KR100259419B1 (ko) 메시지 전송 방법 및 네트워크
US7096272B1 (en) Methods and apparatus for pooling and depooling the transmission of stream data
US10764228B1 (en) Automated message recall from a sender's device
US20080161028A1 (en) Methods, systems and computer program products for a redundant, geographically diverse, and independently scalable message service (MS) content store
US20080310423A1 (en) Synchronization of Message Stream in a Multi-tier Messaging System
WO2016090995A1 (zh) 页面与长连接服务器间的通信方法及客户端
JP2004531839A (ja) 別個のメディアコンポーネント格納装置を用いた統一メッセージング
CN103685357A (zh) 一种账号多开消息处理方法及系统
US6952720B2 (en) On-the-fly message notification system and methodology
US8463857B2 (en) Notification of internet service events using instant messaging service
KR100757338B1 (ko) 동일한 리플리케이션 그룹에 속하는 구성원 서버의 상태를동기화하는 방법 및 시스템
US8238335B2 (en) Multi-route transmission of packets within a network
US20100094933A1 (en) System and Method for Generating Exception Delay Messages when Messages are Delayed
CN111614726B (zh) 一种数据转发方法、集群系统及存储介质
KR100801318B1 (ko) 메시지 전송 시스템
KR100773778B1 (ko) 멀티캐스트 방식의 분산 서버 제어 방법 및 그 시스템
US20120054310A1 (en) Terminal, intermediate node and communication method of the same
JP2005210240A (ja) メールフィルタシステム、メールフィルタ装置及びそれらに用いるメールフィルタ方法並びにそのプログラム
US8190691B2 (en) Terminal and method for distinguishing between email recipients using specific identifier
US20090216894A1 (en) Relay apparatus for use in e-mail-based chat system
KR20220027716A (ko) 기록매체
CN101860544A (zh) 会话启动协议消息的发送系统及方法
KR100599103B1 (ko) 메시지 패킷 유실 방지 시스템
US11968253B2 (en) Request delivery device, request delivery method, and request delivery program

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
G170 Re-publication after modification of scope of protection [patent]
FPAY Annual fee payment

Payment date: 20130111

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20131231

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141230

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20151223

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170117

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180102

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190102

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200102

Year of fee payment: 13