KR20070110011A - 다중 풀 관리자 - Google Patents

다중 풀 관리자 Download PDF

Info

Publication number
KR20070110011A
KR20070110011A KR1020077017651A KR20077017651A KR20070110011A KR 20070110011 A KR20070110011 A KR 20070110011A KR 1020077017651 A KR1020077017651 A KR 1020077017651A KR 20077017651 A KR20077017651 A KR 20077017651A KR 20070110011 A KR20070110011 A KR 20070110011A
Authority
KR
South Korea
Prior art keywords
pool
connection
manager
application
pools
Prior art date
Application number
KR1020077017651A
Other languages
English (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
Priority claimed from US11/294,147 external-priority patent/US20060146877A1/en
Application filed by 비이에이 시스템즈 인코포레이티드 filed Critical 비이에이 시스템즈 인코포레이티드
Publication of KR20070110011A publication Critical patent/KR20070110011A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J3/00Time-division multiplex systems
    • H04J3/22Time-division multiplex systems in which the sources have different rates or codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/66Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Stereo-Broadcasting Methods (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

다중 풀(multipool)은 데드 커넥션 풀을 관리할 수 있고, 상기 데드 커넥션풀의 선택을 방지할 수 있다. 상기 다중 풀은 커넥션 풀이 재생했는지 백그라운드(background)에서 확인할 수 있다.

Description

다중 풀 관리자{MULTIPOOL MANAGER}
본 출원은, 라훌 스리바스타바(Rahul Srivastava)에 의해 출원된,2004년 12월 31일자 미국 가출원 60/640,449[대리인 기록번호 BEAS-01789USO] "다중풀 개선{MULTIPOOL IMPROVEMENTS}", 2005년 12월 5일자 미국 가출원 11/294,147[대리인 기록번호 BEAS-01789US1] "자동관리 활성 커넥션 풀 목록을 사용하는 다중 풀{MULTIPOOL USING AUTOMATICALLY MAINTAINED ACTIVE CONNECTION POOL LIST}", 그리고 2005년 12월 5일자 미국 가출원 11/294,214 [대리인 기록번호 BEAS-01789US2] "다중 풀에 대한 콜백 인터페이스{CALLBACK INTERFACE FOR MULTIPOOLS}"를 기초로 하는 우선권 주장을 수반한다.
캘리포니아주 산호세시의 BEA 시스템(BEA Systems)에서 제공하는 웹로그 서버(WebLogic™ Server)와 같은 같은 애플리케이션(application) 서버는 사용자가 다양한 기능들을 실행할 수 있도록 한다. 애플리케이션 서버에 의해 전형적으로 지원되는 기능 중의 하나는 데이터 베이스로의 엑세스(access)를 제공하는 것이다. 일 실시예로서, JDBC(Java Database Connectivity: 자바 데이터베이스 연결성) 커넥션 풀(connection pool)과 같은 커넥션 풀이 상기 애플리케이션 서버에 의해 제공된다. 상기 커넥션 풀은 이미 설정된 다수의 커넥션(connection)들에 데이터베이 스를 제공한다. 이러한 커넥션은 필요에 따라 애플리케이션 서버(application server)의 애플리케이션으로 제공된다. 상기 커넥션 풀은 애플리케이션 서버상의 비교적 많은 수의 애플리케이션이, 상기 애플리케이션에 대한 데이타 베이스 접속 시간을 줄이면서 데이터 베이스를 엑세스할 수 있게 해준다.
[도면에 관한 간단한 설명]
도 1은 일 실시예로서 다중 풀 관리자를 통한 다중 풀 사용에 대한 다이아그램이다.
도 2A-2B는 활성 커넥션 풀 목록(connection pool list)을 가지는 다중 풀 관리자의 사용에 대한 다이아그램이다.
도 3A-3B는 일 실시예로서 활성 커넥션 풀 목록의 사용에 대한 흐름도이다.
도 4는 본 발명의 일 실시예로서 다중 풀 관리자의 동작에 대한 다이아그램이다.
도 5A-5B는 본 발명의 일 실시예로서 다중 풀 관리자를 통한 콜백(callbacks)의 사용에 대한 다이아그램이다.
도 6은 본 발명의 일 실시예로서 다중 풀 관리자를 통한 콜백의 사용에 대한 흐름도이다.
자동 관리 활성 커넥션 목록(active connection pool list)를 사용하는 다중 풀.
도 1은 다중 풀 관리자(102)의 동작에 대한 다이아그램이다. 일부 시스템에서, 데이터 베이스 인스턴스(instances)(104 및 106)과 같은, 다중(multiple) 데이터 베이스인스턴스를 가지는 것이 바람직히다. 예를 들어, 데이터 베이스 인스턴스(104와 106)는 각각 독립된 기계에서 동작하는 최신 버전의 데이터 베이스를 포함할 수 있다. 다중 데이터 베이스 인스턴스가 있을 경우, 커넥션 풀(108 및 110)과 같은 다중 커넥션 풀을 사용하는 것이 바람직하다. 애플리케이션(112, 114 및 116)과 같은, 각각의 애플리케이션을 단일 커넥션 풀에 전용(dedicating)시켜 단일 데이터 베이스 인스턴스로 전용시키기보다는, 다중 풀 시스템이 사용될 수 있다. 다중 풀 시스템에서는, 다중 풀 관리자(102)가 애플리케이션에 대한 데이터 베이스 시스템으로의 커넥션을 얻기 위해 어떤 커넥션 풀을 사용할지에 대해 결정할 수 있다.
커넥션 풀을 선택하는 데는 다양한 방법이 가능하다. 하나의 선택 방법은 주요 커넥션 풀과 백업 커넥션 풀을 가진다. 상기 커넥션은 우선 주요 커넥션 풀에서 시도되며, 실패할 경우, 커넥션은 백업 커넥션 풀로 보내진다. 또 다른 방법으로는 서로 다른 커넥션 풀들에서의 부하를 균형화시키기 위해 다중 커넥션 풀들 간에 커넥션들이 분배되는 로드 밸런싱법(load balancing method: 부하 균형법)이 있다. 라운드로빈 방식(round-robin method)이 로드 밸런싱법의 한 예이다.
본 발명의 일 실시예는 다중 커넥션 풀(202와 204)을 포함하는 데이터베이스 인스턴스들로 연결하기 위한 다중 풀 시스템을 포함한다. 커넥션 풀(202와 204)는 데이터 베이스 인스턴스(206과 208)에 커넥션을 제공하도록 구성된다. 다중 풀 관리자(210)는 커넥션 풀을 통해 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하도록 구성된다. 다중 풀 관리자(210)는 커넥션 요청들 간의 데드 커넥션(dead connection)을 추적하도록 구성된다.
다중 풀 관리자(210)는 어떤 데드 커넥션 풀도 피하도록 커넥션 풀을 선택한다. 도 2A의 예를 들면, 다중 풀 관리자는 오류가 있을 경우(dead)에는 커넥션 풀 A의 선택을 피할 수 있다. 일 실시예에서는, 오직 오류가 없는(non-dead) 커넥션 풀만의 선택이 애플리케이션로부터 인증에 따라 행해진다. 또 다른 실시예에서는, 상기 애플리케이션은 커넥션 풀을 교환할지에 대해 콜백이나 설정 정보(configuration info)에 의해 지시한다.
다중 풀 관리자(210)는 활성 커넥션 풀의 목록(212)를 관리하고 어떤 커넥션 풀을 통해 연결할지에 대해 결정하기 위해 목록(212)을 사용하도록 구성되어 있다. "목록"(list)이란 용어는 특정 데이터 구조를 뜻하는 것은 아니다. 목록상의 상기 활성 커넥션 풀은 다중 풀 관리자(210)에 의해 오류가 있다고 판단된 커넥션 풀들이 아닌 커넥션 풀들을 포함할 수 있다.
데드 커넥션 풀은 활성 커넥션 풀 목록으로 되돌려져야 하는지를 알기 위해 백그라운드(background)에서 테스트될 수 있다. 활성 커넥션 풀 목록은 애플리케이션에 의해 제공된 후보 목록들 중의 서브셋(subset)일 수 있다. 대안적으로는, 별도의 후보 목록과 활성 목록이 관리될 수 있으며, 그리고 상기 다중 풀 관리자는 두 목록 모두에 있는 커넥션 풀을 선택할 수 있다. 다중 풀 관리자(210)는 커넥션 풀이 활성화 되었는지 또는 오류가 있는지를 나타내는 후보 목록과 관련된 각각 커넥션 풀에 대한 표시(indication)를 저장할 수 있다.
도 2A의 예에서는, 커넥션 풀 A는 오류가 있어 활성 커넥션 풀 목록(212)에 있지 않다. 애플리케이션(220)과 같은 애플리케이션은 다중 풀 관리자(210)를 통해 데이터 베이스 인스턴스(206 또는 208) 중 하나로 커넥션을 요청할 수 있다. 도 2A에서는, 상기 다중 풀 관리자(210)는 커넥션 풀 B를 통해 커넥션을 선택한다.
상기 다중 풀 관리자(210)는 커넥션 풀이 백그라운드에서 비동기적으로(asynchronously) 재개되었는지(revived)를 테스트할 수 있다. 일 실시예에서, 비동기적 백그라운드 테스트 모듈(214)이 사용될 수 있다.
도 2B는 이러한 백그라운드 테스트의 한 예를 도시하고 있다. 이 실시예에서, SQL 테스트 쿼리가 데드 커넥션 풀 A로 보내진다. 올바른 답이 데이터베이스 인스턴스(206)에서 얻어지면, 다중 풀 관리자(210)는 활성 커넥션 풀 목록(212)을 커넥션 풀 A에 대한 표시로 업데이트 한다. 이러한 방법으로, 다음번에 애플리케이션이 데이터 베이스로 커넥션을 요청할 때, 커넥션 풀 A를 통한 커넥션이 가능해진다.
도 3B는 데드 커넥션 풀을 비동기적으로 테스트하는 것을 도시한 흐름도를 나타내고 있다. 일 실시예에서, 단계(300)에서 사전 설정된 대기 시간이 경과된다. 위의 대기 시간은 애플리케이션에 의해 설정될 수 있고, 다중 풀 관리자에 대한 설정 정보에 저장되어 있을 수 있거나 또는 기본 값(default value)이 사용될 수 있다. 단계 (302)에서는, 데드 커넥션 풀이 테스트된다. 만약 상기 데드 커넥션 풀이 상기 테스트에 의해 지시되는 바에 따라 재개되면, 상기 활성 커넥션 풀 목록(306)이 업데이트되며, 그렇지 않으면, 상기 사이클은 단계(300)에서 사전 설정 시간동안 대기하는 것을 반복한다.
도 3A는 일 실시예에서 데이터 베이스로의 커넥션 요청의 동작을 도시한다. 단계(308)에서는, 데이터 베이스로 커넥션 요청은 다중 풀 관리자에서 수신된다. 단계 (310)에서, 상기 다중 풀 관리자는 커넥션 풀을 선택할 수 있다. 일 실시예에서, 상기 다중 풀 관리자(210)는 활성 커넥션 풀 목록에서 커넥션 풀을 선택한다. 그리고 나서, 커넥션이 시도될 수 있다. 단계(312)에서, 상기 커넥션 풀이 오류가 있는지의 여부가 확인된다. 만약 커넥션 풀에 오류가 있다면, 단계 (314)에서, 활성 커넥션 풀 목록이 업데이트 되고, 새로운 커넥션 풀이 상기 활성화된 풀 목록으로부터 선택된다. 만약 커넥션 풀이 오류가 없다면, 단계(315)에서, 커넥션 풀이 다 이용되었는지(full)의 여부를 확인한다. 더 이상 가용 커넥션이 없다면, 단계 (310)에서 상기 다중 풀 관리자는 활성 커넥션 풀 목록으로부터 또 다른 커넥션 풀을 선택할 수 있다. 선택된 커넥션 풀이 오류를 갖지 않거나 다 이용되지 않았으면, 단계 316에서, 상기 선택된 커넥션 풀을 통해 커넥션이 만들어진다.
도 4는 본 발명의 일 실시예에서 발생할 수 있는 여러가지 상황들을 나타내는 흐름도이다. 단계(402)에서, 데이터 베이스로 커넥션 요청이 다중 풀 관리자로 보내진다. 단계 (404)에서, 다중 풀 관리자는 활성 풀 목록에서 커넥션을 선택한다. 단계(408)에서 결정되는 바와 같이, 상기 선택된 커넥션은 새로 재개된 커넥션일 수 있다. 만약 그렇다면, 이것은 단계(410)에 나타난 바와 같이 페일백(failback)이라 불린다. 단계(412)에서, 커넥션 풀에 오류가 있는지 확인된다. 커넥션 풀에 오류가 있으면, 상기 활성 커넥션 풀 목록이 단계 (414)에서 업데이트 된다. 그리고 단계 (416)에서, 또 다른 커넥션 풀이 활성 커넥션 풀 목록에서 선택된다. 이것은 페일오버(failover) 상황이라 불린다. 단계(418)에서, 커넥션 풀에 오류가 있지 않으면, 커넥션 풀이 다 사용되었는지 확인된다. 커넥션 풀이 다 사용되었으면, 단계(420)에서는 스필오버( spillover)가 허락되는지 확인한다. 허가되면, 단계(422)에서, 활성 커넥션 풀 리스트에서부터 또 다른 커넥션 풀이 선택된다. 단계(424)는 커낵션이 성립되는 것을 보여준다. 후술하는 바와 같이, 애플리케이션은 콜백이나, 설정 정보를 통해, 페일백, 페일오버, 스필오버 상황들을 인증할 수 있다.
본 발명의 또 다른 실시예는 커낵션 풀을 통한 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하도록 되어 있는 다중 풀 관리자이다. 상기 다중 풀 관리자는 데드 커넥션 풀을 추적하도록 되어 있다. 상기 다중 풀 관리자는 상기 다중 풀 관리자가 애플리케이션에 대한 커넥션을 제공하기 위해 데드 커넥션 풀을 선택하는 것을 피하는 선택 방법을 구현한다.
본 발명의 일 실시예는 다중 커넥션 풀을 포함한 데이터 베이스 인스턴스로 연결하기 위한 다중 풀 시스템이다. 상기 커넥션 풀은 데이터 베이스 인스턴스로의 커넥션을 제공하도록 구성된다. 다중 풀 관리자는 커넥션 풀을 통해 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하도록 구성되어 있다. 상기 다중 풀 관리자는 데드 커넥션 풀을 추적하고 커넥션 풀이 재개되는지에 대해 비동기적으로 테스트 하도록 되어 있다.
다중 풀에 대한 콜백 인터페이스( Callback Interface for Multipools )
어떤 경우에는, 커넥션 풀을 교환하기 전에 애플리케이션으로 확인하는 것이 바람직하다. 커넥션 풀을 교환하는것을 복잡한 프로세스일 수 있다. 때때로, 바람직한 데이터 베이스 인스턴스가 있으며, 처음 데이터 베이스가 정말 무용하다고 판단 될 때가 아니면, 사용자가 비교적 덜 바람직한 데이터 베이스 인스턴스로 바꾸는 것은 바람직하지 않다. 본 발명의 실시예에서, 상기 다중 풀 관리자는 커넥션 풀의 교환을 위한 애플리케이션으로부터 인증을 얻기 위해 애플리케이션으로의 콜백을 구현한다.
본 발명의 실시예에서는, 다중 커넥션 풀로 데이터 베이스 인스턴스와 연결하도록 다중 풀 시스템이 사용된다. 상기 케넥션 풀(502와 504)은 데이터 베이스 인스턴스들(508과 510)로의 커넥션을 제공하도록 구성되어 있다. 다중 풀 관리자(506)는 커넥션 풀을 통해 데이터베이스 인스턴스로의 커넥션을 선택 및 설정하도록 되어 있다. 다중 풀 관리자(506)는 커넥션 풀들을 교환하기 전에 애플리케이션(512)으로 확인하도록 되어 있다.
도 5A의 실시예에서, 콜백이 다중 풀 관리자(506)로부터 애플리케이션(512)으로 이용가능하다. 만약 커넥션 풀이 교환되면, 다중 풀 관리자(506)는 상기 애플리케이션(512)이 교환을 인증할 것인지 여부를 결정하기 위해 애플리케이션(512)으로의 콜백을 할 수 있다. 도 5A의 예에서, 상기 활성 커넥션 풀 목록은 커넥션 풀 B를 포함하지만, 커넥션 풀 A를 포함하지 않는다. 커넥션 풀 B로의 교환 이전에, 상기 다중 풀 풀 관리자(506)은 상기 애플리케이션(512)으로의 콜백을 할 수 있다. 일 실시예에서, 제 1 단계에서, 커넥션 요청이 다중 풀 관리자(506)에 의해 수신된다. 제 2 단계에서, 상기 다중 풀 관리자(506)가 커넥션 풀 교환이 바람직하다고 판단한 후, 콜백이 애플리케이션(512)로 수행된다. 상기 콜백은, 예를 들어, 애플리케이션(512)의 일부분인 콜백 방법(514)의 호출일 수 있다. 다중 풀 관리자(506)는 설정 정보(506a)를 저장 할 수 있으며, 상기 설정 정보에는 상기 콜백이 어떤 상황으로 보내져야 하는지 및/또는 상기 콜백 방법 이름, 이 경우에는 콜백 방법 A에 대한 지시가 포함될 수 있다. 애플리케이션 코드는 콜백 방법(514)을 임의의 방식으로 구현할 수 있다. 일 실시예에서, 콜백 응답은 제 3 단계에서 상기 다중풀 관리자에 의해 수신된다. 상기 콜백 응답은 어떤 다중 풀 관리자(506)가 어떻게 연결할지 결정하는데 사용하는 지시일 수 있다.
일 실시예에서는, 상기 콜백 응답 지시로는 "OK" 지시가 포함된다. "OK" 지시가 수신되면, 상기 다중 풀 관리자(506)는 새로운 커넥션 풀로 교환한다. 또 다른 콜백 응답 지시는 "retry(재시도)" 지시가 있다. "retry" 지시가 수신되면, 다중 풀 관리자(506)는 구(old) 커넥션 풀과 커넥션을 성립하기 위해 시도할 수 있다. 또 다른 가능한 콜백 응답 지시는 "don't reconnect(재연결하지않음)" 지시이다. "don't connect" 지시가 수신되면, 다중 풀 관리자는 연결하려 시도하지 않는다.
도 5B는 "retry" 지시가 콜백 방법에 의해 제공될 수 있는 가능한 이유를 제시한 것이다. 일 실시예에서는, 제 2 데이터 베이스 인스턴스로 교환하기 전에 주요 데이터 베이스 인스턴스로 특정 회수만큼 연결 시도를 하는 것이 바람직할 수 있다. 도 5B는 콜백 방법의 일부분으로서 애플리케이션(512)으로부터 데이터 베이스 인스턴스(508)로 독립된 핑(ping)이 실행되는 예를 도시한 것이다. 독립된 핑이 데이터 베이스 인스턴스(508)가 여전히 살아 있다고 감지를 하면, 애플리케이션은 "retry" 지시를 보낼 수 있다. 애플리케이션(512)이 상기 데이터 베이스 인스턴스가 다운(down)되었다고 충분히 판단이 되면, "OK" 콜백 응답이 보내진다.
임의의 콜백 방법이 애플리케이션(512)에 의해 구현될 수 있다. 일 실시예에서 상기 다중 풀 관리자는 임의의 애플리케이션 코드에 의해 구현될 수 있는 콜백 인터페이스를 가진다.
도 6은 일 실시예의 콜백 동작을 도시하는 다이아그램이다. 단계 (602)에서, 다중 풀 관리자의 결정에 따라 상기 커넥션 풀이 교환될지 여부가 확인된다. 커넥션 풀이 교환되지 않도록 되어 있다면, 단계 (604)에서 커넥션 풀로 커넥션이 성립된다. 커넥션 풀이 교환되도록 되어 있다면, 단계 (606)에서 콜백이 상황에 대해 지시되어 있는지 여부가 확인된다. 콜백이 지시되지 않았다면, 콜백이 없이 새로운 커넥션 풀을 통해 커넥션이 성립된다. 콜백이 지시되었다면, 단계 (610)에서, 콜백이 실행된다. "OK" 지시가 수신되면, 단계 (614)에서 새로운 커넥션 풀에서 커넥션이 성립된다. "retry" 지시가 수신되면, 단계(616)에서, 구 커넥션 풀을 이용하여 커넥션이 시도 된다. 그렇지 않을 경우, "don't reconnect" 지시가 수신되면, 단계 (618)에서 커넥션 풀을 통한 연결이 이루어지지 않는다.
발명의 일 실시예에서, 다중 풀 관리자는 커넥션 풀을 통해 데이터 베이스 인스턴스와의 커넥션을 선택 및 설정하도록 되어있다. 상기 다중 풀 관리자는 커넥션 풀을 교환하기 전에 애플리케이션으로 확인하도록 되어있다.
하기의 설명은 다중 풀 구현에 대한 하나의 비제한적인 구현방식을 제공한다. 아래 일 실시예가 설명되지만, 당업자들은 상기 기술된 개념의 다른 구현들 역시 가능하다는 것을 이해할 것이다. 이하 사용되는 임의의 잠재적으로 제한적인 언어는 특정 비 제한적인 구현의 맥락에서 이해되어져야 하며 상기 일반적인 개념들을 제한하기 위한 것이 아니다.
다중 풀은 또 다른 로 페일 오버 하기 전에 애플리케이션으로 확인할 수 있다. 이것은 현재 사용되고 있는 풀을 위해 구성된 테스트가 랜덤(random) 또는 일시적인(transient) 오류에 부딪힐 때, 현재 클라이언트를 다루지 않는 데이터베이스 관리 시스템 (Database Management system:DBMS)이 다시 서비스로 돌아올 때, 또는 애플리케이션이 풀로부터 커넥션을 얻을 때 아이덴티티(identity)를 특정할 수 있을 때, 그리고 매칭 풀로부터 커넥션들이 리턴(return)되어야 할 때 유용하다. 이것은 상기 DBMS 벤더(vendor)가 익명의 JDBC 커넥션에 대한 클라이언트 아이덴티티 설정에 대한 자체적인(native) 지원을 제공하지 않을 경우에 유용하다.
많은 개선이 다중 풀에 대해 구현될 수 있다.
FAILOVER - 기존의 다중 풀 알고리즘 "HIGH_AVAILABILITY" 는 "FAILOVER"로
재명명된다. 이는 선택에 따라, 만약 현재 풀이 바쁘(Busy)다면, 커녁션 요청을 차선의(alternative) 풀로 라우팅(route)하는 기능을 제공할 것이다.
HEALTH - 기존의 기능은 데드 풀을 표시하여 커넥션에 대한 애플리케이션 요청이 이러한 풀로 라우팅되지 않도록 개선될 것이다.
CALLBACK - 콜백 인터페이스가, 오류가 있는 풀이 감지될 때 차선의 풀로 페 일오버하거나, 사전에 오류가 있다고 표시된 풀로 페일백하는 MultiPool의
결정을 제어하도록, 애플리케이션에 제공될 것이다.
애플리케이션은 FAILOVER 알고리즘을 설정할 수 있다. FAILOVER는 제 1 커넥션 풀을 통해 커넥션을 보내고, 제 1 커넥션 풀의 오류시, 제 2 커넥션 풀을 통해 이들 커넥션들을 라우트할 수 있다. FAILOVER는 선택에 따라, 현재 풀이 바쁠 경우 커넥션 요청이 차선의 풀로 라우팅 되도록 할 수 있다.
일 실시예에서, 다음과 같은 다중 풀 어트리뷰트(attribute)를 설정할 수 있을 것이다:
/**
* 설정이 되면, 애플리케이션의 연결 요청은 현재 풀이 바쁘면(Busy)
* 차선의 풀로 라우트될 것이다. 이는 HIGH_ALGORITHM 알고리즘으로 실행될
* 때에만 관계가 있다. 기본값은 이 기능(feature)이 꺼져(disable)있음을
* 의미한다.
*
* @param newVal 새로운 어트리뷰트 값
* @dynamic
* @default false
*/
public boolean isFailoverReguestIfBusy ( ) ;
public void setFailoverRequestlfBusy (boolean failoverRequestIfBusy) ;
애플리케이션은 시스템으로 콜백을 구현 및 등록할 수 있다. 이 콜백은 다중 풀이 오류를 감지하거나 또는 바쁜 풀일 때 호출(invoked)되며, 다중 풀이 차선의 풀로 페일오버 할지 여부를 제어하는 기능을 애플리케이션에게 제공한다.
일 실시예에서, 애플리케이션은 다음과 같은 인터페이스를 구현할 수 있을 것이다:
/**
* 애플리케이션은 WebLogic Server MultiPools의 페일오버를 제어하기를 원
* 하면 이 인터페이스를 구현할 수 있다.
*
* 이 인터페이스를 구현하는 클래스를 WebLogic Server에 등록했으면,
* WebLogic Server는 이 인터페이스의 방법 "allowPoolFailover ( )"를
* 호출하고 방법의 호출로부터의 리턴 코드에 따라 상이한 동작을 취한다.
*
*
* @ weblogic.management.configuration.JDBCMultiPoolMBeant#setConnectionPoolFail overCallbackHandler참조 바람
*
*/
public interface ConnectionPoolFailoverCallback {
// 본 인터페이스의 이름
static public final String IF_NAME =
"weblogic . j dbc . extensions . ConnectionPoolFailoverCallback" ;
// 방법 'allowPoolFailover( )'를 위한 오프코드
static public final int OPCODE_CURR_POOL_DEAD = 0 ;
static public final int OPCODE_CURR_POOL_BUSY = 1 ;
Static public final int OPCODE_REENABLE_CURR_POOL = 2 ;
// 방법 'allowPoolFailover ( )'를 위한 리턴코드
static public final int OK = 0 ; // 애플리케이션이 다음동작에 OK.
static public final int RETRY_CURRENT = 1 ; // 현재 풀을 재시도
static public final int DONOT_FAILOVER = 2 ; // 페일오버 하지마라, WLS 는 weblogic.jdbc.extensions.PoolUnavailableSQLException 을 쓰루(throw)할 것이다.
/*
* MultiPool은 다양한 페일오버/페일백 상황에 따라 이 방법 호출한다.
* 애플리케이션은 애플리케이션별 시맨틱(semantics)에 따라 이 방법으로부
* 터 상기에 정의된 코드 중 하나를 리턴해야 한다.
*
* @param currPool - 현재 사용되고 있는 커넥션 풀의 이름
* 결코 null 이 될 수 없다.
*
* @param nextPool - 차선의 풀의 이름
* 오피코드(opconde) 'OPCODE_REENABLE_CURR_POOL'에 대해 null일 것이다.
*
* @param opcode - 수행될 동작
* OPCODE_CURR_POOL_DEAD - ' currPool'에 오류가 있다, 'nextPool'로
* 애플리케이션 커넥션 요청을 페일오버할 필요가 있다.
*
* 애플리케이션은 "OK" , "RETRY_CURRENT" 나 "DONOT_FAILOVER" 를
* MultiPool이 무엇을 하기를 원하냐에 따라 리턴해야 한다.
*
* OPCODE_CURR_POOL_BUSY - 'currPool' 이 바쁘다,MultiPool은 'nextPool'로
* 애플리케이션 커넥션 요청을 재라우팅할 필요가 있다.
*
* 애플리케이션은 이와 같은 동작이 ok이면 "OK"를 리턴하고, 그렇지 않으
* 면 나머지 리턴 코드들 중 하나를 리턴해야 한다.
*
* OPCODE_REENABLE_CURR_POOL -'currPool'이 이전에 오류가 있다고
* 판단되고 결과적으로 디스에이블(disable)되었다. 이제 오류가
* 없다(healthy)는 것이 확인되었으므로, 다중 풀은 그것을 다시
* 인에이블(re-enable) 할 필요가 있다.
*
* 애플리케이션은 이와 같은 동작이 ok이면 "OK"를 리턴하고 그렇지 않으면
* 나머지 리턴 코드들 중 하나를 리턴해야한다.
*/
public int allowPoolFailover (String currPool , String nextPool , int opcode) ;
}
Application은 이 콜백을 JDBCMultiPoolMBean의 "ConnectionPoolFailoverCallbackHandler" 어트리뷰트에 등록할 수 있다.
/**
* weblogic.jdbc.extensions .ConnectionPoolFailoverCallback 인터페이스
* 를 구현하는 애플리케이션 클래스의 절대 이름(absolute name)을 정하기
* 위해 사용된다.
*
* @ weblogic.jdbc.extensions.ConnectionPoolFailoverCallback 참조
* @ non-dynamic
*/
public String getConnectionPoolFailoverCallbackHandler ( ) ;
public void setConnectionPoolFailoverCallbackHandler(String className);
다중 풀은 풀의 건강 상태를 내부적으로 모니터하고 관리하도록 향상될 수 있다. 풀이 오류가 있는 것으로 판단되면, 그렇게 표시되고, 이어지는 애플리케이션 커넥션 요청은 그 풀로 라우트되지 않을 것이다.
일 실시예에서, 다음과 같은 JDBCMultiPoolMBean의 어트리뷰트를 설정할 수 있을것이다.
/**
* 오류가 있다고 판단되어 결과적으로 디스에이블된 커넥션 풀의 양호 상
* 태(health)를 확인하는 주기(frequency)를 설정하는데 사용된다.
*
* @param newVal 새로운 어트리뷰트 값
* @dynamic
* @default 300
*/
void setHealthCheckFrequencySeconds ( int newVal ) ;
int getHealthCheckFrequencySeconds ( ) ;
실시예들은 당업자에게 자명한 바와 같이, 범용 또는 본 발명이 개시하는 바에 따라 프로그램된 특화된 디지털 컴퓨터 또는 마이크로프로세서(들)을 사용하여 구현될 수 있다. 당업자에게 자명한 바와 같이, 적절한 소프트웨어 코딩은 본 발명이 개시하는 바에 따라 숙련된 프로그래머들에 의해 쉽게 준비될 수 있다. 본 발명은 당업자에게 자명한 바와 같이, IC의 구성을 통해 구현될 수 있고, 기존의 콤포넌트(component) 회로의 적절한 네트워크를 상호연결함으로 인해 구현될 수 있다.
실시예로 컴퓨터 프로그램 제품을 포함하는 데 이 제품은 본 발명에서 제시된 임의의 기능도 실행할 수 있도록 컴퓨터를 프로그램하는데 이용되는 명령어들이 저장되어 있는 저장 매체이다. 상기 저장 메체는 플로피 디스크, 광 디스크, DVD, CDROM, 마이크로 드라이브, 자기광 디스크(magneto-optical disk), ROM, Ram, EPROM, DRAM, 플래시 메모리 장치, 자기 내지 광 카드(manetic or optical cards), 나노 시스템(분자 메모리 IC를 포함), 또는 명령어 및/또는 데이타를 저장하기 적합한 임의의 유형의 매체나 장치를 포함하나 이들로 제한되지 않는다.
컴퓨터 판독 가능한 메체 중 어느 하나에 저장되어, 본 발명은 범용/특수 컴퓨터 또는 마이크로 프로세서를 제어하고 그리고 본 발명의 결과를 이용하여, 컴퓨터나 마이크로 프로세서를 인간 사용자 또는 다른 메카니즘과 상호 작용하도록 해주는 소프트웨어를 포함한다. 이러한 소프트웨어는 디바이스 드라이버, 운영체제, 실행 환경/콘테이너(containers)와 사용자 애플리케이션을 포함할 수 있으며, 이들로 제한되지 않는다.
본 발명의 바람직일 실시예에 대한 상술한 설명은 설명을 위해 제공되어 왔다. 이것은 개시된 정확한 형태로 본 발명을 한정하기 위한 것이 아니다. 당업자에게는 많은 수정 및 변경이 가능할 것이다. 예를 들어, 본 발명의 실시예에서 수행 된 단계들은 다른 순서로 수행될 수 있고, 특정 단계가 생략될 수 있으며, 부가적인 단계들이 추가될 수 있다. 실시예들은 본 발명의 원리들과 실질적인 응용을 가장 잘 설명할 수 있도록 선택되었고, 그럼으로써 고려되는 특정 사용에 적합한 다양한 변경 및 다양한 실시예에 대하여, 당업자가 본 발명을 잘 이해할 수 있도록 할 것이다. 본 발명의 기술적 범위는 청구범위 및 그 균등물에 의해 정의됨을 밝혀둔다.

Claims (20)

  1. 데이터 베이스 인스턴스(instances)와 연결되는 다중 풀 시스템(multipool system)으로서,
    데이터 베이스 인스턴스로의 커넥션을 제공하도록 된 다중 커넥션 풀(connection pool);그리고
    커넥션 풀을 통해 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하고, 커넥션 요청들 사이에 데드(dead) 커넥션 풀을 추적하도록 된 다중 풀 관리자(multipool manager)를 포함하는 것을 특징으로 하는 다중 풀 시스템.
  2. 제 1 항에 있어서,
    상기 다중 풀 관리자가 상기 커넥션 풀이 재개되었는지(revived) 테스트하는 것을 특징으로 하는 다중 풀 시스템.
  3. 제 2 항에 있어서,
    상기 테스트는 백그라운드(background)에서 비동기적으로 수행되는 것을 특징으로 하는 다중 풀 시스템.
  4. 제 2 항에 있어서,
    상기 테스트는 애플리케이션에 의해 설정될 수 있는 시간주기로 주기적으로 수행되는 것을 특징으로 하는 다중 풀 시스템.
  5. 제 1 항에 있어서,
    상기 다중 풀 관리자가 바람직하게는 제 1 커넥션 풀을 통해 커넥션을 보내는 것을 특징으로 하는 다중 풀 시스템.
  6. 제 5 항에 있어서,
    제 2 커넥션 풀로 스필오버(Spillover)가 있는 것을 특징으로 하는 다중 풀 시스템.
  7. 제 1 항에 있어서,
    상기 다중 풀 관리자가 복수의 커넥션 풀을 통해 커넥션을 로드 밸런스(load balance)하는 것을 특징으로 하는 다중 풀 시스템.
  8. 제 1 항에 있어서,
    상기 다중 풀 매니저가 커넥션 풀을 교환하기 전에 애플리케이션으로 확인하는 것을 특징으로 하는 다중 풀 시스템.
  9. 제 8 항에 있어서,
    상기 다중 풀 관리자가 콜백 인터페이스를 사용하는 것을 특징으로 하는 다 중 풀 시스템.
  10. 제 8 항에 있어서,
    콜백 정보가 상기 애플리케이션에 의해 다중 풀 시스템에 등록되는 것을 특징으로 하는 다중 풀 시스템.
  11. 제 1 항에 있어서,
    상기 다중 풀 관리자는 활성 커넥션 풀 목록(active connection pool list)을 관리하고 어떤 커넥션 풀을 통해 연결할지를 결정하기 위해 상기 목록을 사용하는 것을 특징으로 하는 다중 풀 시스템.
  12. 데이터 베이스 인스턴스로 연결하기 위한 다중 풀 시스템으로서,
    데이터 베이스 인스턴스에 커넥션을 제공하도록 된 복수의 커넥션 풀;그리고
    커넥션 풀을 통해 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하고, 데드 커넥션 풀을 추적하고 커넥션 풀이 재개되었는지를 비동기적으로 테스트하도록 된 다중 풀 매니저를 포함하는 것을 특징으로 하는 다중 풀 시스템.
  13. 제 12 항에 있어서,
    상기 다중 풀 관리자가 바람직하게는 제 1 커넥션 풀을 통해 커넥션을 보내는 것을 특징으로 하는 다중 풀 시스템.
  14. 데이터 베이스 인스턴스로 연결하기 위한 다중 풀 시스템으로서,
    데이터 베이스 인스턴스에 커넥션을 제공하도록 된 다중 커넥션 풀; 그리고
    커넥션 풀을 통해 데이터 베이스 인스턴스로의 커넥션을 선택 및 설정하고, 커넥션 풀을 교환하기 전에 애플리케이션으로 체크하도록 된 다중 풀 관리자를 포함하는 것을 특징으로 하는 다중 풀 시스템.
  15. 제 14 항에 있어서,
    상기 다중 풀 관리자가 콜백 인터페이스를 가지는 것을 특징으로 하는 다중 풀 시스템.
  16. 제 14 항에 있어서,
    상기 애플리케이션으로부터 "OK" 지시가 수신되면, 상기 다중 풀 관리자는 커넥션 풀을 교환하는 것을 특징으로 하는 다중 풀 시스템.
  17. 제 14 항에 있어서,
    상기 애플리케이션으로부터 "retry" 지시가 수신되면, 상기 다중 풀 관리자는 커넥션 풀을 교환하지 않고, 본래의 커넥션 풀에 재시도하는 것을 특징으로 하는 다중 풀 시스템.
  18. 제 14 항에 있어서,
    상기 애플리케이션으로부터 "don't reconnect" 지시가 수신되면, 상기 다중 풀 관리자는 커넥션 풀을 교환하지 않고, 본래의 커넥션 풀에 재시도하지 않는 것을 특징으로 하는 다중 풀 시스템.
  19. 제 14 항에 있어서,
    상기 다중 풀 관리자가 페일오버(failover) 이전에 상기 애플리케이션으로 확인하는 것을 특징으로 하는 다중 풀 시스템.
  20. 제 14 항에 있어서,
    상기 다중 풀 관리자가 페일백(failback) 이전에 애플리케이션으로 확인하는 것을 특징으로 하는 다중 풀 시스템.
KR1020077017651A 2004-12-31 2005-12-21 다중 풀 관리자 KR20070110011A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US64044904P 2004-12-31 2004-12-31
US60/640,449 2004-12-31
US11/294,147 US20060146877A1 (en) 2004-12-31 2005-12-05 Multipool using automatically maintained active connection pool list
US11/294,214 2005-12-05
US11/294,214 US7761502B2 (en) 2004-12-31 2005-12-05 Callback interface for multipools
US11/294,147 2005-12-05

Publications (1)

Publication Number Publication Date
KR20070110011A true KR20070110011A (ko) 2007-11-15

Family

ID=36647997

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077017651A KR20070110011A (ko) 2004-12-31 2005-12-21 다중 풀 관리자

Country Status (5)

Country Link
EP (1) EP1844395A4 (ko)
JP (1) JP2008525916A (ko)
KR (1) KR20070110011A (ko)
AU (1) AU2005323039B2 (ko)
WO (1) WO2006073865A2 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6256904B2 (ja) 2013-04-18 2018-01-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 処理の要求を振り分ける装置及び方法
US9251178B2 (en) * 2013-04-26 2016-02-02 Oracle International Corporation System and method for connection labeling for use with connection pools
US9600546B2 (en) 2013-06-06 2017-03-21 Oracle International Corporation System and method for marshaling massive database data from native layer to java using linear array
US9785687B2 (en) 2013-06-06 2017-10-10 Oracle International Corporation System and method for transparent multi key-value weighted attributed connection using uni-tag connection pools
US9569472B2 (en) 2013-06-06 2017-02-14 Oracle International Corporation System and method for providing a second level connection cache for use with a database environment
US9720970B2 (en) 2013-06-06 2017-08-01 Oracle International Corporation Efficient storage and retrieval of fragmented data using pseudo linear dynamic byte array
US9747341B2 (en) 2013-06-06 2017-08-29 Oracle International Corporation System and method for providing a shareable global cache for use with a database environment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6173311B1 (en) * 1997-02-13 2001-01-09 Pointcast, Inc. Apparatus, method and article of manufacture for servicing client requests on a network
US6199110B1 (en) * 1997-05-30 2001-03-06 Oracle Corporation Planned session termination for clients accessing a resource through a server
JP3518292B2 (ja) * 1997-12-02 2004-04-12 日本電気株式会社 クライアントサーバシステム
US7406692B2 (en) * 2003-02-24 2008-07-29 Bea Systems, Inc. System and method for server load balancing and server affinity
US8621031B2 (en) * 2003-04-29 2013-12-31 Oracle International Corporation Method and apparatus using connection pools in communication networks

Also Published As

Publication number Publication date
JP2008525916A (ja) 2008-07-17
EP1844395A4 (en) 2009-08-05
EP1844395A2 (en) 2007-10-17
WO2006073865A3 (en) 2006-08-31
AU2005323039B2 (en) 2009-01-15
WO2006073865A2 (en) 2006-07-13
AU2005323039A1 (en) 2006-07-13

Similar Documents

Publication Publication Date Title
US7761502B2 (en) Callback interface for multipools
US7260818B1 (en) System and method for managing software version upgrades in a networked computer system
US9064003B2 (en) System and method for improving application connectivity in a clustered database environment
US10178184B2 (en) System and method for session handling in a multitenant application server environment
US7426661B2 (en) Method and system for minimizing loss in a computer application
US9787561B2 (en) System and method for supporting a selection service in a server environment
KR20070110011A (ko) 다중 풀 관리자
US9749445B2 (en) System and method for updating service information for across-domain messaging in a transactional middleware machine environment
US11507479B2 (en) High availability for a relational database management system as a service in a cloud platform
US11366728B2 (en) Systems and methods for enabling a highly available managed failover service
TWI511046B (zh) 用於群集軟體實體之動態命令列介面映射
JP6832291B2 (ja) アプリケーションサーバを並列起動するためのシステムおよび方法
CN112596960A (zh) 一种分布式存储服务切换方法及装置
US8015432B1 (en) Method and apparatus for providing computer failover to a virtualized environment
CN106789308A (zh) 一种微服务架构可自动伸缩的gis服务装置及其控制方法
US20180081673A1 (en) System and method for handling lazy deserialization exceptions in an application server environment
US10255153B2 (en) Systematic testing of failover and recovery for distributed system components
CN110471906B (zh) 数据库切换方法、装置及设备
US20180278544A1 (en) Enabling a traditional language platform to participate in a java enterprise computing environment
US12072759B2 (en) Cross-region software failure recovery
JP7327057B2 (ja) コンテナ制御装置、コンテナ制御方法、およびコンテナ制御プログラム
US12124344B2 (en) Systems and methods for enabling a highly available managed failover service
US20210064596A1 (en) Entry transaction consistent database system
CN117528597A (zh) 网元故障处理方法、装置、介质及电子设备
CN116264515A (zh) 虚拟桌面资源远程访问控制方法、装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E601 Decision to refuse application