Broker配置

  1. Kafka可以同时拥有可靠的主题和非可靠的主题。非可靠的主题允许丢失。

复制系数

主题级别的配置参数是 replication.factor,在Broker级别则可以通过default.replication.factor 来配置自动创建的主题。

  1. 在主题创建之后,可以通过新增或移除副本来改变复制系数。
  2. 较高的复制系数会带来更高的可用性,可靠性,和更少的故障。
  3. 复制系数N,需要至少N个broker,会有N个数据副本。
  4. 默认副本数量是3。如果配置了机架名字,broker.rack,那么Kafka会保证分区的副本会被分布到多个机架上,防止机架上的交换机出现故障,导致所有副本全部失效。

不完全的首领选举

unclean.leader.election 只能在Broker级别配置,它默认是true。
当分区首领不可用时,一个同步副本会被选为新首领。在选举过程中其他的副本同时全部都是同步的,那么这个选举就是完全的。

这种情况会在两种场景中出现。

  1. 副本数量为3,当两个Broker 发生崩溃,这两个Broker都是跟随者,那么首领Broker还能继续写入数据,所有消息都会被确认并且被提交。如果之前的一个Broker恢复,那么他成为唯一的不同步副本。
  2. 副本数量为3,因为网络问题两个跟随者副本发生滞后,尽管他们还在复制消息,但是已经不同步了。唯一的同步副本首领仍然还在接收消息。这个时候,如果首领变得不可用,另外两个副本在也无法变成同步的了。

如果不同步的副本不能被提升为新首领,分区在旧首领恢复之前是不可用的。有时候这个情况会持续数个小时。
如果不同步的副本可以被提升为新首领,这个副本变为不同步之后的消息全部丢失,导致数据不一致。

unclean.leader.election.enable=true 将面临消息丢失的风险。
如果设置为false,则会降低可用性。

最少同步副本

在主题级别和Broker级别上,min.insync.replicas。如果一个主题包含三个副本,且该值为2,那么至少要存在两个同步副本才能向分区写入数据。
如果3个副本,或2个副本都不会有问题。如果两个副本变为不可用,那么Broker会停止接收生产请求。尝试发送数据会接收到NotEnoughReplicasException异常。此时它变成只读的了。

生产者的责任

  1. 生产者acks=1,则存在首领收到消息之后立即崩溃导致消息丢失的问题。
  2. 生产者acks=all,则Kafka在选举过程中出现首领不可用的异常,那么生产者如果没有正确处理这个异常,没有重试机制,则也会丢失消息。

在生产环境监控可靠性

Kafka的Java客户端包含了JMX度量指标,这些指标可以用于监控客户端的状态和事件。对于生产者来说,最重要的两个可靠性指标是 error-rate和retry-rate。
对于消费者来说,最重要的指标是consumer-lag。Burrow是LinkedIn公司开发的一个conusmer-lag检测工具。

Kafka权威指南阅读笔记(第六章)的更多相关文章

  1. Kafka 权威指南阅读笔记(第三章,第四章)

    Kafka 第三章,第四章阅读笔记 Kafka 发送消息有三种方式:不关心结果的,同步方式,异步方式. Kafka 的异常主要有两类:一种是可重试异常,一种是无需重试异常. 生产者的配置: acks ...

  2. Javascript权威指南阅读笔记--第3章类型、值和变量(1)

    之前一直有个想法,好好读完JS权威指南,便于自己对于JS有个较为全面的了解.毕竟本人非计算机专业出生,虽然做着相关行业的工作,但总觉得对于基础的掌握并没有相关专业学者扎实,正好因为辞职待业等原因,还是 ...

  3. Kafka权威指南阅读笔记(第五章)

    Kafka Broker kafka 第一个启动的Broker在ZooKeeper中创建一个临时节点/controller,让自己成为控制器.其他Broker启动后在控制器节点上创建Watch对象,便 ...

  4. Kafka权威指南阅读笔记(第八章)

    跨集群数据镜像 使用场景: 区域集群和中心集群 这种场景下,每个区域的应用程序只访问相应的区域内的集群.而有些情况下,需要将各个集群的信息汇总到中心集群,就可以用中心集群分析业务数据了. 冗余 一个K ...

  5. 深入理解 C 指针阅读笔记 -- 第六章

    Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...

  6. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  7. JavaScript权威指南阅读笔记3

    第六章 对象 1.首先是先介绍了对象直接量的格式:对象直接量就是1.由若干个名/值对组成的映射表,2名/值对中间由冒号分割,3名值对之间由逗号分割,4整个映射表由花括号括起来.这样就组成了一个对象直接 ...

  8. 《图解HTTP》阅读笔记--第六章--HTTP首部

    第六章.HTTP首部 <非常重要且恐怖的一章了> HTTP报文=报文首部+(CR+LF)+报文实体 首部字段:HTTP报文首部字段=(首部字段名:字段值)们---类型*4: 通用首部字段( ...

  9. JS权威指南读书笔记(六)

    第十五章 脚本化文档   1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子 ...

随机推荐

  1. Python-进程相关概念

    名词解释: 进程: 一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位 1. 并行 在某个*时间点*,两件或两件以上的事件(任务)同时执行. 比如说,有三 ...

  2. jenkins自动化部署项目5 -- 系统管理-系统设置ssh配置

    [系统管理]-[系统设置] 如果应用服务(前端后台)要部署在linux服务器上,我选择的是用ssh 为了jenkins登录远程登录linux服务器可以免密登录,先配置公钥和私钥: 我是在windows ...

  3. Java StringTokenizer 类使用方法

    Java StringTokenizer 属于 java.util 包,用于分隔字符串. StringTokenizer 构造方法: 1. StringTokenizer(String str) :构 ...

  4. java.util.Optional学习笔记

    java.util.Optional是Java 8新增的类,作为一个持有实例的容器类,可以帮我们把判空的代码写得更优雅,并且该类还提供了一些实用的api,官方文档在这里,接下来我们通过实战来学习吧: ...

  5. opencv目标检测之canny算法

    canny canny的目标有3个 低错误率 检测出的边缘都是真正的边缘 定位良好 边缘上的像素点与真正的边缘上的像素点距离应该最小 最小响应 边缘只能标识一次,噪声不应该标注为边缘 canny分几步 ...

  6. Mysql触发器实例分析

    所谓触发器,就是在定义在表对象上.当触发器所在的表出现指定的事件时,会触发对应表的delete update insert的操作.说的有点绕口,其实就是到监视某种情况,然后去触发某种操作. 触发器是如 ...

  7. Python攻破淘宝网各类反爬手段,采集淘宝网ZDB(女用)的销量!

    声明: 由于某些原因,我这里会用手机代替,其实是一样的! 环境: windows python3.6.5 模块: time selenium re 环境与模块介绍完毕后,就可以来实行我们的操作了. 第 ...

  8. JavaScript 类型 检测

    前言 ECMAScript中有5种数据类型,分别为Number,Boolean,Null,Undifined和String,以及一种复杂的数据类型Object(由名值对组成,是这门语言所有对象的基础类 ...

  9. Docker5-docker私库的搭建及常用方法-harbor-registry方式

    一.简介 1.官方已经提供registry镜像为什么还需要用harbor 1)registry缺少镜像清理机制,可以push但是不能删除,耗费空间 2)registry缺乏相应的扩展机制 3)harb ...

  10. python获取全国各个城市pm2.5、臭氧等空气质量

    随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...