Skip to content

Use a backwards/forwards compatible serialization format #26

@andrewjstone

Description

@andrewjstone

We need to support rolling upgrade of nodes. And this means backwards and forwards compatibility of messages. We could do version negotiation, but this gets dirty real fast, so instead we want this supported in the serialization format ala protobuf. But the format also must support serde and be fast.

Currently msgpack is used, but the implementation doesn't allow fields to be added to messages and for them to be ignored by old nodes. Similarly, new nodes can't fill in default fields for old messages without those fields.

Bincode is the fastest solution that I've benchmarked but it also doesn't support this.

JSON support in serde is very fast and would probably work here. CBOR takes up less space on the wire but the implementation is at least 5x slower from my prior measurements.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions