배포 된 MAP을 항목으로 사용하여 Hazelcast 응용 프로그램을 구현 중입니다.Hazelcast, Kryo, JsonNode Serializer
private final ObjectReader jsonNodeReader;
private final ObjectWriter jsonNodeWriter;
@Override
public void write(ObjectDataOutput out, JsonNode jsonNode)
throws IOException {
out.write(jsonNodeWriter.writeValueAsBytes(jsonNode));
}
@Override
public JsonNode read(ObjectDataInput in)
throws IOException {
return jsonNodeReader.readTree(in);
}
아래와 같이 그러나, 나는 약간의 공간을 절약하고 성능을 향상시키기 위해 JsonNodeReader/라이터를 사용하지 않도록 Kryo을 사용하고 싶었처럼 내 JsonNodeSerializer 보인다.
Kryo를 사용해 보았는데 no-args 생성자가 없으므로 JsonNode/ObjectNode를 읽을 수 없습니다.
@Override
public void write(ObjectDataOutput out, JsonNode jsonNode)
throws IOException {
Kryo kryo = KRYO_THREAD_LOCAL.get();
Output output = new Output((OutputStream) out);
kryo.writeObject(output, jsonNode);
output.flush();
//out.write(jsonNodeWriter.writeValueAsBytes(jsonNode));
}
@Trace(dispatcher = true)
@Override
public JsonNode read(ObjectDataInput in)
throws IOException {
InputStream inputStream = (InputStream) in;
Input input = new Input(inputStream);
Kryo kryo = KRYO_THREAD_LOCAL.get();
return kryo.readObject(input, ObjectNode.class);
// return jsonNodeReader.readTree(in);
}
확실하지 나의 접근 방식은 JsonNodeReader/라이터가 최적 또는 Kryo 내 솔루션은 더 나은 것 사용하고 사용하는 경우.
저의 목표는 공간을 절약하고 성능을 향상시키는 것입니다. 나에게 올바른 방향을 제시하는 제안을 환영합니다. 감사합니다.
모든 도움을 주신 덕분에 noctarius가되었습니다. 나는 CBOR가 나의 요구 사항을 해결할 수있을 것이다. – phoenix