kafka实战读书笔记
1、katka_2.12-l.0.0.tgz
上面两个文件中的 2.11 /2.12 分别表示编译 Kafka 的 Scala 语言版本,后面的 1.0 .0 是 Kafka的版本 。
2、kafka的好多脚本,如kafka-console-producer.sh 如果不加任何参数直接运行它们,则会打印它们各自的使用帮助文档
3、Kafka 的消息是用二进制方式来保存的,但依然是结构化的消息 。
4、最常见的两种消息引擎范型是消息队列模型和发布/订阅模型
消息队列模型:一旦消息被消费( consumed ),就会从队列中移除该消息 。 每条消息由一个发送者生产 出来,且只被一个消费者( consumer)处理一一发送者和消费
者之间是一对一的关系 。
5、吞吐量/延时 是一对矛盾体
6、kafka只是把数据写入到操作系统的页缓存( page cache )中,然后由操作系统自行决定什么时候把页缓存中的数据写回磁盘上
7、事实上普通 SAS 磁盘随机读/写的吞吐量的确是很慢的,但是磁盘的顺序读/写操作其实是非常快的
8、只能在日志文件末尾追加写入新的消息,且不允许修改己写入的消息,因此kafka属于典型的磁盘顺序访问型操作
9、Kafka 在读取消息时会首先尝试从 OS的页缓存中读取,如果命中便把消息经页缓存直接发送到网络的 Socket 上
10、

11、每台 Kafka 服务器上的状态统一交由 ZooKeeper 保管 。 Kafka 服务器上并不是所有状态都不保存,它只保存了很轻量级的内部状态
12、Kafka 服务器有一个官方名字: broker
13、Key:消息键,对消息做 partition 时使用,即决定消息被保存在某 topic 下的哪个 partition。
14、follower replica 是不能提供服务给客户端的,也就是说不负 责响应客户端发来的消息写入和消息消费请求。
15、Kafka 保证同 一个 partition 的多个 replica 一定不会分配在同一台 broker 上
16、ISR 的全称是 in-sync replica,翻译过来就是与 leader replica 保持同步的 replica 集合 。因为各种各样的原因,一小部分 replica 开始落后于 leader replica 的进度 。
当滞后 到 一定程度 时, Kafka 会将这些 replica “踢”出 ISR 。replica 重新“追上”了 leader 的进度时 , 那么 Kafka 会将它们加 回到 ISR 中
17、Kafka 的服务器端代码是由 Scala 语言编写的,而新版本客户端代码是由 Java语言编写的
18、因为 Kafka 是顺序写磁盘的,而磁盘顺序 VO 的性能,即使机械硬盘也是不弱的一一顺序 1/0 不需要频繁地移动磁头,因而节省了耗时的寻道时间
19、推荐用户为每个 broker 都配置多个日志路径,每个路径都独立挂载在不同的磁盘上,这使得多块物理磁盘磁头同时执行物理 I/O 写操作,可以极大地加速 Kafka 消息生产的速度。
20、磁盘容量计算

21、假设单个日志段文件大小设置为 lOGB,那么你至少应该给予 page cache 1OGB 以上的内存空间 。这样,待消费的消息有很大概率会保存在页缓存中
22、内存规划

23、Kafka 不属于计算密 集型( CPU-bound )的系统,因此对于 CPU 需要记住一点就可以了:追求多核而非高时钟频率。
Kafka 的机器有 16 个 CPU 核这件事情比该机器 CPU 时钟高达 4GHz 更加重要,因为 Kafka 可能无法充分利用这 4GHz 的频率,但几乎肯定会用满 16 个 CPU 核。
24、宽主要也有两种: lGb/s 和 lOGb/s,即平时所说的千兆位网络和万兆位网络
25、根据业务量和带宽计算需要几台broker

26、单节点伪分布式环境是指集群由一台 ZooKeeper 服务器和一台 Kafka broker 服务器组成
多节点 Kafka 集群由一套多节点 ZooKeeper 集群和一套多节点 Kafka 集群组成
27、安装java

28、启动kafka

29、最好使用奇数个服务器,即 2n + 1 个服务器,这样整个 ZooKeeper 集群最多可以容忍 n 台服务器容机而保证依然提供服务 。假如我们使用了 4
台服务器,若 2 台服务器岩机,剩下的 2 台服务器不满足“半数以上服务器存活”的条件,因此此时 ZooKeeper 集群将停止服务
30、zookeeper关键参数

myid 文件位于 zoo.cf运中 dataDir 配置的目录下,其内容也很简单,仅是一个数字,即 ID 。
31、一台机器上的三台zookeeper

32、查看集群状态

33、ZooKeeper 的主进程名是 QuorumPeerMain

34、一台机器上启动三个kafka

在上面 3 个配置文件中我们需要每台 Kafka 服务器指定不同的 broker ID 。 该由在整个集群中必须是唯一的

35、topic删除是个异步过程,执行 kafka-topics 脚本来列出当前的 topic 列表,如果 test-topic 不在该列表中,则表明该 topic 被删除成功
36、Kafka 还提供了性能吞吐量测试脚本,它们分别是 katka-producer-perf-test 脚本和 katkaconsumer-perf-test 脚本
37、生产者吞吐量测试

38、消费者吞吐量测试

39、当前对于绝大多数的 broker 端参数而言, 尚不支持动态修改一一这就是说,如果要新增、修改,抑或是删除某些 broker 参数的话,需要重启对应的 broker 服务器。
1)、log.dirs一一-非常重要的参数!该参数指定了 Kafka 持久化消息的目录 。该参数可以设置多个目录,以逗号分隔,比如/home/kafkal ,/home/kafka2
2)、如果要使用 一套 ZooKeeper环境管理多套 Kafka 集群,那么设置该参数的时候就必须指定 ZooKeeper 的 chroot,比如 zkl :218 l ,zk2:2181,zk3:2181/kafka_clusterl o 结尾的/kafka_cluster 1 就是 chroot,它
是可选的配置,如果不指定则默认使用 ZooKeeper 的根路径 。
3)、listeners一-broker 监听器的 csv 列表,格式是[协议]://[主机名 ]:[端口],[[协议]]://[主机名]:[端口]]。该参数主要用于客户端连接 broker 使用,
可以认为是 broker 端开放给 clients的监听端口 。 如果不指定主机名,则表示绑定默认网卡:如果主机名是 0.0.0.0,则表示绑定所有网卡。
4)、advertised.listeners一一与 listeners 类似,该参数也是用于发布给 clients 的监听器,不过该参数主要用于 IaaS 环境,比如云上的机器通常都配有多块网卡(私网网卡和公网网
卡)。对于这种机器,用户可以设置该参数绑定公网 IP 供外部 clients 使用,然后配置上面的 listeners 来绑定私网 IP 供 broker 间通信使用 。在实际使用场景中,对于配有多块网
卡的机器而言,这个参数通常都是需要配置的。
5)、unclean.leader.election.enable- 该参数默认值是 false ,即表明如果发生这种情况, Kafka 不允许从剩下存活的非 ISR 副本中选择一个当 leader
6)、log.retention. {hourslminuteslms} 若同时设置,优选ms,minutes次之,hours最后
7)、min.insync.replicas 也只有在 acks=-1 时才有意义 。

40、Kafka 会频繁地创建井修改文件系统中的文件 ,如果一个 broker 上面有很多 topic 的分区,那么这个 broker 势必就需要打开很多个文件一一大致数量约等于分区数 × (分区
总大小/日志段大小〉 × 3
41、
kafka实战读书笔记的更多相关文章
- 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...
- 机器学习实战 - 读书笔记(12) - 使用FP-growth算法来高效发现频繁项集
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第12章 - 使用FP-growth算法来高效发现频繁项集. 基本概念 FP-growt ...
- 机器学习实战 - 读书笔记(11) - 使用Apriori算法进行关联分析
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第11章 - 使用Apriori算法进行关联分析. 基本概念 关联分析(associat ...
- 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第7章 - 利用AdaBoost元算法提高分类性能. 核心思想 在使用某个特定的算法是, ...
- iPhone与iPad开发实战读书笔记
iPhone开发一些读书笔记 手机应用分类1.教育工具2.生活工具3.社交应用4.定位工具5.游戏6.报纸和杂志的阅读器7.移动办公应用8.财经工具9.手机购物应用10.风景区相关应用11.旅游相关的 ...
- Spring实战读书笔记
Spring实战读书笔记 Spring-core Spring之旅 - DI 和 AOP 概念 spring 的Bean容器 spring 的 核心模块 Spring的核心策略 POJO 最小侵入式编 ...
- <<Java RESTful Web Service实战>> 读书笔记
<<Java RESTful Web Service实战>> 读书笔记 第一章 JAX-RS2.0入门 REST (Representational State ransf ...
- 机器学习实战 - 读书笔记(06) – SVM支持向量机
前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习笔记,这次是第6章:SVM 支持向量机. 支持向量机不是很好被理解,主要是因为里面涉及到了许多数学知 ...
- 【转载】 机器学习实战 - 读书笔记(07) - 利用AdaBoost元算法提高分类性能
原文地址: https://www.cnblogs.com/steven-yang/p/5686473.html ------------------------------------------- ...
随机推荐
- 初识HTTPS
初识HTTPS HTTPS也被叫做“基于TLS的HTTP,基于SSL的HTTP,HTTP安全“,它是一个在Internet上广泛使用的计算机网络安全通信协议. 即HTTPS是HTTP的安全版本,在了解 ...
- Vue中使用ECharts画散点图加均值线与阴影区域
[本文出自天外归云的博客园] 需求 1. Vue中使用ECharts画散点图 2. 在图中加入加均值线 3. 在图中标注出阴影区域 实现 实现这个需求,要明确两点: 1. 知道如何在vue中使用ech ...
- [译]Godot 引擎 GDNative 架构初探
GDNative的架构从最早叫"DLScript"的时候到目前为止已经发生了很大的变化.随着Godot 3.0版本接近最终发布以及API越来越稳定,是时候对GDNative目前的形 ...
- 开源网络库ACE、Boost的ASIO、libevent、libev、ZeroMQ
开源C/C++网络库:ACE C++语言 跨平台Boost的ASIO C++语言 跨平台libevent C语言 主要支持linux,新版增加了对windows的IOC ...
- 使用apktool.jar工具反编译和回编译Android APK 终端命令模式
1.工具准备 工具可以网上搜索下载新版本,也可以从这里Download:https://github.com/FlymeOS/tools/blob/lollipop-5.1/reverses/apkt ...
- 【bootstrap组件】几个常用的好用bs组件
这次开发了个小TRS系统,虽然是很小,但是作为初心者,第一次用到了很多看起来洋气使用起来有相对简单的各种前端(主要是和bootstrap配合使用)组件.包括bootstrap-select2,boot ...
- Go语言_range(范围)理解
一.Go语言中的range Go 语言中 range 关键字用于 for循环中迭代数组(array).切片(slice).链表(channel)或集合(map)的元素: 在数组和切片中它返回元素的索引 ...
- Web 文件上传 目录
0. SpringMVC -- 梗概--源码--贰--上传 1. Web上传文件的原理及实现 2. Web文件上传方法总结大全 3. SpringMVC 文件上传配置,多文件上传,使用的Multipa ...
- 【中间件安全】IIS7.0 安全加固规范
1. 适用情况 适用于使用IIS7进行部署的Web网站. 2. 技能要求 熟悉IIS配置操作,能够利用IIS进行建站,并能针对站点使用IIS进行安全加固. 3. 前置条件 1. 根据站点开放端口.进程 ...
- yum安装VirtualBox
参考官方文档: https://www.virtualbox.org/wiki/Linux_Downloads 配置yum源: vim /etc/yum.repos.d/virtualbox.repo ...