使用python创建kafka的topic

文章目录

使用python创建kafka的topic

kafka基本概念

Apache ‌Kafka是一个开源的分布式流处理平台,设计用于处理实时数据流。它由‌Apache软件基金会开发,使用‌Scala和‌Java编写。‌

复制代码
#特性
1. ‌分布式‌:Kafka是分布式的系统,支持多分区和多副本,确保了数据的可靠性和系统的可扩展性。
2. ‌高吞吐量‌:Kafka能够处理大量的数据流,特别适合需要实时处理大量数据的场景。
3. ‌容错性‌:通过复制和分区,Kafka提供了高容错性,确保数据的可靠存储和传输。
#用处
1. ‌实时数据流处理‌:Kafka适用于需要实时分析的系统,能够处理来自网站、应用程序或物联网设备的实时数据流,与‌Spark Streaming、‌Flink等工具结合,可以用于实时数据分析,如日志分析、用户行为分析等。
2. ‌消息系统和队列‌:作为一种分布式消息队列,Kafka支持发布-订阅模式,使得不同服务或应用之间可以异步通信。
  • 生产者:producer , 向Kafka Broker发消息的客户端 (推送数据到kafka)。
  • 消费者:consumer,从Kafka Broker 拉取消息的客户端 (从kafka获取数据)
  • 主题:topic,类别,实际上数据都存储在分区中,感觉更像为了方便归类数据而存在。
  • 分区:partition 每个 topic 可以划分为多个分区。一个分区是一个有序的、不可变的消息序列。消息在分区中是有序的。
  • Broker是Kafka集群中的服务器节点,负责存储和转发消息,Kafka集群由多个Broker组成
  • 消费者组:consumer-group
  • 偏移量:每一个partition中的每一条数据都有唯一的偏移量,确保了消息的唯一性和顺序性。偏移量是累加的,对于消费者特别有用,因为它允许消费者记录自己的消费进度,以便在断开连接或重新启动时能够准确地从上次停止的位置继续消费消息,从而避免了消息的重复处理‌。

所需安装的包

bash 复制代码
pip install kafka-python

代码样例

python 复制代码
from kafka.admin import KafkaAdminClient, NewTopic

def create_topic(bootstrap_servers,topic_name,partitions_num):
	'''
    #bootstrap服务器提供的是连接和通点选集群中的一台就可以(不用把集群里面所有机器都链接)
    bootstrap_servers = '192.168.29.51:9092'
   	#要检查的 topic 名称
   	topic_name = 'xxxx'
   	#分区数量
   	partitions_count = 16  
    '''
    # 创建 KafkaAdminClient 实例
    admin_client = KafkaAdminClient(bootstrap_servers=bootstrap_servers)
    # 检查 topic 是否存在
    topics = admin_client.list_topics()
    if topic_name in topics:
        print(f"Topic {topic_name} exists.")
        create_sgin = False
    else:
        print(f"Topic {topic_name} does not exist.")
        create_sgin = True
        
    if create_sgin:
        # 定义新的 Topic 配置
        new_topic = NewTopic(
            name=topic_name,
            num_partitions=partitions_num,
            replication_factor=1  # 副本因子,应小于或等于Kafka集群中的broker数量
        )
        # 创建 topic
        admin_client.create_topics([new_topic])
        print(f"Topic {topic_name} created with {partitions_num} partitions.")
    admin_client.close()

if __name__ == '__main__':
    create_topic(bootstrap_server,topic_name,partitions_num)  
相关推荐
即将进化成人机6 分钟前
Spring Boot配置文件
java·开发语言·intellij-idea
龙智DevSecOps解决方案9 分钟前
Java开发基础:什么是Spring Boot?一文了解其优势、对比以及如何通过Perforce JRebel实现高效开发
java·开发语言·spring boot·jrebel·perforce·java开发
PPPPickup14 分钟前
easychat---创建,获取,获取详细,退群,解散,添加与移除群组
java·开发语言·后端·maven
用户12039112947261 小时前
AIGC 时代,数据库终于可以“听懂人话”了:从零打造自然语言操作 SQLite 的完整实战
python·sqlite·aigc
Q_Q5110082851 小时前
python+django/flask+vue农业电商服务系统
spring boot·python·pycharm·django·flask
帕巴啦1 小时前
Python计算累积频率——Origin绘制累积频率图
python·绘图·origin·累积频率·python计算累积频率·origin绘制累积频率图
杀死那个蝈坦1 小时前
MyBatis-Plus 使用指南
java·kafka·tomcat·mybatis—plus
Q_Q5110082851 小时前
python+django/flask+vue的基于疫情防控管理系统的数据可视化分析系统
spring boot·python·django·flask·node.js
liulilittle1 小时前
C++ 并发双阶段队列设计原理与实现
linux·开发语言·c++·windows·算法·线程·并发
生信大表哥1 小时前
Claude Code / Gemini CLI / Codex CLI 安装大全(Linux 服务器版)
linux·python·ai·r语言·数信院生信服务器