两张图读懂kafka应用
副问题[/!--empirenews.page--]
![]() Kafka 中的术语 broker:中间的kafka cluster,存储动静,是由多个server构成的集群。 topic:kafka给动静提供的分类方法。broker用来存储差异topic的动静数据。 producer:往broker中某个topic内里出产数据。 consumer:从broker中某个topic获取数据。 Kafka 中的术语计划: 1、Broker 中间的kafka cluster,存储动静,是由多个server构成的集群。 ![]() 2、topic与动静 kafka将全部动静组织成多个topic的情势存储,而每个topic又可以拆分成多个partition,每个partition又由一个一个动静构成。每个动静都被标识了一个递增序列号代表其进来的先后次序,并按次序存储在partition中。 ![]() 这样,动静就以一个个id的方法,组织起来。 producer选择一个topic,出产动静,动静会通过度派计策append到某个partition末端。 consumer选择一个topic,通过id指定从哪个位置开始斲丧动静。斲丧完成之后保存id,下次可以从这个位置开始继承斲丧,也可以从其他恣意位置开始斲丧。 上面的id在kafka中称为offset,这种组织和处理赏罚计策提供了如下甜头: 斲丧者可以按照需求,机动指定offset斲丧。 担保了动静稳固性,为并发斲丧提供了线程安详的担保。每个consumer都保存本身的offset,相互之间不滋扰,不存在线程安详题目。 动静会见的并行高效性。每个topic中的动静被组织成多个partition,partition匀称分派到集群server中。出产、斲丧动静的时辰,会被路由到指定partition,镌汰竞争,增进了措施的并行手段。 增进动静体系的可伸缩性。每个topic中保存的动静也许很是复杂,通过partition将动静切分成多个子动静,并通过认真平衡计策将partition分派到差异server。这样当呆板负载满的时辰,通过扩容可以将动静从头匀称分派。 担保动静靠得住性。动静斲丧完成之后不会删除,可以通过重置offset从头斲丧,担保了动静不会丢失。 机动的耐久化计策。可以通过指按时刻段(如最近一天)来生涯动静,节减broker存储空间。 备份高可用性。动静以partition为单元分派到多个server,并以partition为单元举办备份。备份计策为:1个leader和N个followers,leader接管读写哀求,followers被动复制leader。leader和followers会在集群中打散,担保partition高可用。 3、Partitions 每个Topics分别为一个可能多个Partition,而且Partition中的每条动静都被标志了一个sequential id ,也就是offset,而且存储的数据是可设置存储时刻的 ![]() 4、producer producer出产动静必要如下参数: topic:往哪个topic出产动静。 partition:往哪个partition出产动静。 key:按照该key将动静分区到差异partition。 message:动静。 ![]() 5、consumer 传统动静体系有两种模式: 行列 宣布订阅 kafka通过consumer group将两种模式同一处理赏罚:每个consumer将本身标志consumer group名称,之后体系会将consumer group按名称分组,将动静复制并分发给全部分组,每个分组只有一个consumer能斲丧这条动静。如下图: ![]() 于是推理出两个极度环境:
留意: 1、Consumer Groups 提供了topics和partitions的断绝, 如上图Consumer Group A中的consumer-C2挂掉,consumer-C1会吸取P1,P2,即一个consumer Group中有其他consumer挂掉后可以或许从头均衡。如下图: ![]() 2、多consumer并发斲丧动静时,轻易导致动静乱序,通过限定斲丧者为同步,可以担保动静有序,可是这大大低落了措施的并发性。 kafka通过partition的观念,担保了partition内动静有序性,缓解了上面的题目。partition内动静会复制分发给全部分组,每个分组只有一个consumer能斲丧这条动静。这个语义担保了某个分组斲丧某个分区的动静,是同步而非并发的。假如一个topic只有一个partition,那么这个topic并发斲丧有序,不然只是单个partition有序。 一样平常动静体系,consumer存在两种斲丧模子: push:上风在于动静及时性高。劣势在于没有思量consumer斲丧手段和饱和环境,轻易导致producer压垮consumer。 pull:上风在可以节制斲丧速率和斲丧数目,担保consumer不会呈现饱和。劣势在于当没稀有据,会呈现空轮询,耗损cpu。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |