SDK 엔지니어링 팀을 대표하여 JCache 사양(JSR107)의 구현 작업을 완료하고 개발자 프리뷰를 공개하게 되어 기쁘게 생각합니다!

개발자는 JCache 사양을 통해 캐싱을 위한 표준 API를 중심으로 애플리케이션을 구축하여 최소한의 노력으로 구현을 교체할 수 있습니다. 이 구현은 효율적이고 성능이 뛰어난 방식으로 캐싱을 수행하기 위해 Couchbase Server와 2.0 Java SDK에 의존합니다.

개발자가 앞으로 출시될 기능을 미리 맛보고 다음과 같은 작업을 수행할 수 있기를 바랍니다. 피드백 및 제안 제공 를 구현했습니다. 아직 많은 작업이 진행 중이므로 완성된 구현은 아니지만 기본적인 작업과 구성은 작동합니다.

이 구현을 사용하는 방법을 알아보세요!

구현 획득하기

물론 계획은 Maven Central에서 사용할 수 있도록 하는 것이지만, 현재로서는 자체 Maven 리포지토리에서 Couchbase JCache 구현을 호스팅하고 있습니다. 여기에서 다음을 추가하여 개발자 미리 보기를 가져올 수 있습니다. pom.xml:



또는 병을 가져올 수도 있습니다. 직접 (자바 캐시, 자바 클라이언트 및 자바 코어가 필요함), 모험심이 있다면 다음에서 최신 코드를 볼 수 있습니다. github.

간단한 개요

JCache에서 캐싱 공급자 가 해결되고 CacheManager를 생성하는 데 사용됩니다. 캐시s. 각 캐시는 캐시 구성.

이 구현은 클러스터 그리고 버킷 기본 버킷을 올바르게 구성하기 위해서는 카우치베이스 구성 를 사용해야 합니다(단, 이 구현에서는 CouchbaseConfiguration.builder().build() 는 정상적인 기본값을 제공해야 합니다(아래 참조).

각 CouchbaseCacheManager에는 기본이 되는 카우치베이스클러스터 인스턴스입니다. 기본적으로 localhost로 설정되지만 호출하여 변경할 수 있는 연결 문자열 목록을 사용하여 부트스트랩됩니다. 설정 부트스트랩 캐시 관리자를 생성하기 전에 캐싱 공급업체에 설정하세요.

그리고 CouchbaseCacheManager 를 사용하여 새로운 카우치베이스 캐시에 의해 뒷받침되는 버킷 를 사용하세요.

짧은 전체 예제를 살펴보겠습니다. 이 예제에는 다음과 같은 카우치베이스 컨텍스트가 필요합니다:

  • 다음에서 클러스터에 연결할 수 있습니다. localhost:8091
  • 이 클러스터의 "jcache" 버킷(비밀번호: "jcache")

이 경우 다음 스니펫을 실행할 수 있습니다:



캐시 관리자는 URI와 클래스 로더이 없는 경우에만 생성되며, 이전 CacheManager 가 동일한 식별자에 대해 등록되어 있는지 확인합니다(그렇지 않은 경우 메서드는 기존 관리자를 반환합니다).

캐싱 수행 방식 사용자 지정

기본적으로 캐싱 구현은 로컬 호스트에서 도달 가능한 클러스터에 연결을 시도하며, 이를 위해 CouchbaseConfiguration.builder("cacheName").build() 를 캐시 구성의 기본값으로 사용합니다. 하지만 카우치베이스 구성?

JCache API의 공통 설정

카우치베이스 구성은 기본값을 기반으로 합니다. 뮤터블 컨피규레이션 (API의 공통 설정을 정의하는)를 사용할 수 있습니다. 이러한 설정은 빌드된 후 구성을 변경하거나 빌더의 사용베이스(구성 완료 베이스) 메서드를 사용합니다.

어떤 버킷을 사용해야 하나요?

여러 캐시에 대해 단일 버킷을 공유하고 공유 버킷에 각 캐시의 키를 접두사로 붙이거나 특정 캐시에 대해 전용 버킷을 사용하는 두 가지 옵션이 있습니다.

기본적으로 공유 버킷의 이름은 jcache 가 사용됩니다(예상 비밀번호: "jcache"). 기본 접두사는 캐시 이름 뒤에 밑줄이 붙습니다.

  • 공유 캐시는 다음을 통해 변경할 수 있습니다. 사용셰어버킷(문자열 이름, 문자열 비밀번호).
  • 공유 캐시 컨텍스트의 키 접두사는 다음을 사용하여 변경할 수 있습니다. withPrefix(문자열 접두사).
  • 전용 캐시를 사용하는 다른 방법은 다음을 사용하여 활성화할 수 있습니다. 사용 전용 버킷(문자열 이름, 문자열 비밀번호) (접두사가 재설정됩니다).

뷰에 의존하여 캐시에 모든 항목 나열하기

JCache API의 일부를 사용하면 캐시에 있는 모든 항목을 가져오거나 반복할 수 있습니다. Couchbase에서 이를 수행하는 가장 좋은 방법은 뷰를 사용하는 것입니다. 따라서 이 구현에서는 캐시에 있는 모든 항목을 나열하는 데 뷰를 사용할 수 있을 것으로 예상합니다.

  • 기본적으로 예상되는 디자인 문서 및 보기는 다음과 같습니다. jcache 와 캐시 이름을 지정합니다.
  • 디자인 문서는 다음을 호출하여 변경할 수 있습니다. viewAllDesignDoc(String designDocName).
  • 보기 이름은 다음을 호출하여 변경할 수 있습니다. viewAllViewName(문자열 뷰 이름).
  • 또는 다음을 사용하세요. viewAll(문자열 디자인 문서 이름, 문자열 뷰 이름) 를 클릭하여 둘 다 변경할 수 있습니다.

사용자는 각 캐시에 대해 올바른 버킷에 올바른 보기를 만들어야 합니다. 전용 버킷을 명시적으로 사용하지 않는 한 버킷에 키가 접두사로 붙을 수 있다는 점을 잊지 마세요.

다음 단계는 무엇인가요?

이 개발자 프리뷰는 이 구현의 일반적인 방향을 보여주며, 대부분의 JCache 연산이 최소 용량으로 작동합니다(아직 적절한 잠금이 없으므로 다음과 같은 연산은 atomic 와 같이 사양에 getAndPut로 간주해서는 안 됩니다).

전체 사양을 커버하기 위해 구현해야 할 남은 사항은 다음과 같습니다: - 통계 수집 개선 및 완료 - 잠금, 연산 하위 집합의 원자성 - 리스너 지원 추가 - EntryProcessor 지원 추가 - 읽기 및 쓰기 구현 - 어노테이션 지원 추가 등이 있습니다.

결론

도움이 되셨기를 바랍니다. JCache 또는 Java SDK에 대해 자세히 알아보고 싶으시다면(나중에 다시 방문하실 수도 있습니다) 다음 리소스를 참조하세요:

제안이나 피드백이 있으시면 언제든지 알려주세요! 아래 댓글이나 공식 포럼.

이슈를 제출할 수도 있습니다. 버그 추적기 ("카우치베이스 자바 클라이언트" 프로젝트, 일명 JCBC를 사용하여 JCache 컴포넌트).

기고 또한 환영합니다! 다음을 수행해야 합니다. CLA에 서명하세요 (참조 오픈소스 문서)에 풀 리퀘스트를 제출하기 전에 이를 확인해야 합니다. GitHub.

이 미리보기가 도움이 되었기를 바랍니다. 행복한 코딩!

작성자

게시자 Simon Basle, 소프트웨어 엔지니어, 피보탈

Simon Basl_은 파리에 거주하는 소프트웨어 엔지니어로 피보탈의 Spring 팀에서 근무하고 있습니다. 이전에는 Couchbase Java SDK 팀에서 근무했습니다. 그의 관심 분야는 소프트웨어 설계 측면(OOP, 디자인 패턴, 소프트웨어 아키텍처), 리치 클라이언트, 코드 너머의 것(지속적 통합, (D)VCS, 모범 사례), 반응형 프로그래밍 등 다양합니다. 또한 프랑스어 버전의 InfoQ.com의 편집자이기도 합니다.

댓글 남기기