我想既然Kafka是为了写数据而产生的,那么用作家的名字来命名会显得更有意义.我在大学时期上过很多文学课程,很喜欢Franz
Kafka.况且,对于开源项目来说,这个名字听起来很酷.因此,名字和应用本身基本没有太多联系 --Jay Kreps

第1章 初识Kafka

1.2.1 消息和批次
kafka的数据单元被称为消息.
为了提高效率,消息被分批次写入kafka.批次就是一组消息,这些消息属于同一个主题和分区.
如果每一个消息都单独穿行于网络,会导致大量的网络开销,把消息分成批次传输可以减少网络开销.

1.2.3 主题和分区
Kafka的消息通过主题进行分类.主题好比数据库的表,或者文件系统里的文件夹.主题可以被分为若干个分区,一个分区就是一个提交日志.消息以追加的方式写入分区,然后以先进先出的顺序读取.

1.2.4 生产者和消费者
生产者创建消息.也被称为发布者写入者.
一般情况下,一个消息会被发布到一个特定的主题上.生产者在默认情况下把消息均衡地分布到主题的所有分区上,而并不关心特定消息会被写到哪个分区.
在某些情况下,生产者会把消息直接写到指定的分区.通常是通过消息键和分区器来实现的,分区器为键生成一个散列值,并将其映射到指定的分区上.可以保证包含同一个键的消息会被飞到同一个分区上.生产者也可以使用自定义的分区器,根据不同的业务规则将消息映射到分区.

消费者读取消息.也被称为订阅者读者.消费者订阅一个或多个主题,按照消息生成的顺序读取它们.消费者通过检查消息的偏移量来区分已经读取过的消息.偏移量是另一种元数据,它是一个不断递增的整数值,在创建消息时,kafka会把它添加到消息里.在给定的分区里,每个消息的偏移量都是唯一的.消费者把每个分区最后读取的消息偏移量保存在Zookeeper或Kafka上,如果消费者关闭或重启,它的读取状态不会丢失.
消费者是消费者群组的一部分,会有一个或多个消费者共同读取一个主题.群组保证每个分区只能被一个消费者使用.
如图,有3个消费者同时读取一个主题.其中的两个消费者各自读取一个分区,另一个消费者读取其他两个分区.消费者与分区之间的映射通常被称为消费者对分区的所有权关系.
通过这种方式,消费者可以消费包含大量消息的主题.而且,如果一个消费者失效,群组里的其他消费者可以接管失效消费者的工作.

1.2.4 broker和集群
一个独立的kafka服务器被称为broker.broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存.broker为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘上的消息.
broker是集群的组成部分.每个集群都有一个broker同时充当了集群控制器的角色(自动从集群的活跃成员中选举出来).控制器负责管理工作,包括将分区配给broker和监控broker.在集群中,一个分区从属于一个broker,该broker被称为分区的首领.一个分区可以分配给多个broker,这个时候会发生分区复制.这种复制机制为分区提供了消息冗余,如果有一个broker失效,其他broker可以接管领导权.不过,相关的消费者和生产者都要重新链接到新的首领.


保留消息(在一定期限内)是kafka的一个重要特性.kafka broker集群默认的消息保留策略是:要么保留一段时间(比如7天),要么保留到消息达到一定大小的字节数(比如1GB).可以通过把主题当作紧凑型日志,只有最后一个带有特定键的消息会被保留下来.

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

kafka提供了一个叫做MirrorMaker的工具,可以用它来实现集群间的消息赋值.MirrorMaker的核心组件包含了一个生产者和一个消费者,两者之间通过一个队列相连.
消费者从一个集群读取消息,生产者把消息发送到另一个集群上.

第二章 安装kafka

参考链接 https://blog.csdn.net/Cocktail_py/article/details/89877741

2.3.1 常规配置
1.broker. id
标识符.默认值0.在整个Kafka集群中必须是谓一致.
2.zookeeper.connect
localhost:2181表示这个Zookeeper是运行在2181端口.hostname:port/path
hostname是Zookeeper服务器的机器名或IP地址;
port是Zookeeper的客户端连接端口;
/path(可选)Zookeeper路径,作为Kafka集群的chroot环境
3.log.dirs
Kafka把消息保存在磁盘上,通过log.dirs指定的目录.用一组逗号分隔的本地文件系统路径.如果指定了多个路径,broker根据"最少使用"原则,往拥有最少数目分区的路径新增分区
4.num.recovery.threads.per.data.dir
一下3种情况,kafka会使用可配置的线程池来处理日志片段
服务器正常启动,用于打开每个分区的日志片段;
服务器崩溃后重启,用于检查和截短每个分区的日志片段;
服务器正常关闭,用于关闭日志片段.
如果num.recovery.threads.per.data.dir=8,log.dir指定了3个路径,那么总共需要24个线程

5.auto.create.topics.enable
当一个生产者开始往主题写入消息时;
当消费者开始从主题读取消息时;
当任意一个客户端向主题发送元数据请求时;

2.3.2 主题的默认配置

  1. num.partitions
    新创建的主题将包含多少个分区.主题分区的个数必须要大于broker的个数.
    如何选定分区数量

    2.log. retention. ms
    kafka通常根据时间来决定数据可以被保留多久.默认使用log.retention.hours参数来配置时间,默认值为168小时.log. retention. minutes和log. retention. ms.推荐使用log. retention. ms , kafka会优先使用具有最小值的那个参数.
    3.log.retention.bytes
    保留字节数,用于判断消息是否过期,作用在每一个分区上.如果一个包含8个分区的主题,并且log.retention.bytes被设为1GB,那么这个主题最多可以保留8GB的数据.
    4.log.segment.bytes
    当日志片段大小达到log.segment.bytes指定的上限(默认是1GB)时,当前日志片段就会被关闭,一个新的日志片段被打开.如果一个日志片段被关闭,就开始等待过期.
    5.log.segment.ms
    指定多长时间之后日志片段会被关闭.默认情况下log.segment.ms没有设定值,所以只能根据大小来关闭日志片段.
    6.message.max.bytes
    broker通过设置message.max.bytes参数来限制单个消息的大小,默认值是1000 000,也就是1MB.
    这个值对性能有显著的影响.值越大,那么负责处理网络连接和请求的线程就需要花越多的时间来处理这些请求.还会影响磁盘写入快的大小,从而影响IO吞吐量.
    更新中…

kafka知识 --kafka权威指南相关推荐

  1. kafka权威指南_Kafka-分区、片段、偏移量

    [分区.片段.偏移量] 1. 每个分区是由多个Segment组成,当Kafka要写数据到一个partition时,它会写入到状态为active的segment中.如果该segment被写满,则一个新的 ...

  2. 送5本《Kafka权威指南》第二版

    文末送书 科学家们每一次发生分歧都是因为掌握的数据不够充分.所以,我们可以先就获取哪一类数据达成一致,只要获取了数据,问题也就迎刃而解了.要么我是对的,要么你是对的,要么我们都是错的,然后继续. -- ...

  3. 10 Confluent_Kafka权威指南 第十章:监控kafka

    文章目录 CHAPTER 10 Monitoring Kafka 监控kafka Metric Basics 度量基础 Where Are the Metrics? 度量标准在哪? Internal ...

  4. 09 Confluent_Kafka权威指南 第九章:管理kafka集群

    文章目录 CHAPTER 9 Administering Kafka 管理kafka Topic Operations 主题操作 Creating a New Topic 创建新的topic Spec ...

  5. 【Kafka】《Kafka权威指南》入门

    发布与订阅消息系统 在正式讨论Apache Kafka (以下简称Kafka)之前,先来了解发布与订阅消息系统的概念, 并认识这个系统的重要性.数据(消息)的发送者(发布者)不会直接把消息发送给接收 ...

  6. 初识Kafka-概念速览|安装与配置—《Kafka权威指南》笔记

    文章目录 初识Kafka 消息 批次 模式 主题与分区 生产者和消费者 broker和集群 保留消息 多集群 Kafka数据生态 安装与配置 安装 Java 安装 Zookeeper Zookeepe ...

  7. kafka集群编程指南

    kafka集群编程指南 @(KAFKA)[kafka, 大数据] kafka集群编程指南 一概述 一主要内容 二关于scala与java的说明 二producer的API 一scala版本deprec ...

  8. Kafka知识总结及面试题

    文章目录 概念 Kafka基础概念 命令行 Kafka 数据存储设计 kafka在zookeeper中存储结构 生产者 生产者设计 消费者 消费者设计 面试题 kafka设计 请说明什么是Apache ...

  9. 三万字 | Kafka 知识体系保姆级教程宝典

    本文目录: 一.消息队列     Apache Pulsar     Pulsar 与 Kafka 对比 二.Kafka基础 三.Kafka架构及组件 四.Kafka集群操作 五.Kafka的Java ...

  10. 四万字32图,Kafka知识体系保姆级教程宝典

    目录 一.消息队列 1. 消息队列的介绍 2. 消息队列的应用场景 3. 消息队列的两种模式 4. 常用的消息队列介绍 5. Pulsar 6. Kafka与Pulsar对比 7. 其他消息队列与Ka ...

最新文章

  1. HttpClient第一章(一)
  2. 2020年智能车竞赛由预赛赛道拼接成决赛赛道的方案
  3. Cookie,Session的区别
  4. 日志分类存放_博特智能|文本智能聚类——千万日志一览无余
  5. runtime 分类结构体_iOS 读懂runtime基础(一)
  6. 【图像处理】——图像特效处理(马赛克、图像融合、毛玻璃等)
  7. 焊接件技术要求怎么写_钣金焊接件生锈了怎么办
  8. mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...
  9. 用c语言实现艺术清屏
  10. upload组件 获得焦点_HTML Input FileUpload autofocus用法及代码示例
  11. ArrayBlockingQueue源码分析
  12. Angular.js学习笔记(1)
  13. Disruptor学习笔记
  14. 芥川龙之介《山药粥》
  15. win10停止更新_烦人的Windows10更新,教你如何有效的关闭。
  16. 使用matlab绘制弧线,MATLAB求解叶型中弧线
  17. 单片机实验三(1):中断处理,定时器
  18. 今天特意分享一个程序猿的微信群,聊天专用
  19. 调整oracle服务器时间,那些年Oracle数据库主机时间调整的风花雪月
  20. HarmonyOS - 华为智慧屏网络卡顿、跳帧解决方案

热门文章

  1. steam授权_恐怖游戏爱好者的福音!十一月Steam上最值得玩的恐怖游戏
  2. java如何设计转账业务_Java实现转账业务
  3. 【MOOC-生物信息学-蛋白质结构预测与分析】(占坑)
  4. Vmix噪音抑制插件的使用,大大改善音频监听效果
  5. Duplicate key
  6. mybatis xml sql分页
  7. 计算机的科学导论pdf,教材计算机科学导论.PDF
  8. python对文件操作方法是_Python文件操作
  9. html仿酷狗音乐界面代码,模仿酷狗7(Kugou7)音乐魔方界面源码
  10. noip2013解题报告