티스토리 뷰
기본적으로 eviction과 expiration이 두 녀석은 하는 일이 같아요. 메모리를 아끼기 위해서 Cache된 Object들 중에 불필요한 것들을 지우기 위한 기능이죠.
하지만 필요없는 Object를 가려내는 방법이 다릅니다.
우선 eviction은 몇가지 메카니즘을 제공하죠 ==> LRU, LIRS(디폴트). 쉽게 말해서, Entry Max값을 정해 놓고 그 이상 들어오면 먼저 들어 온 순서대로 object들을 차례로 지우는 방법입니다.
그렇다면 expiration은 누구나가 쉽게 예상하듯이, 유통기간을 두고 그 이상이 되면 지워버리는 방법이죠.
자 여기에서 Passivation은 왜 필요한가를 생각해 봤습니다.
Infinispan의 가장 큰 기능은 Eviction/ Expiration은 이 기능과 완전히 상반되는 기능, 바로 캐쉬입니다. 다시 말해서 속도를 빠르게 해주고 싶은 것이죠.
그래서 아마도 Eviction을 하면서 없어지는 object가 차후에 다시 불려질때, 조금이라도 빨리 메모리로 올릴 수 있도록 이 object를 완전히 삭제하기 전에 우선 File에 저장하려고 했던거 같습니다.
정리를 해보면, Passivation 기능을 True로 하게 되면, Eviction의 대상이 된 object가 바로 없어지는 것이 아니라, File에 우선 저장되게 됩니다.
그리고 차후에 같은 object를 요청을 요청하게 되면 File에서 찾아서 다시 메모리로 재로딩하게 됩니다.
아래는 Passivationd를 이용할 때와 안할때를 비교한 내용입니다.
Eviction Example when Passivation is Disabled
Step Key in Memory Key on Disk
Insert keyOne Memory: keyOne Disk: keyOne
Insert keyTwo Memory: keyOne, keyTwo Disk: keyOne, keyTwo
Eviction thread runs, evicts keyOne Memory: keyTwo Disk: keyOne, keyTwo
Read keyOne Memory: keyOne, keyTwo Disk: keyOne, keyTwo
Eviction thread runs, evicts keyTwo Memory: keyOne Disk: keyOne, keyTwo
Remove keyTwo Memory: keyOne Disk: keyOne
Eviction Example when Passivation is Enabled
Step Key in Memory Key on Disk
Insert keyOne Memory: keyOne Disk:
Insert keyTwo Memory: keyOne, keyTwo Disk:
Eviction thread runs, evicts keyOne Memory: keyTwo Disk: keyOne
Read keyOne Memory: keyOne, keyTwo Disk:
Eviction thread runs, evicts keyTwo Memory: keyOne Disk: keyTwo
Remove keyTwo Memory: keyOne Disk:
마지막으로 Expiration 과 Eviction의 차이점은 무엇일까요? 제 생각엔 이 한줄이면 답이 될거 같습니다.
Eviction is limited to the cache instance it is used in, whilst expiration is cluster-wide.
다시 말해서, Expiration 은 cache api와 마찬가지로 글로벌 설정이고 Expiration life span 와
idle time 값이 각 cache entry와 함께 복사되기 때문에 다수의 infinispan을 cluster로 묶어 사용할
때도 사용이 가능하나,
Eviction은 해당 entry를 저장하고 있는 infinispan에서만 사용이 가능하다.
결국 프로그램에 따라 맞는 설정을 잘 골라서 사용하여야 겠네요 ^^;
'이제 관심밖의 IT 기술 > Infinispan(DataGrid)' 카테고리의 다른 글
[Transaction] Isolation Level (0) | 2014.08.25 |
---|---|
Consistent Hashing (0) | 2013.06.05 |
- Total
- Today
- Yesterday
- redhat
- RHCE
- basement
- 캐나다
- cert
- BTBS
- 옥빌
- docker
- 미시사가
- git proGit
- 온타리오
- RHEL
- 벌링턴
- Certificate
- Canada
- 부동산분석
- 정착서비스
- TORONTO
- ansible
- 인터넷
- 캐나다부동산
- 토론토정착서비스
- certification
- BC주
- Red Hat
- Jay
- 토론토
- 우드워킹
- 부모님초청이민
- 밀튼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |