You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@servicecomb.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/09/27 19:15:00 UTC
[jira] [Commented] (SCB-918) serialize/deserialize based on proto
model
[ https://issues.apache.org/jira/browse/SCB-918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16630922#comment-16630922 ]
ASF GitHub Bot commented on SCB-918:
------------------------------------
wujimin opened a new pull request #930: [SCB-918] Codec based on proto
URL: https://github.com/apache/incubator-servicecomb-java-chassis/pull/930
**need to merge https://github.com/apache/incubator-servicecomb-java-chassis/pull/928 first**
ProtobufRoot.java is generated by protobufRoot.proto, 5000 lines.
it's only for unit test
- compare to jackson protobuf:
- can parse protobuf 3 proto file
- support protobuf 3: map/any
- compare to protoStuff runtime:
- for a proto message type, not only support strong type(Pojo), but alse support weak type(Map)
- support "any" type
- support generic pojo type, eg:CustomGeneric<User>
- **NOT** support List<List<XXX>>/List<Map<X, Y>> any more, because protobuf specification not support it, and the parser can not parse the proto file
- compare to standard protobuf:
- extend "any" type, for standard not support cases, use "json" schema to codec it.
- compare to all:
- just pojo, no need any code generation and annotation
- one pojo can serialize to different version proto file to support different version server
- support text data come from http,can serrialize from different data type
- number fields (int32/int64 and so on)
- number
- String
- String[]
- string fields
- string
- string[]
- bool fields
- boolean
- string
- string[]
- enum fields
- enum
- number
- string
- string[]
- performance compare:
```
1.protobuf
in our real scenes
business model never bind to transport, and can switch between different transport dynamically
that means if we choose standard protobuf, must build protobuf models from business models each time
so should be much slower than the test results
2.protoStuff
some scenes, there is no field but have getter or setter, so we can not use unsafe to access field
so we disable protoStuff unsafe feature
Empty:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :268 297 250 187 391
ser len :36 0 0 0 56
deser time(ms):109 31 16 243 434
deser-ser len :36 0 0 0 56
Scalars:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :234 282 284 313 388
ser len :53 21 21 21 73
deser time(ms):156 62 125 187 453
deser-ser len :53 21 21 21 73
SimpleList:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :234 281 286 172 422
ser len :68 32 32 32 88
deser time(ms):219 94 106 251 485
deser-ser len :68 32 32 32 88
PojoList:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :313 359 344 172 543
ser len :56 20 20 20 76
deser time(ms):246 127 174 281 609
deser-ser len :56 20 20 20 76
Map:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :408 489 514 482 388
ser len :92 54 54 54 56
deser time(ms):515 375 423 737 359
deser-ser len :92 54 54 54 56
Mixed:
Protostuff ScbStrong ScbWeak Protobuf Jackson
ser time(ms) :549 721 708 543 563
ser len :161 127 127 127 125
deser time(ms):766 621 793 992 777
deser-ser len :161 127 127 127 125
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
> serialize/deserialize based on proto model
> ------------------------------------------
>
> Key: SCB-918
> URL: https://issues.apache.org/jira/browse/SCB-918
> Project: Apache ServiceComb
> Issue Type: Sub-task
> Components: Java-Chassis
> Reporter: wujimin
> Assignee: wujimin
> Priority: Major
> Fix For: java-chassis-1.1.0
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)