| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> kafka消费者 -> 正文阅读 |
|
[大数据]kafka消费者 |
一、消费方式kafka的消费者采用拉取的方式从队列中获取消息,因为推送的方式消息发送的速率是由消费者端决定的,其很难匹配消费者端的速率。有的消费者端速率很慢不能全部接收到队列中所推送的消息,有的消费者端速率很快则会造成资源的浪费。但是消费者拉取消息的方式也存在缺点,就是需要维护一个长时间的轮询,消费者一消费完消息后便需要不断地询问队列中是否有新的消息,这样对资源也是一种浪费。Kafka中有一种时间的机制,即消费者查询过一次后没有新的消息的话就会间隔一段时间再去询问,这个时间的长度是由时长参数 timeout决定的。(pull 模式不足之处是,如果 kafka 没有数据,消费者可能会陷入循环中, 一直返回空数据。 针对这一点, Kafka 的消费者在消费数据时会传入一个时长参数 timeout,如果当前没有数据可供消费, consumer 会等待一段时间之后再返回,这段时长即为 timeout。) 二、分区分配策略一个Topic有多个partition,一个消费者组有多个消费者,这样就涉及到分区分配,即决定哪个消费者消费哪个partition。kafka有两种分配策略一是 RoundRobin,一是 Range。 RoundRobin:该分配策略就是将一个消费者组里面所有消费者订阅的topic看成一个整体,然后按照不同topic的不同partition按照轮询的方式分配给每个消费者,这样虽然会使每个消费者消费的消息数量基本一致,但是在将所有topic看成一个整体后,有可能会将没有订阅某个topic的消费者消费了该topic某个分区的消息,使用该策略应该是消费者组里面所有的消费者订阅的topic都一样的时候。 Range:该分配策略是按照topic来分的,订阅了同一个Topic的消费者依次去取,这样会造成每个消费者消费消息的数量不一样。kafka默认采用该种方式取队列中的消息。 什么时候会触发该分配策略? 当消费者数量发生变化时,都会触发分配策略重新分配。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/22 2:23:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |