IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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实战——如何选择线上环境

? 所谓线上部署环境,其实无非就是操作系统的选择,以及存储介质磁盘的选择,内存大小的选择,cpu的选择,网络带宽的选择。

? 除了操作系统意外,剩下的影响因子任何一个到了瓶颈,都相当于是短板,将会制约整体性能的发挥。

? ?其实不光是部署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?固态硬盘
  • ? 组不组磁盘矩阵?也就是?DAID 0
  • ? 磁盘容量大小问题

机械硬盘?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实战》

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:24:53  更:2021-08-08 11:26:09 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码