Skip to content

Kafka gateway: Build Gateway to Iggy for existing Kafka users - Create a TCP Listener for Kafka users #3421

Description

@ryerraguntla

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 -

  1. A layer on Iggy server with a dedicated port
  2. 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

  • I'm willing to submit a pull request to implement this feature

Good first issue

  • I think this could be a good first issue for a new contributor

Metadata

Metadata

Assignees

No one assigned

    Labels

    gatewaysproxy gateways for other protocols like kafkagood first issueGood for newcomers
    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions