继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

kafka生产环境规划-kafka商业环境实战

慕虎7371278
关注TA
已关注
手记 1125
粉丝 201
获赞 871

kafka线上真实环境实战及调优进阶系列

kafka 商业环境实战-kafka生产环境规划

kafka 商业环境实战-kafka生产者和消费者吞吐量测试

kafka 商业环境实战-kafka生产者Producer参数设置及参数调优建议

kafka真实环境部署规划

1. 操作系统选型

因为kafka服务端代码是Scala语言开发的,因此属于JVM系的大数据框架,目前部署最多的3类操作系统主要由Linux ,OS X 和Windows,但是部署在Linux数量最多,为什么呢?因为I/O模型的使用和数据网络传输效率两点。

第一:Kafka新版本的Clients在设计底层网络库时采用了Java的Select模型,而在Linux实现机制是epoll,感兴趣的读者可以查询一下epoll和select的区别,明确一点就是:kafka跑在Linux上效率更高,因为epoll取消了轮询机制,换成了回调机制,当底层连接socket数较多时,可以避免CPU的时间浪费。

第二:网络传输效率上。kafka需要通过网络和磁盘进行数据传输,而大部分操作系统都是通过Java的FileChannel.transferTo方法实现,而Linux操作系统则会调用sendFile系统调用,也即零拷贝(Zero Copy 技术),避免了数据在内核地址空间和用户程序空间进行重复拷贝。

2. 磁盘类型规划

机械磁盘(HDD)

一般机械磁盘寻道时间是毫秒级的,若有大量随机I/O,则将会出现指数级的延迟,但是kafka是顺序读写的,因此对于机械磁盘的性能也是不弱的,所以,基于成本问题可以考虑。

固态硬盘(SSD)

读写速度可观,没有成本问题可以考虑。

JBOD (Just Bunch Of Disks ) 经济实惠的方案,对数据安全级别不是非常非常高的情况下可以采用,建议用户在Broker服务器上设置多个日志路径,每个路径挂载在不同磁盘上,可以极大提升并发的日志写入速度。

RAID 磁盘阵列

常见的RAID是RAID10,或者称为(RAID 1+0) 这种磁盘阵列结合了磁盘镜像和磁盘带化技术来保护数据,因为使用了磁盘镜像技术,使用率只有50%,注意,LinkedIn公司采用的就是RAID作为存储来提供服务的。那么弊端在什么地方呢?如果Kafka副本数量设置为3,那么实际上数据将存在6倍的冗余数据,利用率实在太低。因此,LinkedIn正在计划更改方案为JBOD.

3. 磁盘容量规划

我们公司物联网平台每天大约能够产生一亿条消息,假设副本replica设置为2 (其实我们设置为3),数据留存时间为1周,平均每条上报事件消息为1K左右,那么每天产生的消息总量为:1亿 乘 2 乘 1K 除以 1000 除以 1000 =200G磁盘。预留10%的磁盘空间,为210G。一周大约为1.5T。采用压缩,平均压缩比为0.5,整体磁盘容量为0.75T。

关联因素主要有:

新增消息数

副本数

是否启用压缩

消息大小

消息保留时间

4. 内存容量规划

kafka对于内存的使用,并不过多依赖JVM 内存,而是更多的依赖操作系统的页缓存,consumer若命中页缓存,则不用消耗物理I/O操作。一般情况下,java堆内存的使用属于朝生夕灭的,很快会被GC,一般情况下,不会超过6G,对于16G内存的机器,文件系统page cache 可以达到10-14GB。

怎么设计page cache,可以设置为单个日志段文件大小,若日志段为10G,那么页缓存应该至少设计为10G以上。

堆内存最好不要超过6G。

5. CPU选择规划

kafka不属于计算密集型系统,因此CPU核数够多就可以,而不必追求时钟频率,因此核数选择最好大于8。

6. 网络带宽决定Broker数量

带宽主要有1Gb/s 和10 Gb/s 。我们可以称为千兆位网络和万兆位网络。举例如下:

我们的物联网系统一天每小时都要处理1Tb的数据,我们选择1Gb/b带宽,那么需要选择多少机器呢?

假设网络带宽kafka专用,且分配给kafka服务器70%带宽,那么单台Borker带宽就是710Mb/s,但是万一出现突发流量问题,很容易把网卡打满,因此在降低1/3,也即240Mb/s。因为1小时处理1TTB数据,每秒需要处理292MB,1MB=8Mb,也就是2336Mb数据,那么一小时处理1TB数据至少需要2336/240=10台Broker数据。冗余设计,最终可以定为20台机器。

典型推荐

cpu 核数 32

内存 32GB

磁盘 3TB 7200转 SAS盘三块

带宽 1Gb/s

大家喜欢多多关注,你的关注是我最大的动力,会不定期更新干货。



作者:大数据首席数据师
链接:https://www.jianshu.com/p/3dee8b470004


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP