《kafka权威指南》阅读笔记——第1章 初识kafka

  Kafka通常被称为“分布式提交日志”或者“分布式流平台”。文件系统或数据库提交日志用来提供全部事务的持久记录,经过重放这些日志能够重建系统的状态。一样地,Kafka的数据是按照必定顺序持久化保存的,能够按需读取。此外,Kafka的数据分布在整个系统里,具有数据故障保护和性能伸缩能力。数据库

  1.2.1  消息和批次

  Kafka的数据单元被称为消息。为了提升效率,消息被分批次写入Kafka。批次就是一组消息,这些消息属于同一个主题和分区。若是每个消息都单独穿行于网络,会致使大量的网络开销,把消息分红批次传输能够减小网络开销。不过,这要在时间延迟和吞吐量之间作出权衡:批次越大,单位时间内处理的消息就越多,单个消息的传输时间就越长。安全

  1.2.2  模式

  消息模式有许多可用的选项,像JSON和XML,易用可读性好,但缺少强类型处理能力,版本间兼容性也不是很好。服务器

  数据格式的一致性对于Kafka来讲很重要,它消除了消息读写操做之间的耦合性。若是读写操做紧密的耦合在一块儿,消息订阅者须要升级应用程序才能同时处理新旧两种数据格式。在消息订阅者升级了以后,消息发布者才能跟着升级,以便使用新的数据格式。网络

  1.2.3  主题和分区

  Kafka的消息经过主题进行分类。主题能够被分为若干个分区,一个分区就是一个提交日志。消息以追加的方式写入分区,而后以先入先出的顺序读取。要注意,因为一个主题通常包含几个分区,所以没法在整个主题范围内保证消息的顺序,但能够保证消息在单个分区内的顺序。分布式

  Kafka经过分区来实现数据冗余和伸缩性。分区能够分布在不一样的服务器上,一个主题能够横跨多个服务器,以此来提供比单个服务器更强大的性能。工具

  

  是一组从生产者移动到消费者的数据。性能

  1.2.4  生产者和消费者spa

  Kafka的客户端被分为两种基本类型:生产者和消费者。此外还有高级客户端API,用于数据集成的Kafka Connect API和用于流式处理的Kafka Streams。日志

  偏移量是一种元数据,它是一个递增的整数值,保存在Zookeeper或Kafka上,消费者关闭或者重启,读取状态不会丢失。blog

  消费者是消费者群组的一部分,也就是说,会有一个或者多个消费者共同读取一个主题。群组保证每一个分区只能被一个消费者使用,消费者与分区之间的映射一般被称为消费者对分区的全部权关系。经过这种方式,消费者能够消费包含大量消息的主题。并且,若是一个消费者失效,群组里的其余消费者能够接管失效消费者的工做。

  

  1.2.5  broker和集群

  一个独立的Kafka服务器被称为broker。根据特定的硬件及其性能特征,单个broker能够轻松处理数千个分区以及每秒百万级的消息量。

  broker是集群的组成部分。每一个集群都有一个broker同时充当了集群控制器的角色。控制器负责管理工做,包括将分区分配给broker和监控broker。在集群中,一个分区从属于一个broker,该broker被称为分区的首领。一个分区能够分配给多个broker,这个时候会发生分区复制。这种复制机制为分区提供了消息冗余,若是一个broker失效,其余broker能够接管领导权。不过,相关的消费者和生产者都须要从新链接到新的首领。

  

  保留消息(在必定期限内)是Kafka的一个重要特性。Kafka broker默认的消息保留策略:要么保留一段时间(好比7天),要么保留到消息达到必定大小的字节数(好比1GB)。当消息数量达到这些上限时,旧消息就会过时并删除。主题能够配置本身的保留策略,能够将消息保留到再也不使用它们为止。

  1.2.6  多集群

   基于如下缘由,最好使用多个集群。

  •   数据类型分离
  •   安全需求隔离
  •   多数据中心(灾难恢复)

  Kafka的消息复制机制只能在单个集群里进行。Kafka提供了一个MirrorMaker的工具,能够用来实现集群间的消息复制。MirrorMaker的核心组件包含了一个生产者和一个消费者,二者经过一个队列相连

  

  

  使用场景:1,活动跟踪;2,传递消息;3,度量指标和日志记录;4,提交日志;5,流处理

相关文章
相关标签/搜索