KR20150048861A - Network service system and method with off-heap caching - Google Patents
Network service system and method with off-heap caching Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/288—Distributed intermediate devices, i.e. intermediate devices for interaction with other intermediate devices on the same level
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/9994—Distributed 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
본 발명은 일반적으로 실시간 환경에서 물리적 메모리(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
비 한정하는 예시에서, 복수의 어플리케이션 서버 (12)는 N 어플리케이션 서버 AS1, AS2, AS3, AS4 …ASN을 포함한다. 비 한정하는 예시에서, 복수의 캐시 서버 (14)는 M 캐시 서버 CS1, CS2, …CSM을 포함한다. 당업자가 주지하는 바와 같이, 어플리케이션 서버 (12)와 캐시 서버 (14)와 같은 서버들은 일반적으로 네트워크 사용을 목적으로 고안된 마이크로프로세서에 기반한 컴퓨터 시스템이다.In a non-limiting example, a plurality of
랜(LAN) 라우터 (18)은 바람직하게는 부하 분산기(load balancer)를 포함하여 랜 (16)의 향상성을 높힌다. 가령, 랜 라우터 (18)은 복수의 어플리케이션 서버(12)를 복수의 캐시 서버 (18)에 연결시켜 특정 어플리케이션 서버가 특정 캐시 서버와 연관된다. 예를 들어, 만약 어플리케이션 서버 (AS2)가 복수의 캐시 서버 (14) 중 하나와 아직 연관되지 않으면 상기 라우터 (18)의 부하 분산기는 당업자에게도 잘 알려진 부하 분산 기준에 근거하여 복수의 캐시 서버 (14) 중 하나를 할당한다. 예를들어, (AS2)는 그것의 캐시 서버를 지원하기 위해 캐시 서버 (CS1)으로 할당된다. 일단 관계가 확정되면 (AS2)와 (CS1)은 라우터 (18)을 통해 직접적으로 커뮤니케이션한다.The
원거리 네트워크(WAN) 라우터 (22) 역시 바람직하게는 부하 분산기(LB)를 포함하여 상기 네트워크 서비스 시스템 (10)과 원거리 네트워크 (24)간의 소통의 효율성을 높힌다. 가령, 거리 네트워크 라우터 22는 접속부 (26)에 의해 원거리 네트워크 (24)에 연결되고 원거리 네트워크 (24)의 인터넷 서비스 제공자 (ISP)에 연결되며 또한 복수의 어플리케이션 서버들 (12) 각각에 연결된다. The wide area network (WAN)
데이터 요구가 새로운 요청자로부터 접속부 (26)을 통해 수신되면, 라우터 (22)의 부하 분산기 (load balancer LB)가 복수의 어플리케이션 서버 (12) 중 하나를 할당하여 당업자에게 잘 알려진 부하 분산기준에 근거하여 요청을 처리한다. 가령, 새로운 요청이(예를 들어, 인터넷을 통해 통신하는 컴퓨터 혹은 모바일 장치) 어플리케이션 서버 (AS4)에 할당된다. 일단 관계(the relationship)이 형성이 되면, 라우터 (22)를 통해 상기 새로운 요청자는 직접적으로 어플리케이션 AS4와 통신한다. When the data request is received from the new requestor via the
도 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
도 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
당업자가 주지하는 바와 같이, 가상 메모리 공간은 일반적으로 인접하거나 인접하지 않을 수 있는 물리적 메모리에 위치하는 가상 메모리 주소의 연속적인 범위이다. 예를 들어, 자바는 초기화 하자마자 자동적으로 상기 힙 메모리 주소(자동적으로 가비지 콜렉션 되기 쉬운)의 범위를 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
본원 발명의 예시는 자동적으로 가비지 콜렉션 되기 쉬운 힙 메모리를 발생시키는 자바 소프트웨어 플랫폼을 사용하여 수행되었다. 자동적으로 가비지 콜렉션 되기 쉬운 다른 자바 소프트 웨어 플랫폼에서 다른 예시가 수행될수 있다. 그러므로 다른 대안적인 예시에서, 용어 “힙 메모리(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
본원 예시에서,어플리케이션 서버 (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
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
도 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
상기 구식 데이터 블록과 구식 인덱스를 파괴하기 이전에 새로운 데이터 블록 세트와 새로운 CSP 인덱스를 생성함으로써 상기 프로세스 (94)가 실행된다는 사실을 이해할 것이다. 예를 들어, 상기 구식의 데이터가 버퍼 세트 “A” 에 있으면 새로운 버퍼 세트 “B”가 새로운 데이터 블록과 함께 제공되고, 새로운 CSP 인덱스가 상기 버퍼 “B”의 데이터 블록에 만들어진다. 본원 발명의 예에서, 버퍼세트 “B”의 작성과 상기 새로운 CSP 인덱스를 가지는 구식 CSP는 자동실행으로써 새로운 데이터로 전환된다. 일단 완료되면, 상기 A 버퍼가 상기 프리 버퍼 풀(free buffer pool)에 되돌아오고 상기 CSP 인덱스는 가비지 콜렉트 되도록 허용된다.It will be appreciated that the
도 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
도 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
도 8은 상기 어플리케이션 서버 (ASP)를 위한 프로세스 (174)의 예시적인 흐름도이다. 프로세스 (174)가 (176)에서 시작되어 결정 실행 (178)에서 데이터를 위한 요청이 수신되었는지 여부가 결정된다. 결정되었다면, 실행 (180)이 데이터가 상기 오프-힙 버퍼에(가령, 상기 요청에 의해 제공된 키) 어디에 저장되었는지를 알아내기 위해 상기 키 인덱스(key index)를 이용한다. 다음으로, 실행 (182)에서 상기 오프-힙 버퍼로부터 데이터가 복구되고 상기 요청은 해결된다. TCP/IP요청의 경우, 요청된 데이터를 포함한 응답으로 끝이 난다. 8 is an exemplary flow diagram of a
여기에 명시된 대로 상기 키 인덱스는 가비지 콜렉션되기 쉬운 힙 메모리에 존재한다. 하지만 상기 데이터 블록 역시 힙 메모리에 존재한다면, 이 구성과 연관이 있는 오버헤드가 더 적다. 다른 실시예에서 키 인덱스는 오프-힙 메모리에 존재한다. 이와 같은 실시 예에서 힙 메모리에 존재하는 상기 키 인덱스의 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)
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.
상기 랜 라우터(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.
상기 복수의 캐시 서버에 결합되어 상기 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 >
상기 복수의 어플리케이션 서버를 원거리 네트워크 (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).
상기 원거리 네트워크 라우터 (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.
상기 원거리 네트워크 (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.
상기 원거리 네트워크 (WAN)는 인터넷인 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.The method according to claim 6,
Wherein the long-distance network (WAN) is an Internet, with off-heap caching.
상기 근거리 네트워크(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.
상기 ASP와 CSP가 요청과 응답으로 커뮤니케이션 하는 오프-힙 (off-heap) 캐싱을 구비한 네트워크 서비스 시스템.9. The method of claim 8,
And off-heap caching wherein the ASP and the CSP communicate requests and responses.
상기 키 인덱스 (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.
상기 네트워크는 인터넷이고, 상기 요청은 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 >
상기 어플리케이션 서버는 자동적으로 가비지 콜렉션 (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.
상기 키 인덱스 (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.
상기 키 인덱스 (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 >
상기 복수의 캐시 서버에 연결된 데이터베이스 서버를 제공하는 단계와 상기 데이터베이스 서버를 사용하는 상기 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 >
상기 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 >
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 >
상기 키 인덱스 (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 >
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)
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)
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 |
-
2012
- 2012-08-31 US US13/601,118 patent/US9021050B2/en not_active Expired - Fee Related
-
2013
- 2013-08-31 CN CN201380045627.2A patent/CN104620219B/en not_active Expired - Fee Related
- 2013-08-31 IN IN221KON2015 patent/IN2015KN00221A/en unknown
- 2013-08-31 KR KR1020157008112A patent/KR20150048861A/en active IP Right Grant
- 2013-08-31 WO PCT/US2013/057752 patent/WO2014036540A2/en active Application Filing
- 2013-08-31 CA CA2880287A patent/CA2880287C/en not_active Expired - Fee Related
-
2015
- 2015-04-27 US US14/697,463 patent/US9594752B2/en active Active
- 2015-05-27 HK HK15105047.5A patent/HK1204500A1/en not_active IP Right Cessation
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 |