KR100516046B1 - 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템 - Google Patents

효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템 Download PDF

Info

Publication number
KR100516046B1
KR100516046B1 KR10-2003-0086360A KR20030086360A KR100516046B1 KR 100516046 B1 KR100516046 B1 KR 100516046B1 KR 20030086360 A KR20030086360 A KR 20030086360A KR 100516046 B1 KR100516046 B1 KR 100516046B1
Authority
KR
South Korea
Prior art keywords
broker
module
client
middleware
service identifier
Prior art date
Application number
KR10-2003-0086360A
Other languages
English (en)
Other versions
KR20050052800A (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 KR10-2003-0086360A priority Critical patent/KR100516046B1/ko
Publication of KR20050052800A publication Critical patent/KR20050052800A/ko
Application granted granted Critical
Publication of KR100516046B1 publication Critical patent/KR100516046B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • 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/48Message addressing, e.g. address format or anonymous messages, aliases
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 클라이언트 요청을 처리하는 미들웨어 시스템에 관한 것으로, 더욱 상세하게는 클라이언트와 미들웨어, 미들웨어와 데이터베이스 매니지먼트 시스템(DBMS) 사이의 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템에 관한 것이다.
본 발명이 제공하는 미들웨어 시스템은 어태쳐 모듈 및 브로커 모듈을 포함하고, 상기 어태쳐 모듈은 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신하는 클라이언트 수신부, 클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자, 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지하는 브로커 접속 테이블, 상기 브로커 접속 테이블을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택하는 브로커 검색부 및 상기 브로커 접속 테이블을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 클라이언트 송신부를 포함하고, 상기 브로커 모듈은 상기 클라이언트 모듈로부터 로그온 패킷을 수신하는 클라이언트 통신부, 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 연결 할당부를 포함하는 것을 특징으로 한다.
본 발명에 따르면, 클라이언트와 미들웨어, 미들웨어와 데이터베이스 매니지먼트 시스템(DBMS) 사이의 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템 및 방법이 제공된다.

Description

효율적인 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템{Middleware System for Processing Client's Request with Efficient Load-Balancing}
본 발명은 클라이언트 요청을 처리하는 미들웨어 시스템(Middleware system)에 관한 것으로, 더욱 상세하게는 클라이언트와 미들웨어, 미들웨어와 데이터베이스 매니지먼트 시스템(DBMS) 사이의 적절한 로드 밸런싱(Load Balancing)을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템에 관한 것이다.
메인 프레임 중심의 1-tier 시스템은 컴포넌트화 되지 못한 일체형 프로그램으로 유지 보수가 어렵고, 메인 프레임의 제한된 확정성으로 인하여 고비용의 유지 보수 비용이 든다는 문제점이 있었다. 이러한 메인 프레임 중심의 처리 시스템이 가지는 문제점으로 인하여, 클라이언트-서버 개방형 시스템이 등장하였다. 그러나 클라이언트-서버 개방형 시스템의 경우 이기종 머신 및 서로 다른 데이터베이스를 사용함에 따른 문제점이 있었다. 이를 해결하기 위하여 클라이언트, 미들웨어 시스템 및 데이터베이스 시스템으로 구성되는 3-tier 미들웨어 시스템이 등장하였다.
도 1은 종래 기술에 따른 미들웨어 시스템의 네트워크 연결을 도시한 도면이다.
종래 기술에서는, 클라이언트(110, 111, 112), L4 스위치(120), 미들웨어(130, 131, 132), 데이터베이스 관리 시스템(140, DataBase Management System)의 순으로 연결된다. 로드 밸런싱을 위하여 L4 스위치(120)을 사용하였다.
L4 스위치는 OSI 7 계층 중 4 계층(4L: Transport Layer)의 프로토콜인 TCP, UDP 또는 RTP(Real Time Protocol) 등의 헤더를 사용하여 FTP, HTTP, TFTP 및 SMTP 등의 프로토콜 중 어느 것에 대한 요구가 우선하는지 파악하여 스위칭 역할을 수행하는 것으로, 클라이언트(110, 111, 112)로부터의 서비스 요청을 미들웨어 시스템(130, 131, 132)로 연결한다. 클라이언트 모듈(110, 111, 112)은 가상 IP 주소(Virtual IP address)를 이용하여 L4 스위치를 통하여 미들웨어(130)에 접속을 요청한다. 클라이언트 모듈(110, 111, 112)이 소정의 가상 IP 주소(예를 들어, a.a.a.a)를 이용하여 미들웨어 시스템에 접속을 요청한다. 그러면, L4 스위치(120)는 롤링 등의 방법을 이용하여 미들웨어 시스템 간 로드 밸런싱을 수행하였다. 예를 들어, 처음 접속 요청된 경우에는 미들웨어 시스템(130)에 클라이언트 모듈의 요청을 전달하고, 그 다음 요청에 대해서는 미들웨어 시스템(131)에, 그 다음 요청에 대해서는 미들웨어 시스템(132)에, 그리고 그 다음 요청에 대해서는 다시 미들웨어 시스템(130)에 요청을 전달하는 형태로 로드 밸런싱을 처리하였다. 그러나, 이러한 방법에서는 미들웨어가 몇 개의 클라이언트를 서비스하고 있는지에 관계없이 클라이언트로부터의 요청을 미들웨어 시스템에 할당하였기 때문에, 미들웨어의 부하는 전혀 고려되지 않는다는 문제점이 있었다. 예를 들어, 미들웨어 시스템(130)은 복잡한 요청을 처리하느라 아직 50개의 클라이언트에 대하여 서비스를 제공하고 있고, 미들웨어 시스템(131)은 10개의 클라이언트에 대해서만 서비스를 제공하고 있는 경우에도 L4 스위치는 상기 미들웨어 시스템에 대하여 동일한 비율로 클라이언트의 요청을 전달하였다.
미들웨어 시스템(130, 131, 132)은 클라이언트로부터의 요청을 수신하면, 이를 처리한다. 종래기술에 따르면, 클라이언트 프로그램은 미들웨어의 종류에 따라 작성되었다. 예를 들어, 한 회사의 미들웨어에 맞추어 프로그램된 클라이언트 프로그램은 다른 미들웨어를 사용하는 경우에는 모두 새로 작성되어야 하였다. 미들웨어 시스템(130, 131, 132)은 미들웨어 종류에 맞추어 작성된 클라이언트의 요구를 DBMS(140)가 처리할 수 있도록 SQL 질의어로 변환한다.
미들웨어 시스템(130, 131, 132)과 DBMS(140) 간에는 고정된 몇 개의 연결이 존재하고 상기 연결을 클라이언트들(110, 111, 112)이 나누어 사용하였다. 그러나, 이러한 방법에서는 미들웨어가 몇 개의 클라이언트를 서비스하고 있는지에 관계없이 이루어져 미들웨어의 부하는 고려되지 않았다. 또한, 미들웨어와 DBMS 연결 간에도 적절한 로드 밸런싱을 수행하지 않았다.
또한, 종래기술에 따르면 클라이언트에 포함되는 클라이언트 프로그램과 미들웨어 시스템에 포함되는 서버 프로그램이 쌍으로 작성되기 때문에 둘 중 하나가 변경되면 나머지 하나도 필연적으로 변경되어야 하는 불편함이 있었다.
또한, 종래기술에 따르면, 클라이언트로부터의 DBMS에 대한 처리 요청 및 처리는 항상 미들웨어를 중개하여야만 이루어졌고, 따라서 실제의 트랜잭션 처리에 있어서도 클라이언트와 DBMS의 통신은 L3 스위치 도는 L4 스위치를 경유하여 수행되었다. 따라서, L4 스위치에 부하가 집중되는 문제점이 있었다. L4 스위치의 경우 동시에 접속을 허용하는 포트의 수에 따라 그 가격이 급속히 증가한다. 따라서, 더 많은 접속을 허용하는 서비스 환경을 제공하기 위해서는 훨씬 많은 비용이 소요되었다. 따라서, 미들웨어 시스템을 이용한 환경에 있어서, L3 스위치 또는 L4 스위치의 부담을 감소시킬 수 있는 시스템이 요구되고 있다.
본 발명은 상기와 같은 종래 기술을 개선하기 위해 안출된 것으로서, 클라이언트와 미들웨어, 미들웨어와 데이터베이스 매니지먼트 시스템(DBMS) 사이의 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템 및 방법을 제공하는 것을 목적으로 한다. 특히, 본 발명은 미들웨어가 처리하고 있는 서비스 및 미들웨어와 DBMS 사이의 연결을 사용하고 있는 클라이언트의 수 등을 고려하여 로드 밸런싱을 수행하는 미들웨어 시스템을 제공하는 것을 목적으로 한다.
본 발명의 또 다른 목적은 표준 구조화 질의어를 이용한 데이터베이스 시스템의 통합 인터페이스를 제공하는 방법 및 장치를 제공하는 것이다. 즉, 클라이언트 프로그램을 SQL 질의어를 통하여 작성할 수 있도록 지원함으로써, 미들웨어의 종류에 따라 클라이언트 프로그램을 새로이 작성하여야 하는 종래기술의 문제점을 해결하는 것을 목적으로 한다. 본 발명은 클라이언트 프로그램의 작성 시 미들웨어로부터 독립적으로 프로그램을 작성할 수 있도록 하는 환경을 제공하는 것을 목적으로 한다.
본 발명의 또 다른 목적은 클라이언트로부터의 트랜잭션 처리 요청에 있어서, L4 스위치를 경유하지 않고 바로 트랜잭션을 처리할 수 있도록 함으로써, L4 스위치의 부담을 감소시키는 것을 목적으로 한다.
본 발명의 또 다른 목적은 단일 인터페이스로 연동하는 새로운 개념의 미들웨어를 제공함으로써, 비즈니스 로직의 변경을 미들웨어 서버에서 하지 않고 클라이언트에서 직접 변경할 수 있도록 하는 것이다.
상기의 목적을 이루고 종래기술의 문제점을 해결하기 위하여, 본 발명은 어태쳐 모듈 및 브로커 모듈을 포함하고, 상기 어태쳐 모듈은 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신하는 클라이언트 수신부, 클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자, 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지하는 브로커 접속 테이블, 상기 브로커 접속 테이블을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택하는 브로커 검색부 및 상기 브로커 접속 테이블을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 클라이언트 송신부를 포함하고, 상기 브로커 모듈은 상기 클라이언트 모듈로부터 로그온 패킷을 수신하는 클라이언트 통신부, 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 연결 할당부를 포함하는 것을 특징으로 하는 미들웨어 시스템을 제공한다.
본 발명의 일측에 따르는 미들웨어 시스템은 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신하고, 상기 서비스 식별자에 대응하는 브로커 중 소정의 제1 기준에 따라 선택된 브로커의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 어태쳐 모듈 및 데이터베이스 관리 시스템과 연결되고, 상기 클라이언트 모듈로부터 로그온 패킷을 수신하고, 상기 로그온 패킷에 응답하여, 상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 브로커 모듈을 포함하는 것을 특징으로 한다.
본 발명의 또 다른 일측에 따르면, 클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지하는 단계, 상기 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 어태쳐 모듈에서 수신하는 단계, 상기 브로커 접속 테이블을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택하는 단계, 상기 브로커 접속 테이블을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 단계, 상기 클라이언트 모듈로부터 상기 IP 주소 및 상기 포트 번호를 이용한 로그인 패킷을 상기 브로커 모듈에서 수신하는 단계 및 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 단계를 포함하는 것을 특징으로 하는 미들웨어 시스템에서의 클라이언트 요청 처리 방법이 제공된다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
도 2은 본 발명의 일실시예에 따른 미들웨어에서의 클라이언트의 요청을 처리하기 위한 시스템을 도시한 도면이다.
도면에서 보는 바와 같이, 본 발명에서 제공하는 시스템은 클라이언트 모듈(211, 212), L4 스위치(220), 미들웨어(230) 및 DBMS(241, 242, DataBase Management System)의 연결을 가질 수 있다. 본 발명에서 미들웨어(230)는 어태쳐 모듈(Attacher Module)(231, 232, 233) 및 브로커 모듈(Broker Module)(234, 235, 236)로 구성된다.
클라이언트 모듈(211, 212)은 소정의 서비스 처리를 위하여 가상 IP 주소(Virtual IP Address)를 가지고, 브로커 룩업 패킷(broker lookup packet)을 송신한다. L4 스위치(220)는 수신된 브로커 룩업 패킷을 롤링 등의 방법을 통하여 어태쳐 모듈의 하나(예를 들어, 제2 어태쳐 모듈(232))에 전달한다. L4 스위치는 각 어태쳐(231, 232, 233 등)의 실제 IP 주소(real IP address)를 알고 있기 때문에, 롤링 등의 방법을 통해 브로커 룩업 패킷을 어태쳐에게 전달한다. 본 실시예에서는 제2 어태쳐 모듈(232)이 선택되어 제2 어태쳐(232)에서 브로커 룩업 패킷이 전달되었다고 가정하고 설명한다. 상기 브로커 룩업 패킷에는 클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자가 포함되어 있다.
클라이언트 모듈(211, 212)로부터 브로커 룩업 패킷을 수신한 제2 어태쳐 모듈(232)은 상기 서비스 식별자에 대응하는 브로커(예를 들어, 제2 브로커 모듈 및 제3 브로커 모듈) 중 소정의 제1 기준에 따라 선택된 브로커(예를 들어, 제2 브로커 모듈)의 IP 주소 및 포트 번호를 클라이언트 모듈(211, 212)에 송신한다. 클라이언트 모듈(211, 212)은 제2 어태쳐 모듈(232)로부터 수신한 브로커 IP 주소 및 포트 번호를 기초로 제2 브로커 모듈(235)에 접속하여 로그인 패킷을 송신하고 제2 브로커 모듈(235)은 상기 로그온 패킷에 응답하여 연결된 데이터베이스 관리 시스템(241)과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈(211, 212)에 할당한다. 제2 브로커 모듈(235)은 클라이언트 모듈(211, 212)로부터 구조화 질의어로 작성된 요청을 수신하고 상기 요청을 별도의 변환 과정 없이 상기 연결 중 하나를 이용하여 데이터베이스 관리 시스템(241)으로 전송하고 그 결과값을 다시 상기 연결을 통하여 데이터베이스 관리 시스템(241)으로부터 전송 받아 클라이언트 모듈(211, 212)로 전달한다.
이 때, 미들웨어(230)는 여러 개의 어태쳐 및 브로커를 가질 수 있으며 어태쳐와 브로커는 하나의 컴퓨터 시스템에 구현될 수 있고 별개의 컴퓨터 시스템에 구현될 수도 있다. 또한 복수 개의 어태쳐도 하나의 컴퓨터 시스템에 구현될 수 있고 별개의 컴퓨터 시스템에 구현될 수도 있다. 마찬가지로 복수 개의 브로커도 하나의 컴퓨터 시스템에 구현될 수 있고 별개의 컴퓨터 시스템에 구현될 수도 있다. 또한, 각각의 브로커는 하나의 데이터베이스 관리 시스템(241, 242)과 복수 개의 연결을 가질 수 있고 각각의 연결은 복수 개의 세션을 가진다.
동일한 서비스를 제공하는 브로커를 물리적으로 서로 다른 컴퓨터 시스템에 구현하는 경우에는 하나의 컴퓨터 시스템이 고장이 나거나 브로커 모듈에 문제가 발생하여도 다른 브로커 모듈을 이용하여 서비스를 제공할 수 있기 때문에, Fault-Tolerant 구성이 가능하게 된다. 이를 위하여 어태쳐는 모든 브로커와 통신하면서, 브로커가 죽었는지 살았는지 여부를 체크한다. 또한, 어태쳐의 경우에도 하나의 어태쳐가 포함된 컴퓨터 시스템이 고장이 나더라도, 다른 어태쳐에서 모든 브로커에 관한 정보를 유지하고 있기 때문에, 동작 중인 어태쳐를 통하여 클라이언트가 서비스를 받을 수 있게 된다.
본 실시예에서 각각의 브로커는 데이터베이스 관리 시스템(241, 242)과 각각 3개씩의 기설정된 연결을 가지고 있다. 이때 제1 브로커(234)와 제1 DBMS(241)가 연결된 연결은 각각 5, 2, 1개씩의 클라이언트가 사용하고 있다고 가정한다. 즉, 제1 브로커(234)와 제1 DBMS(241)의 첫 번째 연결은 5개의 클라이언트가 접속되어 사용하고 있다. 마찬가지로 제2 브로커(235)와 제1 DBMS(242)가 연결된 연결은 각각 1, 2, 2개씩의 클라이언트가 사용하고 있고, 제3 브로커(236)와 제2 DBMS(242)가 연결된 연결은 각각 4, 3, 2개씩의 클라이언트가 사용하고 있다고 가정한다.
도 3은 본 발명의 일실시예에 따른 어태쳐 모듈(300)을 도시한 도면이다.
도면에서 보는 바와 같이, 어태쳐 모듈(300)은 클라이언트 수신부(310), 브로커 접속 테이블(320), 브로커 검색부(330), 클라이언트 송신부(340) 및 어태쳐 관리부(350)을 포함한다.
클라이언트 수신부(310)는 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신한다. 서비스 식별자(Service Identifier)는 상기 클라이언트 모듈이 요청하는 서비스를 식별하기 위한 식별자이다. 클라이언트는 가상 IP 주소를 이용하여 L4 스위치에 접속하고, L4 스위치에서는 롤링 등의 방법을 통하여 하나의 어태쳐를 선택하고, 상기 선택된 어태쳐에게 클라이언트 모듈로부터 수신한 브로커 룩업 패킷을 전달한다.
어태쳐 모듈의 클라이언트 수신부(310)는 L3 스위치로부터 클라이언트의 서비스 식별자를 포함한 브로커 룩업 패킷을 수신한다. 브로커 룩업 패킷은 어태쳐 모듈이 클라이언트가 요청하는 서비스를 수행할 수 있는 브로커를 검색하기 위해 필요한 데이터라 할 수 있다. 또한, 상황에 따라 클라이언트는 L4 스위치를 거치지 않고 직접 어태쳐 모듈에 접속할 수도 있다.
브로커 접속 테이블(320)은 클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지한다. 이하에서는 도 4를 참조하여 브로커 접속 테이블을 상세하게 설명한다.
도 4에서 보는 바와 같이, 브로커 접속 테이블(320)은 브로커를 식별하기 위한 브로커 식별자, 브로커가 제공하는 서비스를 식별하기 위한 서비스 식별자(서비스 ID), 상기 브로커의 IP 주소인 브로커 IP 주소, 상기 브로커에게 접속하기 위한 포트 번호인 브로커 포트 번호, 상기 브로커가 죽었는지 살았는지에 관한 브로커의 작동 여부를 나타내는 브로커 상태 필드, 브로커가 현재 서비스하고 있는 총 세션의 수 및 브로커와 연결되어 있는 DBMS 종류 등의 데이터를 기록하고 유지한다.
클라이언트가 식별자 ‘1’인 서비스를 요청한다고 하였을 때, 도 4를 참조하면 상기 서비스를 수행하는 브로커의 아이디는 ‘1’과 ‘2’가 있음을 알 수 있다.
브로커 검색부(330)는 상기 브로커 접속 테이블(320)을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택한다. 위의 일례를 들어 설명하면, 브로커 검색부(330)는 서비스 아이디가 ‘1’인 두개의 브로커가 앞서 수신한 서비스 식별자에 대응하는 브로커 모듈(브로커 아이디 ‘1’과 ‘2’)임을 알게 된다. 브로커 검색부(330)는 하나 이상의 브로커가 검색되는 경우, 해당 서비스를 처리하는 브로커 중 총 세션의 수가 가장 적은 브로커의 IP 주소 및 브로커 포트 번호를 조사하고 이것이 바로 제1 기준이 된다. 도 4의 경우, 클라이언트로부터 수신한 브로커 룩업 패킷에 포함된 서비스 식별자가 1인 경우, 상기 서비스 식별자에 의하여 식별되는 서비스를 제공하는 브로커는 브로커 식별자 1 및 2의 브로커임을 브로커 접속 테이블(320)로부터 알 수 있다. 이 경우 각 브로커의 총 세션 수를 비교하여 가장 적은 총 세션 수를 가진 브로커를 선택한다.
브로커에 포함된 어태쳐 관리부(350)는 복수 개의 브로커 모듈과 주기적으로 통신하여 상기 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 수신하고, 상기 총 세션 데이터를 브로커 접속 테이블에 갱신한다. 예를 들어, 제1 브로커(234)와 제1 DBMS(241)는 3개의 연결을 가지고 각각의 연결에 대해 5, 2, 1개씩의 클라이언트 세션을 포함하고 있으므로, 총 세션 데이터는 8이 된다. 어태쳐 관리부(350)는 브로커 모듈로부터 상기와 같이 8이라는 세션의 총 합에 관한 데이터를 수신할 수도 있고, 각 연결 별 세션의 수로 총 세션 데이터를 수신할 수도 있다.
제1 기준에 따라 판단하면 브로커 ID가 ‘2’인 브로커가 총 세션 수가 가장 적어 해당 서비스에 적합한 브로커임을 알 수 있다. 그러나, 브로커 아이디 ‘2’의 경우, 브로커의 상태가 ‘Down’의 상태로 작동하지 않음을 알 수 있고, 이와 같은 경우 브로커 검색부는 작동하지 안는 브로커를 제외시키고 다시 작동하는(Running 표시가 되어 있는) 브로커 중에서 총 세션 수가 가장 적은 브로커를 재검색할 수 있다. 도 4에서는 브로커 아이디 ‘2’인 브로커가 총 세션수가 ‘5’로 가장 적지만, 브로커 상태가 ‘Down’으로 표시되어 검색 대상에서 제외되고 브로커 아이디 ‘1’인 브로커가 총 세션 수는 ‘8’로 브로커 아이디 ‘2’인 브로커보다 많지만, 브로커 상태가 ‘Running’으로 클라이언트에 해당 서비스를 제공할 수 있음을 알 수 있다.
브로커의 작동 여부는 어태쳐 관리부(350)가 브로커와 주기적인 통신을 하며 브로커의 상태를 체크함으로써 알 수 있다. 본 실시예에 따르면, 브로커가 서비스하고 있는 클라이언트의 수에 따라, 1단계 로드 밸런싱이 수행된다.
클라이언트 송신부(340)는 상기 브로커 접속 테이블(320)을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에 송신한다.
도 4의 경우, 상기 브로커 접속 테이블을 참조하여 브로커 아이디 ‘1’인 브로커가 클라이언트가 요청하는 서비스를 제공할 수 있음을 알게 되었으므로 클라이언트 송신부는 브로커 아이디 ‘1’의 IP 주소 ‘128.37.2.1’ 및 포트 번호 ‘5100’을 클라이언트 모듈에 송신한다.
이러한 절차를 통하여 클라이언트 모듈이 자신이 원하는 서비스를 제공하는 브로커의 IP 주소 및 포트 번호를 수신함으로써 브로커 룩업 절차를 종료하게 된다. 클라이언트 모듈은 상기 브로커의 IP 주소 및 포트 번호를 이용하여 브로커에게 접속하게 된다. 따라서, 브로커 룩업 절차 이후에는 L4 스위치를 통하지 않고 바로 브로커와 접속하여 트랜잭션을 처리하게 된다. 따라서, 브로커 룩업 절차에서의 통신만이 L4 스위치를 통하여 이루어지기 때문에 L4 스위치의 부담을 상당히 경감시키게 된다.
도 5는 본 발명의 일실시예에 따른 브로커 모듈(500)을 도시한 도면이다.
도 5에서 보는 바와 같이, 브로커 모듈은 클라이언트 통신부(510), 연결 할당부(520), 어태쳐 통신부(530), 데이터베이스 접속 테이블(540) 및 클라이언트 서비스 처리부(550)를 포함한다.
클라이언트 통신부(510)는 클라이언트 모듈로부터 로그온 패킷을 수신하고, 연결 할당부(520)는 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당한다.
어태쳐 모듈로부터 클라이언트가 요청하는 서비스를 제공하는 브로커에 대한 정보(브로커의 IP 주소 및 포트 번호)를 수신한 클라이언트 모듈은 이를 기초로 해당 브로커에 접속하여 로그인 패킷을 전송한다. 로그인 패킷은 상기 어태쳐 모듈로부터 전송 받은 해당 브로커의 IP 주소 및 포트 번호를 이용하여 브로커 모듈에 송신되며, 로그인 아이디 및 패스워드 등이 포함될 수 있다. 클라이언트 통신부(510)는 로그인 패킷을 수신하여 접속한 클라이언트가 요청하는 서비스가 상기 브로커가 제공하는 서비스와 일치하는지 판단한다. 만일 클라이언트가 요청한 서비스를 브로커가 수행할 수 있다고 판단되는 경우, 연결 할당부(520)는 상기 클라이언트가 요청하는 서비스를 수행하기 위한 데이터베이스 관리 시스템과 기연결되어 있는 복수 개의 연결 중 어느 하나를 선택한다. 소정의 제2 기준이라 함은, 복수 개의 연결 중 어느 하나를 선택하는 기준을 말하며 연결 할당부는 데이터베이스 접속 테이블을 참조하여 세션 수가 가장 적은 연결에 클라이언트의 세션을 우선적으로 할당한다. 이 때, 데이터베이스 접속 테이블(540)은 상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 각각에 할당된 세션 수를 상기 연결과 연관하여 유지하고 있다.
도 6은 본 발명의 일실시예에 따른 데이터베이스 접속 테이블의 일례를 도시한 도면이다. 도면에서 보는 바와 같이, 데이터베이스 접속 테이블은 연결 ID 및 세션 수 등의 데이터로 이루어져 있다. 도 6의 경우 연결은 연결 ID가 1, 2, 3으로 모두 3개가 있으며 각각 5개, 2개, 1개의 세션을 가지고 있다. 즉, 연결 ID가 1인 연결에는 5개의 클라이언트 세션만이 설정되어 있다. 이와 같은 경우, 연결 할당부(520)는 연결 ID ‘3’인 연결이 세션 수가 ‘1’로 가장 적으므로 클라이언트를 연결 ID ‘3’에 우선적으로 할당하여 상기 클라이언트가 요청하는 서비스를 수행할 수 있도록 한다. 이러한 방법을 통하여 브로커와 DBMS 사이에 기설정된 연결 중 가장 로드가 적은 연결에 클라이언트 세션을 할당함으로써, 제2 단계 로드 밸런싱을 수행한다.
또한, 어태쳐 통신부(530)는 어태쳐 모듈과 주기적으로 통신하여 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 상기 어태쳐 모듈에 송신하고, 상기 총 세션 데이터는 어태쳐의 브로커 접속 테이블에 저장되어 어태쳐 모듈에서 이용될 수 있다. 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 어태쳐 모듈에 송신함으로써 브로커 모듈은 특정 브로커에 서비스가 몰리는 것을 막을 수 있는 로드 밸런싱을 가능하게 할 수 있으며, 어태쳐 모듈은 이를 통하여 클라이언트에 보다 원활하게 서비스를 제공할 수 있는 브로커를 알려줄 수 있게 된다.
클라이언트 서비스 처리부(550)는 상기 클라이언트로부터 구조화 질의어(SQL)로 작성된 요청을 수신하여 상기 요청을 상기 데이터베이스 관리 시스템(540)에 전달한다. 본 발명에서 제공하는 브로커는 구조화 질의어로 작성된 요청을 그대로 데이터베이스 관리 시스템에 전달한다. 브로커는 기존의 미들웨어와 달리, 클라이언트로부터 수신한 요청을 미들웨어에 한정된 특정 프로그램을 이용하여 변환하지 않으므로 상기 특정 프로그램을 요구하지 않고 사용자들이 구조화 질의어를 이용하여 응용 프로그램을 작성하도록 하여 작성된 요청을 데이터베이스 관리 시스템에 바로 전달한다. 거의 모든 데이터베이스 관리 시스템에서 구조화 질의어(SQL)가 지원되므로 브로커에서의 별도의 변환 과정이 생략된다. 이러한 시스템은 차후 미들웨어가 변경되어도 클라이언트로부터 구조화 질의어로 작성된 요청을 데이터베이스 관리 시스템에 별도의 변환 과정 없이 전달할 수 있으므로 사용자가 변경된 미들웨어에 맞춰 프로그램을 변경할 필요가 없다.
도 7은 본 발명의 일실시예에 따른 미들웨어에서의 클라이언트의 요청을 처리하는 흐름도이다.
먼저, 단계 710 내지 단계 740의 브로커 룩업 단계를 설명한다.
단계 710에서는 어태쳐 모듈에서 서비스 식별자, 브로커 IP 주소 및 브로커 포트 번호를 유지한다. 이는 브로커 접속 테이블(320)에 저장되고 유지된다. 다음, 단계 720에서는 어태쳐 모듈은 클라이언트 모듈로부터 서비스 식별자가 포함되는 브로커 룩업 패킷을 수신한다. 단계 730에서 어태쳐 모듈은 상기 브로커 접속 테이블을 참조하여 제1 기준에 따라 브로커 모듈을 선택한다. 브로커 접속 테이블(320)은 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 유지하고 이를 기초로 수신된 서비스 식별자에 대응하는 브로커 모듈 중 총 세션 데이터가 가장 작은 브로커 모듈을 선택한다. 단계 740에서 어태쳐 모듈은 선택된 브로커 모듈의 IP 주소 및 포트 번호를 클라이언트 모듈에 송신한다. 클라이언트와 어태쳐 모듈과의 연결은 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에서 수신하는 경우 종료된다. 상기에서 브로커 모듈의 할당은 브로커의 로드를 반영하여 수행되므로, 제1 단계 로드 밸런싱이 수행된다.
다음으로 단계 750 내지 단계 760의 로그인 단계를 설명한다.
단계 750에서는 브로커 모듈은 클라이언트 모듈로부터 IP 주소 및 포트 번호를 이용한 로그인 패킷을 수신한다. 즉, 클라이언트 모듈은 수신한 브로커의 IP 주소 및 포트 번호를 이용하여 브로커에 로그인 패킷을 송신한다. 상기 로그인 패킷은 사용자 식별자 및 패스워드와 같은 로그인 정보를 포함할 수 있다.
단계 760에서 브로커 모듈은 소정의 제2 기준에 따라 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 선택하여 클라이언트 모듈에 할당한다. 브로커 모듈은 데이터베이스 관리 시스템과 복수 개의 연결 각각에 할당된 세션 수를 상기 연결과 연관하여 유지하고 클라이언트로부터의 로그온 패킷의 수신에 응답하여 데이터베이스 접속 테이블(540)을 참조하여 할당된 세션 수가 가장 적은 연결을 선택하여 클라이언트 모듈에 할당한다. 상기에서 DBMS와의 연결 할당은 각 연결의 로드를 반영하여 수행되므로, 제2 단계 로드 밸런싱이 수행된다.
본 발명은 상기와 같은 제1 단계 및 제2 단계 로드 밸런싱을 통하여, 매우 효율적인 미들웨어 단에서의 로드 밸런싱을 수행할 수 있다.
마지막으로 질의어 처리 단계가 포함된다. 클라이언트는 SQL로 작성된 요청을 브로커에게 송신하면, 브로커는 앞에서 선택된 DBMS 연결을 통하여 DBMS에 전달한다.
도 8은 본 발명의 일실시예에 따른 미들웨어의 내부 구성도를 도시한 도면이다.
미들웨어는 어태쳐(821, 822), 브로커(831, 832, 833) 및 프로세스 매니저(840)로 구성된다. 클라이언트(810)는 어태쳐 1(821)에 브로커 룩업 패킷을 송신하고 어태쳐 1(821)은 패킷에 포함된 서비스 식별자를 브로커 접속 테이블과 비교하여 클라이언트(810)가 요청한 서비스를 수행할 수 있는 브로커 모듈(본 도면에서는 831, 832, 833 중 어느 하나에 해당)을 선택하고 상기 브로커의 네트워크 주소를 클라이언트(810)에 통보한다. 클라이언트는 어태쳐 1(821)이 선택한 브로커 B(832)에 접속하여 로그온(LOGON) 과정을 통하여 브로커 B(832)에 로그온 패킷을 송신한다. 브로커 B(832)는 클라이언트(810)가 요청한 서비스를 수행하기 위하여 데이터베이스 관리 시스템(851, 852, 853) 중에서도 브로커 B에 연결된 데이터베이스 관리 시스템(852)에 연결된 연결 중 세션 수가 가장 적은 연결을 클라이언트에 할당한다. 연결은 하나 이상의 세션으로 이루어지고 각각의 세션은 병렬적으로 수행될 수 있다. 미들웨어의 프로세스 매니저(840)는 미들웨어가 원활하게 기능을 수행할 수 있도록 어태쳐(821, 822) 및 브로커(831, 832, 833)의 제어를 담당한다. 미들웨어 시스템에 따라 어태쳐, 브로커 및 프로세스 매니져는 XML(extensible markup language)로 각각 설정을 변경하거나 한꺼번에 변경시킬 수 있다. 또한, 브로커에서 클라이언트의 요청을 서비스하기 위한 별도의 프로그램이 필요하지 않아, 클라이언트는 SQL로 작성된 요청을 표준 LDAP(Lightweight Directory Access Protocol) 및 HTTP 등의 프로토콜을 이용하여 브로커로 송신할 수 있고 브로커는 이를 받아 데이터베이스 관리 시스템에 별도의 변환 과정을 거치지 않고 전달한다.
도 9는 본 발명의 일실시예에 따른 미들웨어 시스템과 스위치, 클라이언트 모듈 및 데이터베이스 관리 시스템의 연결을 도시한 도면이다.
클라이언트(Client)는 L2 스위치 또는 L4 스위치를 통하여 어태쳐를 할당 받는다. 클라이언트는 가상 IP 주소(예를 들어, 도 9에서는 ‘a.a.a.a’)를 이용하여 어태쳐에 접속하지만, 실제로 어태쳐들은 각기 다른 실제 IP 주소(real IP address)를 가지고 있다. 도면에서 보는 바와 같이, 각각의 서버는 ‘b.b.b.1’, ‘b.b.b.3’ 및 ‘b.b.b.4’의 물리 IP 주소를 갖는다. 각각의 미들웨어 시스템은 하나의 데이터베이스 관리 시스템의 연결로 n개의 클라이언트 세션 트랙잭션을 병렬 처리할 수 있도록 구성되어 있다. L2 스위치 또는 L4 스위치를 통하여 클라이언트는 어태쳐에 접속하고 브로커를 할당 받는다. 브로커는 클라이언트가 요청하는 서비스를 수행할 수 있는 데이터베이스 관리 시스템의 연결을 검색하여 세션을 할당한다.
도 9에 도시된 바와 같이 하나의 물리적 컴퓨터 시스템에 복수 개의 어태쳐 모듈 및 복수 개의 브로커 모듈이 설치될 수 있다. 이 경우에도 하나의 어태쳐 모듈은 모든 브로커 모듈(다른 컴퓨터 시스템에 설치되어 있는 브로커 모듈을 모두 포함)과 통신하여 각 브로커 모듈의 IP 주소 및 포트 번호 등을 수신하여 관리한다.
본 발명이 제공하는 SQL 트랜잭션의 처리 방법에 있어서, 정보의 수정은 한번의 클라이언트 리퀘스트에 대해서 한번의 트랜잭션 처리하는 방식으로 진행할 수 있다. 정보의 조회는 조회하고자 하는 레코드의 수가 많지 않을 경우, 일괄 처리하여 네트워크 링크의 부하를 줄일 수 있도록 N개의 레코드를 한 번에 DBMS로부터 얻어 오는 일괄 조회 방식으로 하거나, 조회하고자 하는 레코드의 수가 많을 경우에는 1개의 레코드씩 가져오는 방식을 사용할 수 있다. 각각의 방식을 사용하는 것은 사용자에게 제공하고자 하는 서비스의 형태에 따라 미들웨어 시스템 내에서 결정될 수 있고 사용자의 요청에 의해서도 가능할 수 있다.
브로커는 어태쳐에 브로커 내 데이터베이스 연결 수, 브로커에 접속 중인 총 클라이언트 수 및 브로커에 발생하는 특정 기간 동안의 클라이언트의 총 질의 수에 해당하는 정보를 송신할 수 있다. 이러한 데이터는 어태쳐의 어태쳐 관리부 또는 브로커의 어태쳐 통신부에 의하여 교환되고 브로커 접속 테이블에 저장되고 유지될 수 있다.
클라이언트와 어태쳐의 경우, 클라이언트는 어태쳐에 서비스 ID, IP 주소 및 포트 번호의 비교적 간단한 메시지를 송신할 수 있고 클라이언트와 브로커의 경우 클라이언트는 브로커에 로그온 패킷과 SQL 쿼리를 송신할 수 있다. 특히, SQL DML의 쿼리일 경우, UPDATE, SELECT, SELECTFETCH, FETCHROW의 형식으로 구분한다. UPDATE는 SQL insert, update, delete 처리 리퀘스트 메시지이고, SELECT는 n개의 레코드를 한꺼번에 얻어오기 위한 일괄 처리 방식 메시지이고, SELECTFETCH는 한 건식 레코드를 가져 오기 위한 처리 방식 메시지이며, FETCHROW는 SELECTFETCH 후 한 건씩 데이터를 갖고 오기 위한 메시지로, n개의 레코드를 얻어 오기 위해서 n번의 FETCHROW 메시지를 보내고 그 과정에서 n번의 레코드를 조회하게 된다.
도 10은 본 발명의 일실시예에 따른 레코드 조회 시 미들웨어 시스템에서 사용하는 메모리 구조를 개념적으로 도시한 개념도이다.
레코드는 크게 레코드 헤더(RECORDHEADER)와 레코도 바디(RECORDBODY)로 구성되며, 레코드 헤더 및 레코드 바디는 ASCII로 구성된다. 레코드 헤더와 레코드 바디의 구분은 ‘\n\n’으로 한다.
레코드 헤더의 크기는 가변적이고, 레코드 헤더 내 정보의 구분자는 ‘\n’으로 한다. 도 11a는 본 발명의 일 실시예에 따른 레코드 헤더의 일례를 도시한 도면이다. 레코드 카운트(recordcount)는 레코드의 개수를 말하며, 레코드 카운트가 0이면 나머지 정보는 무의미하다 할 수 있다. 레코드 볼륨(reocrdvolume)은 레코드 하나의 크기로 단위는 BYTE이고, 필드 카운트(fieldcount)는 SELECT한 필드의 개수이다. 필드인포(fieldinfo)는 각 필드의 명칭과 크기로, 필드네임(fieldname)은 항상 대문자로 표기하고 필드네임(fieldname)과 필드 사이즈(fieldsize)는 ‘/’를 구분자로 한 쌍으로 구성한다. 또한, 각 필드 간 정보의 구분은 ‘,’로 하고, 마지막 필드 정부 후에도 ‘,’를 표기하여 준다.
레코드 바디의 크기는 레코드 값의 메모리 영역 사이즈 즉, 레코드 카운트 와 레코드볼륨 의 곱이 되고 레코드 헤더 정보에 의해 메모리 내 레코드 값 배치될 수 있다. 필드 값 이외의 부분은 null로 채워진다.
도 11b은 도 10의 레코드 조회 시 메모리 구조의 구체적일 일례를 도시한 도면이다. 본 도면에서는 편의를 위하여 null을 ‘*’로 표시하고 ‘\n’은 행 바꿈으로 표현하였다. 도면에 도시된 레코드 데이터는 레코드 카운트가 3, 레코드 볼륨이 25, 파일 카운트가 3이고, 필드 정보를 보면 이름 필드(fieldname)가 12바이트, 직업 필드(fieldjob)가 10바이트, 나이 필드(fieldage)가 3바이트가 된다. 헤더와 바디 사이에 행 바꿈이 2번 있으므로 ‘\n\n’을 표현한 것임을 알 수 있고 그 다음으로 레코드 바디가 시작된다. 레코드는 헤더에서 정한 크기를 초과할 수 없고 필다 값 이외의 부분은 ‘*’으로 표시되어 비었음을 나타낸다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
도 12는 본 발명에 따른 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템을 구성하는 데 채용될 수 있는 범용 컴퓨터 시스템의 내부 블록도이다.
컴퓨터 시스템(1200)은 램(RAM: Random Access Memory)(1220)과 롬(ROM: Read Only Memory)(1230)을 포함하는 주기억장치와 연결되는 하나 이상의 프로세서(1210)를 포함한다. 프로세서(1210)는 중앙처리장치(CPU)로 불리기도 한다. 본 기술분야에서 널리 알려져 있는 바와 같이, 롬(1230)은 데이터(data)와 명령(instruction)을 단방향성으로 CPU에 전달하는 역할을 하며, 램(1220)은 통상적으로 데이터와 명령을 양방향성으로 전달하는 데 사용된다. 램(1220) 및 롬(1230)은 컴퓨터 판독 가능 매체의 어떠한 적절한 형태를 포함할 수 있다. 대용량 기억장치(Mass Storage)(1240)는 양방향성으로 프로세서(1210)와 연결되어 추가적인 데이터 저장 능력을 제공하며, 상기된 컴퓨터 판독 가능 기록 매체 중 어떠한 것일 수 있다. 대용량 기억장치(1240)는 프로그램, 데이터 등을 저장하는데 사용되며, 통상적으로 주기억장치보다 속도가 느린 하드디스크와 같은 보조기억장치이다. CD 롬(1260)과 같은 특정 대용량 기억장치가 사용될 수도 있다. 프로세서(1210)는 비디오 모니터, 트랙볼, 마우스, 키보드, 마이크로폰, 터치스크린 형 디스플레이, 카드 판독기, 자기 또는 종이 테이프 판독기, 음성 또는 필기 인식기, 조이스틱, 또는 기타 공지된 컴퓨터 입출력장치와 같은 하나 이상의 입출력 인터페이스(1250)와 연결된다. 마지막으로, 프로세서(1210)는 네트워크 인터페이스(1270)를 통하여 유선 또는 무선 통신 네트워크에 연결될 수 있다. 이러한 네트워크 연결을 통하여 상기된 방법의 절차를 수행할 수 있다. 상기된 장치 및 도구는 컴퓨터 하드웨어 및 소프트웨어 기술 분야의 당업자에게 잘 알려져 있다.
상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
본 발명에 따르면, 클라이언트와 미들웨어, 미들웨어와 데이터베이스 매니지먼트 시스템(DBMS) 사이의 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템 및 방법이 제공된다. 특히, 본 발명에 따르면, 미들웨어가 처리하고 있는 서비스 및 미들웨어와 DBMS 사이의 연결을 사용하고 있는 클라이언트의 수 등을 고려하여 로드 밸런싱을 수행할 수 있다.
또한 본 발명에 따르면, 표준 구조화 질의어를 이용한 데이터베이스 시스템의 통합 인터페이스를 제공할 수 있다.
또한 본 발명에 따르면, 표준 구조화 질의어를 이용한 데이터베이스 시스템의 통합 인터페이스를 제공된다. 즉, 클라이언트 프로그램을 SQL 질의어를 통하여 작성할 수 있도록 지원함으로써, 미들웨어의 종류에 따라 클라이언트 프로그램을 새로이 작성하여야 하는 종래기술의 문제점을 해결하였다. 따라서, 본 발명에 따르면, 클라이언트 프로그램의 작성 시 미들웨어로부터 독립적으로 프로그램을 작성할 수 있다.
또한 본 발명에 따르면, 클라이언트로부터의 트랜잭션 처리 요청에 있어서, L4 스위치를 경유하지 않고 바로 트랜잭션을 처리할 수 있도록 함으로써, L4 스위치의 부담을 감소시킬 수 있다.
또한, 본 발명에 따르면, 복수 개의 어태쳐 및 브로커가 존재함으로써 하나의 어태쳐 또는 브로커에 문제가 발생하더라도 클라이언트의 요청을 정상적으로 처리할 수 있는 무정지 시스템(Fault-Tolerant System)이 제공된다.
또한 본 발명에 따르면, 단일 인터페이스로 연동하는 새로운 개념의 미들웨어로 비즈니스 로직의 변경을 미들웨어 서버에서 하지 않고 클라이언트에서 직접 변경할 수 있다.
또한 본 발명에 따르면, 클라이언트 모듈에서 시스템을 접속하였을 때 룩업 호스트와 로그온 호스트를 분리함으로써 무정지 시스템 구축 및 로드 밸런싱의 구현을 용이하게 할 수 있다.
또한 본 발명에 따르면, 하나의 데이터베이스 세션 내에서 병렬 조회 처리 가능하게 함으로써 시스템 리소스를 절약하는 효과를 얻을 수 있다.
도 1은 종래 기술에 따른 미들웨어 시스템의 네트워크 연결을 도시한 도면이다.
도 2은 본 발명의 일실시예에 따른 미들웨어 시스템을 이용하여 클라이언트의 요청을 처리하는 시스템을 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 어태쳐 모듈을 도시한 도면이다.
도 4는 본 발명의 일실시예에 따른 브로커 접속 테이블을 도시한 도면이다.
도 5는 본 발명의 일실시예에 따른 브로커 모듈을 도시한 도면이다.
도 6은 본 발명의 일실시예에 따른 데이터베이스 접속 테이블의 일례를 도시한 도면이다.
도 7은 본 발명의 일실시예에 따른 미들웨어에서의 클라이언트의 요청을 처리하는 흐름도이다.
도 8은 본 발명의 일실시예에 따른 미들웨어의 내부 구성도를 도시한 도면이다.
도 9는 본 발명의 일실시예에 따른 미들웨어 시스템과 스위치, 클라이언트 모듈 및 데이터베이스 관리 시스템의 연결을 도시한 도면이다.
도 10은 본 발명의 일실시예에 따른 레코드 조회 시 미들웨어 시스템에서 사용하는 메모리 구조를 개념적으로 도시한 개념도이다.
도 11a는 본 발명의 일 실시예에 따른 레코드 헤더의 일례를 도시한 도면이다.
도 11b은 도 10의 레코드 조회 시 메모리에 저장되는 데이터의 구체적일 일례를 도시한 도면이다.
도 12는 본 발명에 따른 적절한 로드 밸런싱을 통하여 클라이언트 요청을 처리하는 미들웨어 시스템을 구성하는 데 채용될 수 있는 범용 컴퓨터 시스템의 내부 블록도이다.
<도면의 주요 부분에 대한 부호의 설명>
300 : 어태쳐 모듈
310 : 클라이언트 수신부 320 : 브로커 접속 테이블
330 : 브로커 검색부 340 : 클라이언트 송신부
350 : 어태쳐 관리부
500 : 브로커 모듈
510 : 클라이언트 통신부 520 : 연결 할당부
530 : 어태쳐 통신부
540 : 데이터베이스 관리 시스템 접속 테이블
550 : 클라이언트 서비스 처리부

Claims (11)

  1. 미들웨어 시스템에 있어서,
    어태쳐 모듈; 및
    브로커 모듈
    을 포함하고,
    상기 어태쳐 모듈은
    클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신하는 클라이언트 수신부;
    클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자, 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지하는 브로커 접속 테이블;
    상기 브로커 접속 테이블을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택하는 브로커 검색부; 및
    상기 브로커 접속 테이블을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 클라이언트 송신부
    를 포함하고,
    상기 브로커 모듈은,
    상기 클라이언트 모듈로부터 로그온 패킷을 수신하는 클라이언트 통신부;
    데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 연결 할당부
    를 포함하는 것을 특징으로 하는 미들웨어 시스템.
  2. 제1항에 있어서,
    상기 브로커 모듈은,
    상기 어태쳐 모듈과 주기적으로 통신하여 상기 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 상기 어태쳐 모듈에게 송신하는 어태쳐 통신부를 더 포함하고,
    상기 어태쳐 모듈은,
    상기 브로커 모듈과 주기적으로 통신하여 상기 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 수신하고, 상기 총 세션 데이터를 브로커 접속 테이블에 갱신하는 어태쳐 관리부를 더 포함하고,
    상기 브로커 검색부는,
    상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 상기 총 세션 데이터가 가장 작은 브로커 모듈을 선택하는 것을 특징으로 하는 미들웨어 시스템.
  3. 제2항에 있어서,
    하나의 서비스 식별자에 대응하는 브로커 모듈은 적어도 하나 이상이고,
    상기 어태쳐 관리부는,
    상기 브로커 모듈과 주기적으로 통신하여 상기 브로커 모듈이 동작 중인지 판단하고, 상기 브로커 모듈의 동작 여부를 상기 브로커 접속 테이블에 유지하고,
    상기 브로커 검색부는,
    상기 동작 중으로 판단된 브로커 모듈 중 상기 총 세션 데이터가 가장 작은 브로커 모듈을 선택하는 것을 특징으로 하는 미들웨어 시스템.
  4. 제1항에 있어서,
    상기 브로커 모듈은,
    상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 각각에 할당된 세션 수를 상기 연결과 연관하여 유지하는 데이터베이스 접속 테이블
    을 더 포함하고,
    상기 연결 할당부는,
    상기 클라이언트 모듈로부터의 상기 로그온 패킷의 수신에 응답하여, 상기 데이터베이스 접속 테이블을 참조하여 상기 할당된 세션 수가 가장 적은 연결을 선택하여 상기 클라이언트 모듈에 할당하는 것을 특징으로 하는 미들웨어 시스템.
  5. 제1항에 있어서,
    상기 브로커 모듈은, 상기 클라이언트로부터 구조화 질의어(SQL: structured query language)로 작성된 요청을 수신하고, 상기 요청을 상기 데이터베이스 관리 시스템에 전달하는 클라이언트 서비스 처리부를 포함하는 것을 특징으로 하는 미들웨어 시스템.
  6. 미들웨어 시스템에 있어서,
    클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 수신하고, 상기 서비스 식별자에 대응하는 브로커 중 소정의 제1 기준에 따라 선택된 브로커의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 어태쳐 모듈; 및
    데이터베이스 관리 시스템과 연결되고, 상기 클라이언트 모듈로부터 로그온 패킷을 수신하고, 상기 로그온 패킷에 응답하여, 상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 브로커 모듈
    을 포함하는 것을 특징으로 하는 미들웨어 시스템.
  7. 미들웨어 시스템에서 클라이언트 요청을 처리하는 방법에 있어서,
    클라이언트 모듈로부터 요청되는 서비스를 식별하기 위한 서비스 식별자, 및 상기 서비스 식별자에 대응하여 상기 서비스를 처리하는 하나 이상의 브로커 모듈에 대한 브로커 IP 주소와 브로커 포트 번호를 유지하는 단계;
    상기 클라이언트 모듈로부터 서비스 식별자를 포함하는 브로커 룩업 패킷을 어태쳐 모듈에서 수신하는 단계;
    상기 브로커 접속 테이블을 참조하여 상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 소정의 제1 기준에 따라 브로커 모듈을 선택하는 단계;
    상기 브로커 접속 테이블을 참조하여 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에게 송신하는 단계;
    상기 클라이언트 모듈로부터 상기 IP 주소 및 상기 포트 번호를 이용한 로그인 패킷을 상기 브로커 모듈에서 수신하는 단계; 및
    데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 단계
    를 포함하는 것을 특징으로 하는 미들웨어 시스템에서의 클라이언트 요청 처리 방법.
  8. 제7항에 있어서,
    상기 브로커 모듈이 서비스하고 있는 클라이언트의 수에 관한 총 세션 데이터를 유지하는 단계
    를 더 포함하고,
    상기 소정의 제1 기준에 따라 브로커 모듈을 선택하는 단계는,
    상기 수신된 서비스 식별자에 대응하는 브로커 모듈 중 상기 총 세션 데이터가 가장 작은 브로커 모듈을 선택하는 것을 특징으로 하는 미들웨어 시스템에서의 클라이언트 요청 처리 방법.
  9. 제7항에 있어서,
    상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 각각에 할당된 세션 수를 상기 연결과 연관하여 유지하는 단계
    를 더 포함하고,
    상기 데이터베이스 관리 시스템과 기설정된 복수 개의 연결 중 하나를 소정의 제2 기준에 따라 선택하여 상기 클라이언트 모듈에 할당하는 단계는,
    상기 클라이언트 모듈로부터의 상기 로그온 패킷의 수신에 응답하여, 상기 데이터베이스 접속 테이블을 참조하여 상기 할당된 세션 수가 가장 적은 연결을 선택하여 상기 클라이언트 모듈에 할당하는 것을 특징으로 하는 미들웨어 시스템에서의 클라이언트 요청 처리 방법.
  10. 제7항에 있어서,
    상기 어태쳐 모듈로부터 상기 선택된 브로커 모듈의 IP 주소 및 포트 번호를 상기 클라이언트 모듈에서 수신하고, 상기 클라이언트 모듈에서 상기 어태쳐 모듈과의 연결을 종료하는 단계
    를 더 포함하는 것을 특징으로 하는 미들웨어 시스템에서의 클라이언트 요청 처리 방법.
  11. 제7항 내지 제10항의 방법 중 어느 하나의 항에 따른 방법을 실행시키기 위한 프로그램을 기록한, 컴퓨터에서 판독 가능한 기록 매체.
KR10-2003-0086360A 2003-12-01 2003-12-01 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템 KR100516046B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2003-0086360A KR100516046B1 (ko) 2003-12-01 2003-12-01 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2003-0086360A KR100516046B1 (ko) 2003-12-01 2003-12-01 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템

Publications (2)

Publication Number Publication Date
KR20050052800A KR20050052800A (ko) 2005-06-07
KR100516046B1 true KR100516046B1 (ko) 2005-09-22

Family

ID=37248635

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2003-0086360A KR100516046B1 (ko) 2003-12-01 2003-12-01 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템

Country Status (1)

Country Link
KR (1) KR100516046B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100904362B1 (ko) * 2007-09-17 2009-06-23 성균관대학교산학협력단 웹을 통해 에이전트 서비스의 검색이 가능한 캄, 이를이용한 에이전트 시스템 및 에이전트 시스템의 운영방법
KR101365464B1 (ko) * 2012-03-05 2014-02-20 네이버비즈니스플랫폼 주식회사 데이터베이스 미들웨어를 이용한 데이터 관리 시스템 및 방법
US20150006346A1 (en) * 2013-06-28 2015-01-01 Quisk, Inc. Account engine with modular services and access channels
KR102367262B1 (ko) * 2017-08-07 2022-02-24 주식회사 케이티 미들웨어를 이용한 모니터링 방법, 장치 및 시스템

Also Published As

Publication number Publication date
KR20050052800A (ko) 2005-06-07

Similar Documents

Publication Publication Date Title
US9923958B1 (en) Highly available network filer with automatic load balancing and performance adjustment
US5790809A (en) Registry communications middleware
US7895231B2 (en) Queuing model for a plurality of servers
US8589365B2 (en) Data access layer
JP4455137B2 (ja) 記憶サブシステム管理方法
US7676516B2 (en) System and method for the optimization of database access in data base networks
US6260070B1 (en) System and method for determining a preferred mirrored service in a network by evaluating a border gateway protocol
US6681258B1 (en) Facility for retrieving data from a network adapter having a shared address resolution table
US20030088672A1 (en) Apparatus and method for routing a transaction to a server
US8010683B2 (en) Unobtrusive port and protocol sharing among server processes
JPH11312153A (ja) オブジェクト・サ―バ間の作業負荷管理方法および装置
US20030028515A1 (en) Proxy processing method
WO2006020046A1 (en) Unified system services layer for a distributed processing system
US20060026161A1 (en) Distributed parallel file system for a distributed processing system
WO2006020045A1 (en) Role-based node specialization within a distributed processing system
US5535334A (en) Fault-tolerant system-to-system communications system and method utilizing multiple communications methods to transfer a single message
JP4521278B2 (ja) アクセス方法及びストレージ・システム
US20220318071A1 (en) Load balancing method and related device
US7240150B1 (en) Methods and apparatus for processing access requests in a content addressable computer system
US7627650B2 (en) Short-cut response for distributed services
KR100516046B1 (ko) 효율적인 로드 밸런싱을 통하여 클라이언트 요청을처리하는 미들웨어 시스템
US7428611B1 (en) Methods and apparatus for forwarding access requests in a content addressable computer system
US7240151B1 (en) Methods and apparatus for transferring data in a content addressable computer system
US20040267967A1 (en) Method, system, and program for managing requests to a network adaptor
CN1316385C (zh) 在Infiniband管理数据库上存储光纤信道信息的方法和装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20110908

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee