第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于kafka的處理請求(2)

標簽:
Java

    broker处理获取请求的方式跟处理生产请求的方式很相似。客户端发送请求向broker请求主题分区具有特定偏移量的消息。客户端还可以指定broker最多可以从一个分区中返回多少数据------这个限制十分重要:因为客服端需要为broker返回的数据分配足够内存。如果没有这个限制,broker返回的大量数据有可能耗尽客户端的内存。

        请求需要先达到指定的分区首领上,然后客户端通过查询元数据俩确保请求的路由是正确的,首领在收到请求时,它会检查请求是否有效------比如,指定的偏移量不存在,那么broker将返回一个错误。

        如果请求的偏移量存在,broker将按照客户端指定的数量上限分区里读取消息,再把消息返回客户端,kafka使用零复制技术向客户端发送消息------也就是说kafka直接把消息从文件(或者说Linux文件系统缓存)里发送到网络通道,而不需要经过任何中间缓冲区。

        客户端除了可以设置broker返回数据的上限,也可以设置下限。例如:将下限设置为10kb,这样就好像告诉broker:“等数据有了10kb在把数据发送给我”,在主题消息流量不是很大的情况下,可以减少CPU和网络的开销。

    https://img1.sycdn.imooc.com//5bf3fee20001d18b10510490.jpg 

        当然也不可能让客户端一直等broker积累数据,在等待了一段时间之后,就可以把可用的数据拿回处理。所以客户端可以定义一个超时时间,告诉broker:“如果你无法在X ms内累积满足需要的数据量,那就把当前的数据返回给我”。

 

        有意思的是,并不是所有保存在分区首领上的数据都可以被客户端读取。大部分客户端只能读取已经被写入所有同步副本的消息(跟随者副本也不行,尽管他们也是消费者---不然复制功能会无法工作)。分区首领知道每个消息会被复制到哪个副本上在消息还没有被写入所有同步副本之前,是不会发送给消费者------尝试获取这些消息的请求会得到null而不是错误

因为还没有足够多副本复制的消息会被认为“不安全”的------如果首领发生崩溃,另一个副本成为新的首领,那么这个消息就会丢失,消费者读取这些信息,就有可能破会一致性

 

 上一篇地址:http://idcbgp.cn/article/259760

 

 


點擊查看更多內容
1人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消