Kinesis 消费者均衡

主要观点:Knock 提供简单 API 助开发者引入通知,曾有 Kinesis 消费者“热点”问题,通过添加哈希环实现消费者均匀分布,提升平台性能和弹性,减少 CPU 利用率,改善部署特性和可靠性。
关键信息

  • Knock 依靠 AWS Kinesis 处理高吞吐量队列,如 API 和工作流日志。
  • 部署新发布时易出现消费者分布不均导致 CPU 负载不平衡。
  • 哈希环利用一致哈希将消费者/分片组合分配到同一 pod,确保每个分片消费者仅启动一次。
  • 实现哈希环的代码示例及相关细节,如计算哈希值、获取 pod 列表等。
  • 实施哈希环后,消费者分布更平衡,CPU 利用率减半,部署更稳定。
    重要细节
  • Kinesis 流被分成多个“分片”,可随读写流量增长水平扩展。
  • 每个 pod 为每个 Kinesis 分片启动一个消费者,通过租赁机制确保每个分片仅被一个消费者消费。
  • 哈希环通过将消费者名称和分片 ID 哈希到固定范围整数,匹配到相应 pod 来实现均匀分配。
  • 可考虑为每个消费者-分片分配至少两个 pod 作为备份,以提高冗余性。
  • 新系统中消费者故障时由运行该消费者的 pod 自行处理恢复处理,OTP 监督树和 Kubernetes 监控提供可靠性保障。
阅读 9
0 条评论