KR100571426B1 - 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법 - Google Patents

클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법 Download PDF

Info

Publication number
KR100571426B1
KR100571426B1 KR1020030083761A KR20030083761A KR100571426B1 KR 100571426 B1 KR100571426 B1 KR 100571426B1 KR 1020030083761 A KR1020030083761 A KR 1020030083761A KR 20030083761 A KR20030083761 A KR 20030083761A KR 100571426 B1 KR100571426 B1 KR 100571426B1
Authority
KR
South Korea
Prior art keywords
session
web application
application server
http session
http
Prior art date
Application number
KR1020030083761A
Other languages
English (en)
Other versions
KR20050049978A (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 KR1020030083761A priority Critical patent/KR100571426B1/ko
Publication of KR20050049978A publication Critical patent/KR20050049978A/ko
Application granted granted Critical
Publication of KR100571426B1 publication Critical patent/KR100571426B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 클러스터드 웹 응용 서버 환경에서 HTTP 세션 식별자와 버전 정보를 이용하여 응용 서버 노드 간에 HTTP 세션 복제를 효율적으로 수행하기 위한 방법에 관한 것이다. 이러한 본 발명은 HTTP 세션 생성 시 세션 식별자, 세션 버전을 생성하고, HTTP 세션 생성 혹은 변경 시 멀티캐스트 프로토콜을 이용하여 세션 정보, 세션 식별자, 세션 버전 정보를 다른 모든 웹 응용 서버에 전송하되 생성시에 만 전송 완료 시점까지 기다리고, 변경 시에는 전송 완료 시점까지 기다리지 않고 전송 명령 만 내린 후 결과를 반환한다. 그리고 결과 반환 시 쿠키에 세션 식별자, 버전 번호를 저장하여 반환하고, 차후 부하 분배기가 다른 웹 응용 서버로 클라이언트에 대한 요청을 전달하면 해당 웹 응용 서버는 쿠키에서 세션 식별자 및 버전 번호를 추출하여 해당 HTTP 세션이 자신의 세션 저장소에 존재하며 HTTP 세션 버전이 쿠키에서 추출한 것 보다 최신이면 해당 HTTP 세션을 이용하고, 그렇지 않으면 멀티캐스트 프로토콜을 통해 일정 시간 안에 해당 HTTP 세션 정보를 수신하는 경우에는 수신된 HTTP 세션을 이용한다.
HTTP 세션, 복제, 멀티캐스트 프로토콜, 부하분배기, 쿠키, 버전번호

Description

클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를 이용한 에이치티티피 세션 복제 방법{ Method of copying HTTP session by cookie and version number in clustered web application server}
도 1은 본 발명이 적용되는 클러스터드 웹 응용 서버의 구성을 도시한 개략도,
도 2는 본 발명에 따라 웹 응용 서버가 서블릿에서 HTTP 세션 요청을 받았을 때 해당 클라이언트에 대한 HTTP 세션이 생성되어 있지 않는 경우, 웹 응용 서버의 처리 과정을 나타낸 흐름도,
도 3은 본 발명에 따라 웹 응용 서버가 서블릿에서 HTTP 세션 요청을 받았을 때 서블릿이 해당 HTTP 세션 정보를 변경한 경우 웹 응용 서버의 처리 과정을 나타낸 흐름도.
*도면의 주요부분에 대한 부호의 설명
110: 클라이언트 120: 부하분배기
130: 응용서버 140: HTTP세션 복제모듈
150: HTTP세션 저장소 160: 멀티캐스트 프로토콜 네트워크
본 발명은 HTTP 세션 복제방법에 관한 것으로, 특히 여러 개의 웹 응용 서버로 이루어진 클러스터링 환경에서 HTTP 세션 복제를 효율적으로 수행하기 위한 방법에 관한 것이다.
일반적으로, 인터넷 환경은 개방형 환경으로서 불특정 다수의 사용자가 접속하여 서비스를 받는다. 웹 응용 서버는 이러한 초당 수백 내지 수천의 클라이언트 요청을 효율적으로 처리해야 한다. 그러나 클라이언트 수가 증가함에 따라 웹 응용 서버의 성능은 낮아지므로, 이를 개선하기 위해 하나의 웹 응용 서버가 아닌 여러 개의 웹 응용 서버를 클러스터링하여 보다 많은 사용자의 요청을 처리하는 환경을 제공해야 한다. 즉, 여러 컴퓨터에 웹 응용 서버를 설치하고 이들을 네트워크로 묶으며, 클라이언트의 요청을 전달받은 부하 분배기에서 임의의 웹 응용 서버 노드를 선택하고, 클라이언트의 요청을 전달하여 서비스가 될 수 있도록 클러스터링 환경을 구축하여야 한다. 이러한 클러스터링 환경을 구성하면, 하나의 웹 응용 서버로 서비스하는 것 보다 더 많은 사용자의 요청을 빠른 시간 내에 처리할 수 있게 된다.
이와 같이 웹 응용 서버를 클러스터링 환경에서 운영할 때, 부하 분배기에서 임의의 웹 응용 서버 노드로 클라이언트의 요청을 전달하기 때문에 하나의 웹 서버 노드에서 생성되었거나 사용되었던 HTTP 세션 정보를 다른 웹 응용 서버로 복제해 야 하며, 차후 다른 웹 응용 서버 노드로 요청이 전달되었을 때에도 기존에 자신이 사용했던 HTTP 세션 정보를 그대로 사용할 수 있게 된다.
여러 개의 웹 응용 서버가 참여하는 클러스터링 환경에서 각각의 웹 응용 서버 노드 간에 HTTP 세션 복제를 위해서 종래에는 다음과 같은 방법이 사용되었다.
첫번째 방법은 HTTP 세션을 특정 데이터 베이스에 저장하는 방식이다. 즉, 클라이언트의 요청을 처리한 웹 응용 서버 노드에서 생성되었거나 세션 정보가 변경된 경우에는 특정 데이터베이스에 이를 저장하게 된다. 만일, 부하 분배기가 해당 클라이언트의 요청을 다른 웹 응용 서버에 전달했다면, 해당 웹 응용 서버는 해당 클라이언트에 대한 세션을 데이터베이스에서 읽어오게 된다. 이 경우는 구현이 쉽다는 장점은 있으나, 클라이언트 요청 처리 시 세션을 생성하거나 세션 정보가 변경될 때마다 데이터베이스를 접근해야 하므로 클라이언트 요청 처리 시간이 길어지며, 또한 데이터베이스에 고장이 발생하면 보관되었던 모든 세션이 손실되므로 데이터베이스 고장 시 전체 서비스가 중단되는 문제점이 있다.
두번째 방법은 HTTP 세션을 데이터베이스가 아닌 하나의 글로벌 서버의 메모리에 보관하는 방식이다. 이 방식은 HTTP 세션을 데이터베이스가 아닌 특정 서버에 보관하므로 HTTP 세션 생성 및 정보 변경 시 데이터베이스를 접근하는 방식보다 속도가 빠르나 데이터베이스 접근 방식의 문제점과 동일한 단점을 가지고 있다.
세번째 방법은 특정 클라이언트에 대한 요청을 해당 클라이언트에 대한 HTTP 세션을 생성한 웹 응용 서버 노드에게만 보내는 방식이다. 예를 들어, 부하 분배기 가 클라이언트 C에 대한 요청을 웹 응용 서버 노드 S에 보냈고, 웹 응용 서버 노드 S에서 클라이언트 C에 대한 HTTP 세션이 생성되었다면, 이후 클라이언트 C로부터 오는 모든 요청은 웹 응용 서버 노드 S가 처리하는 방식이다. 이 방식은 상기 기술된 첫번째와 두번째 방법보다 훨씬 빠르지만, 특정 웹 응용 서버 노드가 고장 나면 해당 웹 응용 서버 노드에서 생성된 세션 정보를 모두 잃게 되어 고장 감내(fault-tolerance) 정도가 낮은 문제점이 있다.
네번째 방법은 HTTP 세션을 백업 서버에 저장하는 방식이다. 각 웹 응용 서버는 하나의 백업 서버가 할당되며, 해당 웹 응용 서버의 모든 세션 데이터는 백업 서버에 백업된다. 만일 해당 웹 응용서버에 고장이 발생하면 클라이언트 요청은 다른 웹 응용 서버로 전달되며, 클라이언트 요청을 받은 웹 응용 서버는 백업 서버에서 HTTP 세션 정보를 추출하여 사용한다. 이 경우 웹 응용 서버와 백업 서버가 동시에 고장이 발생하면 해당 HTTP 세션 정보는 모두 손실되게 된다. 또한, HTTP 세션 생성 및 변경 시 마다 백업 서버를 접근하여 해당 세션을 백업해야 하는 문제점이 있다.
다섯번째 방법은 HTTP 세션이 생성되거나 변경되었을 경우 멀티캐스트 프로토콜을 이용하여 다른 모든 서버에게 생성되거나 변경된 HTTP 세션 정보를 전달하는 방식이다. 예를 들어, 3개의 웹 응용 서버 S1, S2, S3로 구성된 클러스터링 환경에서 부하 분배기가 클라이언트 C의 요청을 웹 응용 서버 S1에게 전달하고 웹 응용 서버 S1에서 클라이언트 C에 대한 HTTP 세션을 생성한 경우, 웹 응용 서버 S1은 멀티캐스트 프로토콜을 통해 다른 노드 S2, S3로 해당 세션을 복제하고, 복제가 완 료된 후 클라이언트에게 결과를 반환한다. 클라이언트 C의 다음 요청을 전달 받은 부하 분배기는 S1, S2, S3 중 부하가 적은 임의의 노드를 선택하여 해당 요청을 전달하게 되는데 만일 웹 응용 서버 S2가 선택되어 요청이 전달되었다면, S2는 해당 클라이언트에 대한 HTTP 세션 정보를 멀티캐스트 프로토콜을 이용하여 전달 받았기 때문에 클라이언트 요청을 처리할 수 있게 된다. 이 방법은 데이터베이스를 접근하는 방식보다 속도가 빠르며, 특정 웹 응용 서버가 다운되어도 하나의 웹 응용 서버 만 다운되지 않으면 시스템의 서비스를 지속할 수 있어 고장 감내 정도가 매우 높다. 또한 세번째 방법과 달리 부하 분배기는 등록된 웹 응용 서버 중 임의의 웹 응용 서버 노드에게 클라이언트 요청을 전달할 수 있으므로 다양한 부하 분배 전략을 세울 수 있다. 그러나 이 방식은 클라이언트 요청 시 멀티캐스트 방식으로 모든 웹 응용 서버 노드에 HTTP 세션을 복제하고 복제가 완료된 시점까지 해당 웹 응용 서버가 기다린 이후에 클라이언트 요청에 대한 결과를 반환하므로, 랜(LAN) 환경에서 데이터베이스 접근 시간 보다는 빠르지만 클라이언트 요청 처리 시 HTTP 세션 복제 시간이 소요되므로 세번째 방법보다는 느리다는 문제점이 있다.
본 발명의 목적은 상기와 같은 문제점을 해결하기 위하여 클러스터링 환경을 지원하는 웹 응용 서버에서 클라이언트의 요청 처리 시에 HTTP 세션 복제를 멀티캐스트 프로토콜을 이용하여 다른 모든 웹 응용 서버에게 전달하는 방식에 있어서, 쿠키를 이용하여 HTTP 세션 식별자 및 버전 정보를 전달함으로써, HTTP 세션 갱신 시 다른 모든 웹 응용 서버에 복제가 완료된 시점까지 기다리지 않고 바로 제어를 반환하여 클라이언트 요청을 빠르게 처리하는 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를 이용한 효율적인 HTTP 세션 복제 방법을 제공하는 것이다.
상기와 같은 목적을 달성하기 위하여 본 발명은 클러스터링 환경을 지원하는 웹 응용 서버에서 클라이언트의 요청 처리 시에 HTTP 세션 복제를 멀티캐스트 프로토콜을 이용하여 다른 모든 웹 응용 서버에게 전달하는 방식에 있어서, HTTP 세션 생성 시 HTTP 세션 식별자, HTTP 세션 버전을 생성하고, HTTP 생성 혹은 변경 시 멀티캐스트 프로토콜을 이용하여 HTTP 세션 정보, HTTP 세션 식별자, HTTP 세션 버전 정보를 다른 모든 웹 응용 서버에 전송하되 생성시에 만 전송 완료 시점까지 기다리고 변경 시에는 전송 완료 시점까지 기다리지 않고 전송 명령 만 내린 후 결과를 반환한다. 그리고 결과 반환 시 쿠키에 HTTP 세션 식별자, HTTP 버전 번호를 저장하여 반환하고, 차후 부하 분배기가 다른 웹 응용 서버로 클라이언트에 대한 요청을 전달하면 해당 웹 응용 서버는 쿠키에서 HTTP 세션 식별자 및 버전 번호를 추출하여 해당 HTTP 세션이 자신의 세션 저장소에 존재하며 HTTP 세션 버전이 쿠키에서 추출한 것 보다 최신이면 해당 HTTP 세션을 이용하고, 그렇지 않으면 멀티캐스트 프로토콜을 통해 해당 HTTP 세션의 최신 버전이 도착하지 않았으므로 일정 시간 동안 해당 HTTP 세션의 최신 버전이 도착하기를 기다리며, 만약 일정 시간 안에 해당 HTTP 세션 정보를 수신하는 경우에는 수신된 HTTP 세션을 이용한다. 따라서 기존의 HTTP 세션 복제 방법에서는 HTTP 세션을 생성하거나 변경하여 HTTP 세션을 복제할 때 해당 HTTP 세션이 다른 모든 웹 응용 서버에 전송되어 복제가 완료되는 시점까지 기다려야 했으나, 본 발명의 경우에는 HTTP 세션 생성 시에만 기다리며 HTTP 세션 변경에 따른 HTTP 세션 복제 시에는 복제가 완료되는 시점까지 기다리지 않고 멀티캐스트 프로토콜을 이용하여 HTTP 복제 명령 만을 수행한 후 즉시 제어를 반환하여 클라이언트의 요청을 더 빨리 처리할 수 있다.
그리고 클라이언트에 대해서 HTTP 세션은 한 번 생성되고 반복적으로 조회 및 갱신되므로, 생성 횟수보다는 갱신 횟수가 훨씬 많기 때문에 클라이언트 처리 속도를 향상시킬 수 있다. 만약, 부하 분배기에 의해 복제 이전에 클라이언트 요청이 다른 웹 응용 서버로 전달되면, HTTP 세션의 버전 정보를 이용하여 해당 HTTP 세션이 도달되었는지를 확인할 수 있으며, 이러한 버전 정보는 쿠키에 의해 전달된다.
상술한 본 발명의 특징 및 장점들은 첨부된 도면과 관련한 다음의 상세한 설명을 통하여 보다 분명해 질 것이다.
이하. 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 자세히 설명한다.
도 1은 본 발명이 적용되기에 바람직한 전체 구성을 도시한 구성 블럭도로서, 본 발명이 적용되는 시스템은 멀티캐스트 프로토콜 네트웍(160)을 통해 N개의 웹 응용 서버(130)가 연결되어 있고, 클라이언트(110)로부터의 서비스 요청은 부하 분배기(120)를 거쳐 해당 웹 응용 서버(130)로 전달되도록 되어 있다. 그리고 각 웹 응용 서버(130)는 HTTP 세션복제 모듈(140)과 HTTP세션 저장소(150)를 포함하고 있다. 도 1에서 동일한 구성요소에 대해서는 하나의 대표 구성에 대해서만 참조번호를 부여하여 설명하기로 한다.
도 1을 참조하면, 클라이언트(110)는 웹 브라우저를 통해 특정 웹 페이지를 브라우징하기 위해서, 웹 서버 역할을 함께 수행하는 부하 분배기(120)에게 브라우징하고자 하는 웹 페이지를 요구한다. 부하분배기(120)는 웹 응용 서버 1(130), 웹 응용 서버 2, ..., 웹 응용 서버 N 중에 부하가 가장 적다고 판단되는 웹 응용 서버를 소정의 부하 분배 알고리즘을 통해 선택하고, 해당 웹 응용 서버(130)에게 클라이언트 요청을 전달한다.
해당 클라이언트 요청을 전달 받은 웹 응용 서버(130)는 클라이언트 요청을 처리할 서블릿(servlet;도2의 170)에게 클라이언트 요청을 전달한다. 서블릿은 해당 클라이언트 요청을 처리하며, 필요 시 사용할 자료를 저장하기 위해 HTTP 세션 정보를 웹 응용 서버(130)에게 요청한다. HTTP 세션 요청을 받은 웹 응용 서버(130)는 클라이언트 요청 시 전달된 쿠키에서 HTTP 세션 식별자와 HTTP 세션 버전 정보를 추출하고, 이를 기반으로 해당 웹 응용 서버의 세션 저장소(150)에서 HTTP 세션을 추출한다. 쿠키에 HTTP 세션 식별자가 존재하지 않으면, 웹 응용 서버(130)는 HTTP 세션 복제 모듈(140)을 통해 새로운 HTTP 세션을 하나 생성하게 된다.
HTTP 세션 복제 모듈(140)은 HTTP 세션 식별자, HTTP 세션 버전 정보, HTTP 세션 정보를 생성하고, 이를 멀티캐스트 프로토콜 네트웍(160)을 통해 다른 모든 웹 응용 서버(130)에 전달한다. 만일, 쿠키에서 추출한 HTTP 세션, 버전 번호에 해당하는 HTTP 세션이 세션 저장소(150)에 존재하지 않으면, 멀티캐스트 프로토콜네트웍(160)에서 해당 HTTP 세션을 수신할 때까지 일정 시간 기다린다.
도 2는 본 발명에 따라 웹 응용 서버가 서블릿에서 HTTP 세션 요청을 받았을 때 해당 클라이언트에 대한 HTTP 세션이 생성되어 있지 않는 경우, 웹 응용 서버의 처리 과정을 나타낸 흐름도이다.
도 2를 참조하면, 클라이언트(110)는 웹 브라우저를 통해 특정 웹 페이지를 브라우징하기 위해서, 웹 서버 역할을 함께 수행하는 부하 분배기(120)에게 브라우징하고자 하는 웹 페이지를 요구한다(1001). 부하분배기(120)는 웹 응용 서버 1, 웹 응용 서버 2, ..., 웹 응용 서버 n 중에 부하가 가장 적다고 판단되는 웹 응용 서버(130)를 정해진 부하 분배 알고리즘에 의해 선택하고, 해당 웹 응용 서버(130)에게 클라이언트 요청을 전달한다(1002). 이때 가장 일반적으로 사용되는 부하 분배 알고리즘은 라운드 로빈(round robin) 방식으로서, 부하 분배기(120)는 정해진 일정한 순서에 따라 클라이언트 요청을 각 웹 응용 서버(130)에게 하나씩 전달하게 된다.
해당 클라이언트 요청을 전달 받은 웹 응용 서버(130)는 클라이언트 요청을 처리할 서블릿(servlet;170)에게 클라이언트 요청을 전달한다(1003). 서블릿(170)은 해당 클라이언트 요청을 처리하며, 필요 시 사용할 자료를 저장하기 위해 HTTP 세션 정보를 웹 응용 서버(130)에게 요청한다(1004). 웹 응용 서버(130)는 쿠키에 서 해당 클라이언트에 대한 HTTP 세션 식별자 및 버전 정보를 추출하며(1005), 만약 쿠키에 존재하지 않으면 해당 클라이언트에 대한 세션이 생성되어 있지 않으므로 새로운 HTTP 세션을 생성하게 된다. 이를 위해 먼저 웹 응용 서버(130)는 HTTP 세션 복제 모듈(140)에게 HTTP 세션 식별자, HTTP 세션 버전 정보, HTTP 세션 정보 생성을 요청한다(1006).
HTTP 세션 복제 모듈(140)은 생성된 HTTP 세션 식별자, HTTP 세션 버전 정보, HTTP 세션 정보를 웹 응용 서버(130)에게 반환하고(1007), 웹 응용 서버(130)는 이를 HTTP 세션 저장소(150)에 저장하며(1008), 멀티캐스트 프로토콜 네트웍(160)을 통해 다른 모든 웹 응용 서버(130)에게 HTTP 세션 정보, HTTP 세션 식별자, HTTP 세션 버전 정보를 전송한 후(1009), 서블릿(170)에게 반환한다(1010).
서블릿(170)은 클라이언트 요청을 처리한 후 결과를 웹 응용 서버(130)에게 반환하고(1011), 웹 응용 서버(130)는 쿠키에 생성된 HTTP 세션 식별자와 버전 정보를 저장한 후(1012), 처리 결과를 부하 분배기(120)로 반환하며(1013), 부하 분배기(120)는 처리 결과를 클라이언트(110)에게 반환한다(1014).
웹 응용 서버(130)가 멀티캐스트 프로토콜 네트웍(160)을 통하여 HTTP 세션 정보를 복제할 때(1009), 웹 응용 서버(130)는 다른 모든 웹 응용 서버(130)에 전송이 완료되는 시점까지 기다린 후 서블릿(170)에게 생성된 HTTP 세션을 반환한다.
HTTP 식별자는 HTTP 세션을 유일하게 구별하는 정보이며, 버전 정보는 해당 HTTP 식별자의 버전에 대한 정보를 담고 있으며, 다음 표1과 같이 생성한다.
구분 생성방법
HTTP세션 식별자 (해당 웹 응용 서버 노드의 IP 주소, HTTP 세션 생성 시간)의 조합으로 이루어진 문자열
HTTP세션 버전 0부터 시작하여 계속 증가하는 정수 값이며 초기 생성 시는 0
도 3는 본 발명에 따라 웹 응용 서버가 서블릿에서 HTTP 세션 요청을 받았을 때 해당 클라이언트에 대한 HTTP 세션이 존재하지 않아 하나를 생성하여 반환하거나 HTTP 세션이 존재하여 반환한 후, 서블릿이 해당 HTTP 세션에 새로운 정보를 추가하거나 기존 내용을 삭제하는 등 HTTP 세션 정보를 변경한 경우에 웹 응용 서버의 처리 과정을 나타낸 흐름도이다.
도 3을 참조하면, 클라이언트(110)는 웹 브라우저를 통해 특정 웹 페이지를 브라우징하기 위해서, 웹 서버 역할을 함께 수행하는 부하 분배기(120)에게 브라우징하고자 하는 웹 페이지를 요구한다(2001). 부하분배기(120)는 웹 응용 서버 1, 웹 응용 서버 2, ..., 웹 응용 서버 n 중에 부하가 가장 적다고 판단되는 웹 응용 서버(130)를 정해진 부하 분배 알고리즘에 의해 선택하고, 해당 웹 응용 서버(130)에게 클라이언트 요청을 전달한다(2002).
해당 클라이언트 요청을 전달 받은 웹 응용 서버(130)는 클라이언트 요청을 처리할 서블릿(servlet)에게 클라이언트 요청을 전달한다(2003). 서블릿은 해당 클라이언트 요청을 처리하며, 필요 시 사용할 자료를 저장하기 위해 HTTP 세션 정보를 웹 응용 서버(130)에게 요청한다(2004). 웹 응용 서버(130)는 쿠키에서 해당 클 라이언트에 대한 HTTP 세션 식별자 및 버전 정보를 추출하며(2005), 만약 쿠키에 존재하지 않으면 해당 클라이언트에 대한 세션이 생성되어 있지 않기 때문에 도 2에 따라 새로운 HTTP 세션을 생성하여 반환하고, 쿠키에 해당 정보가 존재하면 해당 HTTP 세션 식별자와 버전 정보를 HTTP 세션 저장소(150)에 전달하여 HTTP 세션 검색을 요청한다(2006).
만일, HTTP 세션 저장소(150)에 쿠키에서 추출한 HTTP 세션 보다 같거나 상위 버전의 세션이 존재하면, 세션 저장소(150)에서 검색한 HTTP 세션을 반환한다(2007). 그렇지 않으면 해당 버전의 HTTP 세션이 아직 도달하지 않았기 때문에 정해진 일정 시간 동안 기다린다(2008).
일정 시간을 기다린 후 쿠키에서 추출한 HTTP 세션 보다 같거나 상위 버전의 세션이 도달하면 세션 저장소(150)에서 검색한 HTTP 세션을 반환하고, 그렇지 않으면 예외 혹은 에러를 반환한다(2009). 예외나 에러 없이 HTTP 세션이 도달하면 이를 서블릿(170)에게 반환한다(2010).
서블릿(170)은 반환된 HTTP 세션 내의 정보를 삭제하거나 추가하는 등 세션을 변경할 수 있으며, 이러한 세션 변경 요청 시(2011) 마다 웹 응용 서버(130)는 HTTP 세션에 새로운 버전을 부여하고 해당 HTTP 세션을 변경한 후 세션 저장소(150)에 저장한다(2012).
HTTP 세션 변경 요청을 받은 웹 응용 서버(130)는 기존 버전에 1을 증가시켜 해당 HTTP 세션에 새로운 버전 정보를 부여한다. 즉, 새로운 HTTP 세션 버전 번호는 기존의 HTTP 세션 버전 번호에 1을 더한 값이다. 새로운 HTTP 세션을 HTTP 세 션 저장소(150)에 저장한 후, 변경된 HTTP 세션, 세션 식별자, 새로운 세션 버전을 멀티캐스트 프로토콜 네트웍(160)을 통해 다른 모든 웹 응용 서버(130)에 전달하며, 이때 HTTP 세션이 다른 모든 웹 응용 서버(130)에서 복제될 때까지 기다리지 않고, 멀티캐스트 프로토콜 네트웍(160)에 복제 명령 만을 전달한 후 제어를 즉시 반환한다(2013).
서블릿(170)은 클라이언트 요청을 처리하고, 결과를 웹 응용 서버(130)에게 반환하고(2014), 웹 응용 서버(130)는 쿠키에 생성된 HTTP 세션 식별자와 버전 정보를 저장한 후(2015), 처리 결과를 부하 분배기(120)에 반환하며(2016), 부하 분배기(120)는 처리 결과를 클라이언트(110)에게 반환한다(2017). HTTP 세션 생성 시와는 달리 HTTP 세션 갱신의 경우에는 모든 웹 응용 서버(130)에 HTTP 세션이 복제될 때까지 기다리지 않고 제어를 즉시 반환하므로 기존 방법보다 속도가 빠르다. 만일, 해당 HTTP 세션 정보가 웹 응용 서버(130)에 전달되지 않은 상태에서 부하 분배기(120)가 클라이언트 요청을 해당 웹 응용 서버(130)로 전달했을 경우에는, 쿠키에 존재하는 HTTP 세션 식별자와 HTTP 세션 버전 번호를 이용하여 상기와 같이 적절히 처리한다. 그러나 특별한 네트워크 트래픽 부하로 인하지 않는 한 보통의 경우 복제 명령이 전달되고 제어가 클라이언트(110)에게 전달된 후, 클라이언트 요청이 부하 분배기(120)를 통해 다른 웹 응용 서버(130)로 전달되는 시간 내에 복제가 이루어지게 된다.
상기 본 발명에 따른 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를 이용한 효율적인 HTTP 세션 복제 방법은 컴퓨터 프로그램으로 제작되어서 하드디스 크, 플로피디스크, 광자기디스크, 시디 롬, 롬, 램 등의 기록매체에 저장될 수 있다.
이상에서 설명한 바와 같이 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시 예 및 첨부된 도면에 한정하는 것이 아니다.
따라서, 본 발명은 클러스터링 환경을 지원하는 웹 응용 서버에서 클라이언트의 요청 처리 시에 HTTP 세션 복제를 멀티캐스트 프로토콜을 이용하여 다른 모든 서버에게 전달하는 방식에 있어서, 쿠키를 이용하여 HTTP 식별자 및 버전 정보를 전달함으로써 HTTP 세션 갱신 시 다른 모든 웹 응용 서버에 복제가 완료된 시점까지 기다리지 않고 바로 제어를 반환하여 클라이언트 요청을 빠르게 처리할 수 있다.

Claims (6)

  1. 다수의 웹 응용 서버로 이루어진 클러스터링 환경에서 HTTP 세션 복제를 효율적으로 수행하기 위한 방법에 있어서,
    클라이언트의 요청을 받은 웹 응용 서버에서 HTTP 세션을 생성하고, 상기 생성된 HTTP 세션에 식별자와 버전 정보를 할당하는 제 1 단계;
    상기 제1단계에서 생성된 HTTP 세션 식별자, 버전 정보를 상기 클라이언트의 요청을 받은 웹 응용 서버에서 멀티캐스트 프로토콜(multicast protocol)을 이용하여 다른 모든 웹 응용 서버에 전달하고, 전달 완료되는 시점까지 기다리는 제 2 단계;
    상기 제2단계 후 클라이언트에게 요청 결과를 반환하기 전에 상기 클라이언트의 요청을 받은 웹 응용 서버에서 쿠키에 HTTP 식별자와 버전 정보를 설정하는 제 3 단계;
    상기 제2단계에서 HTTP 세션 식별자, 버전 정보를 전달받은 다른 웹 응용 서버가 해당 정보를 자신의 세션 저장소에 저장하는 제 4 단계;
    상기 제4단계 후 상기 클라이언트로부터 요청을 받은 웹 응용 서버가 쿠키에서 세션 식별자와 버전 정보를 추출하는 제 5 단계;
    상기 제5단계에서 추출한 세션 식별자와 버전 정보를 이용하여 상기 클라이언트로부터 요청을 받은 웹 응용 서버는 자신의 세션 저장소에서 세션 버전 정보를 추출하는 제 6 단계;
    상기 제6단계에서 저장된 세션 버전 정보가 쿠키에서 추출한 버전 정보보다 낮은 경우, 상기 클라이언트의 요청을 받은 웹 응용 서버는 쿠키에서 추출한 버전에 해당하는 HTTP 세션이 멀티캐스트 프로토콜에서 수신될 때까지 일정 시간 기다리는 제 7 단계; 및
    상기 제7단계에서 기다린 시간 내에 해당 HTTP 세션이 수신되지 않았을 경우 상기 클라이언트의 요청을 받은 웹 응용 서버에서 클라이언트에게 예외(exception)를 통보하고, 해당 세션을 수신한 경우 이를 추출하여 자신의 세션 저장소에 저장하고 해당 세션 정보를 서블릿에서 이용하도록 하는 제 8 단계를 구비한 것을 특징으로 하는 클러스터드 웹 응용 서버에서 HTTP 버전 번호와 쿠키를 이용한 HTTP 세션 복제 방법.
  2. 제1항에 있어서, 상기 세션 복제 방법은,
    상기 제8단계에서 상기 클라이언트의 요청을 받은 웹 응용 서버가 추출한 세션 정보를 사용자가 수정한 경우에는 새로운 버전 정보를 생성하고, 멀티캐스트 프로토콜을 이용하여 수정된 HTTP 세션 식별자, 새로운 버전 정보를 다른 웹 응용 서버에게 전달하되, 다른 웹 응용 서버가 HTTP 세션 정보를 수신할 때까지 기다리지 않고 즉시 제어를 반환하는 제 9 단계; 및
    상기 제9단계에서 수정된 HTTP 세션 식별자, 새로운 버전 정보를 상기 클라이언트의 요청을 받은 웹 응용 서버는 자신의 세션 저장소에서 해당 HTTP 세션 정보를 추출하고, 버전 정보가 자신의 것보다 최신이면 이를 갱신하는 제 10 단계를 더 포함하는 것을 특징으로 하는 클러스터드 웹 응용 서버에서 HTTP 버전 번호와 쿠키를 이용한 HTTP 세션 복제 방법.
  3. 제1항 또는 제2항에 있어서, 상기 HTTP세션 식별자는
    (해당 웹 응용 서버 노드의 IP 주소, HTTP 세션 생성 시간)의 조합으로 이루어진 문자열로 정의하는 것을 특징으로 하는 클러스터드 웹 응용 서버에서 HTTP 버전 번 호와 쿠키를 이용한 HTTP 세션 복제 방법.
  4. 제1항 또는 제2항에 있어서, 상기 버전번호는
    0부터 시작하여 계속 증가하는 정수 값이며, 초기 생성 시는 0인 것을 특징으로 하는 클러스터드 웹 응용 서버에서 HTTP 버전 번호와 쿠키를 이용한 HTTP 세션 복제 방법.
  5. 제1항에 있어서, 상기 웹 응용 서버는
    HTTP 세션 식별자, HTTP 세션 버전 정보, HTTP 세션 정보를 생성하는 HTTP 세션 복제 모듈과, 상기 HTTP 세션 정보를 저장하는 HTTP 세션 저장소를 포함하는 것을 특징으로 하는 클러스터드 웹 응용 서버에서 HTTP 버전 번호와 쿠키를 이용한 HTTP 세션 복제 방법.
  6. 제 1 항에 기재된 클러스터드 웹 응용 서버에서 HTTP 버전 번호와 쿠키를 이용한 HTTP 세션 복제 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020030083761A 2003-11-24 2003-11-24 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법 KR100571426B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030083761A KR100571426B1 (ko) 2003-11-24 2003-11-24 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030083761A KR100571426B1 (ko) 2003-11-24 2003-11-24 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법

Publications (2)

Publication Number Publication Date
KR20050049978A KR20050049978A (ko) 2005-05-27
KR100571426B1 true KR100571426B1 (ko) 2006-04-17

Family

ID=38665589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030083761A KR100571426B1 (ko) 2003-11-24 2003-11-24 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법

Country Status (1)

Country Link
KR (1) KR100571426B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102215266B (zh) * 2011-06-20 2017-06-16 南京中兴新软件有限责任公司 持久化服务的实现方法及持久化服务系统
KR101676653B1 (ko) * 2016-04-20 2016-11-17 주식회사 티맥스 소프트 Http 세션 정보 동적 유지 방법, 이를 사용한 웹 애플리케이션 서버 및 웹 서버

Also Published As

Publication number Publication date
KR20050049978A (ko) 2005-05-27

Similar Documents

Publication Publication Date Title
US7409420B2 (en) Method and apparatus for session replication and failover
US7076553B2 (en) Method and apparatus for real-time parallel delivery of segments of a large payload file
US6687846B1 (en) System and method for error handling and recovery
US7702791B2 (en) Hardware load-balancing apparatus for session replication
JP4845321B2 (ja) 分散エッジ・ネットワーク・アーキテクチャ
EP2498476B1 (en) Massively scalable object storage system
US7610387B1 (en) Method and apparatus for providing sticky bindings using version vectors
EP2169909B1 (en) System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
JP5016063B2 (ja) 整合性のとれた耐障害性分散ハッシュテーブル(dht)オーバレイネットワーク
KR101585146B1 (ko) 오브젝트를 복수 개의 데이터 노드들의 위치에 기반하여 분산 저장하는 분산 저장 시스템 및 그 위치 기반 분산 저장 방법 및 컴퓨터에 의하여 독출 가능한 저장 매체
US20060123121A1 (en) System and method for service session management
US20150227606A1 (en) Massively scalable object storage system
EP1415236B1 (en) Method and apparatus for session replication and failover
US20020199014A1 (en) Configurable and high-speed content-aware routing method
US20020169889A1 (en) Zero-loss web service system and method
US20120166403A1 (en) Distributed storage system having content-based deduplication function and object storing method
US20040249904A1 (en) Multi-class heterogeneous clients in a clustered filesystem
US20090240705A1 (en) File switch and switched file system
AU2002329602A1 (en) Method and apparatus for session replication and failover
US7000016B1 (en) System and method for multi-site clustering in a network
Li et al. Redis-based web server cluster session maintaining technology
US8880665B2 (en) Nonstop service system using voting, and information updating and providing method in the same
JP5109901B2 (ja) セッションデータ共有方法
KR100571426B1 (ko) 클러스터드 웹 응용서버 환경에서 쿠키와 버전 정보를이용한 에이치티티피 세션 복제 방법
KR20040001355A (ko) 멀티미디어 컨텐츠 분배망 구성 방법 및 그를 이용한멀티미디어 컨텐츠 서비스 방법

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee