kafka安装部署之资源评估

目录

1、环境资源评估

1.1、操作系统评估

1.2、磁盘评估

1.2.1、磁盘选型评估

1.2.1.1、磁盘类型评估

1.2.1.1、磁盘构成评估

1.2.2、磁盘容量评估

1.3、内存评估

1.4、CPU评估

1.5、带宽评估

1.6、常见线上资源配置

2、安装流程

2.1、安装jdk

2.2、安装zookeeper

2.3、安装kafka


1、环境资源评估

1.1、操作系统评估

        常见的操作系统包括:linux、windows、OS X,其中linux平台部署最多,而且linux也是推荐操作系统,linux操作系统与kafka具备更好的相适性,主要是由于I/O模型的使用和数据网络传输效率。如果好奇具体原因,可以看如下简介:

        常见的I/O模型有:阻塞式I/O,非阻塞式I/O,I/O多路复用、信号驱动I/O和异步I/O。每种I/O模型都有典型的使用场景,比如Socket的阻塞式和非阻塞模式就对应于前两种模型,linux中的select函数属于I/O多路复用模型,windows的IOCP属于异步I/O模型,linux的epoll模型可以看做兼具第三种和第四种模型特性,同时epoll模型比select模型高级,毕竟epoll取消了轮询机制,取而代之的是回调机制。这样当底层连接socket数较多时,可以避免很多无意义的CPU时间浪费。因此当kafka基于linux系统部署可以得到更搞笑的I/O处理性能。

        网络传输效率层面而言,由于kafka需要大量通过网络与磁盘进行数据传输,在linux平台上采用sendfile系统调用,即采用零拷贝技术,有效的改善数据传输性能,在内核驱动程序处理I/O数据逇时候,可以减少甚至完全规避不必要的CPU数据拷贝操作,避免数据在操作系统内核地址空间和用户应用程序地址空间的缓冲区进行重复拷贝。

1.2、磁盘评估

1.2.1、磁盘选型评估

1.2.1.1、磁盘类型评估

        常见的磁盘有HDD(机械硬盘)和SSD(固态硬盘),通常我们没有特殊情况下选择HDD硬盘即可。虽然SSD硬盘相较于HDD硬盘具有更低的寻道时间和存取时间,在性能上的优势很大,但kafka才写入以及读取操作均为顺序操作,不需要频繁寻址,因此SSD的性能优势对于kafka就没有那么重要,相反SSD具有更高的成本劣势。

1.2.1.1、磁盘构成评估

        JBOD(普通磁盘堆积)与RAID(磁盘阵列)的对比上,如果没有特殊要求优先选用JBOD,理由如下:

        RAID结合了磁盘镜像和磁盘条带化两种技术共同保护数据,既实现了不错的性能也提供了很高的可靠性。但是空间镜像会造成数据冗余存储,只能利用50%的磁盘(50%存储数据,50%做镜像备份);

        JBOD采用普通磁盘存储,但是由于kafka本身针对副本存储以及可靠性进行了优化设计,导致RAID对kafka没有明显的性能提升。JBOD的劣势在于普通磁盘损坏概率较大,磁盘损坏会导致broker宕机。所以如果磁盘充足且分区分布均匀合理的情况下,从成本以及性能的综合考虑,JBOD是更具性价比的选择。

1.2.2、磁盘容量评估

       kafka的磁盘容量选择需要考虑一下因素:

  • 新增消息数
  • 消息留存时间
  • 平均消息大小
  • 副本数
  • 是否启用压缩

【评估案例】每天产生1亿条消息,每条消息保存两份并保留7天,平均消息大小为1KB,平均压缩比0.5,再额外预留10%的磁盘空间用于其他存储,那么磁盘的整体容量就是:

        1亿*2*1KB*7天/1024/1024/1024/0.9存储占比*0.5压缩比,大约是0.75TB

1.3、内存评估

        kafka大量依靠文件系统和磁盘保存消息,但是其实还会对消息进行缓存,消息缓存用到的就是内存,更具体的说就是操作系统的页缓存。kafka写入消息时首先将消息写入页缓存,之后再有操作系统将页缓存中的消息写入到文件系统中,在读取消息的时候会首先从页缓存中读取消息,如果页缓存没有命中消息,则从磁盘中进行读取,在直接命中的情况下可以直接避免磁盘I/O操作。因此页缓存的大小对于kafka的读写性能至关重要。kafka对于堆内存使用占比较少。一般情况下broker需要的堆内存不会超过6GB,对于一台16GB内存的机器,页缓存的使用大小可以达到10~14GB。

【内存设计原则】

  1. 尽量分配更多的内存给操作系统页缓存;
  2. 不要为broker设置过大的堆内存,最好不超过6GB;
  3. 页缓存大小至少要大于一个日志段的大小;

1.4、CPU评估

kafka的设计使得kafka看中处理消息的线程数量,同时kafka不是计算型框架,因此对于CPU要求更好的是核数而不是计算频率。

kafka CPU设计原则】使用多核系统,CPU核数据最好大于8,CPU算力选择通用型即可。

1.5、带宽评估

        kafka在网络建进行大量数据传输,带宽资源至关重要。当前主流网络都是千兆或者万兆网络,无论那种网络,对于kafka的带宽要求都足够了。以下是带宽选用原则:

  1. 尽量使用高速网络;
  2. 根据自身网络条件和带宽评估kafka集群的机器数量
  3. 避免使用跨机房网络

对于带宽不做特殊说明,仅在此描述带宽的相关的评估案例:

【场景概述】假设网络环境带宽为1GB/s,用户的业务目标是每天用1小时处理1TB的业务消息,在这种情况下kafka到底需要多少台机器?

【评估方法】

  1. 网络带宽是1GB/s,即每秒传输1GB数据,假设分配的机器为kafka专属使用,且为kafka分配70%的带宽资源,考虑到机器上还有其他的进程使用网络且网卡通常不能用满,超过一定阈值可能会出现网络丢包情况,因此70%的设定实际上是很合理的。那么kafka的单台broker的带宽就是1GB/s * 0.7 = 710MB/s
  2. 710MB/s这是kafka所能使用的最高带宽,用户不能奢望集群平时就一直使用如此多的带宽,毕竟万一碰到 小突发流量,会极容易把网卡“打满”,因此在70%的基础上,一般再截取 1/3,即 710Mb/s/3~240Mb/s。这里的1/3是一个相对保守的数字,用户可以根据自身的业务特点酌情增加。
  3. 根据现有的网络情况,我们明确了单台broker的带宽是 240Mb/s。如果要在1小时内处理1TB的业务消息,即每秒需要处理 292MB左右的数据,也就是每秒2336Mb 数据,那么至 少需要2336/240~10台broker机器
  4. 若副本数是2,那么这个数字还需要再翻1倍,即20台broker机器。根据万兆位网卡来评估broker机器的方法是类似的

1.6、常见线上资源配置

  • 【CPU】24核
  • 【内存】32GB
  • 【磁盘】1TB 7200转 SAS盘两块
  • 【带宽】1GB/s
  • 【文件限制】ulimit -n 1000000
  • 【socket buffer】至少64KB(适用于跨机房网络传输)

2、安装流程

由于kafka安装教程相对非常简单,诸位看官可以自行尝试。

2.1、安装jdk

具体安装教程参见:Linux安装jdk的详细步骤_linux jdk安装-CSDN博客

2.2、安装zookeeper

具体安装教程参见:2.0 Zookeeper 安装配置 | 菜鸟教程

2.3、安装kafka

具体安装教程参见:https://www.cnblogs.com/sandea/p/12078442.html

  • 18
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

圣·杰克船长

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值