안티패턴: 크기가 256KB를 초과하는 데이터를 캐시에 저장

Apigee X 문서입니다.
Apigee Edge 문서 보기

Apigee는 지속성 및 빠른 검색을 위해 런타임 시 캐시에 데이터를 저장할 수 있는 기능을 제공합니다.

  • 데이터는 처음에 L1 캐시라고 하는 메시지 프로세서의 인메모리 캐시에 저장됩니다.
  • L1 캐시는 JVM 메모리의 비율로 예약된 메모리 양에 따라 제한됩니다.
  • 캐시된 항목은 나중에 모든 메시지 프로세서에 액세스할 수 있는 L2 캐시에 유지됩니다. 자세한 내용은 아래 섹션에서 확인할 수 있습니다.
  • L2 캐시에는 캐시 항목 수에 대한 엄격한 제한은 없지만 캐시할 수 있는 최대 항목 크기는 256KB로 제한됩니다. 최적의 성능을 위해 캐시 크기는 256KB가 권장됩니다.

안티패턴

이 특정한 안티패턴은 Apigee 내에서 현재 캐시 크기 제한을 초과할 때의 영향에 대해 설명합니다.

데이터가 256KB를 초과하면 다음과 같은 영향이 발생합니다.

  • L2 캐시에서 256KB를 초과하는 항목을 사용할 수 없으므로 각 메시지 프로세서에서 처음 실행되는 API 요청은 원본 소스(정책 또는 대상 서버)에서 독립적으로 데이터를 가져와야 합니다.
  • 대용량 데이터(256KB 초과)를 L1 캐시에 저장하면 플랫폼 리소스에 더 큰 부담이 가해지는 경향이 있습니다. 이렇게 하면 L1 캐시 메모리가 더 빠르게 채워지고 다른 데이터에 사용 가능한 공간이 줄어들게 됩니다. 따라서 원하는 만큼 적극적으로 데이터를 캐시할 수 없게 됩니다.
  • 항목 수 제한에 도달하면 메시지 프로세서의 캐시된 항목이 삭제됩니다. 이렇게 하면 데이터를 해당 메시지 프로세서의 원본 소스에서 다시 가져오게 됩니다.

흐름도 두 개.
  API 프록시와 메시지 프로세서 간의 흐름과 메시지 프로시저와 Persistent Storage L2 캐시 간의 흐름을 보여주는 크기가 512KB 이하인 흐름도 API 프록시와 메시지 프로세서 간의 흐름과 메시지 프로세서와 L2 캐시에 저장되지 않은 데이터/응답 간의 흐름을 보여주는 크기가 512KB를 초과하는 흐름도

영향

  • 크기가 256KB를 초과하는 데이터는 L2/영구 캐시에 저장되지 않습니다.
  • 원본 소스(정책이나 대상 서버)에 대한 호출을 더 자주 하면 API 요청의 지연 시간이 늘어납니다.

권장사항

  • 최적의 성능을 위해 256KB 미만 크기의 데이터를 캐시에 저장하는 것이 좋습니다.
  • 256KB를 초과하는 데이터를 저장해야 하는 경우에는 다음을 고려합니다.
    • 대규모 데이터 저장에 적합한 데이터베이스 사용

      또는

    • 데이터 압축

추가 자료