エントリとして分散 MAP を使用して Hazelcast アプリケーションを実装しています。私の JsonNodeSerializer は以下のようになります
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/Writer を使用しないように Kryo を使用したいと考えました。
Kryo を使用してみましたが、引数のないコンストラクターがないため、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/Writer を使用する私のアプローチが最適かどうか、または Kry を使用すると私のソリューションが改善されるかどうかはわかりません。
私の目標は、スペースを節約してパフォーマンスを向上させることです。私を正しい方向に導くために、どんな提案も大歓迎です。ありがとう