KR20150048861A - 오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법 - Google Patents

오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법 Download PDF

Info

Publication number
KR20150048861A
KR20150048861A KR1020157008112A KR20157008112A KR20150048861A KR 20150048861 A KR20150048861 A KR 20150048861A KR 1020157008112 A KR1020157008112 A KR 1020157008112A KR 20157008112 A KR20157008112 A KR 20157008112A KR 20150048861 A KR20150048861 A KR 20150048861A
Authority
KR
South Korea
Prior art keywords
ccp
heap
asp
heap memory
memory
Prior art date
Application number
KR1020157008112A
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
Application filed by 유미,잉크. filed Critical 유미,잉크.
Publication of KR20150048861A publication Critical patent/KR20150048861A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • 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
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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
    • 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/99931Database or file accessing
    • Y10S707/9994Distributed or remote access

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

오프-힙(off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크상에서 데이터를 제공하는 방법은 네트워크와 연결된 어플리케이션 서버에서 요청된 데이터의 요구를 수신하는 단계와 요청된 데이터가 어플리케이션 서버의 오프-힙(off-heap) 메모리에 저장되어 있는 위치를 찾기 위해 상기 어플리케이션 서버에 저장된 키 인덱스 (key index)를 이용하는 단계와 어플리케이션 서버의 오프-힙(off-heap) 메모리로부터 요청된 데이터를 복구하는 단계와 상기 요청을 해결하는 단계로 이루어진다.

Description

오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법{NETWORK SERVICE SYSTEM AND METHOD WITH OFF-HEAP CACHING}
본 발명은 일반적으로 실시간 환경에서 물리적 메모리(physical memory)를 관리하기 위한 컴퓨터화된 시스템에 관한 것이다.
종종 "e-커머스"로 알려진 전자 상거래는 인터넷과 같은 전자 시스템을 통해 제품이나 서비스의 구매 및 판매를 포함한다. 수행되는 전자 무역의 양은 인터넷 기술의 광범위한 채택과 함께 엄청나게 성장했다. 전자 상거래의 성장의 하나의 특히 폭발적인 영역은 광고 분야 및 특히 인터넷상에서의 영상광고분야이다.
인터넷상에서 영상의 전송을 포함하고, 인터넷 기능("웹 네트워크 서비스 시스템")을 지원하는 많은 네트워크 서비스 시스템은 오라클 코포레이션(Oracle Corporation)로부터 이용 가능한 자바 소프트웨어 플램폼(Java software platform:등록상표)과 같은 객체 지향형의(object-oriented) 혹은 의사 객체 지향형(pseudo object-oriented)의 소프트웨어 플랫폼으로 수행된다. 자바의 특징 중 하나는 휴대가능성이고, 이것은 자바 언어로 쓰여진 컴퓨터 프로그램이 어떠한 하드웨어/실행-시스템 플랫폼상에서 유사하게 작동되는 것을 의미한다. 이것은 자바 언어 코드가 직접적으로 플랫폼-별 머신코드에 축적되는 것이 아니라 자바 바이트코드(bytecode)라고 불리는 인터미디어트 레프리젠테이션 (intermediate representation)에 축적됨으로써 달성된다. 자바 바이트코드 명령어는 머신코드와 유사하지만, 특히 호스트 하드웨어를 위해 작성된 가상 머신(vertual machine)에 의해 해석되도록 의도된다. 표준화된 라이브러리는 그래픽, 스레딩(threading) 및 네트워킹(networking)과 같은 호스트-별 특징에 접근하는 일반적인 방법을 제공한다.
자바로 쓰여진 웹 서비스 어플리케이션을 위한 가장 중요한 성능 문제들 중 하나는 "힙"(the heap")으로 알려진 가상 메모리 공간의 일부에 수집되는 쓰레기 데이터이다. 힙이 쓸모없는 객체들(objects)로 채워지는 것을 막기 위해, "가비지 콜렉션(garbage collection)"으로 알려진 프로세스가 더 이상 쓸모없는 객체를 제거하는데 사용될 수 있다. 가비지 콜렉션의 수행은 "오버헤드(overhead)"와 관련이 있는데, 이는 다른 프로세스가 반드시 보류되어야 하는 시간이다. 아주 짧은 시간 동안 힙에 존재하는 자바 객체는 가비지 콜렉션 동안 오버헤드에 경미하게 기여한다. "올드 제너레이션 스페이스(old generation space)"로 옮겨질 만큼 충분히 오래 힙에 존재하는 객체는 가비지 콜렉션 동안 높은 오버헤드를 갖는다.
자바는 자동 가비지 콜렉터를 사용하여 객체 라이프사이클에서 메모리를 관리한다. 프로그래머는 객체가 언제 생성되는지를 결정하고, 일단 객체가 더 이상 쓸모가 없으면 자바 구동시간이 메모리 회복에 책임이 있다. 도달할 수 없는(unreachable) 메모리가 일단 남겨진 객체와 관련이 없으면 가비지 콜렉터에 의해 자동적으로 없어지기에(be freed) 적합하게 된다. 프로그래머 코드가 더이상 필요 없는 객체와의 관련을 유지하고 있으면, 일반적으로 더 이상 필요 없는 객체가 아직 사용되는 컨테이너안에 저장되어 있으면, 메모리 누수와 유사한 무엇인가가 발생할 수 있다. 존재하지 않는 객체의 메소드(method)가 호출되면, "널 포인터 예외(null pointer exception"가 버려진다.
자바는 다양한 유형의 가비지 콜렉터를 포함한다. 일반적인 가비지 콜렉션은 선택적으로 "컨커런트 마스크 스윕 콜렉터(Concurrent Mask Sweep Collector)" 와 "CMS 가비지 콜렉터"로 알려져 있다. 하지만 자바 힙 메모리를 관리하는데 사용될 수 있는 여러 다른 가비지 콜렉터도 있다.
자바의 자동 메모리 관리 모델 뒤에 아이디어 중 하나는 프로그램머들이 수동적인 메모리 관리를 수행해야 하는 부담을 면할 수 있다는 것이다. 불행하게도, 자바와 함께, 가비지 콜렉션은 언제든지 일어날 수 있다. 이상적으로는, 프로그램이 실행 중이지 않을 때 발생할 것이다. 하지만, 만약 힙에 새로운 객체를 위치시킬만한 프리 메모리가 불충분할 경우 가비지 콜렉션이 유발되며, 프로그램을 일시적으로 중지시킬 수 있다. 분명한 메모리 관리는 자바에서 불가능하다.
영상 전송 시스템과 같이 자바로 쓰여진 웹 서비스 어플리케이션에 대한 가장 중요한 성능 문제 중 하나는 힙에서의 데이터의 가비지 콜렉션이다. 매우 짧은 시간 동안 존재하는 자바 객체는 가비지 콜렉션 동안 거의 오버헤드(overhead) 를 가지지 않는다. 하지만 올드 제너레이션 스페이스로 옮겨지기 충분히 길게 존재하는 객체는 가비지 콜렉션동안 높은 오버헤드 (overhead) 를 가진다. 가비지 콜렉션이 자동적이므로, 중요한 어플리케이션 프로그램이 보류될 수 있으며, 제 때에 어플리케이션 프로그램이 수행되는 것을 막는다.
예를 들어, 인터넷을 기반으로 영상 광고를 전송하는 광고 시스템에서, 광고 (“ad”) 수행 시스템은 10 내지 20 밀리세컨드 안에 결정 윈도우(decision window)를 필요로 하며, 결정을 내리는데 필요한 모든 데이타는 이 어플리케이션 프로세스의 가상 메모리 안에 캐시 되어야 한다. 가비지 콜렉션이 힙 메모리에서 개시되면, 어플리케이션 프로그램은 보류되고 결정 윈도우는 손실된다.
종래 기술의 이러한 또는 다른 한계는 다음의 설명을 읽고 도면의 여러 특징를 연구함으로써, 당업자라면 명백해질 것이다.
한정이 아니라 예시의 방식으로 개시된 실시 예에서, 오프-힙 캐싱을 구비한 네트워크 서비스 시스템은 복수의 어플리케이션 서버와 복수의 캐시 서버 및 상기 어플리케이션 서버를 상기 캐시 서버에 결합시킨 근거리 네트워크 통신망 라우터(local area network router)를 포함한다. 복수의 어플리케이션 서버 각각은 ASP 메모리와 ASP 오프-힙 메모리 (ASP off-heap memory)를 가지는 ASP 가상 메모리 공간을 구비한 어플리케이션 서버 프로세스 (ASP)를 작동시킨다. 복수의 캐시 서버 각각은 CSP 지수와 CSP 프로세스와의 커뮤니케이션 하는 캐시 구성 프로세스(CCP)을 가지는 캐시 서버 프로세스 (CSP)와 CCP 힙 메모리와 CCP 오프-힙 메모리 (CCP off-heap memory)를 구비한 CCP 가상 메모리공간을 가지는 CCP 프로세스 작동시키며, 상기 CSP 프로세스는 상기 CCP 오프-힙 메모리 (CCP off-heap memory)에 저장된 CCP 버퍼 복사본과 상기 CSP 지수에 액세스를 을 제공한다.
근거리 네트워크 통신망(LAN) 라우터는 복수의 어플리케이션 서버를 복수의 캐시 서버에 결합시키고 ASP 프로세스가 상기 CCP 버퍼의 복사본을 ASP 오프-힙 메모리에 저장하며, 상기 ASP 버퍼에 접근하기 위한 키 인덱스(key index)를 사용한다.
한정이 아니라 예시의 방식으로 개시된 실시 예에서, 인터넷 상에서 오프-힙 캐싱을 구비한 어플리케이션 서버를 사용하면서 데이터를 제공하는 방법은:
네트워크와 연결된 어플리케이션 서버에서 요청된 데이터의 요청을 수신하는 단계; 요청된 데이터가 어플리케이션 서버의 오프-힙 메모리에 어느 위치에 있는지 찾아내기 위해 상기 어플리케이션 서버에 저장된 중요한 인덱스를 사용하는 단계; 상기 어플리케이션 서버의 오프-힙 메모리로부터 요청된 데이터를 복구하는 단계; 요청을 해결하는 단계를 포함한다.
한정이 아니라 예시의 방식으로 개시된 실시 예에서, 네트워크 서비스 시스템에 오프-힙 캐싱을 제공하는 방법은:
(a) ASP 힙 메모리(ASP Heap memory)와 ASP 오프-힙 메모리 (ASP off-heap memory)를 구비한 ASP 가상 메모리 공간을 가지는 어플리케이션 서버 프로세스 (ASP)를 각 각 구동하는 복수의 어플리케이션 서버를 제공하는 단계; (b) CSP 지수와 CSP 프로세스와 커뮤니케이션 하면서 캐시 구성 프로세스 (CCP)를 가지는 캐시 서버 프로세스 (CSP)를 각각 구동하고, 상기 CCP 프로세스는 CCP 힙 메모리(CCP Heap memory)와 CCP 오프-힙 메모리 (CCP off-heap memory)를 가지며, 상기 CSP 프로세스는 상기 CCP 프로세스는 상기 CCP 오프-힙 메모리 (CCP off-heap memory)에 저장된 CCP 버퍼 (buffers)의 데이터와 상기 CSP 지수에 액세스를 제공하는 것을 특징으로 하는 복수의 캐시 서버를 제공하는 단계; (c) 상기 복수의 어플리케이션 서버와 상기 복수의 캐시 서버를 결합시켜 상기 ASP 프로세스가 상기 ASP 오프-힙 메모리 (ASP off-heap memory)의 CCP 버퍼(buffers)에 데이터의 복사본을 저장하고 상기 키 인덱스 (key index)를 사용하여 상기 CCP 버퍼(buffers)로부터 데이터의 복사본에 접근하는 것을 특징으로 하는 근거리 네트워크 (LAN) 라우터(router)를 제공하는 단계를 포함한다.
특정 실시예의 이점은 오프-힙 저장으로 인한 가비지 콜렉션의 필요가 줄어든다는 점이고 이는 오프-힙 저장소의 사용에서 기인하며, 이는 시스템 오버 헤드와 ASP 서비스 중단을 감소시킨다. 이러한 및 또 다른 이점들은 다음의 설명 및 여러 도면의 연구를 통해, 당업자에게는 명백해질 것이다.
이제, 동일한 구성부품은 동일한 참조번호를 갖는 도면을 참조하여, 여러 예시적인 실시예를 설명한다. 예시적인 실시예는 본원에 개시한 개념을 예시하는 것이며 한정하려고 의도한 것은 아니다. 도면은 아래의 도를 포함한다.
도 1은 오프-힙 캐싱을 구비한 네트워크 서비스 시스템의 예시적인 블록도이다.
도 2는 도1의 예시적인 네트워크 서비스 시스템의 일부를 형성하는 서버, 컴퓨터, 마이크로 프로세서 제어 장치에 대한 하드웨어 구성을 나타내는 예시적인 블록도이다.
도 3은 도 1의 네트워크 서비스 시스템의 어플리케이션 서버(AS)와 캐시 서버(CS) 간의 예시적인 특정 상호작용을 나타낸다.
도 4는 캐시 구성 프로세스(CCP) 설치 방법의 예시적인 흐름도이다.
도 4A는 도 4의 예시적인 캐시 구성 프로세스(CCP) 설치 방법의 도시를 돕는다.
도 5는 캐시 구성 프로세스(CCP)의 예시적인 업데이트 과정의 흐름도이다.
도 6은 어플리케이션 서버의 개시를 위한 예시적인 과정의 흐름도이다.
도 7은 어플리케이션 서버 프로세스(ASP)의 예시적인 업데이트 과정의 흐름도이다.
도 8은 예시적인 어플리케이션 서버 프로세스(ASP)의 흐름도이다.
도 1은 오프-힙 캐싱을 구비한 예시적인 네트워크 서비스 시스템 (10)의 블록도이다. 예시적인 네트워크 서비스 시스템 (10) (종종 “데이터 센터”라고도 언급됨)은 복수의 어플리케이션 서버 (12)와 랜 라우터(LAN router) (18)을 포함하여 근거리 네트워크 통신망(LAN) (16)을 구성하는 복수의 캐시 서버 (14)를 포함한다. 예시적인 네트워크 서비스 시스템 (10)은 복수의 캐시 서버 (14)에 연결된 데이터베이스 서버 (20)과 복수의 어플리케이션 서버 (12)에 연결된 원거리 네트워크 (WAN)라우터 (22) 또한 포함한다.
비 한정하는 예시에서, 복수의 어플리케이션 서버 (12)는 N 어플리케이션 서버 AS1, AS2, AS3, AS4 …ASN을 포함한다. 비 한정하는 예시에서, 복수의 캐시 서버 (14)는 M 캐시 서버 CS1, CS2, …CSM을 포함한다. 당업자가 주지하는 바와 같이, 어플리케이션 서버 (12)와 캐시 서버 (14)와 같은 서버들은 일반적으로 네트워크 사용을 목적으로 고안된 마이크로프로세서에 기반한 컴퓨터 시스템이다.
랜(LAN) 라우터 (18)은 바람직하게는 부하 분산기(load balancer)를 포함하여 랜 (16)의 향상성을 높힌다. 가령, 랜 라우터 (18)은 복수의 어플리케이션 서버(12)를 복수의 캐시 서버 (18)에 연결시켜 특정 어플리케이션 서버가 특정 캐시 서버와 연관된다. 예를 들어, 만약 어플리케이션 서버 (AS2)가 복수의 캐시 서버 (14) 중 하나와 아직 연관되지 않으면 상기 라우터 (18)의 부하 분산기는 당업자에게도 잘 알려진 부하 분산 기준에 근거하여 복수의 캐시 서버 (14) 중 하나를 할당한다. 예를들어, (AS2)는 그것의 캐시 서버를 지원하기 위해 캐시 서버 (CS1)으로 할당된다. 일단 관계가 확정되면 (AS2)와 (CS1)은 라우터 (18)을 통해 직접적으로 커뮤니케이션한다.
원거리 네트워크(WAN) 라우터 (22) 역시 바람직하게는 부하 분산기(LB)를 포함하여 상기 네트워크 서비스 시스템 (10)과 원거리 네트워크 (24)간의 소통의 효율성을 높힌다. 가령, 거리 네트워크 라우터 22는 접속부 (26)에 의해 원거리 네트워크 (24)에 연결되고 원거리 네트워크 (24)의 인터넷 서비스 제공자 (ISP)에 연결되며 또한 복수의 어플리케이션 서버들 (12) 각각에 연결된다.
데이터 요구가 새로운 요청자로부터 접속부 (26)을 통해 수신되면, 라우터 (22)의 부하 분산기 (load balancer LB)가 복수의 어플리케이션 서버 (12) 중 하나를 할당하여 당업자에게 잘 알려진 부하 분산기준에 근거하여 요청을 처리한다. 가령, 새로운 요청이(예를 들어, 인터넷을 통해 통신하는 컴퓨터 혹은 모바일 장치) 어플리케이션 서버 (AS4)에 할당된다. 일단 관계(the relationship)이 형성이 되면, 라우터 (22)를 통해 상기 새로운 요청자는 직접적으로 어플리케이션 AS4와 통신한다.
도 2는 시스템 (10)에서 사용하기 적합한 컴퓨터 및/또는 서버 (28)의 간단한 블록도이다. 비 한정 예시의 방식을 통해, 컴퓨터 (28)은 메모리 버스 (32)와 입력/출력 (I/O) 버스 (34)에 결합된 마이크로 프로세서 (30)을 포함한다. 많은 메모리 및/또는 고속 장치가 RAM 36, SRAM 38 및 VRAM 40과 같은 메모리 버스 (32)에 연결될 수 있다. 입력/출력 버스 (34)에 부착된 다양한 입력/출력 장치들은 매스 스토리지 (42), 네트워크 인터페이스 (44)와 기타 입력/출력 장치 (46)이다. 당업자가 주지하는 바와 같이, 매체를 읽을 수 있고 RAM (36), SRAM (38), VRAM (40)과 매스 스토리지 (42)와 같은 마이크로 프로세서 (30)에 이용 가능한 비-일시적인 컴퓨터가 많이 있다. 상기 네트워크 인터페이스 (44)와 다른 입력/출력 장치(46)은 역시 매체를 읽을 수 있는 컴퓨터 예를 들면 레지스터,캐시, 버퍼 등을 포함한다. 매스 스토리지 (42)는 두 서너가지만 예를 들자면 하드디스크 드라이브, 옵티컬 드라이브(optical drive)와 플래시 드라이브를 포함하는 다양한 종류들이 될 수 있다.
도 3은 복수의 어플리케이션 서버 (12) 중 어플리케이션 서버 (AS)(12')와 복수의 캐시 서버 14 중 캐시 서버 (CS) (14') 간의 특정 거래(transactions)의 예시를 도시한다. 당업자가 주지하는 바와 같이, 어플리케이션 서버 (12')가 동시 발생되는 많은 프로세스와 스레드(threads)를 운영할 수 있다. 비-한정예시의 방식으로, 어플리케이션 서버 프로세스 ASP (48) 뿐 아니라 프로세스 (P1),…(PN)을 운영하는 어플리케이션 서버 (12')가 보여진다. 할당된 가상 메모리 공간의 양이 상기 프로세스 각각과 연관되어 있다. 가령, ASP (48)이 힙 메모리 (52)와 오프-힙 메모리 (54)를 포함하는 가상 메모리 공간 (50)과 연관이 있다.
당업자가 주지하는 바와 같이, 가상 메모리 공간은 일반적으로 인접하거나 인접하지 않을 수 있는 물리적 메모리에 위치하는 가상 메모리 주소의 연속적인 범위이다. 예를 들어, 자바는 초기화 하자마자 자동적으로 상기 힙 메모리 주소(자동적으로 가비지 콜렉션 되기 쉬운)의 범위를 ASP(48) 같은 프로세스에 할당한다. 힙에 있지 않은(“오프-힙 메모리”) 가상 메모리 공간의 일부가 자바 프로세스에 의해 자동적으로 가비지 콜렉션되지 않는다.
본원 발명의 예시는 자동적으로 가비지 콜렉션 되기 쉬운 힙 메모리를 발생시키는 자바 소프트웨어 플랫폼을 사용하여 수행되었다. 자동적으로 가비지 콜렉션 되기 쉬운 다른 자바 소프트 웨어 플랫폼에서 다른 예시가 수행될수 있다. 그러므로 다른 대안적인 예시에서, 용어 “힙 메모리(heep memory)” “자동적으로 가비지 콜렉션 되기 쉬운 메모리”로 여겨질 수 있으며 “오프- 힙 메모리(off- heep memory)”는 “자동적으로 가비지 콜렉션 되지 않는 메모리”로 여겨질 수 있다.
당업자가 주지하는 바와 같이, 캐시 서버 (14) 동시 발생하는 많은 프로세스와 스레드(THREAD)를 운영할 수 있다. 비 한정 예시의 방식에 의해, 가상 메모리 공간 (58)을 가지는 캐시 서버 프로세스 (CSP)(56)와 힙 메모리 (64)와 오프-힙 메모리 (66)을 구비한 가상 메모리 공간 (62)을 가지는 캐시 구성 프로세스 (CCP)를 운영하는 캐시 서버 (14')가 보여진다. 상기 CSP (56)과 상기 CCP (60)이 (67)에 표시된 대로 서로 커뮤니케이션한다. 상기 CSP (56)이 캘리포니아, 샌프란시스코의 세라코타 인코포레이션에서 제공하는 EHCache Cashe Server와 같은 스탠다드 소프트웨어 캐시 서버에 의해 수행될 수 있다.
본원 예시에서,어플리케이션 서버 (12')와 캐시 서버 (14)가 HTTP 프로토콜을 사용하여 커뮤니케이션한다. 당업자가 주지하는 바와 같이, “하이퍼텍스트 전송 프로토콜”을 의미하는 HTTP는 할당된 협력적인 하이퍼미디어 정보 시스템이다. 가령 HTTP는 인터넷상에서 월드 와이드 웹 (WWW)을 위한 데이터 커뮤니케이션의 기반이다. HTTP 프로토콜을 사용하여 ASP (48)은 CSP (56)에 요청 (68)을 전송할 수 있으며 이는 “요청의 해결”하여 ASP (48)에 응답 (70)을 제공한다. 당업자가 인지하듯이, 상기 요청은 HTTP 경로(path)에 의해 전송된다. 독립적인 HTTP 경로(path)는 다양한 데이터 구성, 리스트 및 데이터 블록(blocks)에 액세스를 제공한다. 가령 라우터 (18)의 부하 분산기를 통한, 영상 캐시 CSP 지수로의 HTTP 경로(path)는 이처럼 보일 수 있다.
http://loadbaladd/playlisticcache/videocache/index
본원에 사용된 바와 같이, “버퍼”(buffer)는 데이터의 블록 즉”데이터 블록” (data blocks)에 수용적인(receptive to) 가상 메모리의 파편이다. 데이터 블록은 일반적으로 영상 데이터, 오디오 데이터, 기타 등등 과 같은 특정 데이터 유형과 관련이 있다. 버퍼는 특정 데이터 블록을 수용하기 불충분한 규모일수 있으며 이 경우에 데이터 블록을 저장하는데 다양한 버퍼들이 사용될 수 있다. 버퍼는 하나 이상의 데이터 블록을 포함할 수 있고, 심지어 다른 유형의 블록을 포함할 수도 있다. 비 한정적인 예시의 방식에 의해, 다양한 유형의 데이터가 키 인덱스(key index)와 같은 특정 데이터 구성를 위한 블록안에 저장될 수 있다. 또한, 비 한정 예시의 방식에 의해, 비록 다양한 데이터 블록과 데이터 버퍼가 특정 데이터 구성을 위한 데이터를 저장하는데 필요할 수 있지만, 상기 데이터 블록은 상기 데이터 버퍼와 사이즈가 같을 수 있다.
도 4는 캐시 구성 프로세스 (CCP) 설치 방법 (72)의 예시적인 흐름도이다. 4A는 도 4의 방법 (72)의 설명을 보조하기 위한 것이다. 가령, 방법 (72)는 (74)에서 시작하여 (76)에서 실행되고 N 버퍼 (77)이 가비지가 수집되지 않은(가령, “오프-힙(off-heap)”) 메모리 공간에 형성된다. 다음으로, 실행 (78)에서, N 버퍼 (77)을 가리키는 포인터가 있는 가비지가 수집된(가령, “온 힙(on heap”) 메모리 공간에 버퍼 리스트 (79)가 생성된다. 실행 (80)에서, 프리 풀 버퍼 리스트 (free pool buffer list) (81)가 N 버퍼 (77)을 가르키는 포인터와 함께 생성된다.(이는 시작시 전부 이어야 함). 다음, 실행 (82)에서 데이터 블록이 데이터 구성 (83)의 “L”에 대응하는 버퍼에 저장된다. 실행 (84)에서, L 데이터 리스트가 N 버퍼 (77)의 할당된 버퍼를 가리키는 포인터와 함께 생성된다. 실행 (86)이 상기 캐시 서버 프로세스 (CSP)에 데이터 블록을 작성하고, 실행 (88)이 상기 CSP에 데이터 블록 지수를 작성한다. 다음으로, 실행 (90)에서 메시지가 상기 어플리케이션 서버( 예를 들어 JMS 프로토콜을 사용하여)에 전송되어 상기 어플리케이션 서버에 알리고 상기 오프-힙 캐시는 변하여 상기 CSP및 CCP의 주소를 제공한다. 당업자가 주지하는 바와 같이, 상기 JMS 프로토콜은 둘 이상의 고객간의(예를들어 컴퓨터, 서버, 기타 등등) 메시지 전송을 위한 “자바 메시지 서비스 (Java Message Service)”를 의미한다. 방법 (72)는 (92)에서 종료된다.
도 5는 캐시 구성 프로세스(CSP)를 업데이트 하기 위한 프로세스 (94)의 예시적인 흐름도이다. 프로세스 (94)는 (96)에서 시작되고, 실행 (98)에서 오프-힙 메모리에 저장된 버퍼의 데이터 블록의 데이터에 업데이트 여부가 결정된다. 업데이트가 있다면 실행 (100)이 새로운 데이터 구성 리스트를 만든다. 선택적으로 실행 (102)에서 상기 프리 풀(free pool)에 버퍼의 개수가 스레드홀드(threshold) “t” 이하에 떨어지는지가 결정된다. 가령, 버퍼 N의 수가= 1000이고, 스레드홀드(threshold) t가 =200이면, 프리 풀(free pool)의 버퍼의 수가 200이하라면 프리 버퍼의 수가 점점 낮아진다는 메시지가 작동자에게 전송된다. 다음으로, 실행 (104)에서 프리 풀(free pool)로부터의 버퍼가 요청되고 상기 버퍼를 가리키는 포인터(pointer)가 상기 새로운 리스트에 넣어진다. 실행 (106)에서 상기 버퍼는 새로운 데이터 블록으로 채워지고 상기 올드 버퍼(old buffers)는 (구식 날짜와 함께) 실행 (108)에서 프리 버퍼(free buffer)로 할당을 해제한다. 상기 구식의 키 리스트 (key list)는 실행 (110)에서 폐기되고, 상기 인덱스 파일은 실행 (112)에서 상기 CSP로부터 읽혀진다. 다음으로 실행 (114)에서, 상기 데이터 블록이 상기 CSP에 의해 읽혀지고 상기 실행 (116)에서 상기 인덱스 파일이 업데이트 된다. 마지막으로 상기 실행(118)에서 메시지가 (가령 JMS를 사용) 상기 특정 캐시 유형으로 전송되어 특정 캐시 유형이 업데이트 되고 상기 CSP와 CCP의 주소가 제공된다. 상기 프로세스 (94)는 (120)에서 끝이 난다.
상기 구식 데이터 블록과 구식 인덱스를 파괴하기 이전에 새로운 데이터 블록 세트와 새로운 CSP 인덱스를 생성함으로써 상기 프로세스 (94)가 실행된다는 사실을 이해할 것이다. 예를 들어, 상기 구식의 데이터가 버퍼 세트 “A” 에 있으면 새로운 버퍼 세트 “B”가 새로운 데이터 블록과 함께 제공되고, 새로운 CSP 인덱스가 상기 버퍼 “B”의 데이터 블록에 만들어진다. 본원 발명의 예에서, 버퍼세트 “B”의 작성과 상기 새로운 CSP 인덱스를 가지는 구식 CSP는 자동실행으로써 새로운 데이터로 전환된다. 일단 완료되면, 상기 A 버퍼가 상기 프리 버퍼 풀(free buffer pool)에 되돌아오고 상기 CSP 인덱스는 가비지 콜렉트 되도록 허용된다.
도 6은 상기 어플리케이션 서버 (12)를 시작하기 위한 예시적인 프로세스(122) 흐름도이다. 바람직하게, 상기 캐시 서버 (14)가 시작되고 나서야 상기 어플리케이션 서버 (12)가 개시된다. 프로세스 (122)가 (124)에서 시작되고 실행 (126)에서 N 버퍼가 논-가비지 콜렉티드 메모리 공간에서 (non-garbage collected memory) (예를들어, 힙 메모리) 생성된다. 다음으로 실행 (128)에서 N 버퍼를 가리키는 포인터와 함께 버퍼리스트가 생성되고, 실행 (130)에서 프리 버퍼 (free buffers)를 가리키는 포인터와 함께 프리 풀 버퍼 리스트(free pool buffer list)가 생성된다(이는 시작시 전부 이어야 함). 다음으로 실행 (132)에서 카운터 (counter) “i”가 시작되고, 실행 (134)에서 카운터 i는 하나씩 증가된다. 결정 실행 (136)에서 상기 카운터 i가 “L”보다 적거나 혹은 같은지의 여부와 데이터 유형의 수가 결정된다. 만약 그러하다면, 실행 (138)이 상기 인덱스를 요청하고 데이터 구성 (i)뿐 아니라 데이터 구성 (i)을 위한 리스트 생성을 위해 데이터 블록을 상기 CSP으로부터의 상기 ASP의 힙 메모리에 저장한다. 예를 들어 데이터 구성의 한가지 유형은 영상 데이터 구성이다. 다음으로 실행 (140)에서 N 블록이 실행 (138)에 의해 읽혀지는 N 데이터 유형에 할당되고 데이터는 상기 힙으로부터 복사되어 데이터 구성 (i)를 위한 상기 리스트 (i)에 기입된다. 마침내 상기 힙 인덱스는 실행 (142)에서 데이터 구성 각각을 위한 힙 메모리를 완전히 읽는다. 실행 (138), (140) 및 (142)를 포함하는 상기 루프(loop)가 L 횟수만큼 반복되고 후에 실행 (122)가 (144)에서 종료된다.
도 7은 상기 어플리케이션 서버 (ASP)를 업데이팅 하기위한 예시적인 프로세스 (146)의 흐름도이다. 상기 프로세스 (146)은 (148)에서 시작되어 결정 실행 (150)에서 상기 CSP로부터 업데이트가 수신되었는지 여부가 결정된다. 수신되었다면, 실행 (152)가 상기 ASP로부터 상기 CSP 인덱스로 향하는 데이터 진로(path)를 구성하고, 상기 CSP 인덱스는 실행 (154)에서 읽혀진다. 다음으로 실행 (156)에서, 상기 데이터 구성을 위한 새로운 리스타가 생성이 되고 실행 (158)에서 새로운 데이터 블록이 상기 CSP로부터 상기 ASP의 힙 메모리에 저장된다. 실행 (160)이 상기 프리 버퍼 풀로부터 같은 수의 버퍼를 할당하고 실행 (162)가 데이터 블록을 버퍼로 복사하고 새로운 데이터 리스트를 기입한다. 다음으로 실행(164)에서 온-힙 블록이 가비지 콜렉션을 위해 방출되고 실행 (166)에서 상기 키 인덱스가 힙 메모리로 읽혀진다. 구식의 버퍼는 상기 실행 (168)의 상기 프리 풀(free pool)로 되돌아가고 상기 구식 리스트는 관련이 해제되어 실행 (170)에서 가비지 콜렉션 되기 쉬워진다. 상기 프로세스 (146)은 (172)에서 종료된다.
도 8은 상기 어플리케이션 서버 (ASP)를 위한 프로세스 (174)의 예시적인 흐름도이다. 프로세스 (174)가 (176)에서 시작되어 결정 실행 (178)에서 데이터를 위한 요청이 수신되었는지 여부가 결정된다. 결정되었다면, 실행 (180)이 데이터가 상기 오프-힙 버퍼에(가령, 상기 요청에 의해 제공된 키) 어디에 저장되었는지를 알아내기 위해 상기 키 인덱스(key index)를 이용한다. 다음으로, 실행 (182)에서 상기 오프-힙 버퍼로부터 데이터가 복구되고 상기 요청은 해결된다. TCP/IP요청의 경우, 요청된 데이터를 포함한 응답으로 끝이 난다.
여기에 명시된 대로 상기 키 인덱스는 가비지 콜렉션되기 쉬운 힙 메모리에 존재한다. 하지만 상기 데이터 블록 역시 힙 메모리에 존재한다면, 이 구성과 연관이 있는 오버헤드가 더 적다. 다른 실시예에서 키 인덱스는 오프-힙 메모리에 존재한다. 이와 같은 실시 예에서 힙 메모리에 존재하는 상기 키 인덱스의 HTTP 요청이 오프-힙 프로세스에( 가령 C 프로그래밍 언어에서 수행된 하나) 재전송되고 오프-힙 메모리에서 키 인덱스를 구현한다.
비록, 특수 용어 및 장치를 이용하여 다양한 실시예를 설명하였으나, 그러한 설명은 단지 예시를 위한 것이며, 사용한 용어 및 설명 상의 용어로 한정하려는 것은 아니다. 본원에 개시한 어떤 실시예의 기술적 사상 및 범위를 벗어남이 없이 당
업자에 의해서 변경 및 변형이 이루어질 수 있음을 이해할 것이다. 또한, 다양한 다른 실시예의 양상은 전체적으로 또는 부분적으로 교체할 수 있음을 이해해야 한다. 그러므로, 여기 및 이후에 있는 청구범위는 그들의 참된 기술적 사상과 범위에 따라서 한정 및 금반언없이 해석하도록 의도하였다.

Claims (20)

  1. ASP 힙 메모리(ASP Heap memory)와 ASP 오프-힙 메모리 (ASP off-heap memory)를 구비한 ASP 가상 메모리 공간을 가지는 어플리케이션 서버 프로세스 (ASP)를 각각 구동하고, 상기 ASP 힙 메모리(ASP Heap memory)와 ASP 오프-힙 메모리 (ASP off-heap memory)에 저장된 키 인덱스 (key index)를 가지며, 상기 ASP 오프-힙 메모리 (ASP off-heap memory)에서 데이터가 저장된 위치를 알아내기 위해 ASP 프로세스가 상기 키 인덱스 (key index)를 사용하는 복수의 어플리케이션 서버와;
    CSP 프로세스와 커뮤니케이션 하면서 CSP 지수와 캐시 구성 프로세스 (CCP)를 가지는 캐시 서버 프로세스 (CSP)를 각각 구동하고, 상기 CCP 프로세스는 CCP 힙 메모리(CCP Heap memory)와 CCP 오프-힙 메모리 (CCP off-heap memory)를 가지며, 상기 CSP 프로세스는 상기 CCP 오프-힙 메모리 (CCP off-heap memory)에 저장된 CCP 버퍼 (buffers)의 데이터와 상기 CSP 지수에 액세스를 제공하는 복수의 캐시 서버와;
    상기 복수의 어플리케이션 서버와 상기 복수의 캐시 서버를 결합시켜 상기 ASP 프로세스가 상기 ASP 오프-힙 메모리 (ASP off-heap memory)의 CCP 버퍼(buffers)에 데이터의 복사본을 저장하고 상기 키 인덱스 (key index)를 사용하여 상기 CCP 버퍼(buffers)로부터 데이터의 복사본에 접근하는 근거리 네트워크 (LAN) 라우터(router)를 포함하는 오프-힙 캐싱 (CCP off-heap caching)을 구비한 네트워크 서비스 시스템.
  2. 제 1항에 있어서,
    상기 랜 라우터(LAN router)는 상기 복수의 어플리케이션 서버 중 하나의 어플리케이션 서버와 상기 복수의 캐시 서버 중 하나의 캐시 서버 간 최초 도입(initial introduction)을 제공하는 로드 발랜서(load balancer)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  3. 제 2항에 있어서,
    상기 복수의 캐시 서버에 결합되어 상기 CCP 오프-힙 메모리(off-heap memory)에 저장할 데이터를 제공하는 데이터베이스 서버를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  4. 제 3항에 있어서,
    상기 복수의 어플리케이션 서버를 원거리 네트워크 (WAN)에 결합시키는 원거리 네트워크 (WAN) 라우터(router)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  5. 제 4항에 있어서,
    상기 원거리 네트워크 라우터 (WAN router)는 상기 복수의 어플리케이션 서버 중 하나의 어플리케이션 서버에 최초 인트로덕션(initial introduction)을 제공하는 로드 발랜서(load balancer)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  6. 제 5항에 있어서,
    상기 원거리 네트워크 (WAN)는 HTTP 프로토콜로 실행되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  7. 제 6항에 있어서,
    상기 원거리 네트워크 (WAN)는 인터넷인 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  8. 제 7항에 있어서,
    상기 근거리 네트워크(LAN)는 HTTP 프로토콜로 실행되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  9. 제 8항에 있어서,
    상기 ASP와 CSP가 요청과 응답으로 커뮤니케이션 하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  10. 제 9항에 있어서,
    상기 키 인덱스 (key index)는 상기 ASP 힙 메모리에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
  11. 오프힙 캐싱을 구비한 어플리케이션 서버를 사용하여 네트워크 상에서 데이터를 제공하는 방법으로,
    CSP 프로세스와 커뮤니케이션 하면서 CSP 지수와 캐시 구성 프로세스 (CCP)를 가지는 캐시 서버 프로세스 (CSP)를 구동하는 하나 이상의 캐시서버를 제공하는 단계;
    상기 CCP 오프-힙 메모리(off-heap memory)에 저장된 CCP 버퍼(buffers) 안의 테이터와 상기 CSP 지수에 접근하기 위해, 어플리케이션 서버와 한 개 이상의 캐시 서버를 결합시키는 단계;
    상기 어플리케이션 서버의 오프-힙 메모리(off-heap memory) 내의 CCP 버퍼(buffers)에 데이터 복사본을 저장하는 단계;
    네트워크에 연결된 상기 어플리케이션 서버로부터 요청된 데이터의 요청를 수신하는 단계;
    상기 요청된 데이터가 상기 어플리케이션 서버의 오프-힙 메모리(off-heap memory)내의 어느 곳에 저장되어 있는지를 찾기 위해, 상기 어플리케이션 서버에 저장된 키 인덱스 (key index)를 사용하는 단계;
    상기 어플린케이션의 오프-힙 메모리(off-heap memory)로부터 요청된 데이터를 복구시키는 단계;
    상기 요청을 해결하는 단계를 포함하고;
    상기 CCP 프로세스는 힙 메모리(CCP Heap memory)와 CCP 오프-힙 메모리 (CCP off-heap memory)를 구비하는 CCP 가상 메모리 공간을 가지며
    상기 어플리케이션 서버는 데이터가 상기 어플리케이션 서버의 오프-힙 메모리 (off-heap memory)의 어느 곳에 저장되어있는지를 찾기 위해, 상기 어플리케이션의 힙 메모리(heap memory) 혹은 오프-힙 메모리(off-heap memory)에 저장된 키 인덱스 (key index)를 가지는 오프힙 캐싱을 구비한 어플리케이션 서버를 사용하여 네트워크 상에서 데이터를 제공하는 방법.
  12. 제 11항에 있어서,
    상기 네트워크는 인터넷이고, 상기 요청은 TCP/IP 프로토콜 요청을 포함하고, 상기 요청에 대한 해결은 TCP/IP 프로토콜 응답을 포함하는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
  13. 제 12항에 있어서,
    상기 어플리케이션 서버는 자동적으로 가비지 콜렉션 (garbage collection) 되기 쉬운 힙 메모리를 가지는 ASP 가상 메모리 공간을 구비한 어플리케이션 서버 프로세스 (ASP)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
  14. 제 13항에 있어서,
    상기 키 인덱스 (key index)는 상기 힙 메모리 (heap memory)에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
  15. 제 13항에 있어서,
    상기 키 인덱스 (key index)는 상기 오프-힙 메모리 (off-heap memory)에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
  16. 오프-힙 캐싱을 구비한 네트워크 시스템을 제공하는 방법으로,
    ASP 힙 메모리(ASP Heap memory)와 ASP 오프-힙 메모리 (ASP off-heap memory)를 구비한 ASP 가상 메모리 공간을 가지고, 상기 ASP 힙 메모리(ASP Heap memory) 혹은 상기 ASP 오프-힙 메모리 (ASP off-heap memory)에 저장된 키 인덱스 (key index)를 가지는 상기 어플리케이션 서버를 각각 구동하는 복수의 어플리케이션 서버를 제공하는 단계;
    CSP 지수 및 상기 CSP 프로세스와 커뮤니케이션 하는 캐시 구성 프로세스 (CCP)를 가지는 캐시 서버 프로세스 (CSP)를 각각 구동하는 복수의 캐시 서버를 제공하는 단계;및
    상기 복수의 어플리케이션 서버와 상기 복수의 캐시 서버를 결합시키는 근거리 네트워크 라우터를 제공하는 단계를 포함하고
    상기 ASP 오프-힙 메모리 (ASP off-heap memory)에서 데이터가 저장된 위치를 알아내기 위해, ASP 프로세스는 상기 키 인덱스 (key index)를 사용하하고;
    상기 CCP 프로세스는 CCP 힙 메모리(CCP Heap memory)와 CCP 오프-힙 메모리 (CCP off-heap memory)를 구비한 CCP 가상 메모리공간을 가지고, 상기 CSP 프로세스는 상기 CCP 오프-힙 메모리와 상기 CSP 지수 내의 저장된 CCP 버퍼의 데이터에 액세스를 제공하며;
    상기 ASP 프로세스는 상기 ASP 오프-힙 메모리 (ASP off-heap memory)내의 상기 CCP 버퍼(buffers)의 데이터 복사본을 저장하고, 상기 키 인덱스 (key index)를 사용하여 상기 CCP 버퍼(buffers)로부터 데이터 복사본에 접근하는 오프-힙 캐싱 (CCP off-heap caching)을 구비한 네트워크 서비스 시스템을 제공하는 방법.
  17. 제 16항에 있어서,
    상기 복수의 캐시 서버에 연결된 데이터베이스 서버를 제공하는 단계와 상기 데이터베이스 서버를 사용하는 상기 CCP 버퍼를 디벨로핑(DEBELOPING)하는 단계를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
  18. 제 17항에 있어서,
    상기 CCP 버퍼에 변화가 있을 경우, 업데이트 메시지를 상기 복수의 어플리케이션 서버에 전송하는 단계를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
  19. 제 18항에 있어서,
    ASP가 그것의 오프-힙 메모리를 업데이트하여 상기 CCP 버퍼에 상기 변화를 반영하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
  20. 제 19항에 있어서,
    상기 키 인덱스 (key index)가 업데이트 되어 상기 CCP버퍼에 상기 변화를 반영하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
KR1020157008112A 2012-08-31 2013-08-31 오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법 KR20150048861A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/601,118 2012-08-31
US13/601,118 US9021050B2 (en) 2012-08-31 2012-08-31 Network service system and method with off-heap caching
PCT/US2013/057752 WO2014036540A2 (en) 2012-08-31 2013-08-31 Network service system and method with off-heap caching

Publications (1)

Publication Number Publication Date
KR20150048861A true KR20150048861A (ko) 2015-05-07

Family

ID=50184683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157008112A KR20150048861A (ko) 2012-08-31 2013-08-31 오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법

Country Status (7)

Country Link
US (2) US9021050B2 (ko)
KR (1) KR20150048861A (ko)
CN (1) CN104620219B (ko)
CA (1) CA2880287C (ko)
HK (1) HK1204500A1 (ko)
IN (1) IN2015KN00221A (ko)
WO (1) WO2014036540A2 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10404520B2 (en) * 2013-05-29 2019-09-03 Microsoft Technology Licensing, Llc Efficient programmatic memory access over network file access protocols
US9641614B2 (en) 2013-05-29 2017-05-02 Microsoft Technology Licensing, Llc Distributed storage defense in a cluster
US9697220B2 (en) * 2013-12-13 2017-07-04 Oracle International Corporation System and method for supporting elastic data metadata compression in a distributed data grid
US9886450B2 (en) 2014-09-25 2018-02-06 Oracle International Corporation System and method for supporting zero-copy binary radix tree in a distributed computing environment
WO2017087002A1 (en) 2015-11-20 2017-05-26 Hewlett Packard Enterprise Development Lp Shared memory for distributed data
US10025680B2 (en) * 2015-12-16 2018-07-17 Ab Initio Technology Llc High throughput, high reliability data processing system
CN107291423B (zh) * 2016-03-31 2020-09-29 龙芯中科技术有限公司 构建运行环境的方法和装置
CN107341154A (zh) * 2016-04-29 2017-11-10 北京京东尚科信息技术有限公司 一种数据导出的方法和装置
CN106339183B (zh) * 2016-08-29 2020-02-11 东软集团股份有限公司 数据检索的方法及服务器
US11267811B2 (en) 2017-09-27 2022-03-08 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
WO2019075045A1 (en) 2017-10-11 2019-04-18 Bristol-Myers Squibb Company INHIBITORS WITH SMALL MOLECULES OF GALECTIN-3
CN107844579B (zh) * 2017-11-10 2021-10-26 顺丰科技有限公司 优化用于分布式数据库中间件取数的方法、系统及设备
EP3807290B1 (en) 2018-06-15 2022-03-30 Bristol-Myers Squibb Company Tetrahydropyran-based thiodisaccharide mimics as galectin-3 inhibitors
CN109101554A (zh) * 2018-07-12 2018-12-28 厦门中控智慧信息技术有限公司 用于java平台的数据缓存系统、方法以及计算机终端
CN110895475B (zh) * 2018-09-10 2023-03-31 深圳云天励飞技术有限公司 搜索服务器的启动方法、装置及搜索服务器
JP2022511094A (ja) 2018-12-06 2022-01-28 ブリストル-マイヤーズ スクイブ カンパニー ガレクチン-3の低分子阻害剤
KR20210143255A (ko) 2019-03-26 2021-11-26 브리스톨-마이어스 스큅 컴퍼니 갈렉틴-3의 소분자 억제제
US20220144818A1 (en) 2019-04-10 2022-05-12 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
US11243876B2 (en) 2019-11-06 2022-02-08 Oracle International Corporation Techniques for accessing off-heap memory
CN111651374A (zh) * 2020-04-14 2020-09-11 北京齐尔布莱特科技有限公司 一种数据处理方法、装置、计算设备及可读存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999032978A1 (en) 1997-12-19 1999-07-01 Microsoft Corporation Incremental garbage collection
US8434099B2 (en) 1998-09-09 2013-04-30 Microsoft Corporation Efficient linking and loading for late binding and platform retargeting
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
US6941410B1 (en) 2000-06-02 2005-09-06 Sun Microsystems, Inc. Virtual heap for a virtual machine
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6785684B2 (en) * 2001-03-27 2004-08-31 International Business Machines Corporation Apparatus and method for determining clustering factor in a database using block level sampling
US7836031B2 (en) * 2003-03-28 2010-11-16 Microsoft Corporation Systems and methods for employing a trigger-based mechanism to detect a database table change and registering to receive notification of the change
US7395386B2 (en) * 2005-01-18 2008-07-01 Lenovo (Singapore) Pte. Ltd. Method and apparatus for data versioning and recovery using delta content save and restore management
US7917599B1 (en) * 2006-12-15 2011-03-29 The Research Foundation Of State University Of New York Distributed adaptive network memory engine
US8745341B2 (en) * 2008-01-15 2014-06-03 Red Hat, Inc. Web server cache pre-fetching
US8612493B2 (en) 2008-10-30 2013-12-17 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector
CN102439580A (zh) 2009-03-20 2012-05-02 普林斯顿大学托管委员会 用于网络加速以及对高速缓存文件系统进行高效索引编制的系统及方法
GB201008819D0 (en) * 2010-05-26 2010-07-14 Zeus Technology Ltd Apparatus for routing requests
US9495473B2 (en) * 2010-07-19 2016-11-15 Soasta, Inc. Analytic dashboard with user interface for producing a single chart statistical correlation from source and target charts during a load test
US8832674B2 (en) * 2011-02-24 2014-09-09 Software Ag Usa, Inc. Off-heap direct-memory data stores, methods of creating and/or managing off-heap direct-memory data stores, and/or systems including off-heap direct-memory data store
US8583799B2 (en) * 2011-05-09 2013-11-12 Oracle International Corporation Dynamic cost model based resource scheduling in distributed compute farms
US9444884B2 (en) * 2011-12-31 2016-09-13 Level 3 Communications, Llc Load-aware load-balancing cluster without a central load balancer

Also Published As

Publication number Publication date
US20140067986A1 (en) 2014-03-06
WO2014036540A3 (en) 2014-05-30
CA2880287C (en) 2017-06-06
US9594752B2 (en) 2017-03-14
IN2015KN00221A (ko) 2015-06-12
HK1204500A1 (en) 2015-11-20
WO2014036540A2 (en) 2014-03-06
US20150319259A1 (en) 2015-11-05
US9021050B2 (en) 2015-04-28
WO2014036540A4 (en) 2014-07-17
CN104620219A (zh) 2015-05-13
CN104620219B (zh) 2017-09-22
CA2880287A1 (en) 2014-03-06

Similar Documents

Publication Publication Date Title
KR20150048861A (ko) 오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법
US9575927B2 (en) RDMA-optimized high-performance distributed cache
CN1157659C (zh) 非均匀存储器访问数据处理系统及其通信方法
US7827374B2 (en) Relocating page tables
US7490214B2 (en) Relocating data from a source page to a target page by marking transaction table entries valid or invalid based on mappings to virtual pages in kernel virtual memory address space
US11132294B2 (en) Real-time replicating garbage collection
US10838857B2 (en) Multi-section garbage collection
JP2009245452A (ja) 仮想メモリを利用したトランザクショナルメモリ実行
US10956335B2 (en) Non-volatile cache access using RDMA
EP2002343A2 (en) Multi-cache cooperation for response output caching
EP2761474A1 (en) Write- back storage cache based on fast persistent memory
CN110069419A (zh) 多级缓存系统及其访问控制方法、设备和存储介质
US20170031812A1 (en) Scheme for determining data object usage in a memory region
US20200387541A1 (en) Remote virtualized asset delivery and local provisioning
CN105701156A (zh) 一种分布式文件系统管理方法及装置
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
CN109656886B (zh) 基于键值对的文件系统实现方法、装置、设备和存储介质
CN114003562B (zh) 一种目录遍历方法、装置、设备及可读存储介质
CN102902630B (zh) 一种访问本地文件的方法和装置
CN115964389A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
EP4031986B1 (en) Rdma-enabled key-value store
CN115470026A (zh) 数据缓存及缓存容灾方法和系统、缓存系统
US20110106760A1 (en) Synchronizing database and non-database resources without a commit coordinator
US7836248B2 (en) Methods and systems for managing persistent storage of small data objects
JPH07239808A (ja) 分散データ管理方式

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right