Hey All,

We have been discussing different extensions to the kafka network protocol
to support richer APIs and some of the needs of the replication work (esp.
KAFKA-48 and KAFKA-49). From past experience I can say one thing we really
want to avoid is incremental or iterative design for our service apis--this
always leads to a mess that gets carried into each client implementation.
So to avoid this, I think it would be a good idea to centralize all the
discussions on protocol changes. This will also allow us to have a single
set of JIRAS to add the request object support separate from the features
these fields support--this will avoid us having 7 different overlapping
patches floating around that all work on the same code.

To kick this off I added a wiki here with all the various proposals I
collected from different threads:
https://cwiki.apache.org/confluence/display/KAFKA/New+Wire+Format+Proposal

For reference the current state of the network apis has fantastic
documentation here (thanks to Jeffrey and Taylor and others):
https://cwiki.apache.org/confluence/display/KAFKA/Wire+Format

The feedback I would like is whether or not this covers all the needs or
there is anything missing we haven't thought of.

One big question we should try to answer is whether it is better to do a
one-time incompatible change or map the old request types back onto the new
ones on the server side to retain compatibility for one or two releases to
give a gentler migration path. For example I am not sure how feasible a
non-backwards compatible release would be at LinkedIn given the large
number of clients that would have to be simultaneously upgraded.

-Jay

Reply via email to