更新时间:2023-08-28 GMT+08:00

客户端使用建议

Consumer使用建议

  • Consumer的owner线程需确保不会异常退出,避免客户端无法发起消费请求,阻塞消费。
  • 确保处理完消息后再做消息commit,避免业务消息处理失败,无法重新拉取处理失败的消息。
  • Consumer不能频繁加入和退出group,频繁加入和退出,会导致Consumer频繁做rebalance,阻塞消费。
  • Consumer数量不能超过Topic分区数,否则会有Consumer拉取不到消息。
  • Consumer需周期poll,维持和server的心跳,避免心跳超时,导致Consumer频繁加入和退出,阻塞消费。
  • Consumer拉取的消息本地缓存应有大小限制,避免OOM(Out of Memory)。
  • Consumer session的超时时间设置为30秒,session.timeout.ms=30000,避免时间过短导致Consumer频繁超时做rebalance,阻塞消费。
  • ROMA Connect不能保证消费重复的消息,业务侧需保证消息处理的幂等性。
  • 消费线程退出要调用Consumer的close方法,避免同一个组的其他消费者阻塞sesstion.timeout.ms的时间。

Producer使用建议

  • 同步复制客户端需要配合使用:acks=-1
  • 配置发送失败重试:retries=3
  • 发送优化:linger.ms=0
  • 生产端的JVM内存要足够,避免内存不足导致发送阻塞

Topic使用建议

  • 配置要求:推荐3副本。
  • 单Topic最大分区数建议为20。
  • Topic副本数为3(当前版本限制,不可调整)。

其他建议

  • 连接数限制:3000
  • 消息大小:不能超过10MB
  • 使用SASL_SSL协议访问ROMA Connect:确保DNS具有反向解析能力,或者在hosts文件配置ROMA Connect所有节点ip和主机名映射,避免Kafka client做反向解析,阻塞连接建立。
  • 磁盘容量申请超过业务量 * 副本数的2倍,即保留磁盘空闲50%左右。
  • 业务进程JVM内存使用确保无频繁FGC,否则会阻塞消息的生产和消费。
  • 建议在Kafka客户端侧配置日志转储,否则容易引起磁盘被日志打满的情况。
  • 一个消费组下的消费者在连接同一个MQS时,最多允许该消费组下的500个消费者进行连接,超过数量的消费者将连接失败。如果一个消费组下有超过500个消费者,且需要连接同一个MQS,需要把消费者拆分到多个消费组下。
  • 若ROMA Connect实例的消息集成在开启SASL_SSL的同时,也开启了VPC内网明文访问,则VPC内无法使用SASL方式连接消息集成的Topic。
  • 使用SASL方式连接消息集成的Topic时,建议在客户端所在主机的“/etc/hosts”文件中配置host和IP的映射关系,否则会引入时延。

    其中,IP地址必须为消息集成的连接地址,host为每个实例主机的名称,可以自定义,但不能重复。例如:

    10.10.10.11 host01

    10.10.10.12 host02

    10.10.10.13 host03