作者回复: 277MB,乘以8,大致等于2300+Mb(小b)。带宽资源一般用Mbps而不是MBps衡量
作者回复: 嗯嗯,专栏里面只是给出一个评估的方法。具体还要结合自己的实际情况来调整。通常我们认为SSD的顺序写TPS大约是HDD的4倍。除了纵向扩展使用SSD之外,也可以尝试一下横向扩展,增加更多的broker或HDD分散负载:)
作者回复: Leader副本和Follower副本必然在不同的Broker上,而生产环境一般也不推荐将多台Broker混布到同一台服务器上。当然服务器性能强劲的话也未尝不可:)
作者回复: 嗯嗯,对于producer而言,如果在乎数据持久性,那么应该设置acks=all,这样当出现你说的这个情况时,producer会被显式通知消息发送失败,从而可以重试。
作者回复: 目前社区对Docker方案支持的并不是太好,主要都是一些第三方公司还有Confluent公司在提供解决方案。在Docker上部署我个人觉得没有太大的不同,只是注意带宽资源吧,因为常见的做法都是买一台性能超强的服务器然后在上面启动多个Docker容器,虽然CPU、RAM、磁盘都能承受,但单机还是受限于带宽的。
作者回复: 1024*1024/3600*8
作者回复: 1. 这个700Mb只是经验值罢了。另外预留buffer的意思是即使你最好不要让broker常规占用700Mb的资源。一旦碰到峰值流量,很容易将带宽打满。故做了一些资源预留
2. 285M是大B,即字节啊,乘以8之后就是2336Mb。带宽资源一般用Mbps而非MBps衡量
3. 我没有谈及CPU,是因为通常情况下Kafka不太占用CPU,因此没有这方面的最佳实践出来。但有些情况下Kafka broker是很耗CPU的:1. server和client使用了不同的压缩算法;2. server和client版本不一致造成消息格式转换;3. broker端解压缩校验
其中前两个都能规避,第三个目前无法规避。不过相比带宽资源,CPU通常都不是瓶颈
作者回复: 这里是指单机带宽,机房总带宽不可能这么小的。。。
作者回复: 没有具体的关系。
“一块盘一个partiton比一块盘多个partiton要快么?” 没有实验数据支撑,单纯从分析角度来看我是认同的。当某块磁盘上有太多的分区时引入了很多随机IO拖慢了性能。事实上,阿里的RocketMQ一直宣称当单磁盘超过256分区时Kafka性能不如RocketMQ,原因也在于此。
数据来源:http://jm.taobao.org/2016/04/07/kafka-vs-rocketmq-topic-amout/
作者回复: kafka producer速率可以监控这个JMX指标:
kafka.producer:type=[consumer|producer|connect]-node-metrics,client-id=([-.\w]+),node-id=([0-9]+)
作者回复: RAID-5具体有多少性能损失不好说,但肯定会有的,最好还是以测试结果为准。另外咱们是否可以更多地利用Kafka在软件层面提供的高可靠性来保证数据完整性呢?不用单纯依赖于硬件。
至于评估方法,磁盘要相对复杂一些。毕竟当topic数量很多的时候磁盘不一定都是顺序写。不过你姑且可以做这样的测试:做一个单partition的topic,测试一下该topic对应的TPS,然后用你磁盘的TPS去核算单块磁盘上大概能放多少个partition。
作者回复: 会占带宽的,这也是预留的部分之一,就是给非业务活动留的带宽资源,包括操作系统其他进程消耗的带宽啊。
作者回复: 不一定是带宽这么底层的问题,更像是Storm流处理的不正确导致的。Storm+Kafka要实现端到端的精确一次处理语义可谓是非常的难。事实上, 其他流处理框架也不敢保证百分之百的正确性。
作者回复: 嗯嗯,是的。其实leader也是副本,副本有两类:leader和follower
作者回复: 你的主题test创建出了吗
作者回复: 为follower拉取留一些带宽
作者回复: 是指30台broker的意思:)
作者回复: 是的,有这个可能。现在的分布式集群都倾向于使用普通性能的机器搭建,因此单台单Broker性价比很高的。
当然我也知道很多公司采购了超强的服务器,然后在上面跑多个实例。这么做的原因是因为机器价格其实很便宜,贵的是IDC机架位(至少在北京是这样),因此两个方案都有自己合理的地方吧。