KR102103782B1 - 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버 - Google Patents

분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버 Download PDF

Info

Publication number
KR102103782B1
KR102103782B1 KR1020180065707A KR20180065707A KR102103782B1 KR 102103782 B1 KR102103782 B1 KR 102103782B1 KR 1020180065707 A KR1020180065707 A KR 1020180065707A KR 20180065707 A KR20180065707 A KR 20180065707A KR 102103782 B1 KR102103782 B1 KR 102103782B1
Authority
KR
South Korea
Prior art keywords
cache
cache data
original
server
replication
Prior art date
Application number
KR1020180065707A
Other languages
English (en)
Other versions
KR20190139095A (ko
Inventor
노형주
Original Assignee
주식회사 티맥스소프트
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 티맥스소프트 filed Critical 주식회사 티맥스소프트
Priority to KR1020180065707A priority Critical patent/KR102103782B1/ko
Priority to US16/011,976 priority patent/US10783081B2/en
Publication of KR20190139095A publication Critical patent/KR20190139095A/ko
Application granted granted Critical
Publication of KR102103782B1 publication Critical patent/KR102103782B1/ko

Links

Images

Classifications

    • H04L67/2852
    • 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
    • H04L67/5682Policies or rules for updating, deleting or replacing the stored data
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • H04L67/2804
    • 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/561Adding application-functional data or data for application control, e.g. adding metadata
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/154Networked environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • G06F2212/284Plural cache memories being distributed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/314In storage network, e.g. network attached cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Library & Information Science (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 클라이언트 노드로부터의 원본 캐시 데이터 요청 신호가 획득되면 원본 캐시 데이터에 대한 복제 캐시 데이터를 클라이언트 노드로 전송하여 클라이언트 노드의 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 복제 캐시 데이터를 참조하는 클라이언트 노드를 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 관리하고, 원본 캐시 데이터가 변경될 경우, 레퍼런스 맵을 참조하여 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수를 확인하며, 확인된 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행하는 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버에 관한 것이다.

Description

분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버{METHOD FOR CONTROLLING NEAR CACHE IN DISTRIBUTED CACHE ENVIRONMENT, AND DISTRIBUTED CACHE SERVER USING THE SAME}
본 발명은 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버에 관한 것으로, 보다 상세하게는, 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 클라이언트 노드로부터의 원본 캐시 데이터 요청 신호가 획득되면 원본 캐시 데이터에 대한 복제 캐시 데이터를 클라이언트 노드로 전송하여 클라이언트 노드의 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 복제 캐시 데이터를 참조하는 클라이언트 노드를 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 관리하고, 원본 캐시 데이터가 변경될 경우, 레퍼런스 맵을 참조하여 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수를 확인하며, 확인된 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행하는 방법 및 이를 이용한 분산 캐시 서버에 관한 것이다.
최근 페이스북, 유튜브, 트위터 등과 같은 소셜 미디어의 성장과 모바일 장치와 같은 디지털 기기의 확산에 따라 사용자는 더 이상 단순히 데이터 소비자가 아닌 데이터 생산자의 역할도 함께 수행하게 되었다. 이로 인해, 데이터의 양이 급증했을 뿐만 아니라 데이터의 유형도 다양화되면서 빅 데이터 시대가 도래되었다. 이러한 빅 데이터를 처리하기 위해 하둡(hadoop), 병렬 DBMS(database management system)와 같은 분산 저장 관리 기술이 활용되고 있다.
일반적인 분산 저장 관리 기술은 디스크에 데이터를 저장하고 처리하기 위한 기술이다. 따라서, 분산 저장 관리 기술에서 I/O(input/output) 속도로 인한 처리 비용이 증가되고 노드에 병목 현상이 증가되는 문제점이 있다. 이러한 문제점을 해결하기 위하여 캐시 데이터를 복수의 분산 캐시 서버에 저장하여 사용하는 분산 캐시 기술이 이용되고 있으며, 분산 캐시 기술은 클라우드 인프라에서 저비용의 신뢰할 수 있는 데이터 저장을 위한 수단으로서 인기를 얻고 있다.
또한, 캐시 데이터의 참조는 최신 데이터를 유지하고 있는 캐시 서버로부터 조회하여 이를 활용하는 것이 가장 기본 원칙이 된다. 그러나, 많은 경우 캐시 데이터는 오랜 기간 변경이 이루어지지 않는 Read-only 성격을 지니며 캐시 서버로부터 데이터 참조가 이루어진 경우 그 이후 클라이언트 노드에 복사하여 클라이언트 노드로부터 참조가 이루어져도 무방하며 이는 불필요한 네트워크 통신을 줄이게 되어 성능 향상에 크게 이바지하게 된다.
이와 같은 효율을 달성하기 위해 니어 캐시 제어 메커니즘에 관한 기술이 대두되고 있으며, 그에 따라 클라이언트 노드에 니어 캐시 저장소를 제공하고 캐시 서버 데이터의 변경 내역을 지속적으로 모니터링하며 니어 캐시의 유효성을 확인하고 제어하게 된다. 즉, 캐시 서버 측의 캐시 데이터에 변경이 발생하여 니어 캐시 저장부에 위치한 캐시 데이터가 더 이상 유효하지 않다면 이를 참조하고 있는 모든 클라이언트 노드에게 통보하여 캐시 서버로부터 새로운 데이터를 참조하도록 강제한다.
하지만, 니어 캐시 메커니즘은 캐시 서버로의 접근을 최소화해줌으로써 네트워크 자원의 불필요한 낭비를 막고 또한 캐시 서버의 일량도 줄여줌으로써 많은 이점을 지니는 접근 방법임은 분명하나, 일반적 예상과는 달리 캐시 서버의 데이터가 일정 수준 이상의 빈도로 변경이 잦거나, 캐시 서버로부터 니어 캐시 저장부에 캐시 데이터를 복제하여 사용 중인 클라이언트 노드가 많은 경우 캐시 데이터를 인밸리데이션(invalidation)하여 언제나 최신 데이터 참조를 유지하는 데에는 네트워크 환경 기반 동기화 문제 및 순간적인 네트워크 자원 사용 급증의 문제 등 쉽게 해결되지 않는 문제가 발생하게 된다.
본 발명은 상술한 문제점들을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 분산 캐시 서버에 보관 중인 원본 캐시 데이터에 대한 참조 시 네트워킹 작업을 최소화하는 것을 다른 목적으로 한다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터의 인밸리데이션을 효율적으로 수행할 수 있도록 하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터의 인밸리데이션을 위한 네트워크 자원 사용의 급증을 방지할 수 있도록 하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터를 참조하는 클라이언트 노드를 효율적으로 관리할 수 있도록 하는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 실시예에 따르면, 분산 캐시 환경에서 니어 캐시를 제어하는 방법에 있어서, (a) 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버가, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 단계; (b) 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 단계; 및 (c) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 단계; 를 포함하는 니어 캐시 제어 방법이 제공된다.
또한, 본 발명의 일 실시예에 따르면, 분산 캐시 환경에서 니어 캐시를 제어하는 분산 캐시 서버에 있어서, 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호를 획득하는 통신부; 및 상기 통신부를 통해 획득되는 상기 원본 데이터 요청 신호에 대응하여, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 프로세스와, 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 프로세스와, 상기 복제 캐시 데이터가 유효하지 않으면, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 프로세스를 수행하는 프로세서; 를 포함하는 분산 캐시 서버가 제공된다.
이 외에도, 본 발명의 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
본 발명은 클라이언트 노드의 니어 캐시 저장부에 캐시 데이터를 저장하여 참조하도록 함으로써 분산 캐시 서버에 보관 중인 원본 캐시 데이터에 대한 참조 시 네트워킹 작업을 최소화할 수 있다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터의 인밸리데이션을 캐시 데이터를 참조하는 클라이언트 노드의 개수에 대응하여 능동적으로 수행할 수 있다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터의 인밸리데이션을 클라이언트 노드의 개수에 대응하여 멀티캐스트 방식 또는 유니캐스트 방식을 통해 수행하므로 네트워크 자원 사용의 급증을 방지할 수 있다.
또한, 본 발명은 분산 캐시 환경에서 캐시 데이터를 참조하는 클라이언트 노드의 개수를 적정 개수로 관리하여 단일 인밸리데이션에 소요되는 일량이 급격히 증가되는 것을 방지할 수 있다.
도 1은 본 발명의 일 실시예에 따른 분산 캐시 환경에서 니어 캐시를 제어하는 상태의 분산 캐시 시스템을 개략적으로 도시한 것이며,
도 2는 본 발명의 일 실시예에 따른 분산 캐시 환경에서 니어 캐시를 제어하는 분산 캐시 서버를 개략적으로 도시한 것이며,
도 3은 본 발명의 일 실시예에 따른 분산 캐시 환경에서 니어 캐시를 제어하는 방법을 개략적으로 것이며,
도 4는 본 발명의 일 실시예에 따른 분산 캐시 환경에서 니어 캐시를 제어하는 다른 상태의 분산 캐시 시스템을 개략적으로 도시한 것이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 바람직한 실시예들에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1은 본 발명의 일 실시예에 따른 분산 캐시 환경에서 니어 캐시를 제어하는 상태의 분산 캐시 시스템을 개략적으로 도시한 것으로, 분산 캐시 시스템은 복수의 분산 캐시 서버(CS1, CS2, …, CSm)를 포함할 수 있다.
복수의 분산 캐시 서버(CS1, CS2, …, CSm) 각각은 데이터베이스(DB)에 저장된 데이터에 대응하는 원본 캐시 데이터를 메인 캐시 저장부(M1, M2, …, Mm)에 저장하며, 적어도 하나 이상의 클라이언트 노드(C1, C2, …, Cn)로부터의 원본 캐시 데이터에 대한 요청 신호가 획득되면 클러스터링된 복수의 분산 캐시 서버(CS1, CS2, …, CSm) 중 클라이언트 노드(C1, C2, …, Cn)로부터 요청된 원본 캐시 데이터를 저장하고 있는 특정 분산 캐시 서버가 원본 캐시 데이터에 대한 복제 캐시 데이터를 적어도 하나 이상의 클라이언트 노드(C1, C2, …, Cn)로 전송함으로써 복제 캐시 데이터를 수신한 적어도 하나 이상의 클라이언트 노드(C1, C2, …, Cn)가 복제 캐시 데이터를 니어 캐시 저장부(N1, N2, …, Nn)에 저장하여 다음번 원본 캐시 데이터에 대한 접근 시 분산 캐시 서버를 통하지 않고 니어 캐시 저장부(N1, N2, …, Nn)에 저장된 복제 캐시 데이터를 이용하도록 한다.
또한, 복수의 분산 캐시 서버(CS1, CS2, …, CSm) 각각은 복제 캐시 데이터를 참조하는 적어도 하나 이상의 클라이언트 노드(C1, C2, …, Cn)를 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하여 관리하며, 원본 캐시 데이터의 변경 상태를 모니터링하여 원본 캐시 데이터가 변경되면 적어도 하나 이상의 클라이언트 노드(C1, C2, …, Cn)의 니어 캐시 저장부(N1, N2, …, Nn)에 저장된 복제 캐시 데이터가 유효하지 않은 것으로 판단하며, 복제 캐시 데이터를 참조 중인 클라이언트 노드(C1, C2, …, Cn)의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행한다.
이때, 도 2를 참조하면, 분산 캐시 환경을 구성하는 각각의 분산 캐시 서버(CS)는 정보의 송수신을 지원하는 통신부(100)와 정보를 처리하는 프로세서(200)를 포함할 수 있다. 또한, 분산 캐시 서버(CS)는 데이터베이스에 저장된 데이터에 대응하는 원본 캐시 데이터를 저장하는 메인 캐시 저장부(300)를 포함할 수 있다. 이에 더하여, 분산 캐시 서버(CS)는 다른 분산 캐시 서버의 메인 캐시 저장부에 저장된 원본 캐시 데이터에 대응하는 백업 캐시 데이터를 저장하는 백업 캐시 저장부(400)를 포함할 수 있으며, 이를 통해 원본 캐시 데이터를 메인 캐시 저장부에 저장하고 있는 다른 분산 캐시 서버에 장애가 발생할 경우 백업 캐시 저장부(400)에 저장된 백업 캐시 데이터를 이용하여 분산 캐시 환경을 장애 없이 운영할 수 있게 된다.
이와 같이 구성된 분산 캐시 시스템에서 니어 캐시를 제어하는 방법을 도 1과 도 3을 참조하여 보다 상세히 설명하면 다음과 같다.
먼저, 특정 분산 캐시 서버는 원본 캐시 데이터 요청에 대응하여 복제 캐시 데이터를 클라이언트 노드로 전송하여 준다(S10).
일 예로, 특정 분산 캐시 서버(CS1)가 데이터베이스(DB)에 저장된 특정 데이터에 대응하는 원본 캐시 데이터(○A)를 메인 캐시 저장부(M1)에 저장하고 있는 상태에서, 적어도 하나 이상의 클라이언트 노드(C1)로부터 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버(CS1)는 메인 캐시 저장부(M1)에 저장된 원본 캐시 데이터(○A)에 대한 복제 캐시 데이터(○A)를 클라이언트 노드(C1)로 전송하여 준다. 이때, 클라이언트 노드(C1)는 WAS(Web Application Server), Java EE(Enterprise edition) 어플리케이션이 설치된 서버를 포함할 수 있으나, 이에 한정되지 않으며 자바(java) 등의 프로그램 어플리케이션을 이용하여 데이터베이스의 저장된 데이터를 이용하는 모든 단말을 포함할 수 있다. 그리고, 특정 분산 캐시 서버(CS1)는 원본 캐시 데이터(○A)를 메인 캐시 저장부(M1)에 저장하고 있는 분산 캐시 서버일 수 있다. 또한 특정 분산 캐시 서버(CS1)는 다른 분산 캐시 서버의 메인 캐시 저장부에 저장된 다른 원본 캐시 데이터를 백업 캐시 저장부에 백업하여 다른 분산 캐시 서버의 장애 발생시 다른 원본 캐시 데이터를 클라이언트 노드들이 계속하여 이용 가능하게 할 수 있다.
그러면, 클라이언트 노드(C1)는 특정 분산 캐시 서버(CS1)로부터 전송되는 복제 캐시 데이터(○A)를 니어 캐시 저장부(N1)에 저장하고, 이후 원본 캐시 데이터(○A)를 이용하고자 할 경우 니어 캐시 저장부(N1)에 저장된 복제 캐시 데이터(○A)를 이용함으로써 원본 캐시 데이터(○A) 이용시 분산 캐시 서버(CS1)로 접속하지 않아도 되므로 네트워킹 작업을 최소화할 수 있게 된다.
상기에서는, 클라이언트 노드(C1)만이 특정 분산 캐시 서버(CS1)에 저장된 원본 캐시 데이터(○A)에 대한 복제 캐시 데이터(○A)를 니어 캐시 저장부(M1)에 저장하는 것만 설명하였으나, 다른 클라이언트 노드(C2, …, Cn)들 중 원본 캐시 데이터(○A)를 이용하는 어플리케이션을 실행하는 클라이언트 노드들에 대해서도 같은 방법에 의해 복제 캐시 데이터(○A)를 전송하여 각각의 니어 캐시 저장부(N2, …, Nn)에 저장하도록 할 수 있다.
또한, 상기에서는 분산 캐시 서버(CS1)에 대해서만 설명하였으나, 각각의 분산 캐시 서버(CS2, …, CSm)도 동일한 방법에 의해 원본 캐시 데이터(○C○D)(○E○F)에 대한 복제 캐시 데이터를 요청된 클라이언트 노드들로 전송하여, 해당 클라이언트 노드들이 복제 캐시 데이터를 각각의 니어 캐시 저장부에 저장하도록 할 수 있다.
그리고, 각각의 클라이언트 노드(C1, C2, …, Cn)는 니어 캐시 저장부(N1, N2, …, Nn)에 저장되는 복제 캐시 데이터들에 의한 전체 저장 용량을 제한할 수 있다. 즉, 각각의 클라이언트 노드(C1, C2, …, Cn)는 니어 캐시 저장부(N1, N2, …, Nn)의 저장 용량이 한정적이므로, 니어 캐시 저장부(N1, N2, …, Nn)에 저장되는 복제 캐시 데이터의 총량을 제한할 수 있다. 또한, 각각의 클라이언트 노드(C1, C2, …, Cn)는 니어 캐시 저장부(N1, N2, …, Nn)에 저장되는 복제 캐시 데이터의 엔트리 개수를 제한할 수 있다. 이를 통해 각각의 클라이언트 노드(C1, C2, …, Cn)는 한정된 용량을 제공하는 니어 캐시 저장소(N1, N2, …, Nn)를 최적화하여 활용할 수 있게 된다.
이때, 각각의 클라이언트 노드(C1, C2, …, Cn)는 니어 캐시 저장부(N1, N2, …, Nn)의 전체 저장 용량을 제한하거나 엔트리 개수를 제한하기 위하여, 니어 캐시 저장부(N1, N2, …, Nn)에 저장되는 엔트리에 대한 만료(expire) 정책을 적용할 수 있다. 일 예로, 각각의 클라이언트 노드(C1, C2, …, Cn)는 니어 캐시 저장부(N1, N2, …, Nn)에 저장된 복제 캐시 데이터들 중 일부의 복제 캐시 데이터를 삭제하되, 최근 참조된 시간이 가장 오래된 복제 캐시 데이터를 삭제하거나, 저장된 시간이 가장 오래된 복제 캐시 데이터를 삭제하거나, 캐시 데이터의 용량이 제일 작은 복제 캐시 데이터를 삭제하거나, 캐시 데이터의 용량이 제일 큰 복제 캐시 데이터를 삭제할 수 있다.
다음으로, 특정 분산 캐시 서버는 복제 캐시 데이터를 참조하는 클라이언트 노드를 레퍼런스 맵을 통해 관리한다(S20).
일 예로, 특정 분산 캐시 서버(CS1)는 상기의 동작에 의해 니어 캐시 저장부(N1)에 저장된 복제 캐시 데이터(○A)를 참조하는 적어도 하나 이상의 클라이언트 노드(C1)를 원본 캐시 데이터(○A)에 대응하여 맵핑한 레퍼런스 맵(RM1)을 생성하거나 기 생성된 레퍼런스 맵(RM1)을 업데이트한다. 물론, 다른 원본 캐시 데이터(○B, ○C, ○D, ○E, ○F), 및 다른 분산 캐시 서버(CS2, …, CSm)에 대해서도 동일한 방법에 의해 레퍼런스 맵(RM2, …, RMm)을 통해 복제 캐시 데이터를 참조하는 클라이언트 노드를 관리할 수 있다.
다음으로, 특정 분산 캐시 서버는 원본 캐시 데이터 변경시, 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행한다(S30).
일 예로, 특정 분산 캐시 서버(CS1)는 레퍼런스 맵(RM1)에 포함된 원본 캐시 데이터(○A)의 변경 상태를 모니터링하여 복제 캐시 데이터(○A)의 유효성을 확인한다. 즉, 특정 분산 캐시 서버(CS1)는 메인 캐시 저장부(M1)에 저장된 원본 캐시 데이터(○A)가 변경될 경우에는 클라이언트 노드(C1)의 니어 캐시 저장부(N1)에 저장된 복제 캐시 데이터(○A)가 변경된 원본 캐시 데이터(○A)와 일치하지 않으므로 복제 캐시 데이터(○A)가 더 이상 유효하지 않은 것으로 판단한다. 그리고, 복제 캐시 데이터가 유효하지 않은 것으로 판단되면, 특정 분산 캐시 서버(CS1)는 레퍼런스 맵(RM1)을 참조하여 복제 캐시 데이터(○A)를 참조하는, 즉, 원본 캐시 데이터(○A)를 니어 캐시 저장부(N1)에 복제한 클라이언트 노드의 개수를 확인하고, 확인된 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터(○A)에 대한 인밸리데이션을 수행한다. 이를 통해 특정 분산 캐시 서버(CS1)는 복제 캐시 데이터를 참조하는 클라이언트 노드들로 하여금 니어 캐시 저장부에 저장된 복제 캐시 데이터를 삭제하고, 원본 캐시 데이터를 이용할 시 메인 캐시 저장부에 저장된 변경된 원본 캐시 데이터를 참조하도록 하며, 상기에서와 같은 방법에 의해 변경된 원본 캐시 데이터를 복제하여 해당 클라이언트 노드의 니어 캐시 저장부에 저장하도록 한다.
이때, 특정 분산 캐시 서버(CS1)는 복제 캐시 데이터(○A)를 참조하는 확인된 클라이언트 노드의 개수에 대응하여 멀티캐스트 기반의 인밸리데이션을 수행하거나 유니캐스트 기반의 인밸리데이션을 수행할 수 있다. 일 예로, 특정 분산 캐시 서버는, 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수가 기설정된 제1 개수값 이하인 경우에는 유니캐스트 기반의 인밸리데이션을 수행하며, 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수가 제1 개수값 초과인 경우에는 멀티캐스트 기반의 인밸리데이션을 수행할 수 있다. 즉, 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수가 적을 경우에는 각각의 클라이언트 노드에 대하여 각각 인밸리데이션을 수행하여도 네트워크 자원 사용이 급격히 증가하지 않으므로 신뢰성이 높은 유니캐스트 기반의 인밸리데이션을 수행하며, 복제 캐시 데이터를 참조 중인 클라이언트 노드의 개수가 많을 경우에는 각각의 클라이언트 노드에 대하여 각각 인밸리데이션을 수행할 경우 네트워크 자원 사용이 급증하게 되므로 이를 방지하기 위하여 멀 멀티캐스트 기반의 인밸리데이션을 수행함으로써 인밸리데이션을 네트워크 자원 사용의 급증을 방지하며 능동적으로 수행할 수 있게 된다.
물론, 다른 원본 캐시 데이터(○B, ○C, ○D, ○E, ○F), 및 다른 분산 캐시 서버(CS2, …, CSm)도 상기와 같은 방법에 의해 능동적으로 인밸리데이션을 수행할 수 있다. 또한, 특정 분산 캐시 서버가 인밸리데이션을 수행할 경우, 특정 분산 캐시 서버가 원본 캐시 데이터를 백업하고 있는 다른 분산 캐시 서버를 클라이언트 노드로 판단하여 원본 캐시 데이터를 업데이트할 수 있다.
한편, 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수가 매우 많은 경우, 유니캐스트 기반의 인밸리데이션에 소요되는 일량이 늘어나게 되어 응답성이 저하되는 문제가 발생할 수 있다. 특히, 참조하는 클라이언트 노드가 수백대에 이르는 경우 멀티캐스트 기반의 인밸리데이션이 적용된다고 하더라도 수백대의 노드로부터 응답신호(ack)를 수신해야 하므로 충분한 응답성을 담보할 수 없게 된다. 따라서, 분산 캐시 서버(CS1, CS2, …, CSm)는 원본 캐시 데이터에 대응하는 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수를 기설정된 제2 개수값으로 제한할 수 있다. 이를 통해, 복제 캐시 데이터의 참조 효율과 인밸리데이션의 성능 효율이 균형을 이루도록 할 수 있다.
그리고, 분산 캐시 서버는, 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수가 제2 개수값을 초과할 경우, 초과된 클라이언트 노드들에 대하여 원본 캐시 데이터의 니어 캐시 저장부로의 복제를 금지하며 분산 캐시 서버에 저장된 원본 캐시 데이터를 참조하도록 할 수 있다.
다음으로, 도 4를 참조하여 니어 캐시를 제어하는 다른 방법을 설명하면 다음과 같다.
도 4는 도 1에서와 달리, 특정 분산 캐시 서버(CS1)가 원본 캐시 데이터(○A)를 메인 캐시 저장부(M1)에 저장하며, 다른 분산 캐시 서버(CS2)의 메인 캐시 서버(M2)에 저장된 원본 캐시 데이터(○C)에 대응하는 백업 캐시 데이터(○C)를 백업 캐시 저장부(B1)에 저장한 상태에서, 적어도 하나 이상의 클라이언트 노드(C2)로부터 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버(CS1)는 백업 캐시 저장부(B1)에 저장된 백업 캐시 데이터(○C)에 대한 복제 캐시 데이터(○C)를 클라이언트 노드(C2)로 전송하여 준다.
그러면, 클라이언트 노드(C2)는 특정 분산 캐시 서버(CS1)로부터 전송되는 복제 캐시 데이터(○C)를 니어 캐시 저장부(N2)에 저장하고, 이후 니어 캐시 저장부(N2)에 저장된 복제 캐시 데이터(○C)를 이용함으로써 원본 캐시 데이터(○C) 이용을 위하여 분산 캐시 서버(CS1) 또는 분산 캐시 서버(CS2)로 접속하지 않아도 되므로 네트워킹 작업을 최소화할 수 있게 된다.
그리고, 특정 분산 캐시 서버(CS1)는 상기의 동작에 의해 니어 캐시 저장부(N2)에 저장된 복제 캐시 데이터(○C)를 참조하는 적어도 하나 이상의 클라이언트 노드(C2)를 백업 캐시 데이터(○C)에 대응하여 맵핑한 레퍼런스 맵(RM1)을 생성 또는 업데이트하거나, 분산 캐시 서버(CS2)로 하여금 니어 캐시 저장부(N2)에 저장된 복제 캐시 데이터(○C)를 참조하는 적어도 하나 이상의 클라이언트 노드(C2)를 원본 캐시 데이터(○C)에 대응하여 맵핑한 레퍼런스 맵(RM2)을 생성 또는 업데이트하도록 지원한다.
이후, 특정 분산 캐시 서버(CS1)는 백업 캐시 데이터 변경시, 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나, 분산 캐시 서버(CS2)로 하여금 복제 캐시 데이터를 참조하는 클라이언트 노드의 개수에 대응하여 복제 캐시 데이터에 대한 인밸리데이션을 수행하도록 지원할 수 있다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100: 통신부,
200: 프로세서,
300: 메인 캐시 저장부,
310: 백업 캐시 저장부,
C1, C2, Cn: 클라이언트 노드,
CS1, CS2, CSm: 분산 캐시 서버

Claims (18)

  1. 분산 캐시 환경에서 니어 캐시를 제어하는 방법에 있어서,
    (a) 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버가, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 단계;
    (b) 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 단계; 및
    (c) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하고,
    상기 (c) 단계에서,
    상기 특정 분산 캐시 서버는,
    상기 확인된 상기 클라이언트 노드의 개수에 대응하여 멀티캐스트 기반의 인밸리데이션을 수행 또는 수행하도록 지원하거나 유니캐스트 기반의 인밸리데이션을 수행 또는 수행하도록 지원하는 것을 특징으로 하며,
    상기 특정 분산 캐시 서버는,
    상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수가 기설정된 제1 개수값 이하인 경우에는 상기 유니캐스트 기반의 인밸리데이션을 수행하며, 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수가 상기 제1 개수값 초과인 경우에는 상기 멀티캐스트 기반의 인밸리데이션을 수행하는 것을 특징으로 하는 니어 캐시 제어 방법.
  2. 삭제
  3. 삭제
  4. 삭제
  5. 분산 캐시 환경에서 니어 캐시를 제어하는 방법에 있어서,
    (a) 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버가, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 단계;
    (b) 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 단계; 및
    (c) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하고,
    상기 (a) 단계에서,
    상기 적어도 하나 이상의 클라이언트 노드는, 상기 니어 캐시 저장부에 저장되는 복제 캐시 데이터들에 의한 전체 저장 용량을 제한하거나, 상기 니어 캐시 저장부에 저장되는 상기 복제 캐시 데이터의 엔트리 개수를 제한하는 것을 특징으로 하며,
    상기 적어도 하나 이상의 클라이언트 노드는, 상기 전체 저장 용량을 제한하거나 상기 엔트리 개수를 제한하기 위하여, 상기 니어 캐시 저장부에 저장된 상기 복제 캐시 데이터들 중 일부의 복제 캐시 데이터를 삭제하되, 최근 참조된 시간이 가장 오래된 복제 캐시 데이터, 저장된 시간이 가장 오래된 복제 캐시 데이터, 캐시 데이터의 용량이 제일 작은 복제 캐시 데이터, 및 캐시 데이터의 용량이 제일 큰 복제 캐시 데이터 중 적어도 하나를 삭제하는 것을 특징으로 하는 니어 캐시 제어 방법.
  6. 삭제
  7. 분산 캐시 환경에서 니어 캐시를 제어하는 방법에 있어서,
    (a) 복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호가 획득되면, 특정 분산 캐시 서버가, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 단계;
    (b) 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 단계; 및
    (c) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 특정 분산 캐시 서버가, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 단계;
    를 포함하는 것을 특징으로 하고,
    상기 (a) 단계에서,
    상기 특정 분산 캐시 서버는,
    상기 원본 캐시 데이터에 대응하는 상기 복제 캐시 데이터를 참조하는 상기 클라이언트 노드의 개수를 기설정된 제2 개수값으로 제한하는 것을 특징으로 하며,
    상기 특정 분산 캐시 서버는,
    상기 복제 캐시 데이터를 참조하는 상기 클라이언트 노드의 개수가 상기 제2 개수값을 초과할 경우, 상기 초과된 클라이언트 노드들에 대하여 상기 특정 분산 캐시 서버에 저장된 상기 원본 캐시 데이터를 참조하도록 지원하는 것을 특징으로 하는 니어 캐시 제어 방법.
  8. 제1항에 있어서,
    상기 특정 분산 캐시 서버는, 상기 복수의 분산 캐시 서버 중 상기 원본 캐시 데이터를 저장하고 있는 분산 캐시 서버인 것을 특징으로 하는 니어 캐시 제어 방법.
  9. 제1항에 있어서,
    상기 특정 분산 캐시 서버는, 다른 분산 캐시 서버에 저장된 다른 원본 캐시 데이터에 대응되는 백업 캐시 데이터를 저장하고 있는 분산 캐시 서버이며, 상기 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호에 대응하여 상기 백업 캐시 데이터의 복제 백업 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송하고, (i) 상기 복제 백업 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 백업 캐시 데이터에 대응하여 맵핑한 상기 특정 분산 캐시 서버의 상기 레퍼런스 맵을 생성 또는 업데이트하거나 (ii) 상기 다른 분산 캐시 서버로 하여금 상기 복제 백업 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 복제 백업 캐시 데이터에 대응되는 상기 다른 원본 캐시 데이터에 대응하여 맵핑한 상기 다른 분산 캐시 서버의 레퍼런스 맵을 생성 또는 업데이트하도록 지원하며, 상기 원본 캐시 데이터의 변경에 대응하여 상기 복제 백업 캐시 데이터에 대한 인밸리데이션을 수행하는 것을 특징으로 하는 니어 캐시 제어 방법.
  10. 분산 캐시 환경에서 니어 캐시를 제어하는 특정 분산 캐시 서버에 있어서,
    복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호를 획득하는 상기 특정 분산 캐시 서버의 통신부; 및
    (i) 상기 통신부를 통해 획득되는 상기 원본 캐시 데이터 요청 신호에 대응하여, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 프로세스, (ii) 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 프로세스, 및 (iii) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 프로세스를 수행하는 상기 특정 분산 캐시 서버의 프로세서;
    를 포함하는 것을 특징으로 하고,
    상기 (iii) 프로세스에서,
    상기 프로세서는,
    상기 확인된 상기 클라이언트 노드의 개수에 대응하여 멀티캐스트 기반의 인밸리데이션을 수행 또는 수행하도록 지원하거나 유니캐스트 기반의 인밸리데이션을 수행 또는 수행하도록 지원하는 것을 특징으로 하며,
    상기 프로세서는,
    상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수가 기설정된 제1 개수값 이하인 경우에는 상기 유니캐스트 기반의 인밸리데이션을 수행하며, 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수가 상기 제1 개수값 초과인 경우에는 상기 멀티캐스트 기반의 인밸리데이션을 수행하는 것을 특징으로 하는 특정 분산 캐시 서버.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 분산 캐시 환경에서 니어 캐시를 제어하는 특정 분산 캐시 서버에 있어서,
    복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호를 획득하는 상기 특정 분산 캐시 서버의 통신부; 및
    (i) 상기 통신부를 통해 획득되는 상기 원본 캐시 데이터 요청 신호에 대응하여, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 프로세스, (ii) 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 프로세스, 및 (iii) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 프로세스를 수행하는 상기 특정 분산 캐시 서버의 프로세서;
    를 포함하는 것을 특징으로 하고,
    상기 (i) 프로세스에서,
    상기 적어도 하나 이상의 클라이언트 노드는, 상기 니어 캐시 저장부에 저장되는 복제 캐시 데이터들에 의한 전체 저장 용량을 제한하거나, 상기 니어 캐시 저장부에 저장되는 상기 복제 캐시 데이터의 엔트리 개수를 제한하는 것을 특징으로 하며,
    상기 적어도 하나 이상의 클라이언트 노드는, 상기 전체 저장 용량을 제한하거나 상기 엔트리 개수를 제한하기 위하여, 상기 니어 캐시 저장부에 저장된 상기 복제 캐시 데이터들 중 일부의 복제 캐시 데이터를 삭제하되, 최근 참조된 시간이 가장 오래된 복제 캐시 데이터, 저장된 시간이 가장 오래된 복제 캐시 데이터, 캐시 데이터의 용량이 제일 작은 복제 캐시 데이터, 및 캐시 데이터의 용량이 제일 큰 복제 캐시 데이터 중 적어도 하나를 삭제하는 것을 특징으로 하는 특정 분산 캐시 서버.
  15. 삭제
  16. 분산 캐시 환경에서 니어 캐시를 제어하는 특정 분산 캐시 서버에 있어서,
    복수의 분산 캐시 서버 중 어느 하나의 분산 캐시 서버에 저장된 원본 캐시 데이터에 대하여 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호를 획득하는 상기 특정 분산 캐시 서버의 통신부; 및
    (i) 상기 통신부를 통해 획득되는 상기 원본 캐시 데이터 요청 신호에 대응하여, 상기 원본 캐시 데이터에 대한 복제 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송함으로써 상기 적어도 하나 이상의 클라이언트 노드로 하여금 상기 복제 캐시 데이터를 니어 캐시 저장부에 저장하여 참조하도록 지원하며, 상기 복제 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 원본 캐시 데이터에 대응하여 맵핑한 레퍼런스 맵을 생성 또는 업데이트하거나 상기 레퍼런스 맵을 생성 또는 업데이트하도록 지원하는 프로세스, (ii) 상기 레퍼런스 맵에 포함된 상기 원본 캐시 데이터의 변경 상태를 모니터링하거나 모니터링하도록 지원하여 상기 복제 캐시 데이터의 유효성을 확인하는 프로세스, 및 (iii) 상기 복제 캐시 데이터가 유효하지 않으면, 상기 레퍼런스 맵을 참조하여 상기 복제 캐시 데이터를 참조 중인 상기 클라이언트 노드의 개수를 확인하거나 확인하도록 지원하며, 상기 확인된 상기 클라이언트 노드의 개수에 대응하여 상기 복제 캐시 데이터에 대한 인밸리데이션을 수행하거나 수행하도록 지원하는 프로세스를 수행하는 상기 특정 분산 캐시 서버의 프로세서;
    를 포함하는 것을 특징으로 하고,
    상기 (i) 프로세스에서,
    상기 프로세서는,
    상기 원본 캐시 데이터에 대응하는 상기 복제 캐시 데이터를 참조하는 상기 클라이언트 노드의 개수를 기설정된 제2 개수값으로 제한하는 것을 특징으로 하며,
    상기 프로세서는,
    상기 복제 캐시 데이터를 참조하는 상기 클라이언트 노드의 개수가 상기 제2 개수값을 초과할 경우, 상기 초과된 클라이언트 노드들에 대하여 상기 특정 분산 캐시 서버에 저장된 상기 원본 캐시 데이터를 참조하도록 지원하는 것을 특징으로 하는 특정 분산 캐시 서버.
  17. 제10항에 있어서,
    상기 특정 분산 캐시 서버는, 상기 복수의 분산 캐시 서버 중 상기 원본 캐시 데이터를 저장하고 있는 분산 캐시 서버인 것을 특징으로 하는 특정 분산 캐시 서버.
  18. 제10항에 있어서,
    상기 특정 분산 캐시 서버는, 다른 분산 캐시 서버에 저장된 다른 원본 캐시 데이터에 대응되는 백업 캐시 데이터를 저장하고 있는 분산 캐시 서버이며,
    상기 상기 특정 분산 캐시 서버의 상기 프로세서는, 상기 적어도 하나 이상의 클라이언트 노드로부터의 상기 원본 캐시 데이터 요청 신호에 대응하여 상기 백업 캐시 데이터의 복제 백업 캐시 데이터를 상기 적어도 하나 이상의 클라이언트 노드로 전송하고, (i) 상기 복제 백업 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 백업 캐시 데이터에 대응하여 맵핑한 상기 특정 분산 캐시 서버의 상기 레퍼런스 맵을 생성 또는 업데이트하거나, (ii) 상기 다른 분산 캐시 서버로 하여금 상기 복제 백업 캐시 데이터를 참조하는 상기 적어도 하나 이상의 클라이언트 노드를 상기 복제 캐시 데이터에 대응되는 상기 다른 원본 캐시 데이터에 대응하여 맵핑한 상기 다른 분산 캐시 서버의 레퍼런스 맵을 생성 또는 업데이트하도록 지원하며, 상기 원본 캐시 데이터의 변경에 대응하여 상기 복제 백업 캐시 데이터에 대한 인밸리데이션을 수행하는 것을 특징으로 하는 특정 분산 캐시 서버.
KR1020180065707A 2018-06-07 2018-06-07 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버 KR102103782B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020180065707A KR102103782B1 (ko) 2018-06-07 2018-06-07 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버
US16/011,976 US10783081B2 (en) 2018-06-07 2018-06-19 Method for controlling near caches in distributed cache environment, and distributed cache server using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180065707A KR102103782B1 (ko) 2018-06-07 2018-06-07 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버

Publications (2)

Publication Number Publication Date
KR20190139095A KR20190139095A (ko) 2019-12-17
KR102103782B1 true KR102103782B1 (ko) 2020-04-24

Family

ID=68763841

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180065707A KR102103782B1 (ko) 2018-06-07 2018-06-07 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버

Country Status (2)

Country Link
US (1) US10783081B2 (ko)
KR (1) KR102103782B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11677624B2 (en) * 2019-04-12 2023-06-13 Red Hat, Inc. Configuration of a server in view of a number of clients connected to the server
US11593375B2 (en) * 2020-01-15 2023-02-28 Sigma Computing, Inc. Dashboard loading from a cloud-based data warehouse cache
US11860873B2 (en) 2020-01-15 2024-01-02 Sigma Computing, Inc. Dashboard loading using a filtering query from a cloud-based data warehouse cache
WO2023147878A1 (en) * 2022-02-07 2023-08-10 Huawei Cloud Computing Technologies Co., Ltd. Memory controller and method used in client node to store local memory mapping table

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
KR101218828B1 (ko) * 2009-07-02 2013-01-04 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2505585B (en) * 2011-04-27 2015-08-12 Seven Networks Inc Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
US20140089260A1 (en) * 2012-09-27 2014-03-27 International Business Machines Corporation Workload transitioning in an in-memory data grid
KR20150103477A (ko) * 2014-03-03 2015-09-11 주식회사 티맥스 소프트 분산환경 기반의 캐쉬 관리 장치 및 방법
US10146702B2 (en) * 2015-03-09 2018-12-04 Intel Corporation Memcached systems having local caches

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100791628B1 (ko) * 2006-06-09 2008-01-04 고려대학교 산학협력단 이동망 시스템의 능동적 캐쉬 제어 방법, 그 기록 매체 및그 시스템
KR101218828B1 (ko) * 2009-07-02 2013-01-04 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법

Also Published As

Publication number Publication date
US20190377682A1 (en) 2019-12-12
US10783081B2 (en) 2020-09-22
KR20190139095A (ko) 2019-12-17

Similar Documents

Publication Publication Date Title
KR102103782B1 (ko) 분산 캐시 환경에서 니어 캐시를 제어하는 방법 및 이를 이용한 분산 캐시 서버
US9053167B1 (en) Storage device selection for database partition replicas
US11003497B2 (en) Managing resource allocation in hierarchical quota system
US10255148B2 (en) Primary role reporting service for resource groups
US10922303B1 (en) Early detection of corrupt data partition exports
US10534776B2 (en) Proximity grids for an in-memory data grid
US8751533B1 (en) Method and system for transparently migrating storage objects between nodes in a clustered storage system
KR20200093606A (ko) 콘텐츠 아이템을 동기화하기 위한 커밋 프로토콜
US11734248B2 (en) Metadata routing in a distributed system
Kadambi et al. Where in the world is my data?
US9262323B1 (en) Replication in distributed caching cluster
US10579597B1 (en) Data-tiering service with multiple cold tier quality of service levels
SG189890A1 (en) Routing traffic in an online service with high availability
US20160087833A1 (en) Server clustering in mobile computing environment
US20110225120A1 (en) System for maintaining a distributed database using leases
US20150106468A1 (en) Storage system and data access method
KR20140143775A (ko) 캐시 관리 기법
JP7398567B2 (ja) 動的適応型パーティション分割
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
US10474653B2 (en) Flexible in-memory column store placement
CN109992447B (zh) 数据复制方法、装置及存储介质
Ghandeharizadeh et al. Rejig: a scalable online algorithm for cache server configuration changes
US20070050681A1 (en) Global user services management for system cluster
US10783147B2 (en) Query result flow control in a network switch
WO2022031259A1 (en) Cache updates through distributed message queues

Legal Events

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