线程阻止Akka-streams-kafka中的Kafka协调员

时间:2017-10-12 19:15:05

标签: multithreading scala apache-kafka akka akka-stream

我使用VisualVM来分析使用akka-streams-kafka的应用程序。

它显示了很多阻塞线程的Kafka协调器 It shows a lot of Kafka coordinator blocking threads

这些协调员是谁?

我也有三个Kafka消费者也在阻止线程 I also have three Kafka consumers that are also blocking threads

我是否需要为它们创建单独的执行上下文?

1 个答案:

答案 0 :(得分:0)

来自Java Kafka客户端API

  
      
  1. 每个线程一个消费者一个简单的选择是为每个线程提供自己的消费者实例。以下是此方法的优缺点:   PRO:这是最容易实现的PRO:它通常是最快的,因为没有   需要跨线程协调PRO:它进行有序处理   在每个分区的基础上很容易实现(每个线程只是   按照收到消息的顺序处理消息)。 CON:更多消费者   意味着与群集的TCP连接更多(每个线程一个)。一般来说   Kafka非常有效地处理连接,所以这通常是一个   成本很低。 CON:多个消费者意味着发送更多请求   服务器和稍微少一点的数据批处理可能会导致一些   I / O吞吐量下降。 CON:所有线程的总线程数   进程将受到分区总数的限制。
  2.