首页 > 其他分享 >golang+kafka

golang+kafka

时间:2024-04-17 18:24:21浏览次数:23  
标签:-- 主题 server Kafka golang 服务器 kafka

目录


Windows下安装Kafka

1. 安装JDK、Zookeeper、Scala、kafka

安装Kafka之前,需要安装JDK、Zookeeper、Scala。

  • Kafka依赖Zookeeper,在安装Kafka之前,需要安装、运行Zookeeper。
  • 而且Kafka是由Scala和Java编写,所以也需要安装jdk、scala。

2. 启动kafka

先启动Zookeeper服务

zkServer

再启动Kafka服务

bat文件在 .\bin\windows\ 路径

.\bin\windows\kafka-server-start.bat .\config\server.properties

这条命令用于在Windows操作系统上启动Apache Kafka的一个Kafka服务器实例。下面是对命令中各个组成部分的详细解释:

  1. .\bin\windows\kafka-server-start.bat:这是Kafka安装目录下Windows系统上用于启动Kafka服务器的批处理脚本文件。.\bin\windows\表示当前目录下的bin文件夹中的windows子文件夹,这是Kafka在Windows系统上的默认安装路径结构。kafka-server-start.bat是启动Kafka服务器的脚本文件名。

  2. .\config\server.properties:这是Kafka服务器配置文件的路径.\config\表示当前目录下的config文件夹,这是Kafka配置文件的默认存放位置。server.properties是Kafka服务器的主要配置文件,它包含了启动Kafka服务器所需的各种设置和参数,例如服务器的监听地址、端口、日志目录、数据目录、broker ID等。

执行这个命令后,Kafka服务器将会根据server.properties配置文件中指定的参数启动。服务器启动后,将会开始监听配置文件中指定的端口,等待来自生产者和消费者的连接,并处理他们的消息发布和消费请求。

这个命令是Kafka管理员用来启动和管理Kafka集群的基础命令。在实际的生产环境中,可能还需要根据特定的需求和环境对server.properties文件进行相应的配置调整,以确保Kafka服务器的稳定运行和性能优化。此外,为了实现高可用性和负载均衡,通常需要部署多个Kafka服务器实例并配置成集群模式。在集群模式下,Kafka能够提供更强的数据冗余和容错能力,确保消息系统的可靠性。


3. 创建topics

.\kafka-topics.bat --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

这条命令是用于在Apache Kafka中创建一个新的主题(topic)。下面是对命令中各个参数的详细解释:

  1. kafka-topics.bat:这是Windows系统上Kafka命令行工具的可执行文件名。在Linux系统上,相应的文件名通常是kafka-topics.sh

  2. --create:这个参数表示执行创建主题的操作。

  3. --bootstrap-server localhost:9092:这个参数指定了Kafka集群中用于通信的服务器地址和端口号。在这个例子中,localhost指的是本机,9092是Kafka默认的监听端口。这意味着命令将会连接到运行在本机上的Kafka实例。

  4. --replication-factor 1:这个参数设置了主题的副本因子。副本因子决定了主题中每个分区的数据将会被复制到多少个不同的服务器上。在这个例子中,副本因子设置为1,意味着每个分区的数据只会有一个副本,即不会有冗余存储。

  5. --partitions 1:这个参数指定了主题的分区数量。分区是Kafka中用于水平扩展和并行处理的基本单元。在这个例子中,主题被设置为只有一个分区。

  6. --topic test:这个参数指定了要创建的主题名称,在这个例子中,主题名称被设置为test

综上所述,这条命令的作用是在本地Kafka集群上创建一个名为test的新主题,该主题只有一个分区,且每个分区的副本因子为1。这个主题将会用于生产者发送消息和消费者消费消息。由于副本因子设置为1,这个主题不会有数据冗余,如果Kafka服务器发生故障,可能会导致数据丢失。在生产环境中,通常会将副本因子设置得更高,以确保数据的可靠性和可用性。


4. 查看topics

.\kafka-topics.bat --bootstrap-server localhost:9092 --list

这条命令用于列出在Apache Kafka中配置的所有主题(topics)。下面是对命令中各个参数的详细解释:

  1. kafka-topics.bat:这是Windows系统上Kafka命令行工具的可执行文件名。在Linux系统上,相应的文件名通常是kafka-topics.sh

  2. --bootstrap-server localhost:9092:这个参数指定了Kafka集群中用于通信的服务器地址和端口号。在这个例子中,localhost指的是本机,9092是Kafka默认的监听端口。这意味着命令将会连接到运行在本机上的Kafka实例。

  3. --list:这个参数表示执行列出所有主题的操作。

执行这个命令后,Kafka客户端将会连接到指定的Kafka服务器(在这个例子中是本地服务器),并检索当前集群中存在的所有主题。然后,它会将这些主题的名称输出到控制台。

这个命令不涉及主题的创建或删除,也不提供关于主题的详细信息(如分区数量、副本因子等),它仅仅列出了所有的主题名称。如果需要获取关于特定主题的更多信息,可以使用其他参数和命令,例如使用--topic参数来指定感兴趣的主题,或者使用--describe参数来获取主题的详细描述。


5. 打开一个producer

.\kafka-console-producer.bat --broker-list localhost:9092 --topic test

这条命令是用于启动Apache Kafka的控制台生产者(console producer),以便向指定的主题发送消息。下面是对命令中各个参数的详细解释:

  1. kafka-console-producer.bat:这是Windows系统上Kafka控制台生产者工具的可执行文件名。在Linux系统上,相应的文件名通常是kafka-console-producer.sh

  2. --broker-list localhost:9092:这个参数指定了Kafka集群中的代理服务器(broker)地址和端口号。在这个例子中,localhost指的是本机,9092是Kafka代理服务器默认的监听端口。这意味着控制台生产者将会连接到运行在本机上的Kafka代理服务器

  3. --topic test:这个参数指定了要发送消息到的主题名称。在这个例子中,主题名称被设置为test

执行这个命令后,将会启动一个交互式的控制台界面,用户可以在该界面中输入消息,并发送到名为test的主题。每输入一条消息并按下回车键后,这条消息就会被发送到Kafka集群中的test主题。控制台生产者是一个方便的工具,用于测试和演示Kafka主题的功能,以及了解消息是如何被生产和传输的。

这个工具非常适合于开发和测试阶段,因为它提供了一个简单的方法来发送和接收消息,而不需要编写完整的生产者或消费者应用程序。通过使用控制台生产者和控制台消费者(kafka-console-consumer.bat),可以快速验证Kafka集群的配置和主题的行为是否符合预期。


6. 打开一个consumer

.\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic test --from-beginning

这条命令用于启动Apache Kafka的控制台消费者(console consumer),它能够连接到Kafka集群,订阅指定的主题,并从主题中消费(接收和打印)消息。以下是对命令中各个参数的详细解释:

  1. kafka-console-consumer.bat:这是Windows系统上Kafka控制台消费者工具的可执行文件名。在Linux系统上,相应的文件名通常是kafka-console-consumer.sh

  2. --bootstrap-server localhost:9092:这个参数指定了Kafka集群中用于通信的服务器地址和端口号。在这个例子中,localhost指的是本机,9092是Kafka默认的监听端口。这意味着控制台消费者将会连接到运行在本机上的Kafka服务器

  3. --topic test:这个参数指定了要消费消息的主题名称。在这个例子中,我们将消费来自名为test的主题的消息。

  4. --from-beginning:这个参数指示消费者从主题的最开始位置开始消费消息。这意味着消费者将会接收到主题中所有可用的历史消息,而不仅仅是自消费者启动之后发布的消息。如果省略这个参数,消费者默认只会接收到它启动之后发布的消息。

执行这个命令后,控制台消费者将会启动并连接到指定的Kafka服务器上的test主题。然后,它会开始从主题的最开始位置消费消息,并将接收到的消息打印到控制台上。这个工具非常有用,因为它允许你实时查看和验证主题中的消息,以及测试和调试Kafka消费者的行为。

控制台消费者也常用于监控和故障排查,因为它可以手动控制消息的消费过程,允许你检查消息的偏移量(offset)、分区(partition)和其他元数据信息。此外,它还可以帮助你理解Kafka消费者API的行为,以及如何在自定义的消费者应用程序中使用这些API。


7. 测试发送和接收消息

在producer(生产者)控制台窗口输入消息并回车。在消息输入过后,很快consumer(消费者)窗口就会显示出producer(生产者)发送的消息

标签:--,主题,server,Kafka,golang,服务器,kafka
From: https://www.cnblogs.com/yubo-guan/p/18141445

相关文章

  • 在Go语言中往Kafka中发送数据,通常会使用Sarama库
    目录Sarama简介基本步骤示例代码Sarama简介Sarama是一个用Go语言编写的ApacheKafka客户端库,由Shopify公司最初开发,并在后来被IBM接管维护。Sarama库提供了一套完整的Kafka功能支持,包括生产者(Producer)、消费者(Consumer)以及消费者组(ConsumerGroup)等组件,允许开发者在Go应用程序......
  • Kafka 采用 RoundRobinPartitioner 时仅向偶数分区发送消息
    背景及问题说明使用Kafkaclient版本3.4.0目前的默认分区策略如下:NOTEthispartitionerisdeprecatedandshouldn'tbeused.Tousedefaultpartitioninglogicremovepartitioner.classconfigurationsetting.SeeKIP-794formoreinfo.Thedefaultpartitioni......
  • [转]Kafka与RabbitMQ区别
    Kafka和RabbitMQ都是流行的消息传递系统,但它们在设计和用途上有一些重要的区别。以下是它们之间的一些主要区别:1.消息传递模型:Kafka:Kafka是一个分布式流处理平台,主要用于处理实时数据流。它采用发布-订阅模型,消息被持久化保存在日志中,允许多个消费者以不同的速率消费消息。......
  • 用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本
    在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分。而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件?为了测试实际项目中的海豚定时调度从Kafka到HDFS的Kettle任务情况,特地提前跑一下海豚定时调度这个任务,看看到底什么......
  • Flume 整合 Kafka_flume 到kafka 配置【转】
    1.背景先说一下,为什么要使用Flume+Kafka?以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将Flume聚合后的数据输入到Storm等分布式计算框架中,可能就会超过集群的处理能力,这时采用Kafka就可以起到削峰的......
  • Kafka消息可视化工具:Offset Explorer(原名kafka Tool)的使用方法【转】
    OffsetExplorer(以前称为KafkaTool)是一个用于管理和使用ApacheKafka®集群的GUI应用程序。它提供了一个直观的界面,允许用户快速查看Kafka集群中的对象以及集群主题中存储的消息。它包含面向开发人员和管理员的功能。一些主要功能包括:快速查看所有Kafka集群,包括其代理,主题和......
  • centos7安装golang最新版1.21.1
    #先卸载旧的golangyumremovegolang#然后找到最新版本https://golang.google.cn/dl/#下载安装cd/usr/local/src wgethttps://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gztar-zxvfgo1.21.1.linux-amd64.tar.gz-C/usr/local/#增加配置文件vim/etc/profi......
  • Golang交替打印奇偶数
    packagemainimport( "fmt" "sync")varwgsync.WaitGroupfuncmain(){ evenCh,oddCh:=make(chanbool,1),make(chanbool,1) deferclose(evenCh) deferclose(oddCh) wg=sync.WaitGroup{} wg.Add(1) goprintNumbersSequent......
  • kafka
    高性能之道Kafka的特性之一就是高吞吐率,但是Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,但是Kafka即使是普通的服务器,Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Kafka在日志处理等海量数据场景广泛应用。Kaf......
  • Kafka如何保证消息的顺序性
    Kafka发布模式通过一系列机制来确保消息的顺序性,特别是在分区内部。以下是关键要点:1.分区机制:Kafka的核心机制之一是分区(Partition)。每个主题(Topic)可以被分割成多个分区,而消息在发布时会被追加到特定的分区中。在每个分区内部,消息是按照它们被追加的顺序来存储的,因此保证了分区......