加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

两张图读懂kafka应用

发布时间:2019-07-17 03:45:26 所属栏目:建站 来源:快乐生活你我
导读:Kafka 中的术语 broker:中间的kafka cluster,存储动静,是由多个server构成的集群。 topic:kafka给动静提供的分类方法。broker用来存储差异topic的动静数据。 producer:往broker中某个topic内里出产数据。 consumer:从broker中某个topic获取数据。 Ka

kafka回收pull,并回收可设置化参数担保当存在数据而且数据量到达必然量的时辰,consumer端才举办pull操纵,不然一向处于block状态。kakfa回收整数值consumer position来记录单个分区的斲丧状态,而且单个分区单个动静只能被consumer group内的一个consumer斲丧,维护简朴开销小。斲丧完成,broker收到确认,position指向下次斲丧的offset。因为动静不会删除,在完成斲丧,position更新之后,consumer依然可以重置offset从头斲丧汗青动静。

动静发送语义

producer视角

动静最多发送一次:producer异步发送动静,可能同步动员静但重试次数为0。

动静至少发送一次:producer同步发送动静,失败、超时城市重试。

动静发且仅发一次:后续版本支持。

consumer视角

动静最多斲丧一次:consumer先读打动静,再确认position,最后处理赏罚动静。

动静至少斲丧一次:consumer先读打动静,再处理赏罚动静,最后确认position。

动静斲丧且仅斲丧一次。

留意:

假如动静处理赏罚后的输出端(如db)能担保动静更新幂等性,则多次斲丧也能担保exactly once语义。

假如输出端能支持两阶段提交协议,则能担保确认position和处理赏罚输出动静同时乐成可能同时失败。

在动静处理赏罚的输出端存储更新后的position,担保了确认position和处理赏罚输出动静的原子性(简朴、通用)。

可用性

在kafka中,正常环境下全部node处于同步中状态,当某个node处于非同步中状态,也就意味着整个体系出题目,必要做容错处理赏罚。

同步中代表了:

该node与zookeeper能连通。

该node假如是follower,那么consumer position与leader不能差距太大(差额可设置)。

某个分区内同步中的node构成一个荟萃,即该分区的ISR。

kafka通过两个本领容错:

数据备份:以partition为单元备份,副本数可配置。当副本数为N时,代表1个leader,N-1个followers,followers可以视为leader的consumer,拉取leader的动静,append到本身的体系中

failover:

1. 当leader处于非同步中时,体系从followers中推举新leader

2. 当某个follower状态变为非同步中时,leader会将此follower剔除ISR,当此follower规复并完成数据同步之后再次进入 ISR。

其它,kafka有个保障:当producer出产动静时,只有当动静被全部ISR确认时,才暗示该动静提交乐成。只有提交乐成的动静,才气被consumer斲丧。

因此,当有N个副本时,N个副本都在ISR中,N-1个副本都呈现非常时,体系依然能提供处事。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读