diff --git a/docs/protocol.html b/docs/protocol.html index bd29905d83e..5285f2e3ec8 100644 --- a/docs/protocol.html +++ b/docs/protocol.html @@ -109,22 +109,22 @@
The protocol is designed to enable incremental evolution in a backward compatible fashion. Our versioning is on a per-api basis, each version consisting of a request and response pair. Each request contains an API key that identifies the API being invoked and a version number that indicates the format of the request and the expected format of the response.
+The protocol is designed to enable incremental evolution in a backward compatible fashion. Our versioning is on a per API basis, each version consisting of a request and response pair. Each request contains an API key that identifies the API being invoked and a version number that indicates the format of the request and the expected format of the response.
-The intention is that clients would implement a particular version of the protocol, and indicate this version in their requests. Our goal is primarily to allow API evolution in an environment where downtime is not allowed and clients and servers cannot all be changed at once.
+The intention is that clients will support a range of API versions. When communicating with a particular broker, a given client should use the highest API version supported by both and indicate this version in their requests.
The server will reject requests with a version it does not support, and will always respond to the client with exactly the protocol format it expects based on the version it included in its request. The intended upgrade path is that new features would first be rolled out on the server (with the older clients not making use of them) and then as newer clients are deployed these new features would gradually be taken advantage of.
+Our goal is primarily to allow API evolution in an environment where downtime is not allowed and clients and servers cannot all be changed at once.
+Currently all versions are baselined at 0, as we evolve these APIs we will indicate the format for each version individually.
In order for a client to successfully talk to a broker, it must use request versions supported by the broker. Clients - may work against multiple broker versions, however to do so the clients need to know what versions of various APIs a - broker supports. Starting from 0.10.0.0, brokers provide information on various versions of APIs they support. Details - of this new capability can be found here. - Clients may use the supported API versions information to take appropriate actions such as propagating an unsupported - API version error to application or choose an API request/response version supported by both the client and broker. - The following sequence maybe used by a client to obtain supported API versions from a broker.
+In order to work against multiple broker versions, clients need to know what versions of various APIs a + broker supports. The broker exposes this information since 0.10.0.0 as described in KIP-35. + Clients should use the supported API versions information to choose the highest API version supported by both client and broker. If no such version + exists, an error should be reported to the user.
+The following sequence may be used by a client to obtain supported API versions from a broker.
ApiVersionsRequest
to a broker after connection has been established with the broker. If SSL is enabled,
this happens after SSL connection has been established.The following sequence is used for SASL authentication: