Part of #3560.
Description
Implement a foundation layer for the gateway for Kafka users to Iggy. The foundation consists of a TCP Listener receiving Kafka messages and acknowledges the messages for each of the scoped Kafka API key and respective version.
Kafka API key and versions are pretty comprehensive list. In this ticket, define the scope of supporting Kafka API keys and associated versions for each of the API Key.
The TCP Listener receives the message , validates the Kafka message format for each of the API Key and associated version.
Affected area / component
Other / not sure
Proposed solution
- Listens on predefined (port 9093 which is Kafka wire protocol)
- Decodes Kafka binary requests (ApiVersions, Produce, Fetch, etc.)
- Validates against the scoped API Keys and versions and the respective message formats
- Replies with return code. In case of expected data, for this ticket return predefined values.
To Do: Attach the scoped Kafka API keys and Versions.
Alternatives considered
Other considered approaches -
- A layer on Iggy server with a dedicated port
- Changes to each of the SDK so that Kafka clients can natively implement.
For (1) - Iggy server path will be affected and opening an additional port at this point of product life cycle makes product vulnerable and is discouraged.
For (2) - As users are spread across multiple SDKs, the changes need to be made in many SDKs. Also existing Kafka clients has learning curve in implementing the Iggy Binary protocol.
The above approach of having a gateway for Kafka users into Iggy eliminates the above issues. The con on having a separate gateway increases hosting cost. Alternate solutions can be considered to handle the hosting costs at a later point of time.
Contribution
Good first issue
Part of #3560.
Description
Implement a foundation layer for the gateway for Kafka users to Iggy. The foundation consists of a TCP Listener receiving Kafka messages and acknowledges the messages for each of the scoped Kafka API key and respective version.
Kafka API key and versions are pretty comprehensive list. In this ticket, define the scope of supporting Kafka API keys and associated versions for each of the API Key.
The TCP Listener receives the message , validates the Kafka message format for each of the API Key and associated version.
Affected area / component
Other / not sure
Proposed solution
To Do: Attach the scoped Kafka API keys and Versions.
Alternatives considered
Other considered approaches -
For (1) - Iggy server path will be affected and opening an additional port at this point of product life cycle makes product vulnerable and is discouraged.
For (2) - As users are spread across multiple SDKs, the changes need to be made in many SDKs. Also existing Kafka clients has learning curve in implementing the Iggy Binary protocol.
The above approach of having a gateway for Kafka users into Iggy eliminates the above issues. The con on having a separate gateway increases hosting cost. Alternate solutions can be considered to handle the hosting costs at a later point of time.
Contribution
Good first issue