hi, everyone.
Before I mentioned the communication serialization scheme, I conducted JMH Test on protobuf, kryo and protostuff. This is the result @WarmUp(iterations = 10, time = 2) @measurement(iterations = 10, time = 2) @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.SECONDS) @State(Scope.Benchmark) Benchmark Mode Cnt Score Error Units SerializerBenchMark.Kryo thrpt 20 171204.238 ± 27941.211 ops/s SerializerBenchMark.ProtoBuf thrpt 20 180551.996 ± 6657.504 ops/s SerializerBenchMark.ProtoStuff thrpt 20 221247.510 ± 3620.933 ops/s 大家可以下载我分支的代码来进行测试: https://github.com/CalvinKirs/incubator-dolphinscheduler/tree/jmh_ser/dolphinscheduler-microbench Note: Kryo (I turned on the function of class registration) When the data volume is too small, the efficiency of ProtoStuff is 3-5 times that of Kryo. When the data volume is too large, ProtoStuff still performs well enough. I prefer ProtoStuff, the serialization scheme is basically becoming mature, so the community release will be slower. (ProtoStuff released three versions in 2020, so I think there is no problem with community activity.) At the same time, it is extremely efficient, easy to use, and performs very well in serialization speed and serialized volume. ProtoBuf is very good in cross-language, but we may not need cross-language support later. At the same time, because of the need to write proto files, I think this has a certain learning cost for new developers. Therefore it is not recommended. What do you think? I want to hear suggestions from the community. Best wishes! CalvinKirs
