假设我有50个Kafka Topics,每个有3个分区,总共有150个分区。如果我为这150个分区中的每一个配置了一个KafkaListener/消费者(由于每个分区的容量很大),这意味着我有150个侦听器在运行。据我所知,每个侦听器都有自己的线程。那么这是否意味着在这种情况下会有150个活动线程?这似乎很多。有什么方法可以将其限制为一次最多线程数(比如20个)?
> < li>
如果您想要最大化消耗,是的,您需要在150个< code >分区上有150个< code >消费者线程(每个分区1个消费者线程)。如果您只有20个分区,您可能不想最大化消耗,相反,现在1个用户负责消耗例如150/20=7个< code >分区。这是一种权衡。
您不会希望您的应用程序一次消耗50个< code >主题。这就导致了规模问题。假设现在一个主题需要将其< code >分区的数量从3个增加到6个,您将应用从1个实例横向扩展到2个实例,这意味着从150个< code >消费者增加到300个< code >消费者,并且只有150 (6-3) = 153个活动的< code >消费者,其他的都变成了空闲。
Kafka 总是将单个分区的数据提供给一个使用者线程
为了将线程数限制为150
分区的20
,您可以将并发设置为8
,这应该有效地创建8个单独的消费者实例
这是关于该主题的另一篇堆栈帖子,它更多地解释了在kafka侦听器工厂中设置并发。这也是解释围绕kafka主题的一些概念的另一个不错的来源
容器需要在开始执行进入应用的第一个请求之前完成 Web 应用中的监听器类的实例化。容器必须保持到每一个监听器的引用直到为 Web 应用最后一个请求提供服务。 ServletContext 和 HttpSession 对象的属性改变可能会同时发生。不要求容器同步到属性监听器类产生的通知。维护状态的监听器类负责数据的完整性且应明确处理这种情况。
主要内容:监听器的分类,监听对象创建和销毁的监听器,监听属性变更的监听器,监听 Session 中对象状态改变的监听器,注册监听器监听器 Listener 是一个实现特定接口的 Java 程序,这个程序专门用于监听另一个 Java 对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即自动执行。 监听器的相关概念: 事件:方法调用、属性改变、状态改变等。 事件源:被监听的对象( 例如:request、session、servletContext)。 监听器:用于监听事件源对象
性能测试就是以各种形式分析服务器响应,然后将其呈现给客户端。 当JMeter的采样器组件被执行时,监听器提供JMeter收集的关于那些测试用例的数据的图形表示。它便于用户在某些日志文件中以表格,图形,树或简单文本的形式查看采样器结果。 监听器可以在测试的任何地方进行调整,直接包括在测试计划下。JMeter提供了大约15个监听器,但主要使用的是表,树和图形。 以下是JMeter中所有监听器的列表:
{ "name": "...", "address": "...", "filters": [], "ssl_context": "{...}", "bind_to_port": "...", "use_proxy_proto": "...", "use_original_dst": "...", "per_connection_buffer_lim
Envoy配置顶层包含一个监听器列表。每个单独的监听器配置具有以下格式: v1 API参考 v2 API参考 统计 监听器 每个监听器都有一个以 listener.<address> 为根的统计树。统计如下: 名称 类型 描述 downstream_cx_total Counter 连接总数 downstream_cx_destroy Counter 销毁的连接总数 downstream_cx_a
Envoy配置支持单个进程中的任意数量的监听器。通常我们建议每台机器运行一个Envoy,而不关心监听器数量。这样可以使操作更简单,统计也更简单。目前Envoy只支持监听TCP。 每个监听器都独立配置一定数量的(L3 / L4)网络过滤器。当监听器接收到新连接时,实例化相应过滤器,并开始处理后续事务。通用监听器用于执行不同代理任务(例如,速率限制,TLS客户机认证,HTTP连接管理,MongoDB嗅