插曲:Kafka的集群部署实践及运维相关

前言

上一篇 Kafka 的文章 --- 插曲:大白话带你认识Kafka 中我们应该已经了解了一些关于基础角色和集群架构相关的问题,这时候我们应该很想了解一下如何构建生产中的Kafka集群或者一些相关的运维工具,所以就应运而生了下文,配图基本没有,

一、Kafka的生产集群部署

1.1 方案背景

假设每天集群需要承载10亿数据。一天24小时,晚上12点到凌晨8点几乎没多少数据。

使用二八法则估计,也就是80%的数据(8亿)会在16个小时涌入,而且8亿的80%的数据(6.4亿)会在这16个小时的20%时间(3小时)涌入。

QPS计算公式:640000000 ÷ 36060 = 60000,也就是说高峰期的时候Kafka集群要扛住每秒6万的并发。

磁盘空间计算,每天10亿数据,每条50kb,也就是46T的数据。保存2个副本(在上一篇中也提到过其实两个副本会比较好,因为follower需要去leader那里同步数据,同步数据的过程需要耗费网络,而且需要磁盘空间,但是这个需要根据实际情况考虑),46 * 2 = 92T,保留最近3天的数据。故需要 92 * 3 = 276T

1.2 QPS方面

部署Kafka,Hadoop,MySQL···等核心分布式系统,一般建议直接采用物理机,抛弃使用一些低配置的虚拟机的想法。高并发这个东西,不可能是说,你需要支撑6万QPS,你的集群就刚好把这6万并发卡的死死的。加入某一天出一些活动让数据量疯狂上涨,那整个集群就会垮掉。

但是,假如说你只要支撑6w QPS,单台物理机本身就能扛住4~5万的并发。所以这时2台物理机绝对绝对够了。但是这里有一个问题,我们通常是建议,公司预算充足,尽量是让高峰QPS控制在集群能承载的总QPS的30%左右(也就是集群的处理能力是高峰期的3~4倍这个样子),所以我们搭建的kafka集群能承载的总QPS为20万~30万才是安全的。所以大体上来说,需要5~7台物理机来部署,基本上就很安全了,每台物理机要求吞吐量在每秒4~5万条数据就可以了,物理机的配置和性能也不需要特别高。

1.3 磁盘方面

1.3.1 磁盘数量

需要5台物理机的情况,需要存储276T的数据,平均下来差不多一台56T的数据。这个具体看磁盘数和盘的大小

1.3.2 SAS还是SSD

现在我们需要考虑一个问题:是需要SSD固态硬盘,还是普通机械硬盘?

SSD就是固态硬盘,比机械硬盘要快,那么到底是快在哪里呢?其实SSD的快主要是快在磁盘随机读写,就要对磁盘上的随机位置来读写的时候,SSD比机械硬盘要快。比如说MySQL这种就应该使用SSD了(MySQL需要随机读写)。比如说我们在规划和部署线上系统的MySQL集群的时候,一般来说必须用SSD,性能可以提高很多,这样MySQL可以承载的并发请求量也会高很多,而且SQL语句执行的性能也会提高很多。

**因为写磁盘的时候kafka是顺序写的。机械硬盘顺序写的性能机会跟内存读写的性能是差不多的,所以对于Kafka集群来说其实使用机械硬盘就可以了。**如果是需要自己创业或者是在公司成本不足的情况下,经费是能够缩减就尽量缩减的。

1.4 内存角度

JVM非常怕出现full gc的情况。kafka自身的jvm是用不了过多堆内存的,因为kafka设计就是规避掉用jvm对象来保存数据,避免频繁full gc导致的问题,所以一般kafka自身的jvm堆内存,分配个10G左右就够了,剩下的内存全

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值