Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Goal is a communication protocol that able to work between nodes with different Ignite versions.

Prerequisites:

  1. It's an internal communication protocol between Ignite nodes:
    1. There is a limited amount of peers, and all peers are aware of each other.
    2. All peers are aware of messages schemas.
    3. At most time peers use schemas of same version. In short period of time (during RU) schemas might differ, but not much (few messages might differ with few fields only).
  2. It is proposed to provide compatibility between versions that differ by 1 minor version, for example between 2.20.X and 2.19.X (but not between 2.20.X and 2.18.X).
  3. Peers are aware of messages schemas (Message class). Older versions aren't aware of new fields only.
  4. Schema changes are rare.
  5. Code changes should be minimal
  6. Code changes should be minimal.

Current implementation of Communication protocol is inspired by Avro:

  • Order of fields is guaranteed → it send messages as byte stream serializing fields one by one, no delimiters are used between fields and messages.
  • There is API for sending field names for schema resolving.

Communication protocol

Communication protocol consist of 2 parts:

...