搭配使用 ksqlDB 與 Event Streams

您可以將 KSQL 與 Event Streams 搭配使用以進行串流處理。

ksqlDB 是用於事件串流的專用資料庫。 使用它來快速建置端對端事件串流應用程式,並針對 Apache Kafka建置專門用途的串流處理資料庫。

使用 Event Streams 執行 ksqlDB 的最快速且最簡單的方式是使用 Docker 容器,如 ksqlDB 快速入門中所述。

因為 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
    ssl.protocol=TLSv1.2
    ssl.enabled.protocols=TLSv1.2
    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 CLI:

    ./bin/ksql
    

當您完成這些步驟時,可以執行 ksqlDB 快速入門手冊中列出的所有查詢。