Google’s mechanism for data serialization, Protocol Buffers language neutral. There are three versions of the protocols: proto2, proto3.
Proto
Proto is the abbreviation of the file but also is the name of the protocol.
Message
Defining a (using .proto file)
message SearchRequest { <-- similar to python:: define message `SearchRequest
`
required string query = 1;
optional int32 page_number = 2;
optional int32 result_per_page = 3;
}
Advantages
> Fast ~ binary
> Lightweight ~ binary 😀
> Language independent (if you are prototyping in python and implementing in java)
Benchmarks
An example of Protobuf tutorial, given by Ten Loh, where he does a comparison of JSON parsing and Protobufs.
On Infinispan/Data Grid, to develop custom Protostream as default serialization mechanism, this replaces the JBoss Framework.
For customization, there are two possibilities on DG:
1. Generate one given that the serializable classes have the proper annotation (@ProtoField and/or @ProtoFactory). To automatically generate it, one relies Data Grid `protostream-processor` (after adding the proper annotations) that on compile time generate the .proto file.
2. OR you manually implement a proto message buffer