kafka原理探究

Kafka是一款基于Zookeeper的高吞吐量、低延迟的分布式消息系统,适用于实时处理大量消息数据,如Hadoop批处理及低延迟实时应用。它通过主题、分区和Broker等概念实现高效消息处理,支持生产者Push和消费者Pull模式。

                               kafka原理探究

kafka是一个基于Zookeeper的高吞吐量低延迟的分布式的发布与订阅消息系统,它可以实时处理大量的消息数据以满足各种需求。比如,基于Hadoop的批处理系统,低延迟的实时系统等,即使普通的硬件,kafka每秒也可以处理数百万条消息,其延迟最低只有几毫秒。

Kafka中不得不提的几个名称:

  1. 消息(Message)。kafka的数据单元被成为消息。我们可以把消息看作数据库中的一条记录或者一条数据,为了提高效率,消息可以分组传输,每一组消息就是一个批次,分批次传输可以减少网络开销。但是批次越大,单位时间内处理的消息就越大,因此要在吞吐量和时间延迟之间做出权衡。
  2. 服务节点(Broker)。Kafka集群包含一个或者多个服务节点,每个独立的服务节点被称为Broker。
  3. 主题(Topic)。每条发布到Kafka集群的消息都有一个类别,这个类别称为主题,在物理上不同主题的消息分开存储; 在逻辑上,一个主题的消息虽然保存于一个或者多个Broker上,但用于只需指定消息的主题即消费者或者生产者消息而不必关系消息存在何处。主题在逻辑上可以为是队列。每条消息都必须指定它的主题,可以简单理解为必须指明把这条消息放进哪个队列里.
  4. 分区(Partition)。为了使kafka的吞吐率可以水平扩展,物理上把主题分成一个或者多个分区,创建主题的时可以指定分区的数量。每个分区对应于文件夹,该文件夹下存储该分区指明分区的数据和索引文件。
  5. 生产者(Producer)。生产者负责发布消息到Kakfa的Broker,实际上属于Broker的一种客户端。生产者负责选择那些消息应该分配到哪个主题内的哪个分区。默认生产者会把消息均匀地分别到特定主题的所有分区上,但在某些情况下,生产者会将消息直接写到指定的分区.
  6. 消费者(Consumer)。消费者属于从kakfa的Broker上读消息的客户端。读取消息时需要指定读取的主题,通常消费者会订阅一个或者多个主题,并按照消息生产的顺序读取。

 

                                                                                           Kafka的架构

 

在Kafka中,客户端和服务器之间的通讯是通过一个简单的,高性能的,与语言无关的TCP协议完成的。该协议进行了版本控制,并与旧版本保持向后兼容。kafka不仅提供了java客户端,也提供了其他多种语言的客户端.

在Kafka中,客户端和服务器之间的通讯是通过一个简单的,高性能的,与语言无关的TCP协议完成的。该协议进行了版本控制,并与旧版本保持向后兼容。kafka不仅提供了java客户端,也提供了其他多种语言的客户端.

一个典型的Kafka集群中包含若干生产者(数据可以是web前端产生的页面内容或者服务器日志等),若干Broker,若干消费者(可以是Hadoop集群,实时监控程序,数据仓库或其它服务)以及一个Zookeeper集群。Zookeeper集群用于管理和协调Broker。当Kafka系统中新增了Broker或者每个Broker故障实现时,Zookeeper通知生产者和消费者。生产者和消费者据此开始和其它的B roker协调作用。

kafka的集群架构如下图所示,生产者使用push模式将消息发送到Broker,而消费者使用pull模式从Broker订阅消费消息.

 

   

 

 

  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值