赞
踩
Kafka是一个开源的高吞吐量的分布式消息中间件,对比于缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。
kafka作用:
- 解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。
- 冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。
- 健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。
- 异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
1.消息队列(Message Broker)
Kafka 是一个消息队列系统,负责接收、存储和传递消息。它可以作为多个系统之间的数据传输中介。
2.主题(Topic)
Kafka 中的消息按主题进行组织。生产者将消息发布到特定的主题,消费者从这些主题中读取消息。一个主题可以包含多个分区(Partition)。
3.分区(Partition)
每个主题可以分成多个分区,分区是 Kafka 中数据的基本存储单元。分区提供了数据的并行处理能力,提高了吞吐量和性能。
4.生产者(Producer)
生产者是向 Kafka 主题发送消息的客户端。生产者将消息发布到一个或多个主题的分区中。
5.消费者(Consumer)
消费者是从 Kafka 主题中读取消息的客户端。消费者可以组成消费者组(Consumer Group),以实现负载均衡和高可用性。
6.代理(Broker)
Kafka 集群由多个代理节点组成,每个代理节点负责处理和存储消息。代理节点的集合形成了 Kafka 集群。
7.Zookeeper
Kafka 使用 Zookeeper 来进行集群管理、节点协调以及元数据存储。Zookeeper 确保 Kafka 集群的一致性和可靠性。
1.实时数据流处理
Kafka 能够处理高吞吐量的数据流,适合用于实时数据处理和分析。例如,监控系统实时收集和处理系统日志。
2.日志聚合
将来自不同来源的日志集中到 Kafka 中进行统一管理和分析。可以将日志数据推送到数据仓库或分析系统中。
3.事件驱动架构
使用 Kafka 作为事件传递和处理的核心组件,支持构建基于事件的系统架构。这可以用来实现微服务之间的解耦和异步通信。
4.数据湖和数据管道
Kafka 可以作为数据管道的核心,将实时数据流送入数据湖或其他存储系统。它还可以用作 ETL(提取、转换、加载)过程的一部分。
5.网站活动追踪
追踪用户在网站上的行为,并将这些数据实时送入 Kafka。随后,这些数据可以用于个性化推荐和用户行为分析。
6.消息系统
Kafka 作为企业级的消息系统,可以用于处理各种业务事件和消息,替代传统的消息队列系统。
总之,Kafka 的高吞吐量、低延迟和高可扩展性使其成为处理大规模数据流的理想选择,适合用于各种实时数据处理和传输场景。
利用Partition 实现并行处理。不同 Partition 可位于不同机器,因此可以充分利用集群优势,实现机器间的并行处理。另一方面,由于Partition 在物理上对应一个文件夹,即使多个Partition位于同一节点,也可通过配置让同一节点上的不同Partition 置于不同的磁盘上,从而实现磁盘间的并行处理,充分发挥多磁盘的优势。
简易架构图如下:
详细架构图如下:
使用shell新开一个node01的窗口
kafka-topics.sh --bootstrap-server node01:9092 --create --topic topic-test --partitions 2 --replication-factor 1
解释:
–replication-factor 1 #复制两份
–partitions 2 #创建1个分区
–topic #主题为topic-test
查看所有的topic
kafka-topics.sh --bootstrap-server node001:9092 --list
查看某一个topic
kafka-topics.sh --describe --bootstrap-server node001:9092 --topic topic-test
删除topic
kafka-topics.sh --bootstrap-server node001:2181 --delete --topic aa # 删除aa这个topic
启动控制台生产者
kafka-console-producer.sh --broker-list node001001:9092 --topic topic-test
启动控制台消费者
使用shell再开一个node002的窗口
kafka-console-consumer.sh --bootstrap-server node001:9092 --topic topic-test --from-beginning
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。