Я реализую приложение Hazelcast, используя распределенную карту MAP в качестве записи. Мой 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);
}
Однако я хотел использовать Kryo, чтобы избежать использования JsonNodeReader/Writer для экономии места и повышения производительности.
Я пытался использовать 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 оптимален или использование Kryo улучшит мое решение.
Моя цель — сэкономить место и повысить производительность. Любые предложения приветствуются, чтобы поставить меня в правильном направлении. Спасибо