2016-07-19 2 views
0

아래 코드를 사용하여 Ehcache3으로 영구 캐시를 설정합니다.Ehcache 3를 영구 저장소와 함께 사용하여 write-behind 캐싱을 수행하는 방법은 무엇입니까?

쓰기 쓰기 알고리즘을 사용하여 쓰기 속도를 높이고 싶습니다. 그러나이 작업을 수행하는 코드 예제 나 지침을 찾지 못했습니다. 공식적인 ehcache 문서는 부족합니다. 제가 포럼에서 도움을 청하면 "이 문서를 수정해야합니다!"라는 메시지가 나타났습니다. PersistentCacheManager 유형이 아닌 캐시를 사용하여 새 클래스 유형에서 작동하지 않는 방법에 대한 많은 예제를 발견했습니다.

는 특히 ehcache write-behind behaviour , 거기에 몇 가지 코드 예제가 있습니다하지만이 사용으로 Ehcache의 버전을 특정하지 않다.

저는 여기에 조금 붙어 있습니다. 나는 write-behind 동작으로 영구 저장소에 쓰기를 원하는 사람이 될 수 없다고 생각합니다. 나는 "뒤 쓰기"의 의미가 약간 불투명 함을 발견했다. 내가하고 싶은 것은 한 번에 하나씩 청크 패턴으로 디스크에 기록하는 것입니다. 기존 데이터를 대체 할 때 쓰기 속도가 빨라지 길 바란다.

쓰기 속도를 최적화하면 HD에서 파일 조각화가 발생할 수 있습니다. 파일에 사용되지 않은 구멍이 남아있을 수 있습니다. 이러한 종류의 문제를 해결할 수있는 사전 작성된 코드가 있기를 희망합니다. 어쩌면이 주변에는 옵션을 추가로 조정할 수 있습니다.

  PersistentCacheManager myCacheManager; 
      myCacheManager = CacheManagerBuilder.newCacheManagerBuilder() 
      .with(CacheManagerBuilder.persistence(this.filename)) 
      .withCache("myCache", 
        CacheConfigurationBuilder.newCacheConfigurationBuilder(
          Long.class, long[].class, 
          ResourcePoolsBuilder.newResourcePoolsBuilder() 
            .heap(100000, EntryUnit.ENTRIES) 
            .offheap(1, MemoryUnit.GB) 
            .disk(2000, MemoryUnit.GB, true) 
        ) 
      ).build(true); 

답변

0

으로는 mailing list에 대답 - 더 광범위하게 여기 표시보다 - 쓰기 뒤에PersistentCacheManager과 전혀 관계가 없습니다.

  • 쓰기 숨김 캐싱에 쓰기를 통해 패턴의 비동기 확장입니다. 설명은 Wikipedia을 포함하여 웹의 다른 장소에서 찾을 수 있습니다. 힙 전용 캐시에서 쓰기 저장을 사용 가능하게 할 수 있습니다. 에 디스크 계층이 필요하지 않으며 어떤 식 으로든 캐시 자체의 디스크에 데이터가 기록되는 방식을 방해하지 않습니다. 위해
  • 구현하기 쓰기 숨김 당신이 당신의 참조 데이터 저장소로 어떤 행위와 상호 작용을 구현할 이는 CacheLoaderWriter을 구성하여 쓰기를 통해을 지원하는 최초의 필요성 (A DB, 휴식 서비스를 ...)

예, 인정되는대로 해당 주제에 대한 문서를 개선 할 수 있습니다. Ehcache 2.x의 독자와 작성자를 결합하여 구현할 정확한 구성과 인터페이스를 제외하고, 높은 수준의 문서화 된 원칙은 유효합니다.

Ehcache에서 디스크 쓰기가 방출되는 방식에 대해 혼란 스러울 때가 있습니다. 이것은 구현 세부 사항이며 돌연변환마다 일어나는 일은 아닙니다. Ehcache 디스크 저장소가 이 아니고의 충돌 방지 코드가 아니라면 올바르게 닫히지 않으면 CacheManager 데이터가 다시 시작될 때 덤프됩니다. 이것은 키 - 값 저장소의 캐시를 변환하는 기능이 아닙니다! 확실히 내구성 보증은 아닙니다.

+0

그래서이 오해의 뿌리는 단 한 마디 인 것 같습니다. 이제 Ehcache 문서에서 SoR은 항상 외부 시스템이라는 것을 이해합니다. 예제를 이해합니다. – BAMF4bacon

관련 문제