kafka connector使用(Docker一键启动版)

本文介绍如何使用Docker将Kafka连接器打包成镜像,并在Confluent环境中部署。涉及步骤包括制作镜像、docker-compose配置、配置文件修改及常见问题处理,适用于数据流向控制和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

结合博主之前写的一篇《kafka connector使用(单机手动启动版)》一起看

版本

kafka: confluentinc/cp-kafka:7.0.1
zookeeper: confluentinc/cp-zookeeper:7.0.1

思路

将该连接器做成一个镜像。

实现

一、制作镜像

Dockerfile

FROM confluentinc/cp-kafka:7.0.1
COPY connect-redis.jar /usr/share/java/connect-redis.jar
CMD ["connect-standalone","/etc/kafka/connect-standalone.properties","/etc/kafka/connect-redis-source.properties"]

将Dockerfile和超级jar放在一个文件夹下,docker build -t curtain/kafka-connector:7.0.1 .构建连接器镜像

二、编写docker-compose.yml
version: "3.0"
services:
  zookeeper:
    image: confluentinc/cp-zookeeper:7.0.1
    container_name: zookeeper
    restart: always
    ports:
      - 2181:2181
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ZOOKEEPER_SYNC_LIMIT: 2
  kafka:
    image: confluentinc/cp-kafka:7.0.1
    container_name: kafka
    ports:
      - 9092:9092
    environment:
      # client要访问的broker地址
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://服务器ip:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      # 通过端口连接 zookeeper
    restart: always
    depends_on:
      - zookeeper
  kafka-connector:
    image: curtain/kafka-connector:7.0.1
    container_name: kafka-connector
    volumes:
      - type: bind
        source: ./connect-standalone.properties
        target: /etc/kafka/connect-standalone.properties
      - type: bind
        source: ./connect-redis-source.properties
        target: /etc/kafka/connect-redis-source.properties
    restart: always
    depends_on:
      - zookeeper
      - kafka
三、修改connect-standalone.properties

没有该文件的话,网上找一份。将bootstrap.servers里面的ip部分从localhost改成服务器的ip。

四、上传文件

镜像包docker-compose.ymlconnect-standalone.properties连接器配置文件上传到服务器同一个路径下。

五、加载镜像并启动
  1. 加载镜像:docker load < 镜像包.tar
  2. 启动镜像: docker-compose up -d

这样,kafka连接器就启动啦。

可能会遇到的问题

问题一: 默认写入到kafka的数据会包含一些额外的信息如:schema和payload,我们不想要这些额外的信息怎么办?
connect-standalone.properties配置文件中的key.converter.schemas.enablevalue.converter.schemas.enable设置为false即可
问题二:写入到kafka的数据多了一层双引号和json转义怎么去掉?
这个是因为默认配置的转换器类是org.apache.kafka.connect.json.JsonConverter加上你生成的SourceRecord对象里面的value和key值已经是一个String类型了。这样的话会将String类型的数据json化一遍,就会出现多了一层双引号加转义的情况。修改connect-standalone.properties配置文件中的key.convertervalue.converterorg.apache.kafka.connect.storage.StringConverter即可。

### Verilog 实现二进制除法移位相减操作 在硬件描述语言Verilog中,可以利用移位寄存器和法/法逻辑来实现二进制数之间的除法运算。下面是一个简单的模块设计案例,用于执行无符号整数间的除法。 #### 设计思路 该算法模仿手工计算中的长除法过程,在每次迭代过程中尝试从当前余数中数;如果成功,则商增一位'1'并继续处理下一部分被数。此方法通过循环结构不断重复上述动作直到完成整个输入数据宽度范围内的测试[^1]。 #### 模块定义 ```verilog module div_shift_sub( input wire clk, input wire rst_n, input wire start, output reg ready, input wire [7:0] dividend, // 被数 input wire [3:0] divisor, // 数 output reg [7:0] quotient, // 商 output reg remainder // 余数 ); ``` #### 参数声明与初始化 为了简化说明,这里假设8位作为最大可能长度,并且只考虑正整数值之间的情况。实际应用时可根据需求调整这些参数设置。 #### 主要功能代码片段 ```verilog // ... (省略部分无关代码) always @(posedge clk or negedge rst_n) begin : proc_division if (!rst_n) begin state <= IDLE; counter <= 0; temp_remainder <= 0; quotient <= 0; ready <= 1'b1; end else if (start && ready) begin // 初始化状态机进入DIVIDE阶段 state <= DIVIDE; counter <= DATA_WIDTH - 1; // 假设DATA_WIDTH=8 temp_remainder <= {dividend, 8'd0}; quotient <= 0; ready <= 1'b0; end else case(state) IDLE: ; DIVIDE: begin if(counter >= 0) begin // 执行一次比较和条件性的法操作 if(temp_remainder >= {{(DATA_WIDTH-`WIDTH_DIVISOR){1'b0}}, divisor}) begin temp_remainder <= temp_remainder - {{(DATA_WIDTH-`WIDTH_DIVISOR){1'b0}}, divisor}; quotient[counter] <= 1'b1; end // 左移临时余数准备下次迭代 temp_remainder <= temp_remainder << 1; // 更新计数器控制流程进度 counter <= counter - 1; end else begin // 完成所有轮次后更新最终结果并将状态重置为空闲等待新请求 remainder <= temp_remainder >> DATA_WIDTH; state <= IDLE; ready <= 1'b1; end end default:; endcase end ``` 这段程序展示了如何在一个同步进程中管理有限状态自动机(FSM),它负责协调各个信号的变化以正确地模拟二进制除法规则下的行为模式。注意这里的具体细节可能会因为不同的应用场景而有所变化,比如支持有符号数或是更高效的优化版本等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值