《Kafka》2-Kafka集群方案

Kafka一般都是集群使用,那么在搭建集群的时候,需要选择什么样的服务器部署kafka,需要部署多少台Kafka机器,需要多大磁盘空间呢。其实都是有迹可循的

操作系统

现在服务器一般有三种操作系统可以选,linux/windows/macos。对于Kafaka而言,Linux是最合适的操作系统。主要有以下三个优点。

  1. i/o模型较优。
  2. 外部设备读取速度较快
  3. 社区支持良好

在redis章节我们就比较过各种I/O模型的概念。有5中,同步阻塞IO/同步非阻塞IO/多路复用IO/信号驱动IO/异步IO。这几种IO在性能上是按照从前往后越来越好。linux提供了多路复用IO模型,window提供了异步IO模型。但是java的epoll处理模型中的Selector在linux上适配比windows上的selector好。

在操作系统上比较有名的“零copy”技术,linux很早就实现了这种功能,“0 copy”技术就是直接把用户线程的数据直接copy传输到内存中,不需要经过内核线程。windows在java8之后才支持。

社区支持度上,Kafka没有承诺过要解决windows的bug

为什么没谈到macOS,因为太贵

磁盘

  1. SSD:随机读写快,性能优异,易损,贵
  2. 机械硬盘:顺序读写快,瓷实,便宜,性能比不上SSD

土豪公司SSD,一般公司搞机械。机械硬盘有RAID阵列,提供高可用,但是Kafka在软件层面保证了掉线高可用,不用RAID矩阵

磁盘空间

一般是看设计需求,比如每日产生消息5亿条,每条记录2kb,需要备份2个,存储10天。那么我们就可以计算磁盘的总容量:

5亿*2kb/1024/1024*3份*10天 约等于3TB,这是总记录的磁盘容量。但是我们还有冗余20%的空间给索引等数据,所以需要3.6TB。如果启用数据压缩,可以压缩到75%的大小,即2.7TB

所以比较关注几个变量:

  1. 新增消息数量
  2. 平均消息大小
  3. 备份数量
  4. 留存时间
  5. 索引负载等数据
  6. 是否启用压缩

机器数量

也是根据实际需求,计算机器数量。

例如公司网络带宽1Gbps 。每小时处理1TB的数据,则每秒处理消息大小1TB*1024*1024/60/60=291MB,则需要多少机器:

  1. 一般专线宽带,只能使用70%,即实际能使用贷款为700Mbps。否则可能丢包
  2. 带宽不能全部使用,防止高峰预留不足,导致系统崩溃。所以最多使用1/3 = 233Mbps;
  3. 计算要求每秒291MB,但是宽带只有233Mb,那么机器数量= 291MB*8/233 = 9.9 约等于10。
  4. 如果按照上面的备份要求,则需要备份2个。10*3 = 30台

所以机器数量比较关注实

  1. 时计算要求
  2. 带宽
  3. 备份数量

以上

 

 

 

猜你喜欢

转载自blog.csdn.net/David_lou/article/details/109051098