kafka原理探究

                               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订阅消费消息.

 

   

 

 

  

发布了74 篇原创文章 · 获赞 4 · 访问量 3174

猜你喜欢

转载自blog.csdn.net/u014635374/article/details/105577507