KDP 提供的云原生 Kafka 是一个分布式的消息队列系统,具有高吞吐量、高可用性、高容错性等特点,适用于大规模数据处理场景。
为支持用户快速搭建 Kafka 集群,KDP 提供了 Kafka 集群应用,用户可以通过 KDP-ux 一键安装 Kafka 集群,支持消息的生产和消费需求。为支持用户进行云下数据转移到云上,KDP 为 Kafka 提供了 K8s 集群外部访问的能力,通过 K8s nodeport 方式暴露 Kafka 服务,用户可以将云下服务通过 Kafka 客户端连接到 KDP Kafka 集群。
Kafka 与外部组件集成
KDP 对 Kafka 进行了封装,用户服务在云上与运行访问 Kafka 集群的方式与云下基本一致,用户云下访问时只需将 Kafka 集群域名解析到 KDP Kafka 集群 K8s node IP 上,即可通过 Kafka 客户端连接到 KDP Kafka 集群。
Kafka部署
通过 KDP-ux 安装 Kafka 集群应用,listeners.type选择nodeport。
网络打通
安装 Kafka 集群应用后,需要确保 KDP Kafka 集群 K8s node 网络与用户服务所在网络打通,以便用户服务通过 Kafka 客户端连接到 KDP Kafka 集群。请用户自行配置DNS服务器或者本地hosts文件,将Kafka集群域名解析到KDP Kafka集群K8s node IP上。
配置Kafka域名解析
KDP Kafka 集群应用会自动创建一个 Kafka 集群域名,用户需要将 Kafka 集群域名解析到 KDP Kafka 集群 K8s node IP 上。kafka 集群域名格式为:<kafka-broker>.<namespace>.svc.<cluster-domain>,例如:kafka-3-cluster-kafka-plain-0.kdp-data.svc.cluster.local。
注:KDP Kafka 地址与端口信息可以通过 KDP-ux 集群信息-应用使用配置页查看。默认情况下 Kafka 三节点broker会占用 NodePort 31091-31094 端口。
Kafka客户端连接
用户服务通过 Kafka 客户端连接到 KDP Kafka 集群,需要配置 Kafka 客户端连接信息,包括 Kafka 集群域名、Kafka 集群端口等信息。
若用户已有使用 Kafka 的云下应用,只需要替换Kafka地址端口即可替换到 KDP Kafka。
以下是一份KDP kafka 生产者与消费者示例代码:
Java依赖配置 在pom.xml中添加以下依赖。
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.4.1</version>
</dependency>
创建Kafka配置文件kafka-cfg.properties
bootstrap.servers=<broker地址+端口>
topic=<设置topic名称>
group.id=<设置group id>
工具类准备
import java.util.Properties;
public class KafkaCfg {
private static Properties properties;
public static final String BOOTSTRAP_SERVERS = "bootstrap.servers";
public static final String TOPIC = "topic";
public static final String GROUP_ID = "group.id";
public synchronized static Properties getKafkaProperties() {
if (null != properties) {
return properties;
}
Properties kafkaProperties = new Properties();