일관된 캐시에 액세스하는 단일 JAVA 프로세스가있는 여러 노드 (최대 30 개)로 구성된 복제 된 클러스터가 있고 에이전트 생성 및 업데이트에 map.invoke (key, agent) 메소드를 사용합니다. 생성 및 갱신은 process 메소드의 값 설정으로 수행됩니다. 나는 업데이트가 만든 경우 것으로 나타났습니다Oracle의 일관성 : 특정 노드에서 에이전트를 강제로 호출 할 수있는 방법이 있습니까?
public Object process(Entry entry) {
if (entry.isPresent())
{
//UPDATE
... some stuff which compute the new entry value...
entry.setValue(newValue, true);
return newValue
}
else
{
//CREATION
..other stuff to determine the value...
entry.setValue(value, true);
return value;
}
}
: 에이전트 개체의 다음 코드를 호출
map.invoke(key, agent);
:
예 (에이전트는 EntryProcessor 인터페이스를 구현하는 ConcreteEntryProcessor의 인스턴스입니다) 좋은 성능을 가진 에이전트를 만든 노드 그렇지 않으면 업데이트가 다른 노드에서 이루어진 경우 성능이 저하됩니다. 데이터 소유권의 종류가있는 것 같습니다.
로컬 노드에서 강제로 에이전트를 실행하거나 데이터 소유권을 변경하는 방법이 있습니까?
"나는 에이전트 생성 및 업데이트에'map.invoke (key, agent)'메소드를 사용합니다. 이 경우'agent'는'key'에 의해 지정된 캐시 엔트리에서 작동하는'EntryProcessor'의 인스턴스이고'map.invoke'로 에이전트 ('EntryProcessor's)를 생성/업데이트하는 방법을 이해하지 못합니다. 지금까지 시도한 것에 대한 몇 가지 예를 보여주십시오. –
귀하의 의견에 답하기 위해 질문을 수정했습니다 .. – Fernando