KR100959898B1 - Service server and service method with fair load balancing architecture for Internet service - Google Patents

Service server and service method with fair load balancing architecture for Internet service Download PDF

Info

Publication number
KR100959898B1
KR100959898B1 KR1020070139104A KR20070139104A KR100959898B1 KR 100959898 B1 KR100959898 B1 KR 100959898B1 KR 1020070139104 A KR1020070139104 A KR 1020070139104A KR 20070139104 A KR20070139104 A KR 20070139104A KR 100959898 B1 KR100959898 B1 KR 100959898B1
Authority
KR
South Korea
Prior art keywords
client
file
message
information
service
Prior art date
Application number
KR1020070139104A
Other languages
Korean (ko)
Other versions
KR20090070938A (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 KR1020070139104A priority Critical patent/KR100959898B1/en
Publication of KR20090070938A publication Critical patent/KR20090070938A/en
Application granted granted Critical
Publication of KR100959898B1 publication Critical patent/KR100959898B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

인터넷 서비스를 위한 부하 분산형 스케줄링 구조를 가지는 서비스 서버 및 그 서비스 방법에 관한 것이다.A service server having a load balancing scheduling structure for an Internet service, and a service method thereof.

이러한 본 발명에 따르면 서비스 서버가 클라이언트로부터 연결요청을 수신하면, 클라이언트 객체를 생성하여 클라이언트 그룹 객체에 추가하고, 상기 클라이언트 객체의 소켓에서 메시지를 추출하여 복수의 리퀘스트 큐에 라운드로빈 방식으로 분배한다. 그런 다음 상기 메시지를 추출하여 메시지처리의 종류를 파악하고, 상기 클라이언트가 파일 객체 송신을 요구하는 경우 데이터베이스를 조회하여, 상기 파일 객체정보를 송신 클라이언트 객체의 대기객체리스트에 기록한다. 그리고, 상기 파일 객체정보에 대응하는 파일을 상기 클라이언트 객체의 센드버퍼에 저장하여, 상기 클라이언트의 센드버퍼에 저장된 정보를 상기 클라이언트로 전송한다.According to the present invention, when the service server receives the connection request from the client, the client server creates a client object, adds the client object to the client group object, extracts a message from the socket of the client object, and distributes the message to the plurality of request queues in a round robin manner. Then, the message is extracted to determine the type of message processing, and when the client requests file object transmission, the database is queried, and the file object information is recorded in the waiting object list of the transmitting client object. The file corresponding to the file object information is stored in the send buffer of the client object, and the information stored in the send buffer of the client is transmitted to the client.

클라이언트, 서버, 소켓, 객체, 스레드 Client, server, socket, object, thread

Description

인터넷 서비스를 위한 부하 분산형 스케줄링 구조를 가지는 서비스 서버 및 그 서비스 방법{Service server and service method with fair load balancing architecture for Internet service}Service server and service method having load balancing scheduling structure for Internet service {Service server and service method with fair load balancing architecture for Internet service}

인터넷 서비스를 위한 부하 분산형 스케줄링 구조를 가지는 서비스 서버 및 그 서비스 방법에 관한 것이다. A service server having a load balancing scheduling structure for an Internet service, and a service method thereof.

인터넷을 기반으로 하는 많은 응용 서비스들은 일반적으로 클라이언트(Client)와 서버(Server)의 구조를 가진다. 서버는 클라이언트의 접속 요청을 처리하고 요청된 정보를 DB나 파일 시스템으로부터 조회하여 전달하거나 입력된 정보를 처리/가공하여 그 결과를 제공해준다.Many application services based on the Internet generally have a structure of a client and a server. The server processes the client's connection request and retrieves the requested information from the DB or file system and delivers the result by processing / processing the input information.

많은 수의 클라이언트를 동시 처리하기 위한 서버는 최대한의 성능 발휘를 위한 효율적인 구조와 클라이언트별로 균등한 수준의 서비스 처리를 위한 부하 분산 작업 스케쥴링 기능을 가져야 한다. The server for processing a large number of clients at the same time should have an efficient structure for maximum performance and load balancing task scheduling function for even level of service processing by client.

이러한 기능을 담당하는 기존의 서버 시스템들은 통상적으로 특정 응용 서비스에 의존적인 형태를 가지며 DB 조회를 통한 대용량의 레코드 전송 기능과 고속의 파일 컨텐츠 전송 기능이 별도로 구축되므로 두 기능사이의 부하 균일화가 어려우 며 DB 레코드 전송과 파일 컨텐츠 전송이 순차적, 동기식으로 처리되는 기능적 한계를 가지는 문제점이 있다.Existing server systems that are in charge of such functions usually depend on a specific application service, and it is difficult to equalize the load between the two functions because a large amount of record transfer function and high-speed file content transfer function are separately constructed through a DB query. There is a problem in that DB record transfer and file content transfer have a functional limitation of being processed sequentially and synchronously.

따라서 본 발명은 상기 문제점을 해결하기 위한 것으로 다수의 클라이언트로부터 요청되는 대용량의 DB 레코드와 파일 컨텐츠 전달 기능을 동시에 비동기적으로 처리하는 분산형 스케줄링 구조를 가지는 비동기식 서버 시스템 및 그 스케줄링 방법을 제공하기 위한 것이다.Accordingly, the present invention is to solve the above problems and to provide an asynchronous server system and a scheduling method having a distributed scheduling structure for asynchronously processing a large amount of DB records and file content transfer function requested from a plurality of clients at the same time will be.

전술한 기술 과제를 해결하기 위한 본 발명의 실시 예에 따른 복수의 클라이언트들에게 인터넷 서비스를 제공하기 위한 데이터베이스와 파일 시스템을 가지는 서비스 서버에 있어서,In the service server having a database and a file system for providing an Internet service to a plurality of clients according to an embodiment of the present invention for solving the above technical problem,

클라이언트로부터 연결요청을 수신하여 클라이언트 객체를 생성하고, 상기 클라이언트 객체를 클라이언트 그룹 객체에 추가하는 클라이언트 대기 스레드 처리 수단; 상기 클라이언트 객체의 소켓에서 메시지를 추출하여 복수의 리퀘스트 큐에 라운드로빈 방식으로 분배하는 클라이언트 읽기 스레드 처리 수단; 상기 복수의 리퀘스트 큐 중 대응되는 리퀘스트 큐로부터 메시지를 추출하여, 상기 클라이언트로 데이터베이스의 조회 결과를 전송하는 경우 응답 메시지를 클라이언트 객체에 구성하고, 상기 클라이언트로 데이터베이스의 조회 결과 후 파일을 전송하는 경우 전송 대상 파일 정보를 상기 클라이언트 객체에 기록하는 클라이언트 프로세스 스레드 처리 수단; 상기 클라이언트 객체에 기록된 상기 전송 대상 파일 정보에 해당하는 파일을 상기 파일 시스템으로부터 가져와서 상기 클라이언트 객체에 저장하는 파일 읽기 스레드 처리 수단; 및 상기 클라이언트 객체에 저장된 응답 메시지 혹은 파일을 상기 클라이언트로 전송하는 클라이언트 쓰기 스레드 처리 수단을 포함한다.Client waiting thread processing means for receiving a connection request from a client, creating a client object, and adding the client object to a client group object; Client read thread processing means for extracting a message from the socket of the client object and distributing the message to a plurality of request queues in a round robin manner; When a message is extracted from a corresponding request queue among the plurality of request queues and a query result of the database is transmitted to the client, a response message is configured in the client object, and the file is transmitted when the file is sent after the query result of the database to the client. Client process thread processing means for recording target file information in the client object; File reading thread processing means for taking a file corresponding to the transfer target file information recorded in the client object from the file system and storing the file in the client object; And a client write thread processing means for transmitting a response message or a file stored in the client object to the client.

한편, 본 발명의 실시 예에 따른 서비스 서버가 클라이언트 요청에 따른 서비스를 제공하는 방법에 있어서,On the other hand, in the service server according to an embodiment of the present invention to provide a service according to the client request,

a) 클라이언트로부터 연결요청을 수신하면, 클라이언트 객체를 생성하여 클라이언트 그룹 객체에 추가하고, 상기 클라이언트 객체의 소켓에서 메시지를 추출하여 복수의 리퀘스트 큐에 라운드로빈 방식으로 분배하는 단계; b) 상기 메시지가 저장된 리퀘스트 큐로부터 상기 메시지를 추출하여 메시지처리의 종류를 파악하는 단계; c) 상기 메시지의 종류를 파악한 결과 상기 클라이언트가 파일 객체 송신을 요구하는 경우 데이터베이스를 조회하고, 상기 파일 객체정보를 송신 클라이언트 객체의 대기객체리스트에 기록하는 단계; d) 상기 파일 객체정보에 대응하는 파일을 상기 클라이언트 객체의 센드버퍼에 저장하고, 상기 클라이언트의 센드버퍼에 저장된 정보를 상기 클라이언트로 전송하는 단계를 포함한다. a) receiving a connection request from a client, creating a client object, adding the client object to the client group object, extracting a message from the socket of the client object, and distributing the message to a plurality of request queues in a round robin manner; b) extracting the message from the request queue in which the message is stored to determine the type of message processing; c) querying a database when the client requests file object transmission as a result of identifying the type of the message, and recording the file object information in a waiting object list of the transmitting client object; d) storing a file corresponding to the file object information in a send buffer of the client object, and transmitting the information stored in the send buffer of the client to the client.

그리고, e) 상기 b) 단계에서 상기 메시지의 종류를 파악한 결과 파일 송신을 요구하지 않는 경우, 데이터베이스를 조회하여 응답 메시지를 클라이언트 객체의 센드버퍼에 저장하는 단계를 더 포함한다.And e) if the file type is not requested as a result of determining the type of the message in step b), storing the response message in the send buffer of the client object by querying the database.

전술한 구성에 의하여 본 발명에 따른 서비스 서버는 다수의 클라이언트로부 터 요청되는 접속 및 정보전달 요청을 동시에 비 동기적으로 전달할 수 있으며, 부하 분산 스케줄링을 통하여 각 클라이언트 별로 균등한 수준의 서비스를 제공하는 효과가 있다. 또한, 클라이언트의 요청에 따라 전송되는 정보를 설정된 프레임 단위로 제한하여, 대용량 컨텐츠 전송에 따른 부하를 줄임으로써 서비스 서버의 안정적인 운용을 지원하는 효과를 기대할 수 있다.By the above-described configuration, the service server according to the present invention can simultaneously transmit asynchronously the access requests and information transfer requests requested from a plurality of clients, and provide an equal level of service for each client through load balancing scheduling. It is effective. In addition, by limiting the information transmitted according to the request of the client in a set frame unit, it is possible to expect the effect of supporting the stable operation of the service server by reducing the load due to the transmission of large content.

아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings so that those skilled in the art may easily implement the present invention. As those skilled in the art would realize, the described embodiments may be modified in various different ways, all without departing from the spirit or scope of the present invention. In the drawings, parts irrelevant to the description are omitted in order to clearly describe the present invention, and like reference numerals designate like parts throughout the specification.

명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.Throughout the specification, when a part is said to "include" a certain component, it means that it can further include other components, without excluding other components unless specifically stated otherwise. In addition, the terms “… unit”, “… unit”, “module”, etc. described in the specification mean a unit that processes at least one function or operation, which may be implemented by hardware or software or a combination of hardware and software. have.

이제 본 발명의 실시 예에 따른 인터넷 서비스를 위한 부하 분산형 스케줄링 구조를 가지는 서비스 서버 및 그 서비스 방법에 대하여 도면을 참고로 하여 상세 하게 설명한다.Now, a service server having a load balancing scheduling structure for an Internet service according to an embodiment of the present invention and a service method thereof will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 실시 예에 따른 부하 분산형 스케줄링 구조를 가지는 서비스 서버의 구조를 나타낸 블록도이다.1 is a block diagram illustrating a structure of a service server having a load balancing scheduling structure according to an embodiment of the present invention.

본 발명의 실시 예에 따른 서비스 서버(100)는 다수의 클라이언트(10)로부터 요청되는 대용량의 DB 레코드 및 파일 컨텐츠 요청을 비동기적으로 처리한다. 또한, 웹 페이지를 통하여 요청되는 다수의 클라이언트(10)별로 균등한 수준의 서비스를 제공하기 위해 부하 분산 작업 스케줄링 기능을 수행한다.The service server 100 according to an embodiment of the present invention asynchronously processes a large amount of DB records and file content requests requested from a plurality of clients 10. In addition, the load balancing job scheduling function is performed to provide a uniform level of service for each of the plurality of clients 10 requested through the web page.

클라이언트(10)는 서비스 서버(100)와 상대되는 개념으로 인터넷을 통하여 특정 서비스를 요청하는 역할을 하며, 서비스 서버(100)에 서비스를 요청하기 위해 인터넷을 통해 접속하는 웹 클라이언트 혹은 클라이언트 단말 또는 클라이언트 단말의 프로그램일 수 있다.The client 10 serves to request a specific service through the Internet in a concept that is opposed to the service server 100, and a web client or a client terminal or client connected through the Internet to request a service from the service server 100. It may be a program of the terminal.

첨부된 도 1을 참조하면, 본 발명의 실시 예에 따른 서비스 서버(100)는 클라이언트 대기 스레드(ClientWaitThread)(110), 클라이언트 그룹(ClientGroup) 객체(120), 클라이언트 읽기 스레드(ClientReadThread)(130), 리퀘스트 큐(Request Queue)(140), 클라이언트 프로세스 스레드(ClientProcThread)(150), 파일 읽기 스레드(FileReadThread)(160), 클라이언트 쓰기 스레드(ClientWriteThread)(170)를 포함한다. 그리고, 클라이언트(10)에게 서비스를 제공하기 위한 레코드 정보를 쉽게 검색 또는 갱신할 수 있도록 하는 DBMS(Database management system)(181) 및 상기 서비스를 위한 다양한 컨텐츠 파일을 제공하는 파일 시스템(182)을 포함하는 파일서버(180)를 더 포함한다. 여기서, 파일 서버(180)는 도 1에서와 같이 서비스 서버(100)에 포함되는 구성일 수 있으나 서비스 서버(100)와 별도로 구성되어 연동 할 수 있다.Referring to FIG. 1, the service server 100 according to an embodiment of the present invention may include a client wait thread (ClientWaitThread) 110, a client group object 120, and a client read thread (ClientReadThread) 130. It includes a request queue (140), a client process thread (ClientProcThread) 150, a file read thread (FileReadThread) 160, a client write thread (ClientWriteThread) (170). And a database management system (DBMS) 181 for easily retrieving or updating record information for providing a service to the client 10, and a file system 182 for providing various content files for the service. It further comprises a file server 180. Here, the file server 180 may be a component included in the service server 100 as shown in FIG. 1, but may be configured separately from the service server 100 to interwork.

다음, 도 2 내지 도 6을 통하여 본 발명의 실시 예에 따른 서비스 서버(100)의 구성 및 역할을 구체적으로 설명한다.Next, the configuration and role of the service server 100 according to an exemplary embodiment of the present invention will be described in detail with reference to FIGS. 2 to 6.

도 2는 본 발명의 실시 예에 따른 서비스 서버가 클라이언트의 요청에 따라 레코드를 송신처리 하는 구조를 나타낸다.2 illustrates a structure in which a service server transmits a record according to a client's request according to an embodiment of the present invention.

첨부된 도 2를 참조하면, 클라이언트 대기 스레드(110)는 클라이언트(10)로부터 전달되는 TCP 소켓 연결 요청을 수신하여 인증 처리 후 새로운 클라이언트 객체를 생성하고, 이를 클라이언트 그룹 객체(120)에 추가한다. 그런 다음, 클라이언트 대기 스레드(110)는 새로운 클라이언트(10)로부터의 접속 요청을 처리하기 위해 대기한다.Referring to FIG. 2, the client waiting thread 110 receives a TCP socket connection request from the client 10, creates a new client object after authentication processing, and adds the new client object to the client group object 120. The client wait thread 110 then waits to process the connection request from the new client 10.

클라이언트 그룹 객체(120)는 서비스 서버(100)내의 제1 클라이언트 객체, 제2 클라이언트 객체,…, 제N 클라이언트 객체를 포함하는 모든 클라이언트 객체들을 관리하고, 클라이언트(10)들로부터 전달되는 정보에 대한 동기식 통신을 지원하는 역할을 한다. 여기서, 도 3 및 도 4를 통하여 본 발명의 실시 예에 따른 클라이언트 객체와 클라이언트 그룹 객체를 설명하면 다음과 같다. The client group object 120 may include a first client object, a second client object,... In the service server 100. It manages all client objects, including the N-th client object, and supports synchronous communication of information transmitted from the clients 10. 3 and 4, a client object and a client group object according to an embodiment of the present invention will be described as follows.

도 3은 본 발명의 실시 예에 따른 클라이언트 객체의 구성을 나타낸 구성도이다.3 is a block diagram showing the configuration of a client object according to an embodiment of the present invention.

첨부된 도 3을 참조하면, 본 발명의 실시 예에 따른 클라이언트 객체는 씨소켓(cSocket), 리시브버퍼(receiveBuffer), 센드버퍼(sendBuffer), 대기객체리스 트(waitObjectList), 클라이언트(Client(socket)) 생성자, 읽기소켓함수(ReadSocket()), 쓰기소켓함수(WriteSocket()), 애드대기객체함수(AddWaitObject(objectinfo)) 및 프로세스대기객체함수(ProcWaitObject())를 포함한다.Referring to FIG. 3, a client object according to an embodiment of the present invention may include a cSocket, a receive buffer, a send buffer, a wait object list, a wait object list, and a client (socket). ) Constructor, read socket function (ReadSocket ()), write socket function (WriteSocket ()), add wait object function (AddWaitObject (objectinfo)) and process wait object function (ProcWaitObject ()).

씨소켓(cSocket)는 클라이언트(10)가 TCP 연결을 요청할 때 반환되는 클라이언트 소켓 디스크립터(client socket descriptor)이고, 리시브버퍼(receive)는 상기 씨소켓을 통해 클라이언트(10)로부터 전달된 정보를 담아두기 위한 임시 저장소이다.The cSocket is a client socket descriptor returned when the client 10 requests a TCP connection, and the receive buffer stores information transmitted from the client 10 through the csocket. It is a temporary repository for.

센드버퍼(sendBuffer)는 상기 씨소켓을 통해 클라이언트(10)로 전달하는 정보를 담아두기 위한 임시 저장소이고, 대기객체리스트(waitObjectList)는 클라이언트(10)로 전달되어 할 객체의 ID와 파일명, 기타 정보들을 기록하는 리스트이다.A send buffer is a temporary storage for storing the information delivered to the client 10 through the socket, and the wait object list is transmitted to the client 10 so that the ID, file name, and other information of the object to be transmitted are transmitted to the client 10. List of records.

클라이언트(Client(socket)) 생성자는 새로운 클라이언트 객체를 생성하고 초기화 작업을 수행하며, 이때 소켓은 클라이언트(10)가 TCP 연결을 요청할 때 반환되는 클라이언트 소켓 디스크립터(client socket descriptor)로서 상기 씨소켓 필드에 기록한다.The client (Client) constructor creates a new client object and performs initialization, where the socket is a client socket descriptor that is returned when the client 10 requests a TCP connection. Record it.

읽기소켓함수(ReadSocket())는 상기 씨소켓으로 부터 데이터를 읽어 리시브버퍼의 빈 공간에 저장(append)하고, 리시브버퍼로부터 완전한 프로토콜 메시지가 형성되면 이를 리시브버퍼에서 제거하고 반환(return)한다.ReadSocket () reads data from the socket and stores it in the empty space of the receive buffer. When a complete protocol message is formed from the receive buffer, it is removed from the receive buffer and returned.

쓰기소켓함수(WriteSocket())는 센드버퍼에 저장된 정보를 미리 설정된 프레임(frame)단위로 추출하여 씨소켓을 통해 클라이언트(10)로 전달한다. 예컨대, 이 더넷(Ethernet) MTU(Maximum transfer unit)를 고려하면 1460Byte로 프레임을 설정할 수 있고, 한번의 프레임 전달로 완료되지 못할 경우 정보의 전달은 최대 K회까지 이루어지며, 이 값은 서버 시작 시 파라미터(parameter) 값으로 주어진다. The write socket function WriteSocket () extracts the information stored in the send buffer in a predetermined frame unit and delivers the information to the client 10 through the C socket. For example, considering Ethernet Ethernet MTU (Maximum transfer unit), the frame can be set to 1460 bytes, and if the frame is not completed in one frame, the information is transmitted up to K times. It is given as a parameter value.

애드대기객체함수(AddWaitObject(objectinfo))는 대기객체리스트에 주어진 ID, 파일명과 같은 객체정보(objectinfo)를 활용하여 새로운 객체를 추가하고, 프로세스대기객체함수(ProcWaitObject())는 대기객체리스트에서 하나의 객체 정보 얻고 해당 파일을 읽어서 해당 클라이언트로 보낼 수 있도록 센드버퍼에 저장한다.The add wait object function (AddWaitObject (objectinfo)) adds a new object using the object information (objectinfo) such as ID and file name given to the wait object list, and the process wait object function (ProcWaitObject ()) is one of the wait object list. Get information about the object and store it in the send buffer so that the file can be read and sent to the client.

다음, 도 4는 본 발명의 실시 예에 따른 클라이언트 그룹 객체의 구성을 나타낸 구성도이다.Next, FIG. 4 is a diagram illustrating a configuration of a client group object according to an embodiment of the present invention.

첨부된 도 4를 참조하면, 본 발명의 실시 예에 따른 클라이언트 그룹 객체(120)는 클라이언트리스트(ClientList), 클라이언트그룹(ClientGroup()) 생성자, 애드클라이언트함수(AddClient(client)), 리무브클라이언트함수(RemoveClient(client)), 클라이언트읽기함수(ClientRead())를 포함한다. Referring to FIG. 4, the client group object 120 according to an embodiment of the present invention may include a client list, a client group constructor, an add client function, and a remove client. It includes a function (RemoveClient (client)) and a client read function (ClientRead ()).

클라이언트리스트(ClientList)는 현재 연결이 활성화된 상태인 클라이언트 객체들의 리스트를 저장한다. 그리고, 클라이언트그룹 (ClientGroup()) 생성자는 새로운 클라이언트그룹객체를 생성하고 초기화 작업을 진행한다.The client list stores a list of client objects for which a current connection is active. The ClientGroup () constructor creates a new client group object and initializes it.

애드클라이언트함수(AddClient(client))는 주어진 클라이언트 객체(client)를 클라이언트리스트에 추가하고, 리무브클라이언트함수(RemoveClient(client))는 주어진 클라이언트 객체(client)를 클라이언트리스트에서 삭제하고 해당 클라이언트 객체를 제거한다.The ad client function (AddClient (client)) adds the given client object to the client list, and the remove client function (RemoveClient (client)) deletes the given client object from the client list and deletes the client object. Remove

클라이언트읽기함수(ClientRead())는 클라이언트(10)로부터 전달되는 정보에 대한 동기식 통신을 지원한다. 클라이언트리스트에 속한 모든 클라이언트객체들 중에서 최소 하나이상의 클라이언트가 소켓 읽기 가능한 상태일 때까지 수면(sleep) 상태로 유지된다. 수면상태에서 깨어나면 소켓 읽기가 가능한 모든 클라이언트 객체들의 읽기소켓함수(ReadSocket())를 호출한다. 이 때 반환된 메시지 정보들과 메시지를 넘겨준 클라이언트 식별자 정보들을 리스트 형태로 반환한다.The client read function (ClientRead ()) supports synchronous communication of information transmitted from the client 10. Of all the client objects in the client list, at least one client is asleep until the socket is readable. When it wakes up, it calls the ReadSocket () function on all client objects that can read the socket. In this case, the returned message information and the client identifier information passed in the message are returned in the form of a list.

클라이언트 읽기 스레드(130)는 클라이언트 그룹 객체(120)에 있는 다수의 클라이언트 객체들 중에서 임의의 메시지 수신이 준비된 클라이언트 객체의 소켓에서 메시지를 추출하여 리퀘스트 큐(140)에 삽입하는 역할을 한다. 이 때 리퀘스트 큐(140)는 다수 개가 존재할 수 있으며 클라이언트 읽기 스레드(130)는 부하 균등을 이루기 위해 개별 리퀘스트 큐(140)를 순차적으로 돌며 한번에 한 메시지씩을 삽입하는 라운드로빈(Round Ronin)방식으로 처리한다.The client read thread 130 extracts a message from the socket of the client object ready to receive a message among the plurality of client objects in the client group object 120 and inserts the message into the request queue 140. At this time, there may be a plurality of request queues 140, and the client read thread 130 processes the request queue 140 in order to achieve load balancing by using a round robin method that inserts one message at a time. do.

리퀘스트 큐(140)는 클라이언트(10)들로부터 전달되는 메시지 정보를 처리하기 위한 대기 큐(Queue)로서 서비스 서버(100)의 성능 최적화를 위하여 제1 리퀘스트 큐, 제2 리퀘스트 큐,…, 제L 리퀘스트 규와 같이 다수 개로 구성한다. 도 5를 통하여 본 발명의 실시 예에 따른 리퀘스트 큐를 설명하면 다음과 같다. The request queue 140 is a waiting queue for processing message information transmitted from the clients 10. The request queue 140 may include a first request queue, a second request queue,..., In order to optimize the performance of the service server 100. It consists of a number, like the L request rule. A request queue according to an embodiment of the present invention will be described with reference to FIG. 5 as follows.

도 5는 본 발명의 실시 예에 따른 리퀘스트 큐 객체의 구성을 나타낸 구성도이다.5 is a diagram illustrating a configuration of a request queue object according to an exemplary embodiment of the present invention.

첨부된 도 5를 참조하면, 본 발명의 실시 예에 따른 리퀘스트 큐(140)는 메시지카운트(messageCount), 메시지큐(messageQueue), 리퀘스트큐(RequestQueue()) 생성자, 푸쉬함수(Push (message)) 및 팝함수(Pop())를 포함한다.Referring to FIG. 5, the request queue 140 according to an embodiment of the present invention may include a message count, a message queue, a request queue (RequestQueue) constructor, and a push function (push (message)). And a pop function Pop ().

메시지카운트(messageCount)는 현재 큐(Queue)에 대기하고 있는 메시지들의 수를 나타내고, 메시지큐(messageQueue)는 처리되어야 할 클라이언트 메시지 정보를 저장하는 저장공간이다.The message count represents the number of messages currently waiting in the queue, and the message queue is a storage space for storing client message information to be processed.

리퀘스트큐(RequestQueue()) 생성자는 새로운 리퀘스트 큐 객체를 생성하고 초기화 작업을 진행한다. 푸쉬함수(Push(message))는 큐(Queue)에 새로운 클라이언트 메시지(message)를 저장하고, 팝함수(Pop())는 큐(Queue)로부터 처리할 메시지를 제거하고, 이를 클라이언트 프로세스 스레드(150)에 반환한다. The request queue constructor creates a new request queue object and performs initialization. Push (message) stores a new client message in a queue, and Pop () removes a message to be processed from the queue, and the client process thread 150 Return).

클라이언트 프로세스 스레드(150)는 리퀘스트 큐(140)의 수만큼 존재하며 각각 개별적으로 대응되는 리퀘스트 큐(140)를 전담한다. 클라이언트 프로세스 스레드(150)는 개별적으로 전담하는 리퀘스트 큐(140)로부터 메시지를 선입선출(FIFO)방식으로 추출하고, 해당 메시지가 DB 레코드 조회를 필요로 할 경우 직접 DBMS(181)에 질의를 하며, 그 질의 결과를 해당 클라이언트 객체 내의 센드버퍼(sendBuffer)에 삽입하여 전달될 수 있도록 한다. 한편, 클라이언트 프로세스 스레드(150)는 리퀘스트 큐(140)로부터 추출한 메시지가 파일 컨텐츠 전송을 필요로 하는 경우, 해당 클라이언트 객체의 대기 객체 리스트(waitObjectList)에 송신 대상 파일의 정보를 기록한다. The client process thread 150 exists as many as the request queue 140 and is dedicated to the request queue 140 corresponding to each individually. The client process thread 150 extracts a message from a request queue 140 that is individually dedicated in a first-in-first-out (FIFO) manner, and queries the DBMS 181 directly when the message requires a DB record lookup. Insert the query result into the sendBuffer in the client object so that it can be delivered. On the other hand, if the message extracted from the request queue 140 requires file content transfer, the client process thread 150 records the information of the transmission target file in the wait object list (waitObjectList) of the corresponding client object.

도 6은 본 발명의 실시 예에 따른 서비스 서버가 클라이언트의 요청에 따라 정보를 송신처리 하는 구조를 나타낸다.6 illustrates a structure in which a service server transmits and processes information according to a request of a client according to an exemplary embodiment of the present invention.

파일 읽기 스레드(160)는 클라이언트 객체의 대기 객체 리스 트(waitObjectList)에 기록된 전송 대상 파일의 정보를 읽고 파일 시스템으로부터 해당 파일의 내용을 읽어서 센드버퍼에 기록한다. 파일 읽기 스레드(160)는 파일 시스템(182)의 성능을 최대한 활용하기 위하여 다수 개로 구성하며, 각각 순차적으로 클라이언트 객체의 대기 객체 리스트를 읽어 처리를 한다.The file reading thread 160 reads the information of the transfer target file recorded in the wait object list (waitObjectList) of the client object, reads the contents of the corresponding file from the file system, and writes the contents to the send buffer. The file read thread 160 is configured in plural to maximize the performance of the file system 182, and sequentially reads and processes the wait object list of the client object.

클라이언트 쓰기 스레드(170)는 각 클라이언트 객체에 포함되어 있는 센드버퍼의 내용을 TCP 소켓을 통해 클라이언트로 전송하는 역할을 담당한다. 이때, 센드버퍼에는 클라이언트 프로세스 스레드(150)에서 삽입한 응답 메시지 혹은 파일 읽기 스레드(160)를 통하여 저장된 파일 컨텐츠가 저장되어있다. 클라이언트 쓰기 스레드(170)는 서비스 서버(100)에 하나 존재하며, 부하 균등화를 위하여 각 클라이언트 객체의 센드버퍼에 대하여 미리 설정한 양만큼만 전송하고 다음 클라이언트(10)로 이동한다.The client write thread 170 is responsible for transmitting the contents of the send buffer included in each client object to the client through the TCP socket. At this time, the send buffer stores the response message inserted by the client process thread 150 or the file content stored through the file reading thread 160. One client write thread 170 exists in the service server 100. The client write thread 170 transmits only a predetermined amount of the send buffer of each client object for load equalization and moves to the next client 10.

다음, 도 7을 통하여 본 발명의 실시 예에 따른 서비스 서버가 클라이언트 요청에 따라 레코드 혹은 파일을 송신 하는 방법을 설명한다.Next, a method of transmitting a record or file according to a client request by a service server according to an embodiment of the present invention will be described with reference to FIG. 7.

도 7은 본 발명의 실시 예에 따른 서비스 서버가 클라이언트 요청에 따라 레코드 혹은 파일을 송신 하는 방법을 나타낸 흐름도이다.7 is a flowchart illustrating a method in which a service server transmits a record or file according to a client request according to an exemplary embodiment of the present invention.

첨부된 도 7을 살펴보면, 본 발명의 실시 예에 따른 서비스 서버(100)의 클라이언트 대기 스레드(110)는 TCP 소켓을 생성한 후 클라이언트(10)의 연결요청에 대기한다(S701). 그러던 중 클라이언트(10)로부터 연결 요청을 수신하면 클라이언트 객체를 생성하고, 클라이언트 그룹 객체(120)에 추가한다(S702). 이때 서비스 서버(100)의 클라이언트 대기 스레드(110)는 상기 연결요청시 클라이언트(10)로부 터 반환된 클라이어트 소켓 디스크립터(client socket descriptor)를 해당 클라이언트 객체에 저장한다.Referring to FIG. 7, the client wait thread 110 of the service server 100 according to an embodiment of the present invention creates a TCP socket and waits for a connection request of the client 10 (S701). Meanwhile, upon receiving the connection request from the client 10, a client object is generated and added to the client group object 120 (S702). At this time, the client waiting thread 110 of the service server 100 stores the client socket descriptor returned from the client 10 in the corresponding client object.

서비스 서버(100)의 클라이언트 읽기 스레드(130)는 상기 연결 설정된 클라이언트(10)로부터 수신된 메시지를 읽어서 리퀘스트 큐(140)에 저장한다(S703). 이때, 서비스 서버(100)의 리퀘스트 큐(140)는 다수개가 존재하므로 클라이언트 읽기 스레드(130)는 부하 분산을 고려하여 추출한 메시지를(Round Ronin)방식으로 처리한다. 그러면, 상기 저장된 리퀘스트 큐(140)에 대응하는 클라이언트 프로세스 스레드(150)는 리퀘스트 큐(140)에서 클라이언트(10)의 메시지를 추출하여 메시지 처리의 종류를 파악한다(S705). 그리고, 상기 메시지의 종류를 파악한 결과 파일 객체 송신을 요구하면(S706, 예), 클라이언트 프로세스 스레드(150)는 DBMS(181)를 통하여 DB를 조회하고(S709), 송신 클라이언트 객체의 대기객체리스트(waitObjectList)에 송신할 파일 객체정보를 기록한다(S710). 서비스 서버(100)의 파일 읽기 스레드(S160)는 상기 송신 클라이언트 객체의 대기객체리스트에 기록된 파일 객체정보를 파일 시스템(182)으로부터 가져와서 센드버퍼에 저장(append)한다(S711). 그러면, 서비스 서버(100)의 클라이언트 쓰기 스레드(170)가 상기 센드버퍼에 저장된 정보를 클라이언트(10)로 전송한다(S712).The client read thread 130 of the service server 100 reads the message received from the connected client 10 and stores the message received in the request queue 140 (S703). In this case, since there are a plurality of request queues 140 of the service server 100, the client read thread 130 processes the extracted message in a round ronin manner in consideration of load balancing. Then, the client process thread 150 corresponding to the stored request queue 140 extracts the message of the client 10 from the request queue 140 to determine the type of message processing (S705). In response to determining the type of the message and requesting file object transmission (S706, YES), the client process thread 150 inquires the DB through the DBMS 181 (S709), and waits the list of waiting objects of the transmitting client object (S709). file object information to be transmitted is recorded in the waitObjectList) (S710). The file reading thread S160 of the service server 100 obtains the file object information recorded in the waiting object list of the sending client object from the file system 182 and stores the file object information in the send buffer (S711). Then, the client write thread 170 of the service server 100 transmits the information stored in the send buffer to the client 10 (S712).

한편, 상기 S705 단계에서 상기 메시지의 종류를 파악한 결과 파일 객체 송신을 요구하지 않으면(S706, 아니오), 클라이언트 프로세스 스레드(150)는 DBMS(181)를 통하여 DB를 조회하고(S707), 송신 클라이언트 객체의 샌드버퍼에 응답 메시지를 직접 저장(append)한다(S708). 그러면, 서비스 서버(100)의 클라이어 트 쓰기 스레드(170)가 상기 샌드버퍼에 저장된 응답메시지를 클라이언트(10)로 전송한다(S712). On the other hand, if it is determined in step S705 that the message type is not requested as a result of the file object transmission (S706, NO), the client process thread 150 inquires the DB through the DBMS 181 (S707), and transmits the client object. Append the response message directly to the sand buffer (S708). Then, the client write thread 170 of the service server 100 transmits a response message stored in the sand buffer to the client 10 (S712).

이와 같이 본 발명의 실시 예에 따른 서비스 서버(100)는 다수의 클라이언트(10)로부터 요청되는 접속 및 정보전달 요청을 동시에 비 동기적으로 전달할 수 있으며, 라운드 로빈(Round Ronin) 방식의 부하 분산 스케줄링을 통하여 각 클라이언트 별로 균등한 수준의 서비스를 제공하는 효과가 있다. 또한, 클라이언트(10)의 요청에 따라 전송되는 정보를 설정된 프레임 단위로 제한하여, 대용량 컨텐츠 전송에 따른 부하를 줄임으로써 서비스 서버(100)의 안정적인 운용을 지원하는 효과를 기대할 수 있다.As such, the service server 100 according to an exemplary embodiment of the present invention may simultaneously transmit asynchronously the connection and information transfer requests requested from the plurality of clients 10, and perform load balancing scheduling in a round robin manner. Through this, there is an effect of providing an equal level of service for each client. In addition, by limiting the information transmitted according to the request of the client 10 in a set frame unit, it is possible to expect the effect of supporting the stable operation of the service server 100 by reducing the load caused by the transmission of large content.

이상에서 본 발명의 실시 예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.Although the embodiments of the present invention have been described in detail above, the scope of the present invention is not limited thereto, and various modifications and improvements of those skilled in the art using the basic concepts of the present invention defined in the following claims are also provided. It belongs to the scope of rights.

도 1은 본 발명의 실시 예에 따른 부하 분산형 스케줄링 구조를 가지는 서비스 서버의 구조를 나타낸 블록도이다.1 is a block diagram illustrating a structure of a service server having a load balancing scheduling structure according to an embodiment of the present invention.

도 2는 본 발명의 실시 예에 따른 서비스 서버가 클라이언트의 요청에 따라 레코드를 송신처리 하는 구조를 나타낸다.2 illustrates a structure in which a service server transmits a record according to a client's request according to an embodiment of the present invention.

도 3은 본 발명의 실시 예에 따른 클라이언트 객체의 구성을 나타낸 구성도이다.3 is a block diagram showing the configuration of a client object according to an embodiment of the present invention.

도 4는 본 발명의 실시 예에 따른 클라이언트 그룹 객체의 구성을 나타낸 구성도이다.4 is a diagram illustrating a configuration of a client group object according to an embodiment of the present invention.

도 5는 본 발명의 실시 예에 따른 리퀘스트 큐 객체의 구성을 나타낸 구성도이다.5 is a diagram illustrating a configuration of a request queue object according to an exemplary embodiment of the present invention.

도 6은 본 발명의 실시 예에 따른 서비스 서버가 클라이언트의 요청에 따라 정보를 송신처리 하는 구조를 나타낸다.6 illustrates a structure in which a service server transmits and processes information according to a request of a client according to an exemplary embodiment of the present invention.

도 7은 본 발명의 실시 예에 따른 서비스 서버가 클라이언트 요청에 따라 레코드 혹은 파일을 송신 하는 방법을 나타낸 흐름도이다.7 is a flowchart illustrating a method in which a service server transmits a record or file according to a client request according to an exemplary embodiment of the present invention.

Claims (13)

복수의 클라이언트들에게 인터넷 서비스를 제공하기 위한 데이터베이스와 파일 시스템을 가지는 서비스 서버에 있어서,In the service server having a database and a file system for providing Internet services to a plurality of clients, 클라이언트로부터 연결요청을 수신하여 클라이언트 객체를 생성하고, 상기 클라이언트 객체를 클라이언트 그룹 객체에 추가하는 클라이언트 대기 스레드 처리 수단;Client waiting thread processing means for receiving a connection request from a client, creating a client object, and adding the client object to a client group object; 상기 클라이언트 객체의 소켓에서 메시지를 추출하여 복수의 리퀘스트 큐에 라운드로빈 방식으로 분배하는 클라이언트 읽기 스레드 처리 수단;Client read thread processing means for extracting a message from the socket of the client object and distributing the message to a plurality of request queues in a round robin manner; 상기 복수의 리퀘스트 큐 중 대응되는 리퀘스트 큐로부터 메시지를 추출하여, 상기 클라이언트로 데이터베이스의 조회 결과를 전송하는 경우 응답 메시지를 클라이언트 객체에 구성하고, 상기 클라이언트로 데이터베이스의 조회 결과 후 파일을 전송하는 경우 전송 대상 파일 정보를 상기 클라이언트 객체에 기록하는 클라이언트 프로세스 스레드 처리 수단;When a message is extracted from a corresponding request queue among the plurality of request queues and a query result of the database is transmitted to the client, a response message is configured in the client object, and the file is transmitted when the file is sent after the query result of the database to the client. Client process thread processing means for recording target file information in the client object; 상기 클라이언트 객체에 기록된 상기 전송 대상 파일 정보에 해당하는 파일을 상기 파일 시스템으로부터 가져와서 상기 클라이언트 객체에 저장하는 파일 읽기 스레드 처리 수단; 및File reading thread processing means for taking a file corresponding to the transfer target file information recorded in the client object from the file system and storing the file in the client object; And 상기 클라이언트 객체에 저장된 응답 메시지 혹은 파일을 상기 클라이언트로 전송하는 클라이언트 쓰기 스레드 처리 수단Client write thread processing means for transmitting a response message or a file stored in the client object to the client 을 포함하는 서비스 서버.Service server comprising a. 제 1 항에 있어서, The method of claim 1, 상기 클라이언트 객체는,The client object, 상기 클라이언트로부터 연결요청 시 반환되는 클라이언트 소켓 디스크립터인 씨소켓;See Socket, which is a client socket descriptor returned when a connection request is made from the client; 상기 씨소켓을 통해 상기 클라이언트로부터 수신되는 정보가 임시로 저장되는 리시브버퍼;A receiving buffer temporarily storing information received from the client through the socket; 상기 씨소켓을 통해 상기 클라이언트로 전달하는 정보가 임시로 저장되는 센드버퍼; 및A send buffer temporarily storing information transferred to the client through the seed socket; And 상기 클라이언트로 전달하기 위한 클라이언트 식별자와 파일명이 기록되는 대기객체리스트Wait object list in which the client identifier and file name for transmission to the client are recorded 를 포함하는 것을 특징으로 하는 서비스 서버.Service server comprising a. 제 2 항에 있어서, The method of claim 2, 상기 클라이언트 객체는,The client object, 상기 씨소켓으로부터 클라이어트의 데이터를 읽어 상기 리시브버퍼에 저장하고, 상기 리시브버퍼에 프로토콜 메시지가 형성되면 상기 클라이언트 데이터를 반환하는 것을 특징으로 하는 서비스 서버.The client server reads data of the client from the socket and stores the client data in the receive buffer, and returns the client data when a protocol message is formed in the receive buffer. 제 3 항에 있어서, The method of claim 3, wherein 상기 클라이언트 그룹 객체는,The client group object, 연결이 활성화된 클라이언트 객체들의 목록이 저장된 클라이언트리스트;A client list in which a list of client objects for which a connection is activated is stored; 클라이언트 객체를 상기 클라이언트리스트에 추가하는 애드클라이언트; 및An ad client for adding a client object to the client list; And 클라이언트 객체를 상기 클라이언트리스트에서 제거하는 리무브클라이언트를 포함하는 것을 특징으로 하는 서비스 서버.And a remove client for removing a client object from the client list. 제 4 항에 있어서,The method of claim 4, wherein 상기 리퀘스트 큐는 상기 리퀘스트 큐에 대기하는 메시지들의 수를 나타내는 메시지카운트와 클라이언트 메시지 정보를 저장하는 메시지큐를 포함하는 서비스 서버.And the request queue includes a message count indicating a number of messages waiting for the request queue and a message queue storing client message information. 제 5 항에 있어서,The method of claim 5, 상기 클라이언트 프로세스 스레드 처리 수단은,The client process thread processing means, 상기 응답 메시지를 생성하여 상기 클라이언트 객체의 센드버퍼에 저장하는 것을 특징으로 하는 서비스 서버.Generating the response message and storing the response message in a send buffer of the client object. 제 6 항에 있어서,The method of claim 6, 상기 클라이언트 프로세스 스레드 처리 수단은,The client process thread processing means, 상기 클라이언트 식별자와 파일명을 상기 클라이언트의 대기객체리스트에 기록하는 것을 특징으로 하는 서비스 서버.And the client identifier and the file name are recorded in the standby object list of the client. 제 6 항에 있어서, The method of claim 6, 상기 클라이언트 객체는,The client object, 상기 센드버퍼에 저장된 정보를 설정된 프레임단위로 추출하여 상기 클라이언트로 전달하는 것을 특징으로 하는 서비스 서버.The service server, characterized in that for extracting the information stored in the send buffer in a set frame unit and delivered to the client. 제 8 항에 있어서,The method of claim 8, 상기 파일 읽기 스레드 처리 수단은,The file read thread processing means, 상기 전송 대상 파일을 설정된 프레임단위로 추출하여 클라이언트 객체의 센드버퍼에 저장하는 것을 특징으로 하는 서비스 서버.And extracting the transmission target file in a set frame unit and storing the file in the send buffer of a client object. 서비스 서버가 클라이언트 요청에 따른 서비스를 제공하는 방법에 있어서,In the method for the service server to provide a service according to the client request, a) 클라이언트로부터 연결요청을 수신하면, 클라이언트 객체를 생성하여 클라이언트 그룹 객체에 추가하고, 상기 클라이언트 객체의 소켓에서 메시지를 추출하여 복수의 리퀘스트 큐에 라운드로빈 방식으로 분배하는 단계;a) receiving a connection request from a client, creating a client object, adding the client object to the client group object, extracting a message from the socket of the client object, and distributing the message to a plurality of request queues in a round robin manner; b) 상기 메시지가 저장된 리퀘스트 큐로부터 상기 메시지를 추출하여 메시지처리의 종류를 파악하는 단계;b) extracting the message from the request queue in which the message is stored to determine the type of message processing; c) 상기 메시지의 종류를 파악한 결과 상기 클라이언트가 파일 객체 송신을 요구하는 경우 데이터베이스를 조회하고, 상기 파일 객체정보를 송신 클라이언트 객체의 대기객체리스트에 기록하는 단계;c) querying a database when the client requests file object transmission as a result of identifying the type of the message, and recording the file object information in a waiting object list of the transmitting client object; d) 상기 파일 객체정보에 대응하는 파일을 상기 클라이언트 객체의 센드버퍼 에 저장하고, 상기 클라이언트의 센드버퍼에 저장된 정보를 상기 클라이언트로 전송하는 단계d) storing a file corresponding to the file object information in a send buffer of the client object, and transmitting the information stored in the send buffer of the client to the client 를 포함하는 서비스를 제공하는 방법.How to provide a service comprising a. 제 10 항에 있어서,The method of claim 10, e) 상기 b) 단계에서 상기 메시지의 종류를 파악한 결과 파일 송신을 요구하지 않는 경우, 데이터베이스를 조회하여 응답 메시지를 클라이언트 객체의 센드버퍼에 저장하는 단계를 더 포함하는 것을 특징으로 하는 서비스 제공 방법.e) if it is determined that the message type in step b) does not require the transmission of the file, querying the database and storing the response message in the send buffer of the client object. 제 10 항에 있어서,The method of claim 10, 상기 c) 단계의 파일객체 정보는,The file object information of step c) is 상기 클라이언트의 식별자 혹은 파일명 중 어느 하나 이상을 포함하는 것을 특징으로 하는 서비스 제공 방법.And at least one of an identifier or a file name of the client. 제 10 항에 있어서,The method of claim 10, 상기 d) 단계는, Step d), 상기 클라이언트 그룹 내에 있는 클라이언트 객체들의 대기객체리스트들을 순차적으로 스캐닝 하여, 각각 해당하는 파일을 센드버퍼에 저장하는 것을 특징으로 하는 서비스 제공 방법. And sequentially scanning the standby object lists of the client objects in the client group, and storing corresponding files in the send buffer.
KR1020070139104A 2007-12-27 2007-12-27 Service server and service method with fair load balancing architecture for Internet service KR100959898B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070139104A KR100959898B1 (en) 2007-12-27 2007-12-27 Service server and service method with fair load balancing architecture for Internet service

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070139104A KR100959898B1 (en) 2007-12-27 2007-12-27 Service server and service method with fair load balancing architecture for Internet service

Publications (2)

Publication Number Publication Date
KR20090070938A KR20090070938A (en) 2009-07-01
KR100959898B1 true KR100959898B1 (en) 2010-05-27

Family

ID=41322412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070139104A KR100959898B1 (en) 2007-12-27 2007-12-27 Service server and service method with fair load balancing architecture for Internet service

Country Status (1)

Country Link
KR (1) KR100959898B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101272077B1 (en) * 2011-05-16 2013-06-12 에스케이텔레콤 주식회사 System and method for providing push service
KR101581776B1 (en) 2015-05-14 2015-12-31 주식회사 티맥스 소프트 Method for distributing file descriptors in web-server, and web-server and computer-readable recording medium using the same

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010001413A (en) * 1999-06-04 2001-01-05 정선종 Method for server object invocation within distributed object system by a client application
JP2001195271A (en) 2000-01-13 2001-07-19 Hitachi Ltd Method and device for generating and deciding distributed object server thread
US20010018701A1 (en) 1998-06-12 2001-08-30 Livecchi Patrick Michael Performance enhancements for threaded servers
US20040139433A1 (en) 2002-12-31 2004-07-15 International Business Machines Corporation Programmatic response-time based workload distribution techniques

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010018701A1 (en) 1998-06-12 2001-08-30 Livecchi Patrick Michael Performance enhancements for threaded servers
KR20010001413A (en) * 1999-06-04 2001-01-05 정선종 Method for server object invocation within distributed object system by a client application
JP2001195271A (en) 2000-01-13 2001-07-19 Hitachi Ltd Method and device for generating and deciding distributed object server thread
US20040139433A1 (en) 2002-12-31 2004-07-15 International Business Machines Corporation Programmatic response-time based workload distribution techniques

Also Published As

Publication number Publication date
KR20090070938A (en) 2009-07-01

Similar Documents

Publication Publication Date Title
CN107391271B (en) Message queue system-based delayed task triggering method and device
US5805823A (en) System and method for optimal multiplexed message aggregation between client applications in client-server networks
KR101224752B1 (en) Efficient processing of time-bounded messages
US9405574B2 (en) System and method for transmitting complex structures based on a shared memory queue
US7562133B2 (en) Method, system and computer program product for delivering data to a storage buffer assigned to an application
CN108881348B (en) Service quality control method and device and storage server
US8024744B2 (en) Method and system for off-loading user queries to a task manager
CN105005611B (en) A kind of file management system and file management method
KR20140072044A (en) Distributing multi-source push notifications to multiple targets
CN103312624A (en) Message queue service system and method
CN105812351A (en) Method and system for sharing session
US20130066980A1 (en) Mapping raw event data to customized notifications
CN101330431B (en) Method and system for storing instant information
JP6067714B2 (en) Scale-out system that acquires event data
CN110661891A (en) Cross-network file instant transmission method and system based on unidirectional network
CN103248636A (en) Offline download system and method
KR100959898B1 (en) Service server and service method with fair load balancing architecture for Internet service
CN108255853B (en) Plug-in type request asynchronous processing method and system
CN116155828B (en) Message order keeping method and device for multiple virtual queues, storage medium and electronic equipment
WO2023142605A1 (en) Blockchain-based data processing method and related apparatus
CN110417860A (en) File transfer management method, apparatus, equipment and storage medium
US20080034054A1 (en) System and method for reservation flow control
US8819107B2 (en) Relay apparatus, recording medium storing a relay program, and a relay method
CN107102901B (en) Task processing method and device
CN114493875A (en) Transaction execution method, computer device, and storage medium

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: 20130430

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140508

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150507

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160503

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180503

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee