不过
对于开发人员来说,仍然需要处理其他类型的错误,包括:
• 不可重试的 broker 错误,例如消息大小错误、认证错误等 3
. 在消息发送之前发生的错误,例如序列化错误:
• 在生产者达到重试次数上限时或者在消息占用的内存达到上限时发生的错误。
消费者在自动提交偏移量之前停止处理消息--无法控制重复处理消息。
如果把消息交给另外一个后台线程,自动提交可能会在消息没处理完毕就提交偏移量
往群组里增加消费者是横向伸缩消费能力的主要方式。consumer经常做一些高延迟的操作,比如写入数据库或进行耗时计算。这种情况下可以增加consumer的数量。
可以为topic创建大量的partition,负载增大时就可以增加更多consumer. consumer的数量<=partition的数量。否则将造成consumer闲置。
横向伸缩kafka消费者和群组不会影响性能。
当一个消费者被关闭或崩溃,它就离开而被群组中的其他consumer替代继续消费。
管理员添加了新的分区,会发生分区重分配。
分区的所有权从一个消费者转移到另一个消费者,这就是再均衡,再均衡提供了高可用和伸缩性。再均衡期间,消费者无法读取消息,造成真个群组小段时间不可用。
为了能让分区分布到所有broker上,主题分区个数必须大于broker的个数。