Versions Compared

Key

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

Current state: Accepted

...

Apache Kafka is a distributed event store and stream-processing platform, and it is a popular solution for data streaming needs.  Many community users expect Milvus to support Kafka because they have already used it in the production environment.

Image Source

Summary

 Milvus supports Kafka as a message stream,  we can use the configuration option to decide to use Pulsar or Kafka on cluster mode. 

...

Note:  in order to provide a unified MQ interface,  We will remove some API about Reader a series of Reader API from MsgSream interface, actually Kafka does not support Reader API and it also is implemented by Consumer API.


Implement Kafka consumer based on the following interface:

...

  • standalone
    • docker

      Code Block
      languageyml
      titledev/docker-compose.yml
      version: '3.5'
      
      services:
        zookeeper:
          image: 'bitnami/zookeeper:3.6.3'
          ports:
            - '2181:2181'
          environment:
            - ALLOW_ANONYMOUS_LOGIN=yes
        kafka:
          image: 'bitnami/kafka:3.1.0'
          ports:
            - '9092:9092'
          environment:
            - KAFKA_BROKER_ID=0
            - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
            - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092
            - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
            - ALLOW_PLAINTEXT_LISTENER=yes
            - KAFKA_CFG_MAX_PARTITION_FETCH_BYTES=5242880
            - KAFKA_CFG_MAX_REQUEST_SIZE=5242880
            - KAFKA_CFG_MESSAGE_MAX_BYTES=5242880
            - KAFKA_CFG_REPLICA_FETCH_MAX_BYTES=5242880
            - KAFKA_CFG_FETCH_MESSAGE_MAX_BYTES=5242880
          depends_on:
            - zookeeper
      
      networks:
        default:
          name: milvus_dev


  • Cluster
    • Helm Chart
    • Operator


Test Plan

  • pass the unittestut
  • performance testing
  • chaos testing