代码之家  ›  专栏  ›  技术社区  ›  wandermonk

卡夫卡经纪人与消费者优化

  •  1
  • wandermonk  · 技术社区  · 7 年前

    我们有2500万条记录是关于卡夫卡的。

    1. 主题是有24个分区和24个使用者。
    2. 复制因子为2。

    目前,在负载测试期间,消耗和处理1百万,平均需要40分钟。但是,我们要在20到30分钟内处理2500万条记录。

    代理配置:

    background.threads = 10
    num.network.threads = 7
    num.io.threads = 8
    Set replica.lag.time.max.ms  = 500
    Set replica.lag.max.messages = 4
    Set log.flush.interval.ms to default value as per logs
    Used G1 collector instead of MarkSweepGC
    Changed Xms to 4G and Xmx to 4G
    

    使用者配置:

    我们使用Java消费者API来消费消息。我们将交换设置为1,并使用200个线程来处理使用者内的数据。在消费者内部,我们接收消息并点击Redis、MaprDB来执行一些业务逻辑。逻辑完成后,我们将使用Kafka Commit Sync提交消息。

    每个消费者都使用-xms4g和-xmx4g运行。为了提高读取吞吐量,我们还需要考虑哪些方面?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Pixou    7 年前

    我不会为你的问题提供一个确切的答案,但更多的是一个路线图和方法上的帮助。

    你首先要知道什么是你的瓶颈。

    可能是:

    • 卡夫卡集群本身:消息很长时间都要从集群中拉出。为了测试这一点,您应该使用一个简单的使用者(例如Kafka CLI提供的使用者)进行检查,该使用者直接在有代理(或关闭)的机器上运行,以避免网络延迟。有多快?

    • 经纪人和消费者之间的网络

    • 消费者:它做什么?可能处理时间真的很长。然后优化应该在那里运行。您能否监控您的客户所需的资源(CPU、RAM)?也许您可以做一个好的测试,就是创建一个测试使用者,在其中您在内存中加载10k条消息,然后执行业务逻辑并计时。持续多久?这将告诉你你的消费者的最大吞吐量,而不管卡夫卡的速度。

    推荐文章