나는 클라이언트와 서버 노드에 대한 책임감을 불 태우고 새로운 질문을 던지기 쉽다. 지금까지 문서 클라이언트 노드에서 얻은 정보는 매우 작은 기계이므로 일부 무거운 캐시 작업을 수행하는 것은 목적이 아닙니다. 예를 들어 일부 지속성 저장소에서 데이터를로드하고 무거운 캐시 관련 계산을 수행하고 결과 데이터를 캐시에 저장해야합니다. 그것은 다음과 같습니다클라이언트와 서버 이해하기
I.
//This is on a client node
public class Loader{
private DataSource dataSource;
@IgniteInstanceResource
private Ignite ignite;
public void load(){
String key;
String values;
//retreive key and value from the dataSource
IgniteDataStreamer<String, String> streamer = ignite.dataStreamer("cache");
String result;
//process value
streamer.addData(key, result); //<---------1
}
}
질문에 대한 //1
입니다. 로드 된 데이터를 처리하여 캐시에 저장하는 것은 클라이언트의 노드 책임입니까? 나는 실제로 다음을 수행 할 의도가 있습니다 : 각각로드 된 작업에 대해 String key
및 String value
을 작성하고 서버 노드에서 모든 평가 및 캐시 관련 작업을 수행하십시오. 다음과 같이 :
II.
public class LoaderJob extends ComputeJobAdapter{
private String key;
private String value;
@Override
public Object execute(){
//perform all computation and putting into cache here
//and return Tuple2(key, result);
}
}
public class LoaderTask extends extends ComputeTaskSplitAdapter<Void, Void {
//...
public Void reduce(List<ComputeJobResult> results) throws IgniteException {
results.stream().forEach(result -> {
Tuple2<String, String> jobResult = result.getData();
ignite.dataStreamer("cache").addData(jobResult._1, jobResult._2);
});
return null;
}
}
두 번째 경우 클라이언트가 수행하는 작업은 지속성 저장소의 데이터를로드 한 다음 서버에 작업을 게시하는 것입니다.
그런 일을하는 일반적인 방법은 무엇입니까?
약 25TB의 데이터가있을 것입니다. 그래서, 좋은 지적은 ... 나는 연재 비용을 두려워했다. –