-
Notifications
You must be signed in to change notification settings - Fork 337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
<<微信开源PhxQueue:高可用、高可靠、高性能的分布式队列>>的几个问题 #3
Comments
刚想问差不多的问题!期待官方解答 |
@nereuschen @chaozh 你好,我来解答一下哈
表格里所对比的,确实是Kafka的同步刷盘和异步刷盘,区别在于有没有 另外,文中关于 Kafka 的测试,都是同步复制,并没有测试异步复制。
所以文中所有关于 Kafka 的测试,都有如下配置:
这也是 Kafka 文档里推荐的配置,详见
Kafka 在这种配置下,3节点部署,若2个节点不可用,整体就不可用了。
以下是 Kafka 文档中
这里需要明确“返回ack”的时机。
也就是说,ISR中3个节点都返回ack后,才能向producer返回ack。所以写入速度取决于最慢节点。 |
理解了 |
5.基准测试中使用的哪种语言的kafka client?如果是使用的java client,那么默认的linger.ms=0,意味着消息是实时发送的,batch不起作用,可以尝试把linger.ms调大到100、200,看看异步/同步刷盘的QPS的变化? 6.同步刷盘、不开启batch这个才是实际业务场景经常用到的,所以我比较关注在同步刷盘不开启batch时,kafka和PhxQueue在压测时瓶颈在什么地方? |
是用 java client,用的是 org.apache.kafka.tools.ProducerPerformance,底层是 KafkaProducer。
我们认为实际在线业务较难在 Producer 端做 batch,但是在存储层这个黑盒内做 batch 是比较合适的,不仅聚合效果好,而且业务无感知,对性能提升很大。 文中已有 PhxQueue 和 Kafka 在关闭 Producer 端 batch 后的测试结果,就是上面做第一点答复时贴的表格。 关于压测瓶颈:PhxQueue 瓶颈在 cpu,大概在70%+;Kafka 因为同步刷盘写放大的原因,瓶颈在硬盘写带宽。 |
感谢! |
关于这篇文章,我有几个疑问:
1.测试结果表格里面的kafka同步刷盘和异步刷盘,我认为不准确,会误导用户,因为同步刷盘意味着log.flush.interval.messages=1.而我的理解是文中想表达的是kafka消息同步复制和消息异步复制,即acks=-1和acks=1。因为producer的send()已经是异步发送消息了。
2.关于一些配置数据,我想了解一下
(1)开启 Producer Batch,batch.size设置的多大?
(2)使用的是哪个版本的kafka? 0.11.0?
(3)基准测试中修改了哪些kafka的server默认配置参数?
3.ISR VS Paxos ,采用ISR而不采用Paxos,kafka当初设计时考虑到,如果采用Paxos,集群中如果容忍2个节点不可用,需要部署5个节点,而ISR只用部署3个节点
文章说同步延时取决于最慢的节点,这个我的理解是kafka从0.8.2版本引入min.insync.replicas,主要是平衡可靠性和吞吐量,根据文中的设置参数min.insync.replicas=2,意味着3个节点中只要有2个消息复制成功,就返回ack,而不是取决于最慢的节点
4.感觉这篇文章不是一个人写的,因为有些概念不一致,尤其是kafka的一些新特性是在不同版本中才具备的,文中出现不一致的情况,比如我提到的第三个问题
The text was updated successfully, but these errors were encountered: