成本

选择机械硬盘划算,kafka大量使用磁盘不假,但它使用的方式多是顺序读写操作
一定程度规避了机械硬盘的最大劣势,即随机读写操作慢。

  • 追求性价比的公司可以不搭建RAID,使用普通磁盘组成存储空间即可
  • 使用机械磁盘完全可以胜任kafka线上环境

    磁盘容量

    假设公司业务每天需要向
    kafka发送:1亿条消息
    每条消息保存:2份以防止丢失
    默认保存周期为:2周

计算过程:

  1. 每条1亿条1kb大小的消息,保存2份切保存2周时间,
  2. 那么总空间大小为 1亿 1KB 2 / 1000 / 1000 = 200GB
  3. 除了消息外,还会存在其他类型的数据,比如索引数据,预留10%的磁盘,因此总存储量为220GB
  4. 保留2周为 200GB * 14 = 3TB
  5. kafka支持数据压缩,假设压缩比为0.75 则需存储的空间为 0.75 * 3 = 2.25 TB

考虑因素:

  1. 新增消息数
  2. 消息留存时间
  3. 平均消息大小
  4. 被分数
  5. 是否启用压缩

    条件

  • 带宽:1Gbps,即每秒处理1Gb的数据
    • 通常情况下假设kafka会用到70%的带宽资源,因为总要为其他应用或进程保留一些资源,这还只是最理想情况
    • 实际上可能还需要额外预留2/3的资源,即单台服务使用带宽700Mb/3 = 240Mbps
    • 一台机子240Mbps,计算1H处理1TB需要多少台服务器,每秒需要处理2336Mb数据,除以240,约等于10台服务器,如果消息需要做复制。则总服务器乘以3,即30台