Deeply thanks  for your suggestions, consider our system mainly interacts 
within interior system, in this point, there is no need to cover cross-language 
serialization. If cross-language is excluded, in my opinion, ProtoBuf not the 
best choice. And have I fully understand what you express or are there any 
sides I have not take into account? Looking forward more suggestions from you , 
Thx.



Best  wishes!
CalvinKirs


On 01/5/2021 22:51,Sheng Wu<[email protected]> wrote:
As a developer's perspective(not mentor).
When you work into the global level integration at the cloud native field,
you will notice how grpc(protobuf) widely used :)
If your plans are around this, I would like to suggest you considering more
than just performance. Some of you should know what I think about the
performance :P

Sheng Wu 吴晟
Twitter, wusheng1108


lidong dai <[email protected]> 于2021年1月5日周二 下午10:39写道:

hi,
It seems like Kryo is more popular besides ProtoBuf, so I suggest Kryo



Best Regards
---------------
DolphinScheduler(Incubator) PPMC
Lidong Dai
[email protected]
---------------


On Mon, Jan 4, 2021 at 2:39 PM CalvinKirs <[email protected]> wrote:

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



Reply via email to