2016-10-05 5 views
0

나는 EhCache를 사용하여 영구 디스크 저장소에 파일을 저장하는 CachingHttpClient를 설치 한 HttpClient 4.5.2를 사용하고 있습니다. 이는 정상적인 요청에 대해 작동합니다. 초기 다운로드가 완료된 후에 발생합니다.동시 요청에 HttpClient 캐시를 사용할 수 있습니까?

여러 스레드가 동일한 파일을 처음으로 다운로드하려고하면 어떻게되는지 알지 못합니다. FutureRequestExecutionService를 사용해야합니까, 아니면 이것을 수행하는 더 좋은 방법이 있습니까? 응용 프로그램에서 다운로드해야하는 파일이 커질 수 있으며 각 파일에 대한 여러 요청을 예상합니다.

+0

수동 테스트를 한 후에는 이미 동시 요청을 처리하고 있다고 생각합니다. –

답변

0

기본적으로 Ehcache와 같은 캐싱 솔루션은 thundering herd problem을 해결하지 못합니다.

따라서 HttpClient가이 사용 사례를 처리하는 방식에 따라 다릅니다.

Ehcache는 단일 요청으로 인해 캐시 값이로드되도록하고 다른 요청에서는 대기하도록 보장함으로써이 문제를 해결할 read-through pattern을 지원합니다.

+0

답해 주셔서 고맙습니다. 제 질문은 대부분 httpclient 라이브러리로 전달되었지만 지금은 더 이상의 활동이 없으므로 동의하겠습니다. 나는 그것이 실제로 작동하는 것을 볼 수 있기 때문에, httpclient가 read-through 패턴을 이용하고 있다고 가정 할 수있다. –

+0

.maxEntriesLocalHeap (1)을 설정하는 동안 파일을 다운로드 할 때마다 캐시의 힙이 계속 올라갈 수 있습니다. 80MB xml 파일의 경우 최대 500MB가 소요될 수 있습니다. 이것이 ehcache의 구성과 관련이 있다고 생각합니까? –