KR20020062850A - 고성능 클라이언트 서버 통신 시스템 - Google Patents

고성능 클라이언트 서버 통신 시스템 Download PDF

Info

Publication number
KR20020062850A
KR20020062850A KR1020020004145A KR20020004145A KR20020062850A KR 20020062850 A KR20020062850 A KR 20020062850A KR 1020020004145 A KR1020020004145 A KR 1020020004145A KR 20020004145 A KR20020004145 A KR 20020004145A KR 20020062850 A KR20020062850 A KR 20020062850A
Authority
KR
South Korea
Prior art keywords
proxy
server
data
processes
assigned
Prior art date
Application number
KR1020020004145A
Other languages
English (en)
Other versions
KR100856515B1 (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 야후! 인크.
Publication of KR20020062850A publication Critical patent/KR20020062850A/ko
Application granted granted Critical
Publication of KR100856515B1 publication Critical patent/KR100856515B1/ko

Links

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
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/288Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • 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]
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1017Server selection for load balancing based on a round robin mechanism
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

통신 시스템은 클라이언트 및 서버를 포함한다. 클라이언트는 제1 프록시, 제1 메모리 및 복수의 제1 프로세스를 갖는다. 제1 메모리는 복수의 제1 프로세스 중 하나에 각각이 할당되며 할당된 제1 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 제1 슬롯을 포함한다. 서버는 제2 프록시, 제2 메모리 및 복수의 제2 프로세스를 갖는다. 제2 메모리는 복수의 제2 메모리 중의 하나에 할당되며 할당된 제2 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 제2 슬롯을 포함한다. 제1 프록시 및 제2 프록시는 서로 통신 링크를 형성하도록 구성된다.

Description

고성능 클라이언트 서버 통신 시스템 {HIGH PERFORMANCE CLIENT-SERVER COMMUNICATION SYSTEM}
본 발명은 통신 시스템에 관한 것으로서, 특히 신속한 클라이언트 서버 통신을 제공하는 복수의 프록시(proxy)를 포함하는 클라이언트 서버 시스템에 관한 것이다.
클라이언트 서버 통신 시스템은 적어도 하나의 요청부(requesting party)와 그 요청부를 도와주는 적어도 하나의 응답부(responding party)를 구비하는 시스템이다. 클라이언트 서버 통신 시스템의 일례는 인터넷으로 알려진 네트워크의 전 세계적인 상호 연결망이다. 인터넷은 클라이언트 또는 서버일 수 있는 원시 노드(source node)로부터 또한 클라이언트 또는 서버일 수 있는 목적 노드(destination node)로 데이터 패킷(data packet)을 신뢰성 있게 전송하기 위하여 TCT/IP( Transport Control Protocol/Internet Protocol)을 사용한다. TCP/IP의 상부에 있는 여러 상위 레벨 프로토콜을 사용하여 디지털 데이터 객체를 전송하는데, 특정 프로토콜은 객체의 속성에 의존한다. 예를 들면, 전자메일(email)은 SMTP(Simple Mail Transport Protocol)과 POP3(Post Office Protocol 3)를 사용하여 전송되는 반면, 파일은 FTP(File Transfer Protocol)을 사용하여 전송된다. 하이퍼텍스트 문서 및 관련 효과는 HTTP(Hypertext Transport Protocol)을 사용하여 전송된다.
여러 하이퍼텍스트 문서가 다른 하이퍼텍스트 문서에 연결된 경우, 이들은 집합적으로 "웹(web)" 구조를 이루며, 이 때문에 HTTP를 사용하여 전송될 수 있는 하이퍼텍스트 문서의 총체를 "월드 와이드 웹(World Wide Web)"(종종 줄여서 "WWW" 또는 "Web")이라 한다. 물론, HTTP를 사용하여 전송되는 문서는 하이퍼링크(hyperlink)가 필요하지 않다. 사실, HTTP 요건에 적합하다면, 어떠한 객체라도 HTTP를 사용하여 전송될 수 있다.
일반적으로 HTTP를 사용할 때, 브라우저(browser)는 호스트(host)에게 URL(Uniform Resource Locator)을 비롯한 객체에 대한 요청을 보내고, 호스트는 브라우저가 표시할 객체(또는 객체를 이용할 수 없다는 오류 메시지)를 보낸다. 보통의 경우, 요청된 객체는 HTML(Hypertext Markup Language) 문서이고 호스트는 "웹서버(Web server)"라는 HTML 문서 서버이다. 브라우저는 HTTP 클라이언트의 일례이며, 이는 받은 하이퍼텍스트 문서를 표시하며 받은 문서에 인용된 다른 하이퍼텍스트 문서를 선택하고 표시할 기회를 사용자에게 부여함으로써 사용자가 하이퍼텍스트 문서를 "브라우즈(browse)"하도록 하기 때문에 이렇게 불린다. 웹서버는 HTTP 클라이언트가 요청한 하이퍼텍스트 문서 및 다른 데이터 객체를 보내는 인터넷 호스트이다.
본 발명의 과제는 복수의 프록시를 포함하는 클라이언트 서버 시스템으로 신속한 클라이언트 서버 통신 시스템을 제공하는 것이다.
도 1은 본 발명의 한 실시예에 따른 클라이언트 서버 시스템의 개략도이다.
도 2는 도 1의 클라이언트 서버 시스템에서 2개의 예시적인 서버의 개략도이다.
도 3a는 본 발명의 한 실시예에 따른 프로세스 마크 장치를 개략적으로 나타낸 도면이다.
도 3b는 본 발명의 한 실시예에 따른 프록시 마크 장치를 개략적으로 나타낸 도면이다.
도 4는 본 발명의 한 실시예에 따른 도 1의 클라이언트 서버 시스템에서의 데이터 흐름을 나타낸 흐름도이다.
도 5는 본 발명의 한 실시예에 따른 복수의 실행 서버에 연결된 웹서버의 개략도이다.
도 6a는 본 발명의 다른 실시예에 따른 복수의 실행 서버에 연결된 웹서버의 개략도이다.
도 6b는 본 발명의 한 실시예에 따른 웹서버의 개략도이다.
도 7은 본 발명의 한 실시예에 따른 도 6a의 클라이언트 서버 시스템에서의데이터 흐름을 나타낸 흐름도이다.
본 발명은 클라이언트 서버 통신에 관한 것이다. 본 발명의 한 실시예에서, 통신 시스템은 클라이언트 및 서버를 포함한다. 클라이언트는 제1 프록시, 제1 메모리 및 복수의 제1 프로세스(process)를 갖는다. 제1 메모리는 복수의 제1 슬롯(slot)을 포함하며, 각 제1 슬롯은 복수의 제1 프로세서에 할당되어 할당된 제1 프로세스가 전송 또는 수신할 데이터를 기억하도록 구성된다. 서버는 제2 프록시, 제2 메모리 및 복수의 제2 프로세스를 갖는다. 제2 메모리는 복수의 제2 슬롯을 포함하며, 각 제2 슬롯은 복수의 제2 프로세스에 할당되어 할당된 제2 프로세스가 전송 또는 수신할 데이터를 기억하도록 구성된다. 제1 프록시 및 제2 프록시는 나머지 하나와 통신 링크를 형성하도록 구성된다.
다른 실시예에서, 통신 시스템은 통신망에 연결되는 브라우저 시스템을 포함한다. 제1 서버 시스템은 통신망에 연결되며 복수의 제1 프로세스 및 프록시군(proxy group)을 갖는다. 제1 프록시군은 제1 공유 메모리 및 제1 프록시를 갖는다. 제1 공유 메모리는 복수의 제1 슬롯을 가지며, 제1 슬롯 각각은 복수의 제1 프로세스중 하나에 할당되어 할당된 제1 프로세서에 의해서 전송되거나 수신되는 데이터를 기억하도록 구성된다. 제1 서버 시스템은 복수의 프로세스 마크 장치와 한 개의 프록시 마크 장치를 더 포함하여 제1 프록시군의 데이터 흐름을 조절한다. 제2 서버 시스템은 통신망에 연결되며 복수의 제2 프로세스와 제2 프록시군을 갖는다. 제2 프록시군은 제2 공유 메모리와 제2 프록시를 가지며, 제1 프록시 및 제2 프록시는 서로 통신 링크를 이루도록 구성된다.
본 발명은 클라이언트 서버 통신에 관한 것으로서, 다음의 실시예를 통하여그 내용??르 상세하게 설명한다. 그러나 본 발명은 이 실시예에 한정되는 것이 아니라 첨부한 청구범위에 의해서만 한정된다.
도 1을 참조하면, 클라이언트 서버 시스템(100)은 인터넷(106)을 통하여 서버 시스템 또는 복수의 서버(104)에 연결되는 복수의 클라이언트(또는 브라우저)(102)를 포함한다. 시스템(100)은 클라이언트(102)가 서버 시스템(104)과 통신 링크를 만드는 것을 보조하는 이름 서버(name server)(108)를 포함한다. 이하에서 상세하게 설명하는 바와 같이, 서버 시스템(104) 자체는 적어도 하나의 요청부와 적어도 하나의 응답부를 갖는 클라이언트 서버 시스템을 구축한다.
클라이언트(102)는 실제 기계 또는 인터넷과 직간접적으로 연결될 수 있는 그런 기계에 내장된 소프트웨어일 수 있다. 기계의 예로는 데스크톱 개인용 컴퓨터, 워크스테이션, 셀룰러 폰, 개인용 휴대 단말기(personal digital assistant), 랩탑(laptop) 등이 있다. 소프트웨어의 예로는 넷스케이프 네비게이터(Netscape Navigator), 마이크로소프트 인터넷 익스플로러(Microsoft Internet Explorer) 등이 있다. 이러한 소프트웨어는 인터넷에서 이용 가능한 데이터를 브라우즈하는데 사용되므로 일반적으로 브라우저라 불린다. "브라우저"란 용어는 단지 본 발명을 설명할 목적으로 이하에서 클라이언트(102)와 상호 교환적으로 사용되며 본 발명의 범위를 제한하는 것으로 사용되어서는 아니 된다.
서버 시스템(104)은 인트라넷(intranet), 인터넷, 광역망(wide area network) 등의 링크를 통하여 복수의 실행 서버(executing server)(112)(클라이언트/서버)에 연결되는 복수의 웹서버(110)(클라이언트/서버)를 포함한다. 다른 구현에서, 웹서버(110)는 서버의 다른 형태일 수 있다. 웹서버(110)는 요청을 브라우저(102)로부터 수신하고, 요청 데이터를 검색하기 위하여 그 요청을 실행 서버(112)로 라우팅한다. "라우팅"이라는 용어는 브라우저로부터 수신된 요청에 응답하여 웹서버가 실행 서버로 전송하는 임의의 데이터 또는 요청의 전송을 포함하는 의미로 넓게 사용된다. 예를 들면, 웹서버(110)는 브라우저가 보내는 단일 요청에 응답하기 위하여 실행 서버(112)로 복수의 요청을 생성하거나 전송할 수 있다.
하나 이상의 실행 서버(112)로부터 요청 데이터를 수신하면, 웹서버(110)는 사용자가 볼 수 있도록 브라우저(102)로 데이터를 보낸다. 실행 서버(112)로부터 수신한 데이터를 전달하기 전에, 대개 웹서버는 수신 데이터를 리포맷(reformat)하거나, 유사하게 검색된 다른 데이터와 결합하거나 또는 하나 이상의 실행 서버(112)에 국지적으로 기억된 데이터와 결합한다. 이런 의미에서, 웹서버(110)는 클라이언트 및 서버 모두로 작용하는데, 실행 서버(112)에 대해서는 클라이언트이고 브라우저(102)에 대해서는 서버이다.
한 실시예에서, 웹서버(110) 및 실행 서버(112)는 Unix 운영 체제를 갖춘 마이크로컴퓨터이다. 일반적으로, 서버 시스템(104)은 20개까지의 웹서버(110)와 10개까지의 실행 서버(112)를 구비한다. 이와는 달리, 서버 시스템(104)은 더욱 많은 웹서버(110)와 실행 서버(112)를 구비할 수 있다. 웹서버 및 실행 서버 각각은 프로세스 또는 애플리케이션(application)을 운영하는데, 그 수는 보통 20개이지만 가끔은 더 많을 수 있다.
도 2를 참조하면, 통신 링크에 연결된 각각의 웹서버(110)는 실행 서버(112)의 프록시와 지속적인 TCP/IP 연결을 유지하는 프록시(202), 공유 메모리(shared memory) 및 복수의 프로세서(206)를 포함한다. 프록시에 의한 지속적인 연결로 인해 서버 시스템(104)의 자원을 더욱 효율적으로 활용할 수 있다. 프록시 사이의 연결은 프록시의 서버가 시스템(100)에 능동적으로 연결되는 한 유지되므로, "지속적인(enduring)" 것으로 표현된다.
일반적으로, 웹서버(110)와 실행 서버(112)의 프로세스 사이의 모든 연결은 개별 서버의 프록시가 제공하는 지속 연결을 통해 수행된다. 이런 연결이 없다면, 각각의 프로세스는 통신을 원하는 모든 프로세스에 독립적이며 임시적인 연결을 만들어야 한다. 이는 프로세스 사이에 수 만개 이상의 독립적인 연결을 만들고 유지해야 함을 의미한다. 이러한 시스템을 구현하기 위해서는 상당한 자원이 필요하다. 프로세스에 의해 형성된 연결은 원하는 통신을 수행하기에 충분한 만큼만 2개 프로세스 사이에 만들어지며 일단 통신이 종료된 후에는 연결이 차단되므로 "임시(temporary)"라는 말로 표현된다.
공유 메모리(204)는 메모리를 보호하는 멀티태스킹 운영체제에서 하나 이상의 프로세스에 의하여 액세스될 수 있는 메모리 맵 파일(memory mapped file)로 이루어진다. 프로세스(206)는 브라우저(102)가 보내는 요청을 다루기 위해 웹서버(110) 상에서 동작하는 HTTP 서버이다. 이 프로세스의 예로는 아파치 소프트웨어 파운데이션(Apache Software Foundation)사의 아파치 및 다른 유사한 HTTP 서버이다. 공유 메모리는 웹서버(110)가 다룰 수 있는 프로세스의 최대 수와 동일한 수의 슬롯을 포함하며, 각 슬롯은 별개의 프로세스에 할당된다.
본 발명의 한 실시예에서, 공유 메모리(204)는 웹서버가 다룰 수 있는 프로세스의 최대 수 N에 대응하는 N개의 슬롯을 포함한다. 한 실시예에서, N은 20이지만, 서버의 부하와 용량에 따라서 N 값은 달라질 수 있다.
각각의 슬롯(214)은 입력 공간(216) 및 출력 공간(218)을 포함한다. 입력 공간은 대응 프로세스(206)로부터 데이터를 수신하고 임시로 기억하여, 데이터가 프록시(202)를 통하여 순차적으로 실행 서버(112)로 전송되도록 한다. 한편, 출력 공간은 프록시(202)를 통해 실행 서버(112)로부터 데이터를 수신하고 임시로 기억하여, 웹서버(206)의 프로세스(206)가 데이터에 액세스하도록 한다. 한 실시예에서, 각각의 슬롯(214)은 4킬로바이트의 기억 공간을 가지며, 입력 공간(214)과 출력 공간(216) 각각은 2킬로바이트의 기억 공간이 할당된다.
공유 메모리 각 슬롯(214)에는, 프록시 마크 장치(proxy mark device)(220)와 프로세스 마크 장치(222)로 이루어지는 대응 마크 장치쌍(224)이 있어, 대응하는 공유 메모리 슬롯(214) 내에서 데이터 흐름을 조절한다(도 3a 참조). 프록시 마크 장치는 프록시(202)와 연관되어 있고, 프로세스 마크 장치는 프로세스(206)와 연관되어 있다. 이 마크 장치는 소정 디렉토리, 예를 들어 "/dev/mkd"에서 파일 시스템에 들어 있는 가상 장치 드라이버(virtual device driver)이다. 하지만, 도 2에서는 설명의 편의상 프록시와 공유 메모리 내에 각각 포함되도록 도시하였다.
프록시 및 프로세스 마크 장치(220, 222)는 읽기 모드와 쓰기 모드의 개별적인 2개 모드 셋트를 유지한다. 읽기 모드는 2개의 상태를 갖는데, "읽기 가능" 또는 "읽기 불능"이 그것이다. 쓰기 모드도 "쓰기 가능" 또는 "쓰기 불능" 2개의 상태를 갖는다. 이러한 모드와 상태는 프록시와 프로세스 사이에서 데이터 흐름을 조절한다.
프로세스(206)가 프록시(202)를 통해 실행 서버(112)로 메시지를 보내거나 데이터를 요청하고자 하는 경우, 먼저 프로세스 마크 장치를 검사하여 입력 공간(216)이 데이터를 수신할 수 있는지 여부를 결정한다. 프로세스 마크 장치가 "쓰기 불능" 상태인 경우, 프로세스는 대기하여야 한다. "쓰기 불능" 상태는 프록시가 입력 공간(206)에 있는 마지막 메시지를 읽지 않았음을 의미한다. 즉, 프록시 마크 장치가 "읽기 가능" 상태이다.
마지막 메시지를 읽은 경우, 프록시 마크 장치는 "읽기 불능" 상태로 전환한다. 이어, 프로세스 마크 장치(222)는 "쓰기 가능" 상태로 전환되며, 이는 입력 공간이 새로운 메시지를 수용할 수 있음을 나타낸다. 프로세스(206)는 요청 데이터를 입력 공간(216)에 복사하여 프로세스 마크 장치(222)에 써서 요청 데이터가 입력 공간에 복사되었음을 표시한다. 프로세스 마크 장치(222)에 쓰기 동작을 하면, 프로세스 마크 장치(222)는 "쓰기 불능" 상태가 되며 대응 프록시 마크 장치(220)는 "읽기 가능" 상태가 된다.
프록시 마크 장치(220)가 "읽기 가능" 상태로 전환되면 프록시는 대응 입력 공간(216)에 읽을 데이터가 있음을 알게 된다. 이 때, 프록시는 입력 공간에서 데이터를 읽은 후 프록시 마크 장치(220)를 읽어서 전송을 위한 데이터가 수용되었음을 표시한다. 프록시 마크 장치(220)에 읽기 동작을 하면, 프록시 마크 장치(220)는 "읽기 불능" 상태가 되고 대응 프로세스 마크 장치는 다시 "쓰기 가능" 상태가 된다.
프록시(202)에서 프로세스(206)로의 데이터 전송도 유사한 방식으로 이루어진다. 프록시는 먼저 프록시 마크 장치(220)를 검사하여 출력 공간(218)을 이용할 수 있는지 결정한다. 프록시 마크 장치(220)가 "쓰기 가능" 상태인 경우, 프록시는 출력 공간(218)에 데이터를 쓰고, 프록시 마크 장치(220)에 써서 데이터가 출력 공간에 써 있음을 표시한다. 프록시 마크 장치(220)에 쓰기 동작을 하면, 프록시 마크 장치(220)는 이를 "쓰기 불능" 상태가 되고, 대응 프로세스 마크 장치(222)는 출력 공간에서 데이터를 읽을 수 있음을 프로세스에게 알려주는 "읽기 가능" 상태로 된다. 프록시 마크 장치는 프로세스가 대응 프로세스 마크 장치(222)에 대한 읽기를 수행할 때까지 "쓰기 불능" 상태로 유지된다.
다시 도 2를 참조하면, 웹서버(110)처럼, 각 실행 서버(112)는 프록시(230), 복수의 슬롯을 갖는 공유 메모리(232) 및 복수의 프로세스(236)를 구비한다. 실행 서버는 복수의 입출력 공간(238, 240) 및 복수의 마크 장치쌍(246)을 더 포함한다. 마크 장치쌍은 프록시 및 프로세스 마크 장치(242, 244)(도 3b 참조)를 갖는다. 전술한 바와 같이, 마크 장치는 가상 장치 드라이브이며 파일 시스템에서 유지된다. 이들은 단지 설명의 목적으로 도 2의 공유 메모리와 프록시에 포함되도록 도시된다.
실행 서버의 구성요소는 웹서버(110)의 그것과 유사한 기능을 한다. 한가지 차이는 실행 서버(112)의 프로세스는 웹서버(110)의 프로세스가 전송하는 요청을다루기 위한 일반적인 애플리케이션인 반면, 웹서버의 프로세스는 실행 서버로 전송되는 요청을 생성하기 위한 일반적인 애플리케이션이라는 것이다. 그러므로 웹서버에 관한 전술한 설명은 실행 서버에도 동일하게 적용된다.
도 4를 참조하면, 본 발명의 한 실시예에 따른 클라이언트 서버 시스템(100)에서의 예시적인 데이터 흐름으로 처리 동작을 설명한다. 처리(400)는 서버에 요청을 하는 브라우저(102)로 개시된다(단계 402). 이 요청의 일례가 "my.yahoo.com"과 같은 특정 웹 페이지를 지정하는 URL이며, 전체 URL 주소는 "http://my.yahoo.com"이다. 도메인 네임 "my.yahoo.com"을 이름 서버(108)에 제출하여 서버 시스템(104)에서의 실제 주소를 결정한다. 이름 서버(108)는 서버 시스템(104) 내의 한 웹서버(110)의 IP 주소를 클라이언트에게 다시 보내준다(단계 404). 이름 서버(108)는 복수의 웹서버(110)에 균일하게 부하를 분산시키기 위하여 라운드 로빈 방식(round-robin fashion)으로 복수의 웹서버의 IP 주소를 다시 보낼 수 있다.
이와는 달리, 이름 서버(108)는 브라우저 주소를 추적하고 세분하여(hash) 그 브라우저에 대한 특정 웹서버를 선택함으로써 부하를 보다 확정적으로 분산시킬 수 있다. 확정적인 또는 라우팅된 접근으로 소정 브라우저는 항상 동일한 웹서버(110)에 액세스할 수 있다. 캐시 히트(cache hit)가 많아지는 것은 브라우저가 특정 웹서버로 항상 복귀하는 것과 유사하므로, 이러한 접근은 사용자 템플릿(template)을 보다 효율적으로 임시 저장하도록 한다.
실제 IP 주소를 수신함과 동시에, 브라우저는 적절한 웹서버(110), 즉 웹서버의 프로세스(206)에게 URL을 제출한다(단계 406). 웹서버(110)가 루트 디렉토리(root directory)에 대한 URL을 수신한 경우에 이를 사용자의 고객 요약 페이지(custom summary page)로 해석한다. 일반적으로, 사용자의 동일성(identity)은 URL이 아니라 브라우저가 제공하는 "쿠키(cookie)"로부터 결정된다. 이는 사용자가 로그인(log in)하는 장소에 관계없이 정확하게 식별되게 한다. 쿠키는 브라우저에 의해 기억된 일련의 데이터이며, 쿠기와 관련된 도메인을 갖는 URL에 대한 요청과 함께 보내진다.
웹서버가 클라이언트의 요청에 대한 응답을 생성하기 위하여, 하나 이상의 실행 서버에 데이터를 요청할 필요가 있다. 이러한 요청된 데이터의 일례로는 증권 시세, 뉴스 헤드라인 또는 배너 광고 등이다. 프록시는 그러한 요청에 대하여 슬롯(214), 즉 슬롯의 출력 공간(218)에 요청을 기억시키고 요청을 지정 받은 프로세스(206)에 할당한다. 프록시는 또한 프록시 마크 장치(220)에 써서 그 상태를 "쓰기 가능"에서 "쓰기 불능" 상태로 변경시킨다. 그 결과, 출력 공간에 할당된 프로세스 마크 장치는 "읽기 불능" 상태에서 "읽기 가능" 상태로 변경된다. 프로세스(206)는 출력 공간 내의 요청의 존재에 대하여 주의가 환기되고 그 요청을 검색한다. 일정한 경우에 그 요청은 한 프로세스 이상의 서비스를 요청하고 2개 이상의 프로세스(206)에 라우팅될 수 있다.
브라우저가 요청한 대로 "My Yahoo!" 페이지를 작성하기 위하여, 웹서버(110)는 여러 다른 소스로부터 데이터(예를 들어 뉴스, 증권시세, 날씨, 스포츠 등에 관한 정보)를 검색할 필요가 있다. 이러한 소스는 단일 실행 서버에서동작하는 프로세스이거나 여러 실행 서버에 분산된 프로세스일 수 있다. 일정한 경우에, 소스는 동일한 웹서버에서 동작하는 것을 포함하는 웹서버 상에 동작하는 프로세스일 수 있다. 웹서버는 브라우저의 요청에 응답하여 하나 이상의 실행 서버(112)로 전송되는 복수의 요청["서버 요청(server request)"]을 생성하여 "My Yahoo!" 페이지를 생성한다.
생성된 서버 요청은 적절한 목적 노드, 통상은 실행 서버의 프로세스(236)로 한 번에 하나씩 전송된다(단계 408). 보다 구체적으로, 프로세스(206)는 서버 요청 중 하나를 입력 공간(216)에 쓰고 프로세스 마크 장치(222)에도 쓴다. 프로세스 마크 장치는 "쓰기 가능" 상태에서 "쓰기 불능" 상태로 변경된다. 이에 응답하여 그 프로세스 마크 장치와 연관된 프록시 마크 장치가 "읽기 불능" 상태에서 "읽기 가능" 상태로 변경되며 데이터, 즉 서버 요청이 존재함을 프록시에게 환기시켜 해당 기억 공간에 전송되게 한다. 이어, 프록시(202)는 적절한 실행 서버로 서버 요청을 전송한다.
실행 서버(112)는 서버 요청을 수신하고 그 서버 요청을 보낸 프로세스(206)로 다시 응답을 보낸다. 보다 구체적으로, 실행 서버의 프록시(230)는 서버 요청을 수신하고 서버 요청이 지정되는 프로세스(236)에 할당된 출력 공간에 쓴다. 프록시는 또한 프록시 마크 장치(242)에도 써서 서버 요청을 출력 공간에 썼음을 나타낸다. 그 결과, 프록시 마크 장치는 "쓰기 가능" 상태에서 "쓰기 불능" 상태로 변경된다. 해당 입력 공간에 할당된 프로세스 마크 장치(244)는 "읽기 불능" 상태에서 "읽기 가능" 상태로 변경되어, 읽기 대기 중인 서버 요청을 프로세서(236)에게 환기시킨다.
프로세스(236)는 서버 요청을 읽어서 그 프로세스에 할당된 입력 공간에 쓸 응답을 생성한다. 해당 입력 공간과 관련된 프로세스 마크 장치(244)는 "쓰기 가능" 상태에서 "쓰기 불능" 상태로 변경된다. 이에 응답하여, 그 프로세스 마크 장치와 연관된 프록시 마크 장치는 전송되어야 하는 응답의 프록시를 환기시킨다. 프록시(230)는 서버 요청을 전송한 프로세스(206)에 그 응답을 전송한다. 응답은 브라우저가 보낸 요청과 관련하여 전술한 바와 같이, 프록시(202)와 출력 공간(218)을 통해 웹서버의 프로세스(206)에 전송된다. 유사한 방식으로 프로세스(206)는 다른 서버 요청에 대한 응답을 수신한다. 모든 응답을 수신함과 동시에, 웹서버의 프로세스는 수신된 데이터를 결합시켜 클라이언트에게 전송한다(단계 412).
서버 시스템(104)은 여러 상이한 모드, 즉 노멀(normal), 라우팅(routed), 키(keyed) 또는 이들의 결합 모드로 동작하도록 구성된다. 사용되는 모드에 따라서, 웹서버는 상이한 알고리즘을 사용하여 실행 서버에 액세스한다. 노멀 모드에서, 웹서버(110)는 부하를 균일하게 분산시키는 라운드 로빈 방식으로 실행 서버(112)에 액세스한다. 이 모드에서, 모든 실행 서버(112)는 실질적으로 유사한 서비스를 제공하여, 각 요청이 실행 서버에 의해 균등하게 처리될 수 있다고 가정한다. 라우팅 요청의 목표는 이용 가능한 실행 서버 사이에 균일한 부하 분산과 개별 실행 서버에 대한 오류의 방지이다.
라우팅 모드에서, 웹서버(110)는 동일한 실행 서버(112)에 유사한 요청(예를들면, 동일한 사용자를 대신하여 요청하는 것)을 보낸다. 노멀 모드에서처럼, 라우팅 모드에서도 모든 실행 서버는 실질적으로 유사한 서비스를 제공하여, 각 요청이 임의의 실행 서버에 의해 처리될 수 있다고 가정한다. 하지만 라우팅 모드에서, 동일한 실행 서버에 동일한 형태의 반복적인 요청을 라우팅할 때에는 이점이 있다. 이 이점은 선행 요청으로부터 임시 저장된 결과(또는 부분적인 결과)를 재사용하는 것으로부터 유도할 수 있다. 예를 들면, 사용자 피터슨이 저장된 증권 명세표(portfolio)에서 증권의 현재 시세를 요청한 경우, 웹서버(110)는 실행 서버(112)에 증권 명세표의 증권 목록을 요청할 수 있다. 실행 서버(112)는 디스크에서 피터슨의 증권 명세표 내용을 로딩(loading)할 수 있고, 나중의 요청을 대비하여 메모리에 임시 저장한다. 피터슨이 연속적으로 웹 페이지를 리프레쉬(refresh)하여 증권 명세표를 업데이트하는 경우, 증권 명세표는 여전히 캐시(cache)에 있으므로, 원래 요청을 수행했던 동일한 실행 서버로 후속 요청을 라우팅하는 것이 유리하다. 원래 요청을 수행했던 실행 서버가 이용 불능한 경우, 다른 실행 서버로 후속 요청을 라우팅할 수 있으며, 다른 실행 서버는 공유 디스크 시스템에서 다시 증권 명세표를 로딩할 수 있다.
키 모드에서, 웹서버(110)는 요청된 형태에 따라서 상이한 실행 서버로 요청을 보내도록 지정된다. 예를 들면, 피터슨의 클럽 사진(club photo)에 대한 요청은 항상 이 사진에 액세스한 소정 실행 서버로 지정된다. 유사하게, 다른 실행중인 특정의 서버 요청은 해당하는 실행 서버로 전송된다.
한 실시예에서, 서버 시스템(104)은 이러한 모드 하에 동작한다. 즉, 일부웹서버(110)는 노멀 모드로 동작하는 반면, 다른 서버는 라우팅 모드로 동작한다. 일정한 경우, 웹서버(110)는 각각이 상이한 모드로 동작하는 복수의 다중 프록시 그룹을 통해서 통신할 수 있다. 예를 들면, 제1 프록시군은 라우팅 모드에서, 제2 프록시군은 키 모드에서, 제3 프록시군은 노멀 모드에서 동작할 수 있다.
도 5는 본 발명의 한 실시예에 따라 복수의 실행 서버 또는 실행 서버군(516, 526, 536)에 연결된 웹서버(500)를 나타낸다. 실행 서버(516, 526, 536)를 단일 서버로 도시하였지만, 각각의 실행 서버는 하나 이상의 서버를 포함하는 일단의 실행 서버들을 나타낼 수 있다. 웹서버는 복수의 프로세스(501)와 복수의 프록시군(510, 520, 530)을 포함한다. 프록시군 각각은 대개는 특정 실행 서버 또는 실행 서버군에 전속되어 있다. 예를 들면, 프록시군(510)은 광고 정보를 검색하는 임무를 띠고, 실행 서버 또는 하나 이상의 개별 실행 서버로 이루어지며 실행 서버 각각이 광고 정보에 액세스하는 실행 서버군(516)에 전속된다. 프록시군(520)은 사용자 정보를 검색하는 임무를 띠고, 실행 서버 또는 하나 이상의 개별 실행 서버로 이루어지며 실행 서버 각각이 사용자 정보 또는 사용자 데이터베이스에 액세스하는 실행 서버군(526)에 전속된다. 프록시군(530)은 플랫폼 고유 데이터(platform specific data)를 검색하는 임무를 띠고, 실행 서버 또는 하나 이상의 개별 실행 서버로 이루어지며 실행 서버 각각이 플랫폼 상세 데이터에 액세스하는 실행 서버군(536)에 전속된다. 플랫폼 고유 데이터는 사용자가 원하는 웹 페이지에 특유한 데이터이다. 예를 들면, "My Yahoo!" 페이지를 작성하는데 필요한 데이터는 일반적인 "Yahoo!" 페이지를 작성하는 데이터와는 다를 수 있다.
각각의 프록시군은 공유 메모리 및 프록시를 포함한다. 즉, 프록시군(510)은 공유 메모리(512)와 프록시(514)를 가지며, 프록시군(520)은 공유 메모리(522)와 프록시(524)를 가지며, 프록시군(530)은 공유 메모리(532)와 프록시(534)를 갖는다. 한 실시예에서, 공유 메모리는 프록시군 내의 프록시에 전속된다.
도 6a는 본 발명의 다른 실시예에 따라 복수의 실행 서버 또는 실행 서버군(608, 610, 612)에 연결된 웹서버(600)를 나타낸다. 도 5에서와 같이, 실행 서버(608, 610, 612)는 일단의 실행 서버를 나타낼 수 있다. 웹서버는 복수의 프로세스(601)와 단일한 공유 프록시군(602)을 포함한다. 다른 구현에서, 웹서버는 복수의 공유 프록시군을 가짐으로써, 부하(load)가 이 공유 프록시군 사이에 분산될 수 있도록 한다.
한 실시예에서, 프록시 프로세스가 개시되면, 프로세스가 초기 구성으로서 기여할 특정 프록시군과 연관되며, 예를 들면 프로세스가 기여할 프록시군의 이름은 동일하다. 일반적으로, 군(608) 내의 모든 실행 서버는 제1 명명군(named group)에 기여하며, 군(610) 내의 서버는 제2 명명군에, 군(612) 내의 서버는 제3 명명군에 기여한다. 이러한 명명군은 본 발명의 한 실시예에 따라 차별화된 군이다.
프로세스(601)는 브라우저(102)가 제출하는 요청을 다루기 위하여 웹서버(602) 상에서 동작하는 HTTP 서버이다. 프로세스(601)는 클라이언트(102)로부터 제1 요청 즉 브라우저 요청을 수신한 후, 클라이언트 요청을 처리함과 동시에 제2 즉 프로세스 요청을 전송한다. 각 프로세스 요청은 대응하는 브라우저 요청을충족시키는데 필요한 여러 형태의 데이터에 관한 정보를 포함한다. 나중에 아주 상세하게 설명하는 바와 같이, 프로세스(601)는 메모리(603)를 포함하여 프로세스 요청을 충족시키기 위하여 실행 서버로 전송되는 복수의 프록시 요청에 응답하여 실행 서버로부터 수신되는 응답 데이터를 임시로 기억한다. 한 실시예에서, 메모리는 모든 또는 실질적으로 모든 데이터를 수신할 때까지 실행 서버로부터의 데이터를 기억한다. 그 후, 프로세스는 실행 서버로부터 수신된 데이터를 이용하여 브라우저(102)용의 적절한 포맷(예를 들어 HTML 포맷) 파일을 생성하여 클라이언트에게 그 파일을 전송한다.
도 6a 및 도 6b를 참조하면, 공유 프록시군은 공유 메모리(604) 및 공유 프록시(606)를 갖는다. 프록시군(510, 520, 530)과는 달리, 공유 프록시군은 복수의 실행 서버로 요청을 보내고 응답을 수신할 수 있다. 각 실행 서버는 보통 상이한 정보를 제공하는데 전속된다. 예를 들면, 단일 공유 프록시군은 실행 서버(608)에서 광고 정보를 액세스하는데, 실행 서버(610)에서 사용자 정보를 액세스하는데 그리고 실행 서버(612)로부터 플랫폼 고유 정보를 액세스하는데 사용될 수 있다. 이와는 달리, 플랫폼 고유 데이터는 복수의 실행 서버로부터 얻을 수 있다.
공유 메모리(604)는 메모리가 보호되는 멀티태스킹 운영 체제에서 복수의 프로세스가 접근 가능한 메모리 맵 파일로 구성된다(도 6b). 공유 메모리(604)는 웹서버가 다룰 수 있는 최대 수의 프로세스와 동일한 수의 슬롯(614)을 포함하며, 각 슬롯은 개별 프로세스에 할당된다.
각 슬롯(614)은 입력 공간(616)과 출력 공간(618)을 포함한다. 입력 공간은대응 프로세스(601)로부터 데이터 또는 프로세스 요청을 수신하고 임시로 기억하여, 공유 프록시(606)를 통하여 실행 서버(112)로 그 요청을 차례로 전달한다. 한 실시예에서, 슬롯에 기억된 프로세스 요청은 그 프로세스 요청을 충족시키기 위하여 필수 정보를 검색할 필요가 있는 복수의 실행 서버를 식별한다. 실행 서버는 자신이 제공하는 정보의 형태에 따라 분류되므로, 선택된 실행 서버의 통신 주소를 제공하거나 필요한 데이터의 형태를 기술함으로써 식별할 수 있다. 한 실시예에서, 공유 메모리 슬롯을 통해 프록시(606)를 통해 제출된 각각의 요청은 프록시군 이름을 포함하여, 프록시(606)가 그 요청을 어느 실행 서버 또는 서버군(608, 610, 612)으로 라우팅할지 결정할 수 있다. 한편, 출력 공간은 공유 프록시(606)에 의해 실행 서버(112)로부터 데이터를 수신하고 임시로 기억하여, 웹서버의 프로세스(601)가 그 데이터에 액세스하게 한다.
도 1 내지 4를 관련하여 전술한 라우팅모드는 이러한 소정 실시예에도 적용될 수 있다. 예를 들면, 광고 전송용 실행 서버(608), 사용자 정보용 실행 서버 또는 서버군(610) 및 실행 서버 또는 서버군(612)은 본 발명의 한 실시예에 따라 각각 노멀 모드, 라우팅 모드 및 키 모드를 사용할 수 있다. 그 외의 모드 결합을 다른 구현에 사용할 수 있다.
한 실시예에서, 단일 프록시군을 갖는 웹서버(602)는 복수의 프로세스 마크 장치(620)와 단일 프록시 마크 장치(622)를 포함하여 전술한 데이터 흐름을 조절한다(도 6b). 각 프로세스 마크 장치는 그에 대응하는 프로세스(601) 및 슬롯(614)에 할당되어 프로세스와 마크 사이에서 데이터 흐름을 조절한다. 프록시 마크 장치는 복수의 프로세스 마크 장치와 함께 적절한 슬롯에 액세스하며 프록시 요청을 실행 서버로 전송하고 실행 서버에서 수신된 데이터를 공유 메모리에 임시로 기억시킨다.
프로세스 마크 장치(620)는 2개의 개별적인 모드 셋트, 즉 읽기 모드와 쓰기 모드를 유지한다. 읽기 모드는 "읽기 가능" 상태 또는 "읽기 불능" 상태의 2개 상태를 가지며, 쓰기 모드는 "쓰기 가능" 상태 또는 "쓰기 불능" 상태의 2개 상태를 갖는다. 이러한 모드 및 상태는 프록시와 프로세스 사이에서 데이터 흐름을 조절한다.
프로세스가 프록시(606)를 통하여 실행 서버로 메시지 또는 요청을 보내고자 하는 경우, 먼저 프로세스 마크 장치를 검사하여 입력 공간(616)이 데이터를 수용할 수 있는지 결정한다. 프로세스 마크 장치가 "쓰기 불능" 상태인 경우에 프로세스는 대기하여야 한다. "쓰기 불능" 상태는 입력 공간(618)에 있는 마지막 메시지를 아직 읽지 않았음을 나타낸다.
일단 마지막 메시지를 읽은 경우, 프로세스 마크 장치(620)는 "쓰기 가능" 상태로 전환되어, 입력 공간이 새로운 메시지를 수용할 수 있음을 나타낸다. 그 후, 프로세스는 요청을 입력 공간에 복사하며 프로세스 마크 장치에 써서 요청이 입력 공간에 복사되었음을 나타낸다. 프로세스 마크 장치(620)에 쓰는 동작은 프로세스 마크 장치가 "쓰기 불능" 상태가 되게 한다.
프로세스 마크 장치의 이러한 변화는 입력 공간(616)에 읽을 데이터가 있음을 프록시에게 환기시킨다. 프록시는 먼저 입력 공간에서 데이터를 읽은 다음, 입력 공간의 데이터가 전송용으로 수용되었음을 나타내도록 프록시 마크 장치를 읽는다. 프록시 마크 장치를 읽는 동작은 프로세스 마크 장치가 다시 "쓰기 가능"으로 되게 한다. 프록시(606)는 전송될 메시지를 가진 다음 입력 공간을 선택한다.
프록시(606)에서 프로세스(601)로의 데이터 전송 방식도 유사하게 이루어진다. 프록시는 먼저 프로세스 마크 장치(620)를 검사하여 출력 공간(618)이 이용가능한지를 결정하여야 한다. 프로세스 마크 장치(620)가 "쓰기 가능" 상태인 경우, 프록시는 출력 공간(618)에 데이터를 쓸 수 있고 프록시 마크 장치에 데이터를 출력 공간에 썼음을 나타내도록 쓴다. 프록시 마크 장치에 쓰는 동작은 출력 슬롯에 대응하는 프로세스 마크 장치가 "읽기 가능" 상태로 되게 하며, 출력 공간에서 데이터를 읽을 수 있음을 프로세스(601)에게 환기시킨다.
도 7은 본 발명의 한 실시예에 따라 복수의 웹서버(600)와 실행 서버(608, 610, 612)를 갖는 클라이언트 서버 시스템(100)에서 예시적인 데이터 흐름을 나타내는 흐름도이다. 한 실시예에서, 실행 서버는 웹서버(600)와 관련하여 전술한 것과 실질적으로 동일한 구성을 갖는다. 이와는 달리, 실행 서버는 실행 서버(112)와 실질적으로 동일한 구성을 가질 수 있다(도 2).
웹서버(110)와 실행 서버(112) 대신에 웹서버(600)와 실행 서버(608, 610, 612)를 사용한 것을 제외하고는 도 1에 도시한 클라이언트 서버 시스템을 사용하여 흐름(700)을 설명한다. 흐름은 브라우저가 서버(104)에 요청하면서 개시된다(단계 702). 이 요청의 일례가 "my.yahoo.com"과 같은 특정 웹 페이지를 지정하는 URL이며, 전체 URL 주소는 "http://my.yahoo.com"이다. 도메인 네임 "my.yahoo.com"을이름 서버(108)에 제출하여 서버 시스템(104)에서의 실제 주소를 결정한다. 이름 서버(108)는 서버 시스템(104) 내의 한 웹서버(600)의 IP 주소를 클라이언트에게 다시 보내준다(단계 704). 이름 서버(108)는 복수의 웹서버(600)에 균일하게 부하를 분산시키기 위하여 라운드 로빈 방식(round-robin fashion)으로 복수의 웹서버의 IP 주소를 다시 보낼 수 있다.
실제 IP 주소를 수신함과 동시에, 브라우저는 웹서버의 적절한 프로세스(601)에 URL을 제출한다(단계 706). 웹서버가 루트 디렉토리에 대한 URL을 수신한 경우에 이를 사용자의 고객 요약 정보로 해석한다. 일반적으로, 전술한 바와 같이 사용자의 동일성은 URL이 아니라, 브라우저(102)가 제공하는 "쿠키"로부터 결정된다.
프로세스(601)가 클라이언트의 요청("제1 요청")에 응답을 생성하기 위하여, 프로세스는 일반적으로 복수의 실행 서버로부터 데이터를 요청할 필요가 있다. 이러한 요청 데이터의 일례로는 주식 시세, 스포츠, 뉴스, 전자메일 및 배너 광고 등이 있다. 프로세스(601)는 제2 요청 또는 프로세스 요청을 공유 메모리(604)에 보내고 프로세스 요청은 그 프로세스에 할당된 입력 슬롯(616)에 기억된다. 프로세스(601)는 슬롯에 대응하는 프로세스 마크 장치에 써서 그 마크 장치의 상태를 "쓰기 가능"에서 "쓰기 불능"으로 변경시킨다. 그 결과, 프록시(606)는 슬롯 내의 프로세스 요청의 존재에 대한 주의가 환기되어 프로세스 요청을 검색한다(단계 708).
프로세스 요청은 브라우저가 요청하는 "My Yahoo!" 페이지를 작성하기 위하여 웹서버(602)가 필요로 하는 여러 형태의 데이터를 나타내는 정보(예를 들어, 뉴스, 증권 시세, 날씨, 스포층 등에 관한 정보)를 포함한다. 여기서 사용하는 프로세스 요청 또는 요청이라는 용어는 제1 구성요소에서 제2 구성요소로 전달되어 제2 구성요소에 의해서 소정 동작을 개시하기 위한 임의의 정보 또는 메시지를 말한다. 그 요청은 패키지 형태 또는 다른 형태일 수 있다.
프로세스 요청을 검색함과 동시에, 웹서버는 "My Yahoo!" 페이지를 작성하기 위하여 프록시(606)에 의하여 하나 이상의 실행 서버로 전송될 복수의 프록시 요청 또는 제3 요청을 생성한다(단계 710). 프록시 요청은 적절한 목적 노드, 즉 실행 서버의 프로세스로 한번에 하나씩 전송된다. 프록시 요청은 일반적으로 원하는 응답 데이터의 순서에 따라 전송되어 "My Yahoo" 페이지를 작성하는데 제일 필요한 데이터를 먼저 수신할 수 있다.
실행 서버들, 예를 들어 실행 서버(608)는 프록시 요청을 수신하고, 그 요청을 보낸 프로세스(601)로 다시 응답을 보낸다(단계 712). 이 응답은 프록시 요청을 보낸 모든 실행서버로부터 실질적으로 요청된 데이터 모두를 수신할 때까지 메모리(603)에 기억된다. 일정한 경우, 실행 서버로부터의 응답 데이터는 순서가 바뀌어 프로세스에 도달하는데, 이는 망경로(network path)와 실행 서버가 부담하는 부하가 균일하지 않기 때문이다. 웹서버의 프로세스는 모든 응답을 수신함과 동시에, 수신된 데이터를 결합하여 적절한 HTML 파일을 생성한다(단계 714). 이 후, 프로세스는 클라이언트에게 HTML 파일을 전송하여(단계 716), "My Yahoo!" 페이지를 브라우저가 표시하도록 한다.
여기서 사용한 "실시예(embodiment)"와 "구현(implementation)"은 상호 교환적으로 사용된다. 따라서, 어느 용어가 본 발명의 광협의 양상을 나타내는 것으로 해석되어서는 아니 된다.
본 발명의 여러 변형은 상기 기재를 검토하는 동안 당업자에게 명백할 것이다. 따라서, 본 발명의 범위는 상기 기재를 참조하는 것이 아니라 전체 균등 범위와 함께 첨부된 청구범위를 참조하여 정하여야 한다.
따라서, 본 발명은 복수의 프록시 또는 프록시군을 포함하여 클라이언트 서버 통신 시스템의 속도를 증가시킬 수 있다.

Claims (30)

  1. 제1 프록시를 갖는 제1 클라이언트, 복수의 제1 프로세스(process), 그리고 상기 복수의 제1 프로세스 중 하나에 각각이 할당되며 상기 할당된 제1 프로세스에 의해 전송되고 수신되는 데이터를 기억하는 복수의 제1 슬롯을 갖는 제1 메모리, 그리고
    제2 프록시를 갖는 서버, 복수의 제2 프로세서, 그리고 상기 복수의 제2 프로세스 중 하나에 할당되는 복수의 제2 슬롯을 가지며 상기 할당된 제2 프로세스에 의해 전송되고 수신되는 데이터를 기억하도록 구성되는 제2 메모리
    를 포함하며,
    상기 제1 프록시 및 상기 제2 프록시는 서로 통신 링크(communication link)를 형성하도록 구성되는
    통신 시스템.
  2. 제1항에서,
    상기 제1 클라이언트는 웹서버(Web server)이며,
    상기 서버는 상기 제1 클라이언트의 클라이언트인 제2 클라이언트를 더 포함하는 실행 서버(executing server)인
    통신 시스템.
  3. 제2항에서,
    상기 제1 클라이언트는 웹서버이며 상기 제2 클라이언트는 브라우저(browser)인 통신 시스템.
  4. 제1항에서,
    상기 제1 슬롯 각각은
    상기 제1 프록시를 통하여 목적 노드(destination node)로 전송되며 제1 입력 공간과 연관된 상기 제1 프로세스에 의해 생성되는 데이터를 임시로 기억하는 제1 입력 공간, 그리고
    상기 제1 프록시를 통하여 원시 노드로부터 수신되며 제1 출력 공간과 연관된 상기 제1 프로세스로 지정되는 상기 데이터를 임시로 기억하는 제1 출력 공간
    을 포함하는 통신 시스템.
  5. 제4항에서,
    상기 제1 입력 장치 중 하나에 할당되어 데이터를 상기 제1 입력 장치에 쓸 수 있는 지를 나타내며, 상기 제1 출력 장치 중 하나에 할당되어 상기 제1 프록시를 통해 상기 원시 노드로부터 수신한 데이터를 포함하고 있는 지를 나타내는 복수의 마크 장치(mark device)를 더 포함하는 통신 시스템.
  6. 제5항에서,
    제2 슬롯 각각은,
    상기 제2 프록시를 통해 목적 노드로 전송되며 제2 입력 공간과 연관된 상기 제2 프로세스에 의해 생성되는 데이터를 임시로 저장하는 제2 입력 공간, 그리고
    상기 제2 프록시를 통해 원시 노드로부터 수신되며 제2 출력 공간과 관련된 상기 제2 프로세스로 지정되는 상기 데이터를 임시로 저장하는 제2 출력 공간
    을 포함하는 통신 시스템.
  7. 제6항에서,
    상기 제2 입력 장치 중 하나에 할당되어 데이터를 상기 제2 입력 장치에 쓸 수 있는 지를 나타내며, 상기 제2 출력 장치 중 하나에 할당되어 상기 제2 프록시를 통해 상기 원시 노드로부터 수신한 데이터를 포함하고 있는 지를 나타내는 복수의 마크 장치를 더 포함하는 통신 시스템.
  8. 제1항에서,
    상기 복수의 제1 클라이언트 및 상기 복수의 서버가 있는 통신 시스템.
  9. 복수의 브라우저,
    제1 프록시, 복수의 제1 프로세스, 상기 복수의 제1 프로세스 중 하나에 할당되어 할당된 상기 제1 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 제1 슬롯을 갖는 제1 공유 메모리, 그리고 상기 제1 슬롯에 할당되어 상기 제1 프로세스에 의해 상기 제1 슬롯으로부터 데이터를 읽고 쓸 수 있는 지를 나타내도록 동작하는 복수의 마크 장치를 포함하며, 상기 복수의 브라우저로부터의 요청을 처리하는 복수의 웹서버, 그리고
    제2 프록시, 복수의 제2 프로세스, 상기 복수의 제2 프로세스 중 하나에 할당되어 할당된 상기 제2 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 제2 슬롯을 갖는 제2 공유 메모리, 그리고 상기 제2 슬롯에 할당되어 상기 제2 프로세스에 의해 상기 제2 슬롯으로부터 데이터를 읽고 쓸 수 있는 지를 나타내도록 동작하는 복수의 마크 장치를 포함하며, 상기 웹서버와 통신하는 복수의 실행 서버
    를 포함하며,
    상기 제1 프록시 및 상기 제2 프록시는 서로 통신 링크를 형성하도록 구성되는 통신 시스템.
  10. 제1 프록시, 제1 공유 메모리 및 복수의 제1 프로세스를 갖는 제1 클라이언트 그리고 제2 프록시, 제2 공유 메모리 및 복수의 제2 프로세스를 갖는 서버를 포함하는 통신 시스템에서 데이터를 전송하는 방법으로서,
    상기 제1 프로세스 중 하나에서 상기 제2 프로세스 중의 하나로 전송되는 요청(request)을 생성하는 단계,
    상기 제1 프로세스 중의 하나에 각각이 할당된 복수의 제1 슬롯을 갖는 상기 제1 공유 메모리에 상기 요청을 기억시킴으로써, 상기 요청을 생성한 상기 제1 프로세스에 할당된 상기 제1 슬롯에 상기 요청을 기억시키는 단계,
    상기 제1 프록시를 통하여 상기 제1 슬롯에 기억된 상기 데이터를 상기 서버로 전송하는 단계,
    상기 제1 프록시와 통신 링크된 상기 제2 프록시를 통하여 상기 전송된 요청을 수신하는 단계,
    상기 제2 프로세스 중 하나에 각각이 할당된 복수의 제2 슬롯을 갖는 상기 제2 공유 메모리에 상기 수신된 요청을 기억시킴으로써, 데이터가 지정된 상기 제2 프로세스에 할당되는 상기 제2 슬롯에 수신된 상기 데이터를 기억시키는 단계, 그리고
    상기 제2 슬롯에 기억된 상기 데이터를 읽는 단계
    를 포함하는 방법.
  11. 제10항에서,
    상기 통신 시스템은 상기 제1 클라이언트 중 하나인 제2 클라이언트를 더 포함하며, 상기 서버로 전송되는 상기 요청은 상기 제2 클라이언트에 의해 상기 제1 클라이언트로 전송되는 요청에 응답하여 생성되는 방법.
  12. 제11항에서,
    상기 제1 클라이언트는 웹서버이고 상기 제2 클라이언트는 브라우저인 방법.
  13. 제10항에서,
    상기 제1 슬롯 각각은 제1 입력 공간을 포함하고, 상기 제1 슬롯에 기억된 상기 요청은 상기 제1 슬롯의 상기 제1 입력 공간에 기억되는 방법.
  14. 제13항에서,
    상기 제1 클라이언트는 상기 제1 입력 공간 중의 하나에 각각이 할당되는 복수의 마크 장치를 더 포함하는 방법으로서,
    상기 데이터가 상기 제1 입력 공간에 기억된 후에 상기 제1 입력 공간이 데이터를 포함하고 있음을 나타내도록 상기 마크 장치의 상태를 변경시키는 단계
    를 더 포함하는 방법.
  15. 제13항에서,
    상기 각각의 제2 슬롯은 제2 출력 공간을 포함하고 상기 제2 슬롯에 기억된 상기 요청은 상기 제2 슬롯의 상기 제2 출력 공간에 기억되는 방법.
  16. 제15항에서,
    상기 서버는 상기 제2 출력 공간 중 하나에 각각이 할당되는 복수의 마크 장치를 더 포함하는 방법으로서,
    상기 데이터가 상기 제2 출력 공간에 기억된 후에 상기 제2 출력 공간이 데이터를 포함하고 있음을 나타내도록 상기 마크 장치의 상태를 변경시키는 단계
    를 더 포함하는 방법.
  17. 제10항에서,
    상기 복수의 제1 클라이언트와 상기 복수의 서버가 있는 방법.
  18. 제10항에서,
    상기 요청을 수신하는 제2 프로세스 내에서, 상기 요청에 대한 응답을 생성시키는 단계,
    상기 제2 프로세스 중 하나에 각각이 할당되는 복수의 제2 슬롯을 갖는 상기 제2 공유 메모리에 상기 요청을 기억시킴으로써, 상기 응답을 생성시킨 상기 제2 프로세스에 할당된 상기 제2 슬롯에 상기 응답을 기억시키는 단계,
    상기 제2 프록시를 통해 상기 제2 슬롯에 기억된 상기 응답을 상기 제1 클라이언트에 전송하는 단계,
    상기 제1 프록시를 통해 상기 전송된 응답을 수신하는 단계,
    상기 제1 공유 메모리에 수신된 데이터를 기억시킴으로써, 상기 요청을 전송한 상기 제1 프로세스에 할당되는 상기 제1 슬롯에 상기 수신된 데이터를 기억시키는 단계, 그리고
    상기 제1 슬롯에 기억된 상기 응답을 읽는 단계
    를 더 포함하는 방법.
  19. 복수의 프로세스를 갖는 통신 시스템 내외로 데이터를 전송하는 방법으로서,
    상기 통신 시스템 상에서 동작하는 프로세스 중 하나를 이용하여 데이터를 생성하는 단계,
    공유 메모리에 상기 데이터를 기억시키는 단계, 그리고
    상기 통신 시스템에 제공되는 프록시를 이용하여 목적 노드로 저장된 상기 데이터를 전송하는 단계
    를 포함하는 방법.
  20. 제19항에서,
    상기 통신 시스템은 클라이언트 또는 서버인 방법.
  21. 제19항에서,
    상기 공유 메모리는 상기 프로세스 중 하나에 각각이 할당된 복수의 슬롯을 가지며, 상기 공유 메모리에 기억된 데이터는 상기 데이터를 생성한 상기 프로세스에 할당된 상기 슬롯에 기억되는 방법.
  22. 제21항에서,
    상기 통신 시스템은 상기 슬롯의 내외로 데이터 흐름을 조절하기 위하여 상기 슬롯의 각각에 할당되는 복수의 마크 장치를 포함하는 방법.
  23. 통신망에 연결되는 브라우저 시스템,
    상기 통신망에 연결되며, 복수의 제1 프로세스 그리고 제1 공유 메모리 및 제1 프록시를 갖는 제1 프록시군을 가지고, 상기 제1 프록시군의 데이터 흐름을 조절하기 위하여 복수의 프로세스 마크 장치와 단일 프록시 마크 장치를 더 포함하는 제1 서버 시스템, 그리고
    상기 통신망에 연결되며, 복수의 제2 프로세스 그리고 제2 공유 메모리 및 제2 프록시를 갖는 제2 프록시군을 갖는 제2 서버 시스템
    을 포함하며,
    상기 제1 공유 메모리는 상기 복수의 제1 프로세스 중 하나에 각각이 할당되어 할당된 상기 제1 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 슬롯을 가지며,
    상기 제1 프록시 및 상기 제2 프록시는 서로 통신 링크를 형성하도록 구성되는
    통신 시스템.
  24. 제23항에서,
    상기 제1 서버 시스템은 웹서버이고, 상기 제2 서버 시스템은 실행 서버인 통신 시스템.
  25. 제23항에서,
    상기 제1 슬롯 각각은,
    상기 제1 프록시를 통하여 목적 노드로 전송될 데이터를 임시로 기억하는 제1 입력 공간, 그리고
    상기 제1 프록시를 통하여 원시 노드로 수신되는 데이터를 임시로 기억하는 제1 출력 공간
    을 포함하는 통신 시스템.
  26. 제23항에서,
    상기 복수의 제1 서버 시스템 및 상기 복수의 제2 서버 시스템이 있는 통신 시스템.
  27. 제23항에서,
    상기 제1 서버 시스템은 프록시군의 데이터 흐름을 조절하기 위하여 복수의 프로세스 마크 장치 및 단일 프록시 마크 장치를 각각이 포함하는 복수의 프록시군을 포함하는 통신 시스템.
  28. 제23항에서,
    상기 제2 공유 메모리는 상기 복수의 제2 프로세스 중 하나에 각각이 할당된 복수의 제2 슬롯을 가지며 상기 할당된 제2 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되는 복수의 제2 슬롯을 가지며,
    상기 제2 서버 시스템은 상기 제2 프록시군의 데이터 흐름을 조절하기 위하여 복수의 프로세스 마크 장치 및 단일 프록시 마크 장치를 더 포함하는
    통신 시스템.
  29. 복수의 브라우저,
    상기 복수의 브라우저로부터의 요청을 처리하며, 복수의 제1 프로세스 및 제1 공유 메모리와 제1 프록시를 갖는 제1 프록시군을 각각이 가지고, 상기 제1 프록시군에 할당되는 복수의 마크 장치 및 단일 프록시 마크 장치를 각각이 포함하는 복수의 웹서버, 그리고
    상기 웹서버와 통신하며, 복수의 제2 프로세스 및 제2 공유메모리와 제2 프록시를 갖는 제2 프록시군을 각각이 가지고, 상기 제2 프록시군에 할당되는 복수의 프로세스 마크 장치 및 단일 프록시 마크 장치를 각각이 포함하는 실행 서버
    를 포함하고,
    상기 제1 공유 메모리는 상기 복수의 제1 프로세스 중 하나에 각각이 할당되는 복수의 슬롯을 가지며 상기 할당된 제1 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되고,
    상기 제2 공유 메모리는 상기 복수의 제2 프로세스 중 하나에 각각이 할당되는 복수의 슬롯을 가지며 상기 할당된 제2 프로세스에 의해 전송되거나 수신되는 데이터를 기억하도록 구성되며,
    상기 제1 프록시군과 상기 제2 프록시군은 서로 통신 링크를 형성하도록 구성되는
    통신 시스템.
  30. 통신 시스템 내의 서버로서,
    복수의 프로세스,
    상기 통신 시스템 내의 다른 노드와 통신 링크를 제공하며 공유 메모리 및 프록시를 갖는 프록시군, 그리고
    상기 복수의 프로세스 및 상기 프록시군에 할당되어 상기 공유 메모리의 내외로 데이터 흐름을 조절하며 복수의 프로세스 마크 장치 및 단일 프록시 마크 장치를 갖는 마크 장치군
    을 포함하는 서버.
KR1020020004145A 2001-01-25 2002-01-24 고성능 클라이언트 서버 통신 시스템 KR100856515B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/770,762 US7325030B2 (en) 2001-01-25 2001-01-25 High performance client-server communication system
US09/770,762 2001-01-25

Publications (2)

Publication Number Publication Date
KR20020062850A true KR20020062850A (ko) 2002-07-31
KR100856515B1 KR100856515B1 (ko) 2008-09-04

Family

ID=25089606

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020004145A KR100856515B1 (ko) 2001-01-25 2002-01-24 고성능 클라이언트 서버 통신 시스템

Country Status (5)

Country Link
US (1) US7325030B2 (ko)
EP (1) EP1227638B1 (ko)
JP (1) JP4504609B2 (ko)
KR (1) KR100856515B1 (ko)
DE (1) DE60235666D1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100483741B1 (ko) * 2002-10-31 2005-04-19 주식회사 케이티프리텔 무선 인터넷 서비스를 위한 다중 프록시 게이트웨이 연동방법
KR100929852B1 (ko) * 2007-09-20 2009-12-04 한국전자통신연구원 공유 메모리를 이용한 가상 기계 상의 응용프로그램 간통신 인터페이스 장치 및 그 방법

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7325030B2 (en) 2001-01-25 2008-01-29 Yahoo, Inc. High performance client-server communication system
US7581230B2 (en) * 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
US7320023B2 (en) * 2001-02-23 2008-01-15 Sun Microsystems, Inc. Mechanism for caching dynamically generated content
US8601492B2 (en) * 2001-03-31 2013-12-03 Siebel Systems, Inc. User interface for multi-channel communication
US20030206192A1 (en) * 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US7177931B2 (en) * 2001-05-31 2007-02-13 Yahoo! Inc. Centralized feed manager
US8103713B2 (en) * 2001-10-09 2012-01-24 Jade Acquisition Corporation System and method for managing service interactions
US8091042B2 (en) 2001-11-15 2012-01-03 Siebel Systems, Inc. Apparatus and method for displaying selectable icons in a toolbar for a user interface
US7103671B2 (en) * 2002-03-14 2006-09-05 Yahoo! Inc. Proxy client-server communication system
US7490073B1 (en) 2004-12-21 2009-02-10 Zenprise, Inc. Systems and methods for encoding knowledge for automated management of software application deployments
BRPI0816037B1 (pt) * 2007-09-27 2021-01-19 Ronald N. Hilton aparelho para descarregar processameto de dados, sistema de descarregamento de processamento de dados, e, método implementado por máquina de descarregamento de processamento de dados
JP5520462B2 (ja) * 2008-09-02 2014-06-11 ヤフー株式会社 メモリ管理サーバ、方法及びプログラム
KR20120134287A (ko) * 2011-06-02 2012-12-12 주식회사 비씨클라우드 동적 웹 라우팅 방법
JP7147367B2 (ja) * 2018-08-23 2022-10-05 富士通株式会社 制御装置及び制御プログラム
CN111949292B (zh) * 2020-07-30 2023-03-21 锐捷网络股份有限公司 一种热补丁装载方法、装置、电子设备及存储介质

Family Cites Families (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2702579B1 (fr) 1993-03-12 1995-05-24 Bull Sa Dispositif de communication entre au moins un client et au moins un serveur, procédé d'utilisation du dispositif et utilisation du dispositif.
DE4342586A1 (de) * 1993-12-14 1995-06-22 Bosch Gmbh Robert Anzeigeeinrichtung für elektrische Steuergeräte
US5754854A (en) 1994-11-14 1998-05-19 Microsoft Corporation Method and system for providing a group of parallel resources as a proxy for a single shared resource
US5850517A (en) 1995-08-31 1998-12-15 Oracle Corporation Communication link for client-server having agent which sends plurality of requests independent of client and receives information from the server independent of the server
JPH09212397A (ja) 1996-01-31 1997-08-15 Toshiba Corp ファイル読み出し方法
US5867661A (en) 1996-02-15 1999-02-02 International Business Machines Corporation Method and apparatus of using virtual sockets for reducing data transmitted over a wireless communication link between a client web browser and a host web server using a standard TCP protocol
US5881230A (en) * 1996-06-24 1999-03-09 Microsoft Corporation Method and system for remote automation of object oriented applications
US6535929B1 (en) * 1996-07-02 2003-03-18 Sun Microsystems, Inc. Universal communication mechanism for applications running in a multitasking environment
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5950195A (en) 1996-09-18 1999-09-07 Secure Computing Corporation Generalized security policy management system and method
US5983350A (en) 1996-09-18 1999-11-09 Secure Computing Corporation Secure firewall supporting different levels of authentication based on address or encryption status
US5870559A (en) 1996-10-15 1999-02-09 Mercury Interactive Software system and associated methods for facilitating the analysis and management of web sites
WO2000072167A1 (en) * 1999-05-20 2000-11-30 Hwang Ivan Chung Shung A method and apparatus for implementing a workgroup server array
US5905872A (en) 1996-11-05 1999-05-18 At&T Corp. Method of transferring connection management information in world wideweb requests and responses
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
JPH10177548A (ja) * 1996-12-18 1998-06-30 Casio Comput Co Ltd セッション管理システム
US6205489B1 (en) * 1999-01-05 2001-03-20 Whowhere, Inc. Method for providing an internet protocol address with a domain name server
JPH10334058A (ja) * 1997-05-27 1998-12-18 Shikoku Nippon Denki Software Kk オンラインシステムと負荷分散方式
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US6006268A (en) 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
US5991810A (en) 1997-08-01 1999-11-23 Novell, Inc. User name authentication for gateway clients accessing a proxy cache server
US6567861B1 (en) * 1997-09-17 2003-05-20 International Business Machines Corporation Method and apparatus for remotely running objects using data streams and/or complex parameters
JPH1196115A (ja) * 1997-09-22 1999-04-09 Toshiba Corp クライアントサーバ間の会話処理装置及び方法並びに記録媒体
US5974566A (en) 1997-10-07 1999-10-26 International Business Machines Corporation Method and apparatus for providing persistent fault-tolerant proxy login to a web-based distributed file service
US5991756A (en) 1997-11-03 1999-11-23 Yahoo, Inc. Information retrieval from hierarchical compound documents
JP3665460B2 (ja) 1997-12-05 2005-06-29 富士通株式会社 分散自律協調型の応答時間チューニングによる経路選択システム、方法、及び記録媒体
US6321336B1 (en) 1998-03-13 2001-11-20 Secure Computing Corporation System and method for redirecting network traffic to provide secure communication
US6148336A (en) 1998-03-13 2000-11-14 Deterministic Networks, Inc. Ordering of multiple plugin applications using extensible layered service provider with network traffic filtering
US6671745B1 (en) * 1998-03-23 2003-12-30 Microsoft Corporation Application program interfaces and structures in a resource limited operating system
US6148337A (en) 1998-04-01 2000-11-14 Bridgeway Corporation Method and system for monitoring and manipulating the flow of private information on public networks
JP3707927B2 (ja) 1998-04-14 2005-10-19 富士通株式会社 サーバスループット予約システム
US6073175A (en) 1998-04-27 2000-06-06 International Business Machines Corporation Method for supporting different service levels in a network using web page content information
US6457063B1 (en) 1998-04-30 2002-09-24 Sun Microsystems, Inc. Method, apparatus & computer program product for dynamic administration, management and monitoring of daemon processes
US6311216B1 (en) 1998-05-29 2001-10-30 Microsoft Corporation Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
US6446109B2 (en) 1998-06-29 2002-09-03 Sun Microsystems, Inc. Application computing environment
JP2000057041A (ja) 1998-08-11 2000-02-25 Hitachi Ltd プロキシサーバ及びlanシステム
US6499036B1 (en) * 1998-08-12 2002-12-24 Bank Of America Corporation Method and apparatus for data item movement between disparate sources and hierarchical, object-oriented representation
US6314459B1 (en) 1998-08-13 2001-11-06 U.S. Philips Corporation Home-network autoconfiguration
US6502135B1 (en) 1998-10-30 2002-12-31 Science Applications International Corporation Agile network protocol for secure communications with assured system availability
US6507577B1 (en) 1998-11-12 2003-01-14 Nortel Networks Limited Voice over internet protocol network architecture
US6557056B1 (en) * 1998-12-30 2003-04-29 Nortel Networks Limited Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment
EP1018689A3 (en) * 1999-01-08 2001-01-24 Lucent Technologies Inc. Methods and apparatus for enabling shared web-based interaction in stateful servers
US6625624B1 (en) * 1999-02-03 2003-09-23 At&T Corp. Information access system and method for archiving web pages
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6757250B1 (en) 1999-04-12 2004-06-29 Mindspeed Technologies, Inc. Methods and apparatus for data communications through packet networks
US6931600B1 (en) 1999-05-07 2005-08-16 Autodesk, Inc. Integrating into an application objects that are provided over a network
US6594671B1 (en) 1999-06-14 2003-07-15 International Business Machines Corporation Separating privileged functions from non-privileged functions in a server instance
US6597699B1 (en) 1999-09-28 2003-07-22 Telefonaktiebolaget Lm Ericsson (Publ) Quality of service management in a packet data router system having multiple virtual router instances
US6792463B1 (en) 1999-10-21 2004-09-14 International Business Machines Corporation System, method and program product for providing invisibility to a proxy-server
DE60033615T2 (de) 1999-10-21 2007-10-31 International Business Machines Corp. Verfahren und System, um das Verteilen von IP-Datagrammen auf mehrere Server gemäß einer definierten Strategie zu erzwingen
US7111079B2 (en) 2000-02-23 2006-09-19 Koninklijke Philips Electronics, N.V. Architecture of a bridge between a non-IP network and the web
US6865151B1 (en) 2000-06-28 2005-03-08 Nortel Networks Limited Methods and systems for optimizing data transmission in networks
US20020078371A1 (en) * 2000-08-17 2002-06-20 Sun Microsystems, Inc. User Access system using proxies for accessing a network
US20020099829A1 (en) 2000-11-27 2002-07-25 Richards Kenneth W. Filter proxy system and method
US20020078164A1 (en) 2000-12-13 2002-06-20 Marnetics Ltd. System and method for data transfer acceleration in a TCP network environment
US7325030B2 (en) 2001-01-25 2008-01-29 Yahoo, Inc. High performance client-server communication system
US7089558B2 (en) 2001-03-08 2006-08-08 International Business Machines Corporation Inter-partition message passing method, system and program product for throughput measurement in a partitioned processing environment
BR0201115A (pt) 2002-04-02 2005-02-22 Coppe Ufrj Memória cooperativa distribuìda colapsada para sistemas de mìdia-sob-demanda interativa e escalável

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100483741B1 (ko) * 2002-10-31 2005-04-19 주식회사 케이티프리텔 무선 인터넷 서비스를 위한 다중 프록시 게이트웨이 연동방법
KR100929852B1 (ko) * 2007-09-20 2009-12-04 한국전자통신연구원 공유 메모리를 이용한 가상 기계 상의 응용프로그램 간통신 인터페이스 장치 및 그 방법

Also Published As

Publication number Publication date
DE60235666D1 (de) 2010-04-29
US7325030B2 (en) 2008-01-29
EP1227638B1 (en) 2010-03-17
JP2002288058A (ja) 2002-10-04
US20020099768A1 (en) 2002-07-25
EP1227638A3 (en) 2004-04-14
JP4504609B2 (ja) 2010-07-14
KR100856515B1 (ko) 2008-09-04
EP1227638A2 (en) 2002-07-31

Similar Documents

Publication Publication Date Title
KR100856515B1 (ko) 고성능 클라이언트 서버 통신 시스템
US6377991B1 (en) Method, computer program product, and system for migrating URLs within a dynamically changing distributed cache of URLs
US6311216B1 (en) Method, computer program product, and system for client-side deterministic routing and URL lookup into a distributed cache of URLS
US6341311B1 (en) Directing data object access requests in a distributed cache
US7769823B2 (en) Method and system for distributing requests for content
US6490615B1 (en) Scalable cache
US6122666A (en) Method for collaborative transformation and caching of web objects in a proxy network
US7640347B1 (en) Method and system for inserting POST data into the GET request to apply normal caching rules
US6360262B1 (en) Mapping web server objects to TCP/IP ports
US7543069B2 (en) Dynamically updating session state affinity
US6253234B1 (en) Shared web page caching at browsers for an intranet
US6542964B1 (en) Cost-based optimization for content distribution using dynamic protocol selection and query resolution for cache server
US20090327460A1 (en) Application Request Routing and Load Balancing
US20110161458A1 (en) Techniques For Delivering Personalized Content With A Real-Time Routing Network
US6865605B1 (en) System and method for transparently redirecting client requests for content using a front-end indicator to preserve the validity of local caching at the client system
US20050097185A1 (en) Localization link system
Baker et al. Distributed cooperative Web servers
PL183401B1 (pl) Komputer serwera dołączany do sieci i sposób jego eksploatacji
JPH10320337A (ja) 分散データ管理方法
KR20030040206A (ko) 애플리케이션 캐싱 시스템 및 방법
JP4663948B2 (ja) アノニマスなサブジェクトベース・アドレッシングの方法および装置
US7103671B2 (en) Proxy client-server communication system
JP2005122358A (ja) ウェブコンテンツ配信システム、ウェブコンテンツ配信プログラム及びプロクシサーバ
JP2002024191A (ja) Wwwシステム、wwwサーバのトラフィック緩和方法、及びwwwサーバ
JP2002073578A (ja) 分散オブジェクトシステム

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

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130801

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140811

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150730

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 12