Centos-Kafka 消息队列

简介: 常用的消息队列有Kafka、RabbitMQ、ActiveMQ、metaq等kafka有什么?producer 消息的生成者,即发布消息consumer 消息的消费者,即订阅消息broker Kafka以集群的方式运行,可以由一个或多个服务组成,服务即brokerzookeeper 协调转发1、下载kafkacd /usr/nacp/wget http://mirror.

常用的消息队列有Kafka、RabbitMQ、ActiveMQ、metaq等

kafka有什么?

producer 消息的生成者,即发布消息
consumer 消息的消费者,即订阅消息
broker Kafka以集群的方式运行,可以由一个或多个服务组成,服务即broker
zookeeper 协调转发

1、下载kafka

cd /usr/nacp/
wget http://mirror.bit.edu.cn/apache/kafka/1.0.0/kafka_2.12-1.0.0.tgz

由于kafka_2.12-1.0.0.tgz是可执行程序,里面集成了zookeeper
tar -xzvf kafka_2.12-1.0.0.tgz #解压

2、运行与测试,以下都是终端命令

cd kafka_2.12-1.0.0

启动Zookeeper,如果无报错则说明启动成功。daemon以及nohup &是实现在后台启动,即守护进程。

方法1 ./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
方法2 nohup ./bin/zookeeper-server-start.sh config/zookeeper.properties&

启动Kafka,如果无报错则说明启动成功。daemon以及nohup &是实现在后台启动,即守护进程。

方法1 ./bin/kafka-server-start.sh -daemon config/server.properties
方法2 nohup ./bin/kafka-server-start.sh config/server.properties&

3、查看进程是否正常运行,通过检测2181与9092端口,2181是zookeeper,9092是kafka

netstat -tunlp|egrep "(2181|9092)"

4、创建主题,例如test

./bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test

QQ_20190122175655

./bin/kafka-topics.sh --create --zookeeper 192.168.1.62:2181,192.168.1.62:2182,192.168.1.62:2183 --replication-factor 3 --partitions 3 --topic emqtest

--zookeeper : zookeeper集群列表,用英文逗号分隔。可以不用指定zookeeper整个集群内的节点列表,只指定某个或某几个zookeeper节点列表也是可以的
replication-factor : 复制数目,提供failover机制;1代表只在一个broker上有数据记录,一般值都大于1,代表一份数据会自动同步到其他的多个broker,防止某个broker宕机后数据丢失。
partitions : 一个topic可以被切分成多个partitions,一个消费者可以消费多个partitions,但一个partitions只能被一个消费者消费,所以增加partitions可以增加消费者的吞吐量。kafka只保证一个partitions内的消息是有序的,多个一个partitions之间的数据是无序的。

注意,
(1)使用集群时,必须手动先创建topic,指定zookeeper节点列表;单机也应该要创建。否则客户端会报错。
(2)主题名不建议使用"."和"_"字符。
(3)建议创建主题时,指定分区数为kafka broker节点数目的整数倍,例如--partitions 3。创建完主题,可以在路径log.dirs看到主题和分区的文件夹。详情参见《Kafka入门与实践.牟大恩》3.6.1节描述

5、查看主题

./bin/kafka-topics.sh --describe --zookeeper  localhost:2181 --topic test
./bin/kafka-topics.sh --list --zookeeper localhost:2181

例如:broker集群,有3个节点。同时给主题mynewt分配了3个分区。每个分区都有leader和follow。

6、开启一个终端,发送消息,生产者的消息要发往kafka

./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

7、另起一个终端,消费消息,消费者的消息来自zookeeper(协调转发)

./bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

将来新版本需要写成./bin/kafka-console-consumer.sh --bootstrap-server localhost:2181 --topic test --from-beginning

8、结束进程

./bin/kafka-server-stop.sh
./bin/zookeeper-server-stop.sh

kafka启动时先启动zookeeper,再启动kafka;关闭时相反,先关闭kafka,再关闭zookeeper。

9、 测试发送消息

Kafka提供了一个命令行工具,可以从输入文件或者命令行中读取消息并发送给Kafka集群,每一行是一条消息。运行producer,然后在控制台输入几条消息到服务器

# bin/kafka-console-producer.sh --broker-list 192.168.1.62:9092 --topic test 
This is a message
This is another message

QQ_20190122175655

10、 测试消费消息
Kafka也提供了一个消费消息的命令行工具

# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
This is a message
This is another message

QQ_20190122175655

备注

1、配置文件与消息持久化路径
/config/server.properties

[html] view plain copy
# A comma seperated list of directories under which to store log     files  
log.dirs=/tmp/kafka-logs  
例如客户端发送test为主题的消息,会持久化在这个文件:/tmp/kafka-logs/test-0/00000000000000000000.log

/config/zookeeper.properties

[html] view plain copy
# the directory where the snapshot is stored.  
dataDir=/tmp/zookeeper  
# the port at which the clients will connect  
clientPort=2181  
建议修改kafka的日志目录和zookeeper数据目录,因为这两项默认放在tmp目录,而tmp目录中内容会随重启而丢失:

server.properties:

log.dirs=/tmp/kafka-logs
修改为
log.dirs=/usr/local/kafka/logs

zookeeper.properties

dataDir=/tmp/zookeeper
修改为
dataDir=/usr/local/zookeeper/data

2、配置文件bootstrap.servers 和 broker.list区别:
本以为是两个参数,其实是实现一个功能,查看源代码后发现broker.list是旧版本命令

目录
相关文章
|
5天前
|
消息中间件 存储 负载均衡
2024消息队列“四大天王”:Rabbit、Rocket、Kafka、Pulsar巅峰对决
本文对比了 RabbitMQ、RocketMQ、Kafka 和 Pulsar 四种消息队列系统,涵盖架构、性能、可用性和适用场景。RabbitMQ 以灵活路由和可靠性著称;RocketMQ 支持高可用和顺序消息;Kafka 专为高吞吐量和低延迟设计;Pulsar 提供多租户支持和高可扩展性。性能方面,吞吐量从高到低依次为
37 1
|
1月前
|
消息中间件 Java Kafka
初识Apache Kafka:搭建你的第一个消息队列系统
【10月更文挑战第24天】在数字化转型的浪潮中,数据成为了企业决策的关键因素之一。而高效的数据处理能力,则成为了企业在竞争中脱颖而出的重要武器。在这个背景下,消息队列作为连接不同系统和服务的桥梁,其重要性日益凸显。Apache Kafka 是一款开源的消息队列系统,以其高吞吐量、可扩展性和持久性等特点受到了广泛欢迎。作为一名技术爱好者,我对 Apache Kafka 产生了浓厚的兴趣,并决定亲手搭建一套属于自己的消息队列系统。
70 2
初识Apache Kafka:搭建你的第一个消息队列系统
|
2月前
|
消息中间件 中间件 Kafka
解锁Kafka等消息队列中间件的测试之道
在这个数字化时代,分布式系统和消息队列中间件(如Kafka、RabbitMQ)已成为日常工作的核心组件。本次公开课由前字节跳动资深专家KK老师主讲,深入解析消息队列的基本原理、架构及测试要点,涵盖功能、性能、可靠性、安全性和兼容性测试,并探讨其主要应用场景,如应用解耦、异步处理和限流削峰。课程最后设有互动答疑环节,助你全面掌握消息队列的测试方法。
|
4月前
|
图形学 人工智能 C#
从零起步,到亲手实现:一步步教你用Unity引擎搭建出令人惊叹的3D游戏世界,绝不错过的初学者友好型超详细指南 ——兼探索游戏设计奥秘与实践编程技巧的完美结合之旅
【8月更文挑战第31天】本文介绍如何使用Unity引擎从零开始创建简单的3D游戏世界,涵盖游戏对象创建、物理模拟、用户输入处理及动画效果。Unity是一款强大的跨平台游戏开发工具,支持多种编程语言,具有直观编辑器和丰富文档。文章指导读者创建新项目、添加立方体对象、编写移动脚本,并引入基础动画,帮助初学者快速掌握Unity开发核心概念,迈出游戏制作的第一步。
271 1
|
4月前
|
消息中间件 传感器 缓存
为什么Kafka能秒杀众多消息队列?揭秘它背后的五大性能神器,让你秒懂Kafka的极速之道!
【8月更文挑战第24天】Apache Kafka作为分布式流处理平台的领先者,凭借其出色的性能和扩展能力广受好评。本文通过案例分析,深入探讨Kafka实现高性能的关键因素:分区与并行处理显著提升吞吐量;批量发送结合压缩算法减少网络I/O次数及数据量;顺序写盘与页缓存机制提高写入效率;Zero-Copy技术降低CPU消耗;集群扩展与负载均衡确保系统稳定性和可靠性。这些机制共同作用,使Kafka能够在处理大规模数据流时表现出色。
71 3
|
4月前
|
消息中间件 存储 Kafka
ZooKeeper助力Kafka:掌握这四大作用,让你的消息队列系统稳如老狗!
【8月更文挑战第24天】Kafka是一款高性能的分布式消息队列系统,其稳定运行很大程度上依赖于ZooKeeper提供的分布式协调服务。ZooKeeper在Kafka中承担了四大关键职责:集群管理(Broker的注册与选举)、主题与分区管理、领导者选举机制以及消费者组管理。通过具体的代码示例展示了这些功能的具体实现方式。
134 2
|
4月前
|
消息中间件 存储 Kafka
现代消息队列与云存储问题之Kafka在海量队列场景下存在性能的问题如何解决
现代消息队列与云存储问题之Kafka在海量队列场景下存在性能的问题如何解决
|
6月前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【6月更文挑战第30天】Apache Kafka是分布式消息系统,用于高吞吐量的发布订阅。在Java中,开发者使用Kafka的客户端库创建生产者和消费者。生产者发送序列化消息到主题,消费者通过订阅和跟踪偏移量消费消息。Kafka以持久化、容灾和顺序写入优化I/O。Java示例代码展示了如何创建并发送/接收消息。通过分区、消费者组和压缩等策略,Kafka在高并发场景下可被优化。
121 1
|
6月前
|
消息中间件 Java Kafka
使用Spring Boot和Kafka实现高效消息队列
使用Spring Boot和Kafka实现高效消息队列
|
6月前
|
消息中间件 监控 Java
Java一分钟之-Kafka:分布式消息队列
【6月更文挑战第11天】Apache Kafka是一款高性能的消息队列,适用于大数据处理和实时流处理,以发布/订阅模型和分布式设计处理大规模数据流。本文介绍了Kafka基础,包括生产者、消费者、主题和代理,以及常见问题:分区选择、偏移量管理和监控不足。通过Java代码示例展示了如何创建生产者和消费者。理解并妥善处理这些问题,结合有效的监控和配置优化,是充分发挥Kafka潜力的关键。
111 0

相关产品

  • 云消息队列 Kafka 版