Kafka高性能相关

                                         Kafka高性能相关

1 高性能原因

1.1 高效使用磁盘

(1)顺序写磁盘,顺序写磁盘性能高于随机写内存

(2)Append Only 数据不更新,无记录级的数据删除(只会整个segment删除)

(3)充分利用Page Cache,I/O Scheduler将连续的小块写组装成大块的物理写从而提高性能,将一些写操作重新按顺序排好,从而减少磁盘头的移动时间

(4)充分利用所有空闲内存(非JVM内存),应用层cache也会有对应的page cache与之对应,直接使用page cache可增大可用cache,如使用heap内的cache,会增加GC负担

(5)读操作可直接在page cache内进行。如果进程重启,JVM内的cache会失效,但page cache仍然可用

(6)可通过参数强制flush

(7)支持多Directory

1.2 零拷贝

传统模式下数据从文件传输到网络需要4次数据拷贝,4次上下文切换和2次系统调用。通过NIO的transferTo/transferFrom调用操作系统的sendfile实现零拷贝。总共2次内核数据拷贝,2次上下文切换和1次系统调用,消除了CPU数据拷贝

1.3 批处理和压缩

(1)Producer和Consumer均支持批量处理数据,从而减少了网络传输的开销

(2)Producer可将数据压缩后发送给broker,从而减少网络传输代价。目前支持Snappy,Gzip和LZ4压缩

1.4 Partitio

(1)通过Partition实现了并行处理和水平扩展

(2)Partition是Kafka(包括kafka Stream)并行处理的最小单位

(3)不同Partition可处于不同的Broker,充分利用多机资源

(4)同一Broker上的不同Partition可置于不同的Directory,如果节点上有多个Disk Drive,可将不同的Drive对应的Directory,从而是Kafka充分利用Disk Drive的磁盘优势

1.5 ISR

(1)ISR实现了可用性和一致性的动态平衡

(2)ISR可容忍更多的节点失败。Majority Quorum如果要容忍f个节点失败,至少需要2f+1个节点 ISR如果要容忍f个节点失败,至少需要f+1个节点

(3)如何处理Replica Crach,Leader crash后,ISR中的任何replica皆可竞选称为Leader,如果所有replica都crash,可选择让第一个recover的replica或者第一个在ISR中的replica称为leader

kafka性能影响因子

(1)producer :producer和吞吐量成正比

(2)consumer:consumer数据量在没有达到partition个数之前,和消费的吞吐量成正比。

(3)partition:分区格式和生成的吞吐量,在一定范围内,先增长,当达到某一个值之后区域稳定,在上下浮动。

(4)message-size:随着message size的增大,生产者对应的每秒生成的记录数在成下降趋势,区里的数据体积成上升趋势。

(5)replication:副本越大,自然需要同步数据的量就越多,自然kafka的生成的吞吐量就越低。

2.1 kafka脚本查看kafka集群性能

(1)kafka-producer-perf-test.sh:查看kafka生产者的性能。

bin/kafka-producer-perf-test.sh --topic perftest \
--num-records 100000 \		#测试生成多少条记录
--throughput 10000 \		#生产这的吞吐量,约等于messages/sec
--record-size 10 \			#每条消息的大小
--producer.config config/producer.properties

(2)kafka-consumer-perf-test.sh:查看kafka消费者的性能。

bin/kafka-consumer-perf-test.sh --topic perftest \
--broker-list bigdata01:9092,bigdata02:9092,bigdata03:9092 \
--messages 100000  #总共要读取多少条记录

结果参数

start.time=2019-08-06 02:31:23:738	--->开始时间
end.time=2019-08-06 02:31:24:735	--->结束时间
data.consumed.in.MB=0.9534			--->总共消费的数据体积
MB.sec=0.9562						--->每秒钟消费数据体积
data.consumed.in.nMsg=100000		--->总共消费的数据记录数
nMsg.sec=100300.9027				--->每秒钟消费记录数
rebalance.time.ms=47				--->进行rebalance的时间
fetch.time.ms=950					--->抓取这10w条数据总共花费多长时间
fetch.MB.sec=1.0035					--->每秒钟抓取数据体积
fetch.nMsg.sec=105263.1579			--->每秒钟抓取数据记录数

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python面试总结(四)ip正则与三次握手四次挥手

1.请简述值传递和引用传递的区别?值传递仅仅传递的是值 引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。2.请手写一个匹配ip的正则表达式?第一种方法: ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\…

Android相关sdk使用

SimpleDateFormat使用详解 Android_AlertDialog 两分钟彻底让你明白Android Activity生命周期(图文)!Android布局控件之LinearLayout详解Relative Layout如何正确地使用android中的progressdialog android的Menu使用android Toast大全(五种情形)建立属于…

[Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)

文章目录1. 使用 LeNet 预测1.1 导入包1.2 建立 LeNet 模型1.3 读入数据1.4 定义模型1.5 训练1.6 绘制训练曲线1.7 预测提交2. 使用 VGG16 迁移学习2.1 导入包2.2 定义模型2.3 数据处理2.4 配置模型、训练2.5 预测提交Digit Recognizer 练习地址 相关博文: [Hands …

SparkCore基础

目录 Spark简介 1 什么是Spark 2 Spark特点 3 Spark分布式环境安装 3.1 Spark HA的环境安装 3.2 动态增删一个worker节点到集群 4 Spark核心概念 5 Spark案例 5.2 Master URL 5.3 spark日志的管理 5.4 WordCount案例程序的执行过程 6 Spark作业运行架构图&#xff…

python面试总结(五)内存管理与MYSQL引擎选择

1.python是如何进行内存管理的?当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉 Python引入了机制:引用计数与分代回收。 Python提供了对内存的垃圾收集机制, 但是它将不用的内存放到内存池而不是返回给操作系统。 2.谈…

Codeforces 374A - Inna and Pink Pony

原题地址:http://codeforces.com/contest/374/problem/A 好久没写题目总结了,最近状态十分不好,无论是写程序还是写作业还是精神面貌……NOIP挂了之后总觉得缺乏动力精神难以集中……CF做的也是一塌糊涂,各种pretest passed fail…

LeetCode 1320. 二指输入的的最小距离(动态规划)

文章目录1. 题目2. 解题1. 题目 二指输入法定制键盘在 XY 平面上的布局如上图所示,其中每个大写英文字母都位于某个坐标处, 例如字母 A 位于坐标 (0,0),字母 B 位于坐标 (0,1),字母 P 位于坐标 (2,3) 且字母 Z 位于坐标 (4,1)。 …

Python面试常用二十题总结

1.请至少用一种方法下面字符串的反转? 1).A[::-1] 2).交换前后字母的位置 t list(A) l len(t) for i, j inzip(range(l - 1, 0, -1), range(l // 2)): t[i], t[j] t[j], t[i] return"".join(t) 3). 递归的方式, 每次输出一个字符 defstring_re…

SparkStreaming基础

目录 SparkStreaming基础 1 流式计算 1.1 常见的离线和流式计算框架 2 SparkStreaming简介 2.1 核心概念DStream 2.2 工作原理 2.3 Storm,SparkStreaming和Flink的对比 2.4 如何选择流式处理框架 3 SparkStreaming实时案例 3.1 StreamingContext和Receiver…

【Kaggle微课程】Natural Language Processing - 1. Intro to NLP

文章目录1. 使用 spacy 库进行 NLP2. Tokenizing3. 文本处理4. 模式匹配练习:食谱满意度调查1 在评论中找到菜单项2 对所有的评论匹配3 最不受欢迎的菜4 菜谱出现的次数learn from https://www.kaggle.com/learn/natural-language-processing 1. 使用 spacy 库进行…

谈一谈HTTP中Get与Post的区别与主要应用场景

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而H…

Python基础(一)--初识Python

目录 Python基础(一)--初识Python 1 Python基本概念 1.1 什么是Python 1.2 Python的语言特征 1.3 Python的应用领域 2 Python开发环境 2.1 Windows操作系统 2.2 Linux / Mac操作系统 2.3 Python虚拟环境 2.4 Python开发工具 3 环境变量 4 变量…

【Kaggle微课程】Natural Language Processing - 2.Text Classification

文章目录1. bag of words2. 建立词袋模型3. 训练文本分类模型4. 预测练习:1. 评估方法2. 数据预处理、建模3. 训练4. 预测5. 评估模型6. 改进learn from https://www.kaggle.com/learn/natural-language-processing NLP中的一个常见任务是文本分类。这是传统机器学…

淡定啊,学习啊

最近一直在背单词,已经忽略本质工作,写代码。这个要改啊,本职的代码还是要写的,不然怎么吃饭啊。发现这个还是昨天晚上看了会js,发现一个很好的特性,一阵狂喜,后来仔细一想是,最近荒…

Django框架—富文本编辑器

借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面此处以tinymce为例,其它富文本编辑器的使用也是类似的在虚拟环境中安装包 pip install django-tinymce2.6.0安装完成后,可以使用在Admin管理中&#xf…

Python基础(二)--数据类型,运算符与流程控制

目录 Python基础(二)--数据类型,运算符与流程控制 1 数据类型 1.1 Python中的数据类型 1.2 整数类型(int) 1.3 布尔类型 1.4 浮点类型 1.5 复数类型 1.6 类型转换 2 运算符 2.1 算术运算符 2.2 布尔运算符 …

求二维数组的转置矩阵

1 /*2 求二维数组的转置矩阵3 输入4 两个整数n和m 5 n行m列的二维数组 6 输出7 输出该二维数组的转置矩阵 8 数据范围9 0<n<20; 0<m<20; 10 */ 11 #include<stdio.h> 12 int main() 13 { 14 int a[20][20]; 15 int b[20][20]; 16 …

【Kaggle微课程】Natural Language Processing - 3. Word Vectors

文章目录1. 词嵌入 Word Embeddings2. 分类模型3. 文档相似度练习&#xff1a;1. 使用文档向量训练模型2. 文本相似度learn from https://www.kaggle.com/learn/natural-language-processing 1. 词嵌入 Word Embeddings 参考博文&#xff1a;05.序列模型 W2.自然语言处理与词…

Django搜索工具——全文检索

全文检索不同于特定字段的模糊查询&#xff0c;使用全文检索的效率更高&#xff0c;并且能够对于中文进行分词处理haystack&#xff1a;全文检索的框架&#xff0c;支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎&#xff0c;点击查看官方网站whoosh&#xff1a;纯Py…

LeetCode 787. K 站中转内最便宜的航班(Dijkstra最短路径 + 优先队列)

文章目录1. 题目2. 解题1. 题目 有 n 个城市通过 m 个航班连接。每个航班都从城市 u 开始&#xff0c;以价格 w 抵达 v。 现在给定所有的城市和航班&#xff0c;以及出发城市 src 和目的地 dst&#xff0c;你的任务是找到从 src 到 dst 最多经过 k 站中转的最便宜的价格。 如…