将 ksqlDB 与 Event Streams 配合使用

第2代

您可以将 KSQL 与 Event Streams 结合使用,进行流处理。

ksqlDB 是一个专为事件流设计的数据库。 利用它,结合专为 Apache Kafka 设计的流处理数据库,快速构建端到端的事件流应用程序。

使用 Event Streams 运行 ksqlDB 的最快、最简单方法是使用 Docker 容器,如 ksqlDB Quickstart 中所述。

由于 ksqlDB 需要创建一个 retention.ms 设置为无限制的主题,因此您只能在企业版中使用 ksqlDB。

请按照以下步骤进行设置。 完成后,您可以运行《 ksqlDB 快速入门指南 》中列出的所有查询。

  1. 在 IBM Cloud 控制台中,使用“Event Streams”仪表板创建一个名为 _confluent-ksql-default__command_topic 的主题,该主题包含一个分区,并采用默认的保留期。

  2. 如果要在 Docker 容器中运行 ksqlDB,请按照以下步骤操作:

    a. 创建名为 docker-compose.yml 的文件,内容如下:

    ---
    version: '2'
    services:
      ksqldb-server:
        image: confluentinc/ksqldb-server:latest
        hostname: ksqldb-server
        container_name: ksqldb-server
        ports:
          - "8088:8088"
        environment:
          KSQL_LISTENERS: http://0.0.0.0:8088
          KSQL_BOOTSTRAP_SERVERS: <BOOTSTRAP_SERVERS>
          KSQL_KSQL_SERVICE_ID: default_
          KSQL_KSQL_SINK_REPLICAS: 3
          KSQL_KSQL_STREAMS_REPLICATION_FACTOR: 3
          KSQL_SECURITY_PROTOCOL: SASL_SSL
          KSQL_KSQL_INTERNAL_TOPIC_REPLICAS: 3
          KSQL_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username=\"token\" password=\"<PASSWORD>\";
          KSQL_SASL_MECHANISM: PLAIN
      ksqldb-cli:
        image: confluentinc/ksqldb-cli:latest
        container_name: ksqldb-cli
        depends_on:
          - ksqldb-server
        entrypoint: /bin/sh
        tty: true
    

    其中,BOOTSTRAP_SERVERS 和 PASSWORD 是 Event Streams 中 IBM Cloud 服务凭证选项卡中的值。

    b. 在您创建该文件的目录下,运行以下命令以启动 ksqlDB 服务器。

    docker-compose up
    

    c. 运行以下命令以连接到 ksqlDB 服务器并启动交互式命令行接口 (CLI) 会话。

    docker exec -it ksqldb-cli ksql http://ksqldb-server:8088
    
  3. 如果不是在 Docker 容器中运行 ksqlDB,请按照以下步骤操作:

    a. 克隆 ksqlDB 存储库:

    git clone https://github.com/confluentinc/ksql
    

    b. 导航至 ksqlDB 目录并编译代码。

    cd ksql
    mvn clean install -Dmaven.test.skip=true
    

    c. 创建 Event Streams ksqlDB 配置文件。

    例如:

    bootstrap.servers=BOOTSTRAP_SERVERS
    listeners=http://localhost:8088
    security.protocol=SASL_SSL
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="token" password="PASSWORD";
    ksql.sink.replications.default=3
    

    其中,BOOTSTRAP_SERVERS 和 PASSWORD 是 Event Streams 中 IBM Cloud 服务凭证选项卡中的值。

    d. 使用以下命令启动 ksqlDB 服务器:

    ./bin/ksql-server-start ./config/ibm-eventstreams.properties
    

    e. 使用以下命令启动 ksqlDB 命令行界面:

    ./bin/ksql
    

完成这些步骤后,您就可以运行《 ksqlDB 快速入门指南 》中列出的所有查询了。