| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> kafka实战——如何选择线上环境 -> 正文阅读 |
|
[大数据]kafka实战——如何选择线上环境 |
如何择操作系统? 这里简单的说一下kafka原理,之所以kafka有着极高的吞吐量,和kafka的写入速度以及读的速度有很大的关系。同样都是写磁盘,为啥kafka就能做到这么快呢? ? 实际上消息队列有一个现象,就是顺序的写入,以及顺序的读取。中间不会对数据有什么修改操作。这样以来,实际上可以对磁盘顺序访问。并且kafka是把数据写到了操作系统的页缓存中。kafka读取消息首先尝试从页缓存中读取,如果命中直接把消息发送到网络的Socket上。这个过程是利用linux系统的内核级函数 sendFile做到的。而sendFile就是系统为我们提供实现零拷贝的函数。 ? 想要用到这一个优化,我们最好选择主流的linux环境来部署kafka。 ? 如果你还有疑问,我使用windows怎么了,有什么问题?我这里再多解释一下:kafka新版的clients再和解底层网络库时采用了Java的Selector机制,这在linux下对用的是epoll,而在windows上,java的Selector是使用的select模型,而不是多路复用。部署在linux相比window下可以获得更好的IO性能。 如何选择磁盘呢? ?其实就几个关键的问题:
机械硬盘?or?固态硬盘? 先说一下固态硬盘优势所在:相比机械硬盘它的寻道时间更短。当然这个就是是针对随机访问磁盘这个场景的。再多说一点,机械硬盘是通过磁头旋转来找到数据的,而固态硬盘没有这个过程。机械硬盘和固态硬盘的对比? ? 根据kafka的存储原理,它用到了是磁盘的顺序读。正是这一点,kafka规避掉了机械硬盘在随机读的劣势。因此,部署kafka?的机器实际上,使用普通机械硬盘就足够了。 ? 如果想要有更好的突破,愿意承担固态硬盘的成本的话。固态硬盘是更好的选择。 组不组磁盘矩阵?也就是?DAID 0? 不组磁盘矩阵也是可以的。 ? 组磁盘矩阵的好处是可以冗余数据,一定程度上可以避免数据的丢失。可以提供天然的数据负载均衡。但是kafka本身就为我们提供了数据负载均衡,以及避免数据丢失的机制。其实就是数据副本以及partition。 ? 另外有一个小技巧,可以为我们的kafka节点配置多个日志路径,并且每个日志路径单独挂在不同的磁盘上,这样可以让多块磁盘磁头同时工作,可以加速kafka的生成消息的速度。 磁盘容量问题? 这个要根据公式:估算出容量大小,压缩比例是需要开启压缩配置的。另外还需要多出来百分10的磁盘空间用于系统产生的数据文件。 ?生产消息的速度 *?单条消息的大小*消息保留的时间*副本的个数 *?压缩比例? 关于CPU选择? kafaka?是IO密集型的应用,如果要为了节省消息传输占用的带宽,可以开启压缩。如果开启压缩,就要用到额外的CPU。 ? kafka最好配置 8核以上,如果开启压缩,则更多核心数。 关于带宽? 实际上在带宽一定的情况下,我们应该合理的根据需求估算出kafka节点的个数。 ? 举个栗子(这个栗子是:《kafka实战》这本书中的) ? 如果业务需求时一个小时1T消息,我们网络带宽是 1Gb/s。一般情况下,不要把kafka和其他服务部署在一起。kafka对带宽的占用是非常高的,毕竟是用来做实时传输的。kafka一般使用百分之七十的带宽,这个具体值可以再根据实际情况去压测。防止在高带宽情况下丢包。这是在资源到达极限的情况下的占用,我们还要考虑到突发情况,万一流量倍增。我们可以预留三倍的增长流量增长空间。也就是1Gb * 0.7 * 0.33?约等于240Mb。在1Gb/s?的带宽下,240M/s 就是单个kafka节点的处理能力。其中我们预留出来了三倍的突发流量增长空间,也就是我们只用了三分之一的带宽。?每小时1T的业务数据,换算成秒就是? 1T / 3600?约等于 2336Mb/s 。再根据我们单台kafka节点的处理能力,实际上我们差不多需要10个kafka节点,才能,满足每个小时1T的业务流量的需求。? ? 另外避免多机房组成服务机集群。 最后来一个典型的环境案例: cpu 24核 内存32G 磁盘 1TB? 带宽1Gb/s 读书笔记,内容来源于《kafka实战》 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 | -2024/5/17 15:05:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |