Kafka权威指南阅读笔记(第六章)
Broker配置
- Kafka可以同时拥有可靠的主题和非可靠的主题。非可靠的主题允许丢失。
复制系数
主题级别的配置参数是 replication.factor,在Broker级别则可以通过default.replication.factor 来配置自动创建的主题。
- 在主题创建之后,可以通过新增或移除副本来改变复制系数。
- 较高的复制系数会带来更高的可用性,可靠性,和更少的故障。
- 复制系数N,需要至少N个broker,会有N个数据副本。
- 默认副本数量是3。如果配置了机架名字,broker.rack,那么Kafka会保证分区的副本会被分布到多个机架上,防止机架上的交换机出现故障,导致所有副本全部失效。
不完全的首领选举
unclean.leader.election 只能在Broker级别配置,它默认是true。
当分区首领不可用时,一个同步副本会被选为新首领。在选举过程中其他的副本同时全部都是同步的,那么这个选举就是完全的。
这种情况会在两种场景中出现。
- 副本数量为3,当两个Broker 发生崩溃,这两个Broker都是跟随者,那么首领Broker还能继续写入数据,所有消息都会被确认并且被提交。如果之前的一个Broker恢复,那么他成为唯一的不同步副本。
- 副本数量为3,因为网络问题两个跟随者副本发生滞后,尽管他们还在复制消息,但是已经不同步了。唯一的同步副本首领仍然还在接收消息。这个时候,如果首领变得不可用,另外两个副本在也无法变成同步的了。
如果不同步的副本不能被提升为新首领,分区在旧首领恢复之前是不可用的。有时候这个情况会持续数个小时。
如果不同步的副本可以被提升为新首领,这个副本变为不同步之后的消息全部丢失,导致数据不一致。
unclean.leader.election.enable=true 将面临消息丢失的风险。
如果设置为false,则会降低可用性。
最少同步副本
在主题级别和Broker级别上,min.insync.replicas。如果一个主题包含三个副本,且该值为2,那么至少要存在两个同步副本才能向分区写入数据。
如果3个副本,或2个副本都不会有问题。如果两个副本变为不可用,那么Broker会停止接收生产请求。尝试发送数据会接收到NotEnoughReplicasException异常。此时它变成只读的了。
生产者的责任
- 生产者acks=1,则存在首领收到消息之后立即崩溃导致消息丢失的问题。
- 生产者acks=all,则Kafka在选举过程中出现首领不可用的异常,那么生产者如果没有正确处理这个异常,没有重试机制,则也会丢失消息。
在生产环境监控可靠性
Kafka的Java客户端包含了JMX度量指标,这些指标可以用于监控客户端的状态和事件。对于生产者来说,最重要的两个可靠性指标是 error-rate和retry-rate。
对于消费者来说,最重要的指标是consumer-lag。Burrow是LinkedIn公司开发的一个conusmer-lag检测工具。
Kafka权威指南阅读笔记(第六章)的更多相关文章
- Kafka 权威指南阅读笔记(第三章,第四章)
Kafka 第三章,第四章阅读笔记 Kafka 发送消息有三种方式:不关心结果的,同步方式,异步方式. Kafka 的异常主要有两类:一种是可重试异常,一种是无需重试异常. 生产者的配置: acks ...
- Javascript权威指南阅读笔记--第3章类型、值和变量(1)
之前一直有个想法,好好读完JS权威指南,便于自己对于JS有个较为全面的了解.毕竟本人非计算机专业出生,虽然做着相关行业的工作,但总觉得对于基础的掌握并没有相关专业学者扎实,正好因为辞职待业等原因,还是 ...
- Kafka权威指南阅读笔记(第五章)
Kafka Broker kafka 第一个启动的Broker在ZooKeeper中创建一个临时节点/controller,让自己成为控制器.其他Broker启动后在控制器节点上创建Watch对象,便 ...
- Kafka权威指南阅读笔记(第八章)
跨集群数据镜像 使用场景: 区域集群和中心集群 这种场景下,每个区域的应用程序只访问相应的区域内的集群.而有些情况下,需要将各个集群的信息汇总到中心集群,就可以用中心集群分析业务数据了. 冗余 一个K ...
- 深入理解 C 指针阅读笔记 -- 第六章
Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...
- css权威指南读书笔记-第10章浮动和定位
这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...
- JavaScript权威指南阅读笔记3
第六章 对象 1.首先是先介绍了对象直接量的格式:对象直接量就是1.由若干个名/值对组成的映射表,2名/值对中间由冒号分割,3名值对之间由逗号分割,4整个映射表由花括号括起来.这样就组成了一个对象直接 ...
- 《图解HTTP》阅读笔记--第六章--HTTP首部
第六章.HTTP首部 <非常重要且恐怖的一章了> HTTP报文=报文首部+(CR+LF)+报文实体 首部字段:HTTP报文首部字段=(首部字段名:字段值)们---类型*4: 通用首部字段( ...
- JS权威指南读书笔记(六)
第十五章 脚本化文档 1 文档对象模型(DOM)是表示和操作HTML和XML文档内容的基础API. 2 文档节点的部分层次结构 Text和CDATASection都是characterData的子 ...
随机推荐
- C# 时间戳的相关操作
一般的 时间戳 格式分为两种 即 10位(秒)时间戳 与 13位(毫秒)时间戳 时间戳 类型也分为两种 即 本地时间戳 与 世界统一(UTC)时间戳 废话不多说,直接上代码: 一.时间戳获取方法 // ...
- 针对媒体不实报道误导大众--抹黑C#工资垫底
最近注意到一些媒体故意抹黑C# 工资垫底,参见 https://www.toutiao.com/i6741889572931633668/: 通过搜索引擎搜索<编程语言薪酬排行:Python薪资 ...
- mybatis #{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换.mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值,最后注入进去是带引号的:mybatis在 ...
- css或Angular框架限制文本字数
提需求的来了 某一期产品迭代时,新增了一个小功能,即:在单元格中的文本内容,字符超过20个字的时候,需要截断,并显示20个字符+一个省略号,未超过,无视. 这需求看上去不怎么复杂,看起来可以用css做 ...
- THINKPHP 中关联查询(多表查询)
THINKPHP 中关联查询(多表查询)可以使用 table() 方法或和join方法,请看示例: 1.Table方法:定义要操作的数据表名称,可以动态改变当前操作的数据表名称,需要写数据表的全名,包 ...
- java架构之路-(SpringMVC篇)SpringMVC主要流程源码解析(下)注解配置,统一错误处理和拦截器
我们上次大致说完了执行流程,也只是说了大致的过程,还有中间会出错的情况我们来处理一下. 统一异常处理 比如我们的运行时异常的500错误.我们来自定义一个类 package com.springmvcb ...
- [LeetCode] 704. Binary Search
Description Given a sorted (in ascending order) integer array nums of n elements and a target value, ...
- Spark 学习笔记之 Spark history Server 搭建
在hdfs上建立文件夹/directory hadoop fs -mkdir /directory 进入conf目录 spark-env.sh 增加以下配置 export SPARK_HISTORY ...
- MongoDB 学习笔记之 Aggregation Pipeline
Aggregation Pipeline: 常用操作符介绍: $project:包含.排除.重命名和显示字段 $match:查询,需要同find()一样的参数 $limit:限制结果数量 $skip: ...
- 《Java语言程序设计》编程练习6.31(财务应用程序:信用卡号的合法性)
6.31(财务应用程序:信用卡号的合法性)信用卡号遵循下面的模式.一个信用卡号必须是13到16位的整数.它的开头必须是: 4,指Visa卡 5,指Master卡 37,指American Expres ...