KR20150048861A - Network service system and method with off-heap caching - Google Patents

Network service system and method with off-heap caching 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
Korean (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 KR20150048861A publication Critical patent/KR20150048861A/en

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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

오프-힙(off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크상에서 데이터를 제공하는 방법은 네트워크와 연결된 어플리케이션 서버에서 요청된 데이터의 요구를 수신하는 단계와 요청된 데이터가 어플리케이션 서버의 오프-힙(off-heap) 메모리에 저장되어 있는 위치를 찾기 위해 상기 어플리케이션 서버에 저장된 키 인덱스 (key index)를 이용하는 단계와 어플리케이션 서버의 오프-힙(off-heap) 메모리로부터 요청된 데이터를 복구하는 단계와 상기 요청을 해결하는 단계로 이루어진다. A method for providing data on a network using an application server with off-heap caching includes receiving a request for requested data from an application server connected to the network, Using a key index stored in the application server to find a location stored in an off-heap memory, and recovering the requested data from an off-heap memory of the application server, And resolving the request.

Description

오프-힙 캐싱을 구비한 네트워크 서비스 시스템 및 방법{NETWORK SERVICE SYSTEM AND METHOD WITH OFF-HEAP CACHING}[0001] NETWORK SERVICE SYSTEM AND METHOD WITH OFF-HEAP CACHING [0002]

본 발명은 일반적으로 실시간 환경에서 물리적 메모리(physical memory)를 관리하기 위한 컴퓨터화된 시스템에 관한 것이다.The present invention generally relates to a computerized system for managing physical memory in a real-time environment.

종종 "e-커머스"로 알려진 전자 상거래는 인터넷과 같은 전자 시스템을 통해 제품이나 서비스의 구매 및 판매를 포함한다. 수행되는 전자 무역의 양은 인터넷 기술의 광범위한 채택과 함께 엄청나게 성장했다. 전자 상거래의 성장의 하나의 특히 폭발적인 영역은 광고 분야 및 특히 인터넷상에서의 영상광고분야이다.Electronic commerce, often known as "e-commerce", involves the purchase and sale of products or services through electronic systems such as the Internet. The amount of electronic trade performed has grown tremendously with the widespread adoption of Internet technologies. One particularly explosive area of growth of e-commerce is the field of advertising in the field of advertising and especially on the Internet.

인터넷상에서 영상의 전송을 포함하고, 인터넷 기능("웹 네트워크 서비스 시스템")을 지원하는 많은 네트워크 서비스 시스템은 오라클 코포레이션(Oracle Corporation)로부터 이용 가능한 자바 소프트웨어 플램폼(Java software platform:등록상표)과 같은 객체 지향형의(object-oriented) 혹은 의사 객체 지향형(pseudo object-oriented)의 소프트웨어 플랫폼으로 수행된다. 자바의 특징 중 하나는 휴대가능성이고, 이것은 자바 언어로 쓰여진 컴퓨터 프로그램이 어떠한 하드웨어/실행-시스템 플랫폼상에서 유사하게 작동되는 것을 의미한다. 이것은 자바 언어 코드가 직접적으로 플랫폼-별 머신코드에 축적되는 것이 아니라 자바 바이트코드(bytecode)라고 불리는 인터미디어트 레프리젠테이션 (intermediate representation)에 축적됨으로써 달성된다. 자바 바이트코드 명령어는 머신코드와 유사하지만, 특히 호스트 하드웨어를 위해 작성된 가상 머신(vertual machine)에 의해 해석되도록 의도된다. 표준화된 라이브러리는 그래픽, 스레딩(threading) 및 네트워킹(networking)과 같은 호스트-별 특징에 접근하는 일반적인 방법을 제공한다.Many network service systems, including the transmission of images over the Internet and supporting the Internet functionality ("Web network service system"), are available from vendors such as the Java software platform (TM) available from Oracle Corporation It is implemented as an object-oriented or pseudo object-oriented software platform. One of the characteristics of Java is portability, which means that computer programs written in the Java language work similarly on any hardware / run-system platform. This is accomplished by accumulating the Java language code in an intermediate representation called Java bytecode, rather than being accumulated directly in platform-specific machine code. Java byte-code instructions are similar to machine code, but are intended to be interpreted by a virtual machine, especially written for host hardware. Standardized libraries provide a common way to access host-specific features such as graphics, threading, and networking.

자바로 쓰여진 웹 서비스 어플리케이션을 위한 가장 중요한 성능 문제들 중 하나는 "힙"(the heap")으로 알려진 가상 메모리 공간의 일부에 수집되는 쓰레기 데이터이다. 힙이 쓸모없는 객체들(objects)로 채워지는 것을 막기 위해, "가비지 콜렉션(garbage collection)"으로 알려진 프로세스가 더 이상 쓸모없는 객체를 제거하는데 사용될 수 있다. 가비지 콜렉션의 수행은 "오버헤드(overhead)"와 관련이 있는데, 이는 다른 프로세스가 반드시 보류되어야 하는 시간이다. 아주 짧은 시간 동안 힙에 존재하는 자바 객체는 가비지 콜렉션 동안 오버헤드에 경미하게 기여한다. "올드 제너레이션 스페이스(old generation space)"로 옮겨질 만큼 충분히 오래 힙에 존재하는 객체는 가비지 콜렉션 동안 높은 오버헤드를 갖는다. One of the most important performance problems for web service applications written in Java is garbage data collected in a portion of the virtual memory space known as the "heap." When the heap is filled with obsolete objects, To avoid this, a process known as "garbage collection" can be used to remove obsolete objects. The performance of garbage collection is related to "overhead" Java objects that reside in the heap for a very short amount of time contribute slightly to the overhead during garbage collection. Objects that are in the heap long enough to be moved to the "old generation space" And has a high overhead during garbage collection.

자바는 자동 가비지 콜렉터를 사용하여 객체 라이프사이클에서 메모리를 관리한다. 프로그래머는 객체가 언제 생성되는지를 결정하고, 일단 객체가 더 이상 쓸모가 없으면 자바 구동시간이 메모리 회복에 책임이 있다. 도달할 수 없는(unreachable) 메모리가 일단 남겨진 객체와 관련이 없으면 가비지 콜렉터에 의해 자동적으로 없어지기에(be freed) 적합하게 된다. 프로그래머 코드가 더이상 필요 없는 객체와의 관련을 유지하고 있으면, 일반적으로 더 이상 필요 없는 객체가 아직 사용되는 컨테이너안에 저장되어 있으면, 메모리 누수와 유사한 무엇인가가 발생할 수 있다. 존재하지 않는 객체의 메소드(method)가 호출되면, "널 포인터 예외(null pointer exception"가 버려진다.Java uses an automatic garbage collector to manage memory in the object lifecycle. The programmer decides when an object is created, and once the object is no longer usable, the Java runtime is responsible for memory recovery. Once an unreachable memory is associated with an object that has been left untouched, it is automatically freed by the garbage collector. If the programmer code is still associated with an object that is no longer needed, then something similar to a memory leak can occur if objects that are no longer needed are typically stored in a container that is still in use. When a method of an object that does not exist is called, a "null pointer exception" is discarded.

자바는 다양한 유형의 가비지 콜렉터를 포함한다. 일반적인 가비지 콜렉션은 선택적으로 "컨커런트 마스크 스윕 콜렉터(Concurrent Mask Sweep Collector)" 와 "CMS 가비지 콜렉터"로 알려져 있다. 하지만 자바 힙 메모리를 관리하는데 사용될 수 있는 여러 다른 가비지 콜렉터도 있다.Java includes various types of garbage collectors. Common garbage collections are optionally known as "Concurrent Mask Sweep Collectors" and "CMS Garbage Collectors". However, there are many other garbage collectors that can be used to manage Java heap memory.

자바의 자동 메모리 관리 모델 뒤에 아이디어 중 하나는 프로그램머들이 수동적인 메모리 관리를 수행해야 하는 부담을 면할 수 있다는 것이다. 불행하게도, 자바와 함께, 가비지 콜렉션은 언제든지 일어날 수 있다. 이상적으로는, 프로그램이 실행 중이지 않을 때 발생할 것이다. 하지만, 만약 힙에 새로운 객체를 위치시킬만한 프리 메모리가 불충분할 경우 가비지 콜렉션이 유발되며, 프로그램을 일시적으로 중지시킬 수 있다. 분명한 메모리 관리는 자바에서 불가능하다.One of the ideas behind Java's automatic memory management model is that programmers can avoid the burden of having to perform passive memory management. Unfortunately, with Java, garbage collection can happen at any time. Ideally, this will happen when the program is not running. However, if there is insufficient free memory to place a new object in the heap, garbage collection will be triggered and the program can be temporarily stopped. Clear memory management is not possible in Java.

영상 전송 시스템과 같이 자바로 쓰여진 웹 서비스 어플리케이션에 대한 가장 중요한 성능 문제 중 하나는 힙에서의 데이터의 가비지 콜렉션이다. 매우 짧은 시간 동안 존재하는 자바 객체는 가비지 콜렉션 동안 거의 오버헤드(overhead) 를 가지지 않는다. 하지만 올드 제너레이션 스페이스로 옮겨지기 충분히 길게 존재하는 객체는 가비지 콜렉션동안 높은 오버헤드 (overhead) 를 가진다. 가비지 콜렉션이 자동적이므로, 중요한 어플리케이션 프로그램이 보류될 수 있으며, 제 때에 어플리케이션 프로그램이 수행되는 것을 막는다.One of the most important performance issues for web services applications written in Java, such as video delivery systems, is the garbage collection of data on the heap. Java objects that exist for very short periods of time have little overhead during garbage collection. However, objects that are long enough to be moved into the old generation space have high overhead during garbage collection. Since garbage collection is automatic, critical application programs can be held and prevented from running application programs on time.

예를 들어, 인터넷을 기반으로 영상 광고를 전송하는 광고 시스템에서, 광고 (“ad”) 수행 시스템은 10 내지 20 밀리세컨드 안에 결정 윈도우(decision window)를 필요로 하며, 결정을 내리는데 필요한 모든 데이타는 이 어플리케이션 프로세스의 가상 메모리 안에 캐시 되어야 한다. 가비지 콜렉션이 힙 메모리에서 개시되면, 어플리케이션 프로그램은 보류되고 결정 윈도우는 손실된다.For example, in an ad system that transmits video ads based on the Internet, the ad (" ad ") performance system needs a decision window within 10 to 20 milliseconds and all the data needed to make a decision Must be cached in the virtual memory of the application process. When the garbage collection is started in heap memory, the application program is suspended and the decision window is lost.

종래 기술의 이러한 또는 다른 한계는 다음의 설명을 읽고 도면의 여러 특징를 연구함으로써, 당업자라면 명백해질 것이다.These and other limitations of the prior art will become apparent to those skilled in the art by reading the following description and studying various features of the drawings.

한정이 아니라 예시의 방식으로 개시된 실시 예에서, 오프-힙 캐싱을 구비한 네트워크 서비스 시스템은 복수의 어플리케이션 서버와 복수의 캐시 서버 및 상기 어플리케이션 서버를 상기 캐시 서버에 결합시킨 근거리 네트워크 통신망 라우터(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 지수에 액세스를 을 제공한다.In an illustrative and non-limiting embodiment, a network service system with off-heap caching includes a plurality of application servers, a plurality of cache servers, and a local area network router network routers. Each of the plurality of application servers operates an application server process (ASP) having an ASP virtual memory space with ASP memory and ASP off-heap memory. Each of the plurality of cache servers includes a cache server process (CSP) having a cache configuration process (CCP) for communicating the CSP index and the CSP process, a CCP (CCP) process having the CCP heap memory and the CCP off- Activates a CCP process with a virtual memory space, which provides access to the CCP buffer copy and the CSP exponent stored in the CCP off-heap memory.

근거리 네트워크 통신망(LAN) 라우터는 복수의 어플리케이션 서버를 복수의 캐시 서버에 결합시키고 ASP 프로세스가 상기 CCP 버퍼의 복사본을 ASP 오프-힙 메모리에 저장하며, 상기 ASP 버퍼에 접근하기 위한 키 인덱스(key index)를 사용한다.A local area network (LAN) router combines a plurality of application servers into a plurality of cache servers, an ASP process stores a copy of the CCP buffer in ASP off-heap memory, and a key index ) Is used.

한정이 아니라 예시의 방식으로 개시된 실시 예에서, 인터넷 상에서 오프-힙 캐싱을 구비한 어플리케이션 서버를 사용하면서 데이터를 제공하는 방법은:In an embodiment, which is disclosed by way of example and not limitation, a method of providing data using an application server with off-heap caching on the Internet includes:

네트워크와 연결된 어플리케이션 서버에서 요청된 데이터의 요청을 수신하는 단계; 요청된 데이터가 어플리케이션 서버의 오프-힙 메모리에 어느 위치에 있는지 찾아내기 위해 상기 어플리케이션 서버에 저장된 중요한 인덱스를 사용하는 단계; 상기 어플리케이션 서버의 오프-힙 메모리로부터 요청된 데이터를 복구하는 단계; 요청을 해결하는 단계를 포함한다.Receiving a request for the requested data from an application server connected to the network; Using an important index stored in the application server to find out where the requested data is located in the off-heap memory of the application server; Recovering the requested data from the off-heap memory of the application server; And resolving the request.

한정이 아니라 예시의 방식으로 개시된 실시 예에서, 네트워크 서비스 시스템에 오프-힙 캐싱을 제공하는 방법은:In an embodiment disclosed in a non-limiting and illustrative manner, a method of providing off-heap caching to a network service system includes:

(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)를 제공하는 단계를 포함한다.(a) Providing a plurality of application servers each running an application server process (ASP) having an ASP virtual memory space with ASP heap memory and ASP off-heap memory ; (b) a cache server process (CSP) having a CCP configuration and communicating with a CSP index and a CSP process, respectively, the CCP process comprising a CCP heap memory and a CCP off- off-heap memory, wherein the CCP process provides access to CCP buffers data and CSP exponents stored in the CCP off-heap memory, Providing a plurality of cache servers; (c) combining the plurality of application servers and the plurality of cache servers so that the ASP process stores a copy of the data in the CCP buffers of the ASP off-heap memory, and accessing a copy of the data from the CCP buffers using a key index. < Desc / Clms Page number 6 >

특정 실시예의 이점은 오프-힙 저장으로 인한 가비지 콜렉션의 필요가 줄어든다는 점이고 이는 오프-힙 저장소의 사용에서 기인하며, 이는 시스템 오버 헤드와 ASP 서비스 중단을 감소시킨다. 이러한 및 또 다른 이점들은 다음의 설명 및 여러 도면의 연구를 통해, 당업자에게는 명백해질 것이다.An advantage of certain embodiments is that the need for garbage collection due to off-heap storage is reduced, which results from the use of off-heap storage, which reduces system overhead and ASP service interruption. These and other advantages will become apparent to those skilled in the art from the following description and study of the various drawings.

이제, 동일한 구성부품은 동일한 참조번호를 갖는 도면을 참조하여, 여러 예시적인 실시예를 설명한다. 예시적인 실시예는 본원에 개시한 개념을 예시하는 것이며 한정하려고 의도한 것은 아니다. 도면은 아래의 도를 포함한다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Now, with reference to the drawings in which like components have like reference numerals, various illustrative embodiments are described. The illustrative embodiments are illustrative of the concepts disclosed herein and are not intended to be limiting. The drawings include the figures below.

도 1은 오프-힙 캐싱을 구비한 네트워크 서비스 시스템의 예시적인 블록도이다.
도 2는 도1의 예시적인 네트워크 서비스 시스템의 일부를 형성하는 서버, 컴퓨터, 마이크로 프로세서 제어 장치에 대한 하드웨어 구성을 나타내는 예시적인 블록도이다.
도 3은 도 1의 네트워크 서비스 시스템의 어플리케이션 서버(AS)와 캐시 서버(CS) 간의 예시적인 특정 상호작용을 나타낸다.
도 4는 캐시 구성 프로세스(CCP) 설치 방법의 예시적인 흐름도이다.
도 4A는 도 4의 예시적인 캐시 구성 프로세스(CCP) 설치 방법의 도시를 돕는다.
도 5는 캐시 구성 프로세스(CCP)의 예시적인 업데이트 과정의 흐름도이다.
도 6은 어플리케이션 서버의 개시를 위한 예시적인 과정의 흐름도이다.
도 7은 어플리케이션 서버 프로세스(ASP)의 예시적인 업데이트 과정의 흐름도이다.
도 8은 예시적인 어플리케이션 서버 프로세스(ASP)의 흐름도이다.
1 is an exemplary block diagram of a network service system with off-heap caching.
2 is an exemplary block diagram illustrating a hardware configuration for a server, a computer, and a microprocessor control apparatus forming part of the exemplary network service system of FIG.
Figure 3 shows an exemplary specific interaction between an application server (AS) and a cache server (CS) of the network service system of Figure 1.
4 is an exemplary flow chart of a Cache Configuration Process (CCP) installation method.
FIG. 4A helps illustrate the exemplary cache configuration process (CCP) installation method of FIG.
5 is a flow diagram of an exemplary update process of a cache configuration process (CCP).
6 is a flow diagram of an exemplary process for initiating an application server.
7 is a flowchart of an exemplary update process of an application server process (ASP).
8 is a flow diagram of an exemplary application server process (ASP).

도 1은 오프-힙 캐싱을 구비한 예시적인 네트워크 서비스 시스템 (10)의 블록도이다. 예시적인 네트워크 서비스 시스템 (10) (종종 “데이터 센터”라고도 언급됨)은 복수의 어플리케이션 서버 (12)와 랜 라우터(LAN router) (18)을 포함하여 근거리 네트워크 통신망(LAN) (16)을 구성하는 복수의 캐시 서버 (14)를 포함한다. 예시적인 네트워크 서비스 시스템 (10)은 복수의 캐시 서버 (14)에 연결된 데이터베이스 서버 (20)과 복수의 어플리케이션 서버 (12)에 연결된 원거리 네트워크 (WAN)라우터 (22) 또한 포함한다.1 is a block diagram of an exemplary network service system 10 with off-heap caching. An exemplary network service system 10 (sometimes referred to as a " data center ") comprises a plurality of application servers 12 and a LAN router 18 to configure a local area network And a plurality of cache servers 14 that are connected to each other. Exemplary network service system 10 also includes a database server 20 coupled to a plurality of cache servers 14 and a remote network (WAN) router 22 coupled to a plurality of application servers 12.

비 한정하는 예시에서, 복수의 어플리케이션 서버 (12)는 N 어플리케이션 서버 AS1, AS2, AS3, AS4 …ASN을 포함한다. 비 한정하는 예시에서, 복수의 캐시 서버 (14)는 M 캐시 서버 CS1, CS2, …CSM을 포함한다. 당업자가 주지하는 바와 같이, 어플리케이션 서버 (12)와 캐시 서버 (14)와 같은 서버들은 일반적으로 네트워크 사용을 목적으로 고안된 마이크로프로세서에 기반한 컴퓨터 시스템이다.In a non-limiting example, a plurality of application servers 12 may include N application servers AS1, AS2, AS3, AS4 ... ASN. In a non-limiting example, a plurality of cache servers 14 may include M cache servers CS1, CS2, ..., CSM. As will be appreciated by those skilled in the art, servers such as application server 12 and cache server 14 are typically microprocessor-based computer systems intended for network use.

랜(LAN) 라우터 (18)은 바람직하게는 부하 분산기(load balancer)를 포함하여 랜 (16)의 향상성을 높힌다. 가령, 랜 라우터 (18)은 복수의 어플리케이션 서버(12)를 복수의 캐시 서버 (18)에 연결시켜 특정 어플리케이션 서버가 특정 캐시 서버와 연관된다. 예를 들어, 만약 어플리케이션 서버 (AS2)가 복수의 캐시 서버 (14) 중 하나와 아직 연관되지 않으면 상기 라우터 (18)의 부하 분산기는 당업자에게도 잘 알려진 부하 분산 기준에 근거하여 복수의 캐시 서버 (14) 중 하나를 할당한다. 예를들어, (AS2)는 그것의 캐시 서버를 지원하기 위해 캐시 서버 (CS1)으로 할당된다. 일단 관계가 확정되면 (AS2)와 (CS1)은 라우터 (18)을 통해 직접적으로 커뮤니케이션한다.The LAN router 18 preferably includes a load balancer to enhance the enhancement of the LAN 16. For example, the LAN router 18 connects a plurality of application servers 12 to a plurality of cache servers 18 so that a specific application server is associated with a specific cache server. For example, if the application server AS2 has not yet been associated with one of the plurality of cache servers 14, the load balancer of the router 18 may have a plurality of cache servers 14 ). For example, AS2 is assigned to the cache server CS1 to support its cache server. Once the relationship is established, (AS2) and (CS1) communicate directly with the router (18).

원거리 네트워크(WAN) 라우터 (22) 역시 바람직하게는 부하 분산기(LB)를 포함하여 상기 네트워크 서비스 시스템 (10)과 원거리 네트워크 (24)간의 소통의 효율성을 높힌다. 가령, 거리 네트워크 라우터 22는 접속부 (26)에 의해 원거리 네트워크 (24)에 연결되고 원거리 네트워크 (24)의 인터넷 서비스 제공자 (ISP)에 연결되며 또한 복수의 어플리케이션 서버들 (12) 각각에 연결된다. The wide area network (WAN) router 22 also preferably includes a load balancer (LB) to enhance the efficiency of communication between the network service system 10 and the remote network 24. For example, the distance network router 22 is connected to the remote network 24 by a connection 26 and to an Internet Service Provider (ISP) of the remote network 24 and to each of the plurality of application servers 12.

데이터 요구가 새로운 요청자로부터 접속부 (26)을 통해 수신되면, 라우터 (22)의 부하 분산기 (load balancer LB)가 복수의 어플리케이션 서버 (12) 중 하나를 할당하여 당업자에게 잘 알려진 부하 분산기준에 근거하여 요청을 처리한다. 가령, 새로운 요청이(예를 들어, 인터넷을 통해 통신하는 컴퓨터 혹은 모바일 장치) 어플리케이션 서버 (AS4)에 할당된다. 일단 관계(the relationship)이 형성이 되면, 라우터 (22)를 통해 상기 새로운 요청자는 직접적으로 어플리케이션 AS4와 통신한다. When the data request is received from the new requestor via the connection 26, the load balancer LB of the router 22 allocates one of the plurality of application servers 12 and, based on load balancing criteria well known to those skilled in the art Process the request. For example , a new request is assigned to the application server AS4 (e.g., a computer or mobile device that communicates over the Internet). Once the relationship is formed, the new requestor, via the router 22, communicates directly with the application 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)와 플래시 드라이브를 포함하는 다양한 종류들이 될 수 있다. 2 is a simplified block diagram of a computer and / or server 28 suitable for use in the system 10. By way of non-limiting example, the computer 28 includes a microprocessor 30 coupled to a memory bus 32 and an input / output (I / O) bus 34. Many memory and / or high speed devices may be coupled to memory bus 32, such as RAM 36, SRAM 38, and VRAM 40. The various input / output devices attached to the input / output bus 34 are mass storage 42, network interface 44 and other input / output devices 46. As will be appreciated by those skilled in the art, there are many non-transient computers that can read the medium and are available to the microprocessor 30, such as RAM 36, SRAM 38, VRAM 40 and mass storage 42. The network interface 44 and other input / output devices 46 also include a computer readable medium, such as a register, cache, buffer, or the like. The mass storage 42 may be of a variety of types including a hard disk drive, an optical drive, and a flash drive, for example, two or three.

도 3은 복수의 어플리케이션 서버 (12) 중 어플리케이션 서버 (AS)(12')와 복수의 캐시 서버 14 중 캐시 서버 (CS) (14') 간의 특정 거래(transactions)의 예시를 도시한다. 당업자가 주지하는 바와 같이, 어플리케이션 서버 (12')가 동시 발생되는 많은 프로세스와 스레드(threads)를 운영할 수 있다. 비-한정예시의 방식으로, 어플리케이션 서버 프로세스 ASP (48) 뿐 아니라 프로세스 (P1),…(PN)을 운영하는 어플리케이션 서버 (12')가 보여진다. 할당된 가상 메모리 공간의 양이 상기 프로세스 각각과 연관되어 있다. 가령, ASP (48)이 힙 메모리 (52)와 오프-힙 메모리 (54)를 포함하는 가상 메모리 공간 (50)과 연관이 있다.Figure 3 illustrates an example of specific transactions between an application server (AS) 12 'of a plurality of application servers 12 and a cache server (CS) 14' of a plurality of cache servers 14. As will be appreciated by those skilled in the art, the application server 12 ' can operate many concurrent processes and threads. By way of non-limiting example, application server process ASP 48 as well as processes P1, ... The application server 12 'operating the PN is shown. The amount of virtual memory space allocated is associated with each of the processes. For example, the ASP 48 is associated with a virtual memory space 50 that includes a heap memory 52 and an off-heap memory 54.

당업자가 주지하는 바와 같이, 가상 메모리 공간은 일반적으로 인접하거나 인접하지 않을 수 있는 물리적 메모리에 위치하는 가상 메모리 주소의 연속적인 범위이다. 예를 들어, 자바는 초기화 하자마자 자동적으로 상기 힙 메모리 주소(자동적으로 가비지 콜렉션 되기 쉬운)의 범위를 ASP(48) 같은 프로세스에 할당한다. 힙에 있지 않은(“오프-힙 메모리”) 가상 메모리 공간의 일부가 자바 프로세스에 의해 자동적으로 가비지 콜렉션되지 않는다.As will be appreciated by those skilled in the art, virtual memory space is typically a contiguous range of virtual memory addresses located in physical memory that may or may not be contiguous. For example, as soon as Java initializes And automatically allocates a range of the heap memory address (which is likely to be automatically garbage collected) to a process such as the ASP 48. Some of the virtual memory space that is not in the heap ("off-heap memory") is not automatically garbage-collected by Java processes.

본원 발명의 예시는 자동적으로 가비지 콜렉션 되기 쉬운 힙 메모리를 발생시키는 자바 소프트웨어 플랫폼을 사용하여 수행되었다. 자동적으로 가비지 콜렉션 되기 쉬운 다른 자바 소프트 웨어 플랫폼에서 다른 예시가 수행될수 있다. 그러므로 다른 대안적인 예시에서, 용어 “힙 메모리(heep memory)” “자동적으로 가비지 콜렉션 되기 쉬운 메모리”로 여겨질 수 있으며 “오프- 힙 메모리(off- heep memory)”는 “자동적으로 가비지 콜렉션 되지 않는 메모리”로 여겨질 수 있다. An example of the present invention was performed using a Java software platform that generates heap memory that is susceptible to garbage collection automatically. Other examples can be performed on other Java software platforms that are susceptible to automatic garbage collection. Thus, in another alternative example, the terms " heep memory ", " memory that is likely to be automatically garbage collected ", and " off-heep memory "Quot; memory ".

당업자가 주지하는 바와 같이, 캐시 서버 (14) 동시 발생하는 많은 프로세스와 스레드(THREAD)를 운영할 수 있다. 비 한정 예시의 방식에 의해, 가상 메모리 공간 (58)을 가지는 캐시 서버 프로세스 (CSP)(56)와 힙 메모리 (64)와 오프-힙 메모리 (66)을 구비한 가상 메모리 공간 (62)을 가지는 캐시 구성 프로세스 (CCP)를 운영하는 캐시 서버 (14')가 보여진다. 상기 CSP (56)과 상기 CCP (60)이 (67)에 표시된 대로 서로 커뮤니케이션한다. 상기 CSP (56)이 캘리포니아, 샌프란시스코의 세라코타 인코포레이션에서 제공하는 EHCache Cashe Server와 같은 스탠다드 소프트웨어 캐시 서버에 의해 수행될 수 있다. As will be appreciated by those skilled in the art, the cache server 14 may operate a number of concurrent processes and threads (THREAD). By way of non-limiting example, a cache server process (CSP) 56 having a virtual memory space 58 and a virtual memory space 62 having a heap memory 64 and an off-heap memory 66 A cache server 14 'running a cache configuration process (CCP) is shown. The CSP 56 and the CCP 60 communicate with each other as indicated by (67). The CSP 56 may be performed by a standard software cache server, such as the EHCache Cashe Server, available from Seracotain Corporation of San Francisco, CA.

본원 예시에서,어플리케이션 서버 (12')와 캐시 서버 (14)가 HTTP 프로토콜을 사용하여 커뮤니케이션한다. 당업자가 주지하는 바와 같이, “하이퍼텍스트 전송 프로토콜”을 의미하는 HTTP는 할당된 협력적인 하이퍼미디어 정보 시스템이다. 가령 HTTP는 인터넷상에서 월드 와이드 웹 (WWW)을 위한 데이터 커뮤니케이션의 기반이다. HTTP 프로토콜을 사용하여 ASP (48)은 CSP (56)에 요청 (68)을 전송할 수 있으며 이는 “요청의 해결”하여 ASP (48)에 응답 (70)을 제공한다. 당업자가 인지하듯이, 상기 요청은 HTTP 경로(path)에 의해 전송된다. 독립적인 HTTP 경로(path)는 다양한 데이터 구성, 리스트 및 데이터 블록(blocks)에 액세스를 제공한다. 가령 라우터 (18)의 부하 분산기를 통한, 영상 캐시 CSP 지수로의 HTTP 경로(path)는 이처럼 보일 수 있다.In the present example, the application server 12 'and the cache server 14 communicate using the HTTP protocol. As will be appreciated by those skilled in the art, HTTP, which means " hypertext transfer protocol ", is a collaborative hypermedia information system that is assigned. For example, HTTP is the foundation for data communication for the World Wide Web (WWW) on the Internet. Using the HTTP protocol, the ASP 48 may send a request 68 to the CSP 56 which resolves the request and provides a response 70 to the ASP 48. As will be appreciated by those skilled in the art, the request is sent by an HTTP path. An independent HTTP path provides access to various data structures, lists, and blocks of data. The HTTP path to the image cache CSP index through the load balancer of the router 18, for example, may look like this.

http://loadbaladd/playlisticcache/videocache/indexhttp: // loadbaladd / playlisticcache / videocache / index

본원에 사용된 바와 같이, “버퍼”(buffer)는 데이터의 블록 즉”데이터 블록” (data blocks)에 수용적인(receptive to) 가상 메모리의 파편이다. 데이터 블록은 일반적으로 영상 데이터, 오디오 데이터, 기타 등등 과 같은 특정 데이터 유형과 관련이 있다. 버퍼는 특정 데이터 블록을 수용하기 불충분한 규모일수 있으며 이 경우에 데이터 블록을 저장하는데 다양한 버퍼들이 사용될 수 있다. 버퍼는 하나 이상의 데이터 블록을 포함할 수 있고, 심지어 다른 유형의 블록을 포함할 수도 있다. 비 한정적인 예시의 방식에 의해, 다양한 유형의 데이터가 키 인덱스(key index)와 같은 특정 데이터 구성를 위한 블록안에 저장될 수 있다. 또한, 비 한정 예시의 방식에 의해, 비록 다양한 데이터 블록과 데이터 버퍼가 특정 데이터 구성을 위한 데이터를 저장하는데 필요할 수 있지만, 상기 데이터 블록은 상기 데이터 버퍼와 사이즈가 같을 수 있다.As used herein, a " buffer " is a fragment of virtual memory that is receptive to a block of data, or " data blocks. &Quot; Data blocks are typically associated with specific data types such as image data, audio data, and so on. A buffer can be of insufficient size to accommodate a particular block of data and in this case various buffers may be used to store the block of data. A buffer may contain one or more data blocks, and may even include other types of blocks. By way of non-limiting example, various types of data may be stored in blocks for a particular data organization, such as a key index. Also, by way of non-limiting example, the data block may be the same size as the data buffer, although various data blocks and data buffers may be required to store data for a particular data configuration.

도 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)에서 종료된다.4 is an exemplary flow chart of the Cache Configuration Process (CCP) 4A is intended to assist in the description of the method 72 of FIG. For example, the method 72 begins at 74 and is executed at 76 and the N buffer 77 is formed in a memory space where garbage is not collected (e.g., " off-heap "). Next, at run 78, a buffer list 79 is generated in which garbage is collected (e.g., " on heap ") with a pointer to an N buffer 77. Run 80, A free pool buffer list 81 is created with a pointer pointing to the N buffer 77. This should be all at the start. An L data list is generated with a pointer to the allocated buffer of the N buffer 77. An execution 86 is performed on the cache 83. The execution of the cache 86 A data block is created in the server process CSP and an execution 88 creates a data block index in the CSP. Next, at execution 90, a message is sent to the application server (e.g., using the JMS protocol) And informs the application server that the off- The JMS protocol provides a Java Message Service (JMS) service for the transmission of messages between two or more customers (e.g., a computer, a server, etc.), as will be appreciated by those skilled in the art. ). &Quot; The method 72 terminates at (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)에서 끝이 난다. 5 is an exemplary flow diagram of a process 94 for updating the cache configuration process (CSP). Process 94 begins at 96 and at run 98 it is determined whether to update the data in the data block of the buffer stored in the off-heap memory. If there is an update, execute (100) creates a new data configuration list. Optionally At run 102, it is determined if the number of buffers in the free pool falls below the threshold " t ". For example, if the number of buffers N = 1000 and the threshold t = 200, a message is sent to the operator indicating that the number of pre-buffers will gradually decrease if the number of buffers in the free pool is less than 200. Next, at run 104, a buffer from the free pool is requested and a pointer to the buffer is put into the new list. At run 106, the buffer is populated with a new data block and the old buffers are deallocated to free buffer at run 108 (along with outdated dates). The obsolete key list is discarded at run 110 and the index file is read from the CSP at run 112. Next, at run 114, the data block is read by the CSP and the index file is updated at run 116. Finally, at run 118, a message is sent (using JMS, for example) to the particular cache type to update the particular cache type and provide the address of the CSP and CCP. The process 94 ends at 120. [

상기 구식 데이터 블록과 구식 인덱스를 파괴하기 이전에 새로운 데이터 블록 세트와 새로운 CSP 인덱스를 생성함으로써 상기 프로세스 (94)가 실행된다는 사실을 이해할 것이다. 예를 들어, 상기 구식의 데이터가 버퍼 세트 “A” 에 있으면 새로운 버퍼 세트 “B”가 새로운 데이터 블록과 함께 제공되고, 새로운 CSP 인덱스가 상기 버퍼 “B”의 데이터 블록에 만들어진다. 본원 발명의 예에서, 버퍼세트 “B”의 작성과 상기 새로운 CSP 인덱스를 가지는 구식 CSP는 자동실행으로써 새로운 데이터로 전환된다. 일단 완료되면, 상기 A 버퍼가 상기 프리 버퍼 풀(free buffer pool)에 되돌아오고 상기 CSP 인덱스는 가비지 콜렉트 되도록 허용된다.It will be appreciated that the process 94 is executed by creating a new set of data blocks and a new CSP index before destroying the obsolete data blocks and the obsolete indexes. For example, if the outdated data is in buffer set " A ", a new buffer set " B " is provided with the new data block and a new CSP index is made in the data block of buffer " B ". In the example of the present invention, the creation of the buffer set " B " and the outdated CSP with the new CSP index are automatically switched to new data. Once completed, the A buffer is returned to the free buffer pool and the CSP index is allowed to be garbage collected.

도 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)에서 종료된다.6 is a flow diagram of an exemplary process 122 for starting the application server 12. Preferably, the application server 12 is started only after the cache server 14 is started. Process 122 begins at 124 and at run 126 an N buffer is generated in a non-garbage collected memory (e.g., heap memory). A buffer list is then created with a pointer to the N buffer at run 128 and a free pool buffer list is created at run 130 with a pointer to free buffers This should be all at startup). The counter " i " is then started at run 132, and the counter i is incremented by one at run 134. The decision execution 136 determines whether the counter i is less than or equal to " L " and the number of data types. If so, execution 138 requests the index and stores the data block in the heap memory of the ASP from the CSP for a data structure (i) as well as a list generation for the data structure (i). For example, one type of data organization is image data organization. Next, at execution 140, an N block is allocated to the N data types read by execution 138 and the data is copied from the heap and written to the list (i) for the data structure (i). Finally, the heap index completely reads the heap memory for each of the data structures in execution (142). The loop including executions 138, 140 and 142 is repeated L times and execution 122 then ends at 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)에서 종료된다.FIG. 7 is a flow diagram of an exemplary process 146 for updating the application server (ASP). The process 146 begins at 148 to determine whether an update has been received from the CSP at decision execution 150. [ If so, run 152 constitutes a data path from the ASP to the CSP index, and the CSP index is read at run 154. Next, at execution 156, a new listener for the data configuration is created and at 158 a new block of data is stored from the CSP in the heap memory of the ASP. Execution 160 allocates the same number of buffers from the free buffer pool and execution 162 copies the data block into the buffer and writes a new data list. Next, at run 164, the on-heap block is released for garbage collection and at 166 the key index is read into the heap memory. An obsolete buffer is returned to the free pool of execution 168 and the obsolete list is disassociated and prone to garbage collection at run 170. The process 146 ends at 172. < RTI ID = 0.0 >

도 8은 상기 어플리케이션 서버 (ASP)를 위한 프로세스 (174)의 예시적인 흐름도이다. 프로세스 (174)가 (176)에서 시작되어 결정 실행 (178)에서 데이터를 위한 요청이 수신되었는지 여부가 결정된다. 결정되었다면, 실행 (180)이 데이터가 상기 오프-힙 버퍼에(가령, 상기 요청에 의해 제공된 키) 어디에 저장되었는지를 알아내기 위해 상기 키 인덱스(key index)를 이용한다. 다음으로, 실행 (182)에서 상기 오프-힙 버퍼로부터 데이터가 복구되고 상기 요청은 해결된다. TCP/IP요청의 경우, 요청된 데이터를 포함한 응답으로 끝이 난다. 8 is an exemplary flow diagram of a process 174 for the application server (ASP). Process 174 begins at 176 and a decision 178 determines whether a request for data has been received. If so, run 180 uses the key index to find out where the data was stored in the off-heap buffer (e.g., the key provided by the request). Next, at execution 182, data is recovered from the off-heap buffer and the request is resolved. In the case of a TCP / IP request, the response ends with the requested data.

여기에 명시된 대로 상기 키 인덱스는 가비지 콜렉션되기 쉬운 힙 메모리에 존재한다. 하지만 상기 데이터 블록 역시 힙 메모리에 존재한다면, 이 구성과 연관이 있는 오버헤드가 더 적다. 다른 실시예에서 키 인덱스는 오프-힙 메모리에 존재한다. 이와 같은 실시 예에서 힙 메모리에 존재하는 상기 키 인덱스의 HTTP 요청이 오프-힙 프로세스에( 가령 C 프로그래밍 언어에서 수행된 하나) 재전송되고 오프-힙 메모리에서 키 인덱스를 구현한다.As stated herein, the key index is in heap memory, which is susceptible to garbage collection. However, if the data block is also in the heap memory, there is less overhead associated with this configuration. In another embodiment, the key index is in the off-heap memory. In such an embodiment, the HTTP request of the key index present in the heap memory is retransmitted to the off-heap process (e.g., one performed in the C programming language) and implements the key index in the off-heap memory.

비록, 특수 용어 및 장치를 이용하여 다양한 실시예를 설명하였으나, 그러한 설명은 단지 예시를 위한 것이며, 사용한 용어 및 설명 상의 용어로 한정하려는 것은 아니다. 본원에 개시한 어떤 실시예의 기술적 사상 및 범위를 벗어남이 없이 당Although various embodiments have been described using terminology and apparatus, such description is for illustrative purposes only and is not intended to be limited to the terms used and described. Without departing from the spirit and scope of any embodiment described herein,

업자에 의해서 변경 및 변형이 이루어질 수 있음을 이해할 것이다. 또한, 다양한 다른 실시예의 양상은 전체적으로 또는 부분적으로 교체할 수 있음을 이해해야 한다. 그러므로, 여기 및 이후에 있는 청구범위는 그들의 참된 기술적 사상과 범위에 따라서 한정 및 금반언없이 해석하도록 의도하였다.It will be understood by those skilled in the art that changes and modifications may be made. It is also to be understood that aspects of the various other embodiments may be interchanged in whole or in part. Therefore, the claims hereafter and in the following are intended to be interpreted without limitation and without limitation, in accordance with their true technical thought and scope.

Claims (20)

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)을 구비한 네트워크 서비스 시스템.
An ASP heap memory having an ASP heap memory and an ASP virtual memory space having an ASP off-heap memory, an ASP heap memory, And an ASP off-heap memory (ASP off-heap memory) having a key index stored in the ASP off-heap memory. In order to determine the location where data is stored in the ASP off-heap memory, A plurality of application servers using a key index;
(CCP) process, each of which has a CSP index and a CCP configuration process (CCP) while communicating with a CCP process, the CCP process comprising a CCP heap memory and a CCP off-heap memory wherein the CSP process comprises: a plurality of cache servers for providing access to the data of CCP buffers stored in the CCP off-heap memory and the CSP exponent;
Combining the plurality of application servers and the plurality of cache servers so that the ASP process stores a copy of the data in the CCP buffers of the ASP off-heap memory, (CCP) off-heap caching that includes a local area network (LAN) router that accesses a copy of data from the CCP buffers using a local area network (LAN) router.
제 1항에 있어서,
상기 랜 라우터(LAN router)는 상기 복수의 어플리케이션 서버 중 하나의 어플리케이션 서버와 상기 복수의 캐시 서버 중 하나의 캐시 서버 간 최초 도입(initial introduction)을 제공하는 로드 발랜서(load balancer)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
The method according to claim 1,
Wherein the LAN router includes a load balancer that provides an initial introduction between an application server of one of the plurality of application servers and one of the plurality of cache servers, Network service system with off-heap caching.
제 2항에 있어서,
상기 복수의 캐시 서버에 결합되어 상기 CCP 오프-힙 메모리(off-heap memory)에 저장할 데이터를 제공하는 데이터베이스 서버를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
3. The method of claim 2,
And a database server coupled to the plurality of cache servers and providing data to be stored in the CCP off-heap memory. ≪ Desc / Clms Page number 13 >
제 3항에 있어서,
상기 복수의 어플리케이션 서버를 원거리 네트워크 (WAN)에 결합시키는 원거리 네트워크 (WAN) 라우터(router)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
The method of claim 3,
And a remote network (WAN) router coupling the plurality of application servers to a wide area network (WAN).
제 4항에 있어서,
상기 원거리 네트워크 라우터 (WAN router)는 상기 복수의 어플리케이션 서버 중 하나의 어플리케이션 서버에 최초 인트로덕션(initial introduction)을 제공하는 로드 발랜서(load balancer)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
5. The method of claim 4,
The WAN router includes off-heap caching that includes a load balancer that provides an initial introduction to one of the plurality of application servers. A network service system.
제 5항에 있어서,
상기 원거리 네트워크 (WAN)는 HTTP 프로토콜로 실행되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
6. The method of claim 5,
Wherein the wide area network (WAN) has off-heap caching implemented in the HTTP protocol.
제 6항에 있어서,
상기 원거리 네트워크 (WAN)는 인터넷인 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
The method according to claim 6,
Wherein the long-distance network (WAN) is an Internet, with off-heap caching.
제 7항에 있어서,
상기 근거리 네트워크(LAN)는 HTTP 프로토콜로 실행되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
8. The method of claim 7,
Wherein the local area network (LAN) has off-heap caching performed with the HTTP protocol.
제 8항에 있어서,
상기 ASP와 CSP가 요청과 응답으로 커뮤니케이션 하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
9. The method of claim 8,
And off-heap caching wherein the ASP and the CSP communicate requests and responses.
제 9항에 있어서,
상기 키 인덱스 (key index)는 상기 ASP 힙 메모리에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.
10. The method of claim 9,
Wherein the key index has off-heap caching stored in the ASP heap memory.
오프힙 캐싱을 구비한 어플리케이션 서버를 사용하여 네트워크 상에서 데이터를 제공하는 방법으로,
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)를 가지는 오프힙 캐싱을 구비한 어플리케이션 서버를 사용하여 네트워크 상에서 데이터를 제공하는 방법.
A method for providing data on a network using an application server having off-heap caching,
Providing one or more cache servers for communicating with a CSP process and running a CSP server having a CSP exponent and a cache configuration process (CCP);
Combining at least one cache server with an application server to access data in CCP buffers stored in the CCP off-heap memory and the CSP exponent;
Storing a copy of the data in CCP buffers in an off-heap memory of the application server;
Receiving a request for the requested data from the application server connected to the network;
Using a key index stored in the application server to find out where the requested data is stored in the off-heap memory of the application server;
Recovering the requested data from the off-heap memory of the application;
And resolving the request;
The CCP process has a CCP virtual memory space having a CCP heap memory and a CCP off-heap memory
The application server may store the application's heap memory or off-heap memory in order to find out where the data is stored in the off-heap memory of the application server. Heap caching with a key index stored in the application server.
제 11항에 있어서,
상기 네트워크는 인터넷이고, 상기 요청은 TCP/IP 프로토콜 요청을 포함하고, 상기 요청에 대한 해결은 TCP/IP 프로토콜 응답을 포함하는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
12. The method of claim 11,
The network is the Internet, and the request includes a TCP / IP protocol request, and the resolution of the request is performed using an application server with off-heap caching including a TCP / IP protocol response, Lt; / RTI >
제 12항에 있어서,
상기 어플리케이션 서버는 자동적으로 가비지 콜렉션 (garbage collection) 되기 쉬운 힙 메모리를 가지는 ASP 가상 메모리 공간을 구비한 어플리케이션 서버 프로세스 (ASP)를 포함하는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
13. The method of claim 12,
The application server uses an application server with off-heap caching including an application server process (ASP) having an ASP virtual memory space with a heap memory that is likely to be garbage collected automatically Thereby providing data on the network.
제 13항에 있어서,
상기 키 인덱스 (key index)는 상기 힙 메모리 (heap memory)에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
14. The method of claim 13,
Wherein the key index is provided by an application server having off-heap caching stored in the heap memory.
제 13항에 있어서,
상기 키 인덱스 (key index)는 상기 오프-힙 메모리 (off-heap memory)에 저장되는 오프-힙 (off-heap) 캐싱을 구비한 어플리케이션 서버를 이용하여 네트워크 상에서 데이터를 제공하는 방법.
14. The method of claim 13,
Wherein the key index is provided by an application server having off-heap caching stored in the off-heap memory.
오프-힙 캐싱을 구비한 네트워크 시스템을 제공하는 방법으로,
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)을 구비한 네트워크 서비스 시스템을 제공하는 방법.
A method of providing a network system with off-heap caching,
The ASP heap memory or the ASP off-heap memory has an ASP virtual memory space having an ASP heap memory and an ASP off-heap memory. providing a plurality of application servers each driving the application server having a key index stored in -heap memory;
Providing a plurality of cache servers each driving a cache server process (CSP) having a CSP index and a cache configuration process (CCP) communicating with the CSP process;
Providing a local area network router coupling the plurality of application servers and the plurality of cache servers
To determine the location where data is stored in the ASP off-heap memory, the ASP process uses the key index;
Wherein the CCP process has a CCP virtual memory space having a CCP heap memory and a CCP off-heap memory, the CSP process having a CCP off-heap memory and a CCP off- Provide access to the data of the stored CCP buffer;
The ASP process stores a copy of the data of the CCP buffers in the ASP off-heap memory and uses the key index to retrieve a copy of the data from the CCP buffers Lt; RTI ID = 0.0 > off-heap caching < / RTI >
제 16항에 있어서,
상기 복수의 캐시 서버에 연결된 데이터베이스 서버를 제공하는 단계와 상기 데이터베이스 서버를 사용하는 상기 CCP 버퍼를 디벨로핑(DEBELOPING)하는 단계를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
17. The method of claim 16,
Providing a database server coupled to the plurality of cache servers, and deblocking the CCP buffer using the database server, the method comprising: providing a network service with off-heap caching / RTI >
제 17항에 있어서,
상기 CCP 버퍼에 변화가 있을 경우, 업데이트 메시지를 상기 복수의 어플리케이션 서버에 전송하는 단계를 더 포함하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
18. The method of claim 17,
And sending an update message to the plurality of application servers when there is a change in the CCP buffer. ≪ Desc / Clms Page number 21 >
제 18항에 있어서,
ASP가 그것의 오프-힙 메모리를 업데이트하여 상기 CCP 버퍼에 상기 변화를 반영하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
19. The method of claim 18,
Wherein the ASP updates off-heap memory to reflect the change in the CCP buffer. ≪ Desc / Clms Page number 19 >
제 19항에 있어서,
상기 키 인덱스 (key index)가 업데이트 되어 상기 CCP버퍼에 상기 변화를 반영하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템을 제공하는 방법.
20. The method of claim 19,
And wherein the key index is updated to reflect the change in the CCP buffer. ≪ Desc / Clms Page number 19 >
KR1020157008112A 2012-08-31 2013-08-31 Network service system and method with off-heap caching KR20150048861A (en)

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 (en) 2015-05-07

Family

ID=50184683

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157008112A KR20150048861A (en) 2012-08-31 2013-08-31 Network service system and method with off-heap caching

Country Status (7)

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

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
JP6549704B2 (en) 2014-09-25 2019-07-24 オラクル・インターナショナル・コーポレイション System and method for supporting zero copy binary radix trees in a distributed computing environment
US10942864B2 (en) 2015-11-20 2021-03-09 Hewlett Packard Enterprise Development Lp Shared memory for distributed data
AU2016373662B2 (en) * 2015-12-16 2019-07-11 Ab Initio Technology Llc High throughput, high reliability data processing system
CN107291423B (en) * 2016-03-31 2020-09-29 龙芯中科技术有限公司 Method and device for constructing operating environment
CN107341154A (en) * 2016-04-29 2017-11-10 北京京东尚科信息技术有限公司 Method and apparatus derived from a kind of data
CN106339183B (en) * 2016-08-29 2020-02-11 东软集团股份有限公司 Data retrieval method and server
WO2019067702A1 (en) 2017-09-27 2019-04-04 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
WO2019075045A1 (en) 2017-10-11 2019-04-18 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
CN107844579B (en) * 2017-11-10 2021-10-26 顺丰科技有限公司 Method, system and equipment for optimizing distributed database middleware access
WO2019241461A1 (en) 2018-06-15 2019-12-19 Bristol-Myers Squibb Company Tetrahydropyran-based thiodisaccharide mimics as galectin-3 inhibitors
CN109101554A (en) * 2018-07-12 2018-12-28 厦门中控智慧信息技术有限公司 For the data buffering system of JAVA platform, method and terminal
CN110895475B (en) * 2018-09-10 2023-03-31 深圳云天励飞技术有限公司 Search server starting method and device and search server
WO2020117883A1 (en) 2018-12-06 2020-06-11 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
WO2020198266A1 (en) 2019-03-26 2020-10-01 Bristol-Myers Squibb Company Small molecule inhibitors of galectin-3
JP2022527395A (en) 2019-04-10 2022-06-01 ブリストル-マイヤーズ スクイブ カンパニー Galectin-3 Small Molecule Inhibitor
US11243876B2 (en) 2019-11-06 2022-02-08 Oracle International Corporation Techniques for accessing off-heap memory
CN111651374A (en) * 2020-04-14 2020-09-11 北京齐尔布莱特科技有限公司 Data processing method and device, computing equipment and readable storage medium

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1049979B1 (en) 1997-12-19 2003-05-02 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 (en) 2009-03-20 2012-05-02 普林斯顿大学托管委员会 Systems and methods for network acceleration and efficient indexing for caching file systems
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
WO2014036540A2 (en) 2014-03-06
US9021050B2 (en) 2015-04-28
US20150319259A1 (en) 2015-11-05
IN2015KN00221A (en) 2015-06-12
CN104620219B (en) 2017-09-22
US20140067986A1 (en) 2014-03-06
WO2014036540A4 (en) 2014-07-17
CN104620219A (en) 2015-05-13
HK1204500A1 (en) 2015-11-20
CA2880287C (en) 2017-06-06
WO2014036540A3 (en) 2014-05-30
CA2880287A1 (en) 2014-03-06
US9594752B2 (en) 2017-03-14

Similar Documents

Publication Publication Date Title
KR20150048861A (en) Network service system and method with off-heap caching
US10592416B2 (en) Write-back storage cache based on fast persistent memory
JP5425551B2 (en) Transactional memory execution using virtual memory
US9575927B2 (en) RDMA-optimized high-performance distributed cache
CN1157659C (en) Non-uniform memory access (NUMA) data processing system that speculatively forwards read reguest to remote processing node
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
US10838857B2 (en) Multi-section garbage collection
US10073770B2 (en) Scheme for determining data object usage in a memory region
US10956335B2 (en) Non-volatile cache access using RDMA
US11132294B2 (en) Real-time replicating garbage collection
EP2002343A2 (en) Multi-cache cooperation for response output caching
US20130263116A1 (en) Automatic management of heterogeneous memory resources
US20200387541A1 (en) Remote virtualized asset delivery and local provisioning
CN109656886B (en) Key value pair-based file system implementation method, device, equipment and storage medium
KR20170029594A (en) Memory management method and device, and memory controller
CN114003562B (en) Directory traversal method, device and equipment and readable storage medium
CN102902630B (en) A kind of method and apparatus accessing local file
CN115964389A (en) Data processing method, device and equipment based on block chain and readable storage medium
EP4031986B1 (en) Rdma-enabled key-value store
CN115470026A (en) Data caching method, data caching system, data caching disaster tolerance method, data caching disaster tolerance system and data caching system
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 (en) Distributed data managing system
CN109783499A (en) A kind of data cache method, device and server

Legal Events

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