消息队列之Kafka 集群部署 (二)

Kafka集群部署

1.1 集群规划

为了提高性能,推荐采用专用的服务器来部署kafka集群,尽量与hadoop集群分开,因为kafka依赖磁盘读写和大的页面缓存,如果和hadoop共享节点的话会影响其使用页面缓存的性能。
Kafka集群的大小需要根据硬件的配置、生产者消费者的并发数量、数据的副本个数、数据的保存时长综合确定。
磁盘的吞吐量尤为重要,因为通常kafka的瓶颈就在磁盘上。
Kafka依赖于zookeeper,建议采用专用服务器来部署zookeeper集群,zookeeper集群的节点采用偶数个,一般建议用3、5、7个。注意zookeeper集群越大其读写性能越慢,因为zookeeper需要在节点之间同步数据。一个3节点的zookeeper集群允许一个节点失败,一个5节点集群允许2个几点失败。

1.2 集群大小

有很多因素决定着kafka集群需要具备存储能力的大小,最准确的衡量办法就是模拟负载来测算一下,Kafka本身也提供了负载测试的工具。
如果不想通过模拟实验来评估集群大小,最好的办法就是根据硬盘的空间需求来推算。下面我就根据网络和磁盘吞吐量需求来做一下估算。
我们做如下假设:

  • W:每秒写多少MB
  • R :副本数
  • C :Consumer的数量

一般的来说,kafka集群瓶颈在于网络和磁盘吞吐量,所以我们先评估一下集群的网络和磁盘需求。
对于每条消息,每个副本都要写一遍,所以整体写的速度是W*R。读数据的部分主要是集群内部各个副本从leader同步消息读和集群外部的consumer读,所以集群内部读的速率是(R-1)W,同时,外部consumer读的速度是CW,因此:

  • Write:W*R
  • Read:(R-1)W+CW

需要注意的是,我们可以在读的时候缓存部分数据来减少IO操作,如果一个集群有M MB内存,写的速度是W MB/sec,则允许M/(W*R) 秒的写可以被缓存。如果集群有32GB内存,写的速度是50MB/s的话,则可以至少缓存10分钟的数据。

1.3 Kafka性能测试

Performance testing

1.4 Kafka在zookeeper中的数据结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值