kafka的线上部署方案定位

操作系统

选择linux系统,社区对linux支持较好,linux的I/O模型是使用epoll[ epoll比windows的select性能好]。

磁盘

因为kafka使用顺序写来保证写速度,所以在磁盘的选择上可以直接使用普通机械磁盘。同时,因为kafka自己实现了冗余的磁盘存储空间,所以实际上没有必要使用到磁盘阵列[RAID]。

磁盘容量

这个我们需要结合一些信息来评估。看下面的例子:

假设公司业务每天向kafka集群发送1亿条消息,每条信息保存以防止数据俯视,消息默认保存两周[14天]时间。假设消息平均大小是1KB。那么kafka集群需要为这个业务预留多少磁盘空间?

首先计算数据容量:1亿 * 1KB * 2 /1024/1024=200GB

同时除了消息之外,我们还需要保留索引数据以及日志数据。要预留多15%的存储空间

也就是一天的磁盘空间是 200*1.15 = 230GB

我们要保留14天 也就是 230 * 14 = 3.2 TB 这就是总的存储磁盘要求【这里没有考虑压缩,如果有压缩还可以考虑压缩比】。

这个评估可以放到别的消息中间件类比。

规划磁盘容量需要考虑的:

消息数,保存时间,平均消息大小 ,备份数,是否启用压缩。

带宽

公司常见的机房网络是1Gb千兆网络和10Gb万兆网络。千兆网络是一般公司网络的标准配置。

首先我们要看指标:1小时内处理1TB的业务数据【一般达不到】

我们需要多少台机子来支持kafka完成这个业务?

1Gbps的带宽,每秒处理1Gb数据,假设每天kafka服务器是装在专属的机器上。假设kafka用到70%带宽[这个是个经验值],也就是超过70%的带宽就会有丢包的问题。一台kafka是使用大约700Mb的带宽。同时这个700Mb是一个峰值。为了应对突发峰值,需要额外预留2/3的资源,即单台服务器使用带宽700Mb/3 约等于 240Mbps。

那1小时 处理1TB所需的服务器数量。

1TB * 8 /3600/3600 = 2336Mb / 240 = 10台 假如消息需要额外复制2份,那么总服务器台数需要*3 也就是30台

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值