kafka总结

1.kafka的介绍    

       kafka是一种分布式的,高吞吐量的,基于发布订阅的消息系统。具有能够提供常数时间的消息持久化及访问性能、高吞吐、廉价的商用机器上能够达到每秒100k条的消息传输、支持kafka server间的消息消息分区,分布式消费,分区内消息的顺序性、支持水平扩展、支持离线数据处理和实时数据处理。

2.kafka的组成

1.producer:消息生产者,生产者生产消息后,通过推的方式将消息推送到kafka(Broker)消息队列中。

2.consumer:消息消费者,消费者通过拉取的形式来消费消息,防止消息积压,增加吞吐量。

3.broker:kafka集群由一个或者多个服务器组成。服务器被称为broker。消息由producer发送到broker。consumer从borker中消费消息。

4.Toptic:消息主题。每条发送到kafka集群的消息都有一个Topic,物理上不同topic的消息分开存储 。逻辑上一个topic的消息保存于一个或多个broker上。

5.partition:消息分区。每个topic包括一个或多个partition

6.consumer group:每个consumer属于特定的group,可以为每个consumer指定group name,不指定,则属于默认的group。

7.Zookeeper是一个开放源码的、高性能的协调服务,用于 leader检测、分布式同步、配置管理、识别新节点何时离开或连接、集群、节点实时状态等等

一个broker可以有多个topic,一个topic可以有多个partition。

8.Leader: 处理所有客户端交互,日志复制等,一般只有一个Leader;

3.push&pull    

      kafka采用push机制来推送消息到broker,pull机制来消费消息,push与pull机制各有优缺点。kafka采取pull机制消费消息可以简化broker的设计,push机制采取尽快的投递消息,
这样很可能导致consumer来不及处理消息从而导致网络拥塞或者拒绝服务,通过consumer自己来控制何时消费消息。即可批量消费又可逐条消费,能够选择不同的提交方式,从而实现不同传输语义。

4.传统的消息传递方法

     传统的消息消息传递方式主要有两种,第一:点对点的方式,每一条消息只能发送给消费组的一个消费者。第二:发布订阅的方式,消息广播给消费组所有的消费者。

5.kafka的特点

  1. 同时为发布和订阅提供高吞吐量。据了解,Kafka每秒可以生产约25万消息(50 MB),每秒处理55万消息(110 MB)。
  2. 可进行持久化操作。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失。
  3. 分布式系统,易于向外扩展。所有的producer、broker和consumer都会有多个,均为分布式的。无需停机即可扩展机器。
  4. 消息被处理的状态是在consumer端维护,而不是由server端维护。当失败时能自动平衡。
  5. 支持online和offline的场景。

6.Kayka的设计

1、吞吐量

高吞吐是kafka需要实现的核心目标之一,为此kafka做了以下一些设计:

  1. 数据磁盘持久化:消息不在内存中cache,直接写入到磁盘,充分利用磁盘的顺序读写性能
  2. zero-copy:减少IO操作步骤
  3. 数据批量发送
  4. 数据压缩
  5. Topic划分为多个partition,提高并行处理

2、负载均衡

  1. producer根据用户指定的算法,将消息发送到指定的partition
  2. 存在多个partiiton,每个partition有自己的replica,每个replica分布在不同的Broker节点上
  3. 多个partition需要选取出lead partition,lead partition负责读写,并由zookeeper负责fail over
  4. 通过zookeeper管理broker与consumer的动态加入与离开

3、拉取系统

由于kafka broker会持久化数据,broker没有内存压力,因此,consumer非常适合采取pull的方式消费数据,具有以下几点好处:

  1. 简化kafka设计
  2. consumer根据消费能力自主控制消息拉取速度
  3. consumer根据自身情况自主选择消费模式,例如批量,重复消费,从尾端开始消费等

4、可扩展性

当需要增加broker结点时,新增的broker会向zookeeper注册,而producer及consumer会根据注册在zookeeper上的watcher感知这些变化,并及时作出调整。

 

posted @ 2018-12-24 16:38  Teenager  阅读(363)  评论(0编辑  收藏  举报