全部产品

其它问题

更新时间:2019-08-14 17:01:56

Topic 的存储有哪些类型?

目前,专业版的消息队列 Kafka 实例支持两种 Topic 存储引擎,云存储和 Local 存储。更多信息请参见 Topic 存储最佳实践

是否支持延迟消息?

目前,原生 Kafka 不支持延迟消息。但是基于 Kafka 可以比较容易实现延迟消息,只要消费一条消息,等待一定时间后,再投递这条消息即可。

此外,阿里云的消息队列 MQ 原生支持延迟消息。


为什么各分区(Partition)消费时间相差较大,且某些分区消费时间滞后明显,还会突然出现时间乱序的情况?

目前,在消息队列 Kafka 控制台的 Consumer Group 页签,通过单击查看消息堆积(具体操作请参见查看消费状态)看到的最近消费时间是指本分区中最近消费的消息的存储时间,而不是该消息的消费时间。

如果控制台上显示的某分区的最近消费时间与其他分区相比较早,可能是因为该分区总是先收到来自 Producer 的消息。

同一个 Consumer Group 的所有消费端实例,会按分区均匀分配。如果用户的消费端个数 N 可以整除 24(默认分区个数),那么分区对消费端的分配就是均匀的。在此条件下,消费的消息是否均匀,取决于客户的 Producer 在发送消息时,发送消息对各个分区是否均匀。

如果消费端个数 N 不能整除 24(默认分区个数),那么有的消费端处理的分区个数会比其他消费端大 1。假设有 5 个消费端和 24 个分区,那么会有 4 个消费端每个消费 5 个分区,而余下的 1 个消费端只消费 4 个分区。消费的速度主要取决于消费端(用户的客户端)的处理性能。如果处理性能完全一样,在此条件下分配到的分区个数多 1 的消费端,消费可能会稍慢。


为什么需要升级 Kafka 实例集群来支持监控告警功能?

在控制台上可以查看和设置监控告警功能,但是在 2018 年 11 月以前部署的 Kafka 集群不支持上报监控告警数据,因此需要升级旧版本的 Kafka 实例集群,让它可以上报监控告警数据。

若您要升级您的 Kafka 实例集群,请参见升级实例服务器版本


升级 Broker 可能产生哪些影响?

升级 Broker 包含以下影响:

  • 升级过程中,会逐个重启 Kafka 集群中所有的 Broker。在重启 Broker 的过程中服务不会中断,但是从每个 Broker 重启完成之后的 5 分钟内消费的分区消息可能会发生乱序(设置为顺序消息的,则不会乱序,而是短暂的不可用)。

  • 重启过程中已有的客户端连接可能会中断。需要您的客户端有自动重连功能,服务端的其他 Broker 会自动接替服务。

  • 此外,升级和重启 Broker 期间,各个分区处理的消息量也会出现一定的不均衡,需要您评估一下升级变更对您业务可能产生的影响。

升级所有 Broker 大概需要 5 分钟 ~ 15 分钟。如果有多个实例,可以考虑先升级测试集群,验证通过后再升级生产集群。


消费端挂载的 NFS 云盘是否会影响消费端处理速度?

如果客户端的存储影响消费速度,说明存储是在处理消息的主线程里同步操作的,这会阻塞拉取和处理消息。建议考虑把处理消息和存储处理结果用独立的且不同的线程,拉取消息只管消费,把消息转给缓存处理后就继续消费消息,这样可以保证消费较快。

需要注意,NFS 有两方面影响性能:

  • NFS 本身速度就不太理想。

  • NFS 是网络共享存储,虽然有多机器共享访问的能力优势,但是多台机器和进程访问是争抢的,效率会降低。这解释了为什么消费者个数多了,性能反而下降。这一方面,可以考虑采用云盘,给每台消费端处理机挂载自己的云盘,独立存储,这样增加消费端不会因为争抢 NFS 而降低性能。

挂载云盘的存储是各自独立的。如果您需要把最终的处理结果集中到同一个 NFS 上保存,仍然可以通过一个异步的工具或者线程,把云盘上的结果再转发到 NFS 上,而不要让同步存储 NFS 阻塞消息处理。

总之,对于资源访问造成的处理低效,总是可以用异步处理的方式解决。


为什么 Topic 有分区时间显示 1970 或 Consumer Group 有分区显示 1970?

  • 如果没有发送过消息到某 Topic 分区,那么对应 Topic 分区的最近更新时间就是显示为 1970

  • 如果 Consumer Group 没有消费过某 Topic 分区的消息,那么 Consumer Group 对应的 Topic 分区的最近消费时间就是显示为 1970


报警项状态显示“数据不足”怎么办?

现象:

在 Kafka 控制台,进入监控报警页面,然后在报警项情况列,单击目标报警项数:x 个报警项情况提示框的状态列显示数据不足

原因:

这是由于您虽然配置了报警规则,但还未将 Kafka 实例升级到支持报警数据上报的版本。

解决方案:

将 Kafka 实例升级到 2018 年 10 月版本。


如何监控开源 Kafka?

更多信息,请参见以下链接内容: