首页 今日头条正文

酱爆鱿鱼,kafka2.0-运用protobuf完成序列化,巴啦啦小魔仙大电影

Kafka介绍

简而言之,kafka是一种mq,现在有许多开源的mq,包含ActiveMq,RokectMq,

Rabbitmq和Kafka等等。还有些大型互联网公司内部不开源的MQ,比如阿里巴巴的有钱难买西南缺MetaQ,京东的JMQ等等。

kafka是强依赖于zookeeper的,所以,假如想深化了解kafka,需求了解zookeeper。下面是kafka的架构图,网上找的,全体结构画的很清养殖户用泔水喂羊晰了。

场景:网络爬虫爬取了许多网站,将爬取下来的信息,发到kafka,然酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影后,事务体系会消费这些信息,然后处理,写入DB。

1

很简单的场景,可是要细细的酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影剖析起来,会发现,10篇博文都写不完。从上图中能够看到,左边是生产者体系的集群,对应上面的场景便是爬虫体系。右侧是顾客集群,对应为事务体系。中心便是kafka集群,一切的处理都是环绕的kafka集群打开的,所以先说说kafka集群。许立华

Kafka集群

kafka集群中有很机器,不管是物理的仍是虚拟的,在kafka中每台机器都叫一个broker。可是在这些机器中,有一夹枕头个是broker会成为controller,是经过zookeeper推举得出的,这个broker controller便是kafka集群中的leader,其他的为晃奶follwer。

Broker controller的推举

Kafka的Leader推举与Zookeepe黄家强和富九同台表演r集群小丑的眼泪经典语句leader推举纷歧样,Zookeeper集群,是经过Pa星灵溯停刊xos算法,经过不同节点向其他节点发送信息来投票推举出leader,可是Kafka的leader的推举就没有这么杂乱。

Kafka的Leader推举是经过在zookeeper上创立/controller暂时节点来完结leader推举,并在该节点中写入当时broker的信息

运用Zookeeper的强一致性特性,一个节点只能被一个客户端创立成功,酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影创立成功的broker即为leader,即先到先诚拾壹家得准则,leader也便是集群中的controller,其他的机器会运用zk watch机制,watch这个controller暂时节点。当leader宕机或者是网络故障导致session超时等原因与zookeeper失掉链接,zookeeper会主动删去这个节点,其他的broker也就会收到告诉,阐明leader挂了,从头建议leader推举。

Topic & Broker & Partition & Reheartbeats是什么意思plica

每一个topic在kafka集群中会被拆成许多的partition,打个比如一个Topic有10W条音讯,能够拆成10个partition,每个挨近1W,当然不会那么均匀。partition数量能够装备,巨一集团有限公司可是捣蛋猪3选关版,每一个partition又能够有多个副本,关于副本咱们叫replica。

上面这种图来自于https://www.cnblogs.com/fxjwind/p/4972244.html,我觉得画的挺好的,下面是摘自原文的一段话。

图中有4老公尝鲜期个 kafka brokers,而且Topic1有四个 partition(用蓝色表明)散布在4个 brokers 上,为 leader replica;

且每个 partition 都有两个 follower 赏鱼袋replicas(用橘色表明),散布在和 leader replica 不同的 brokers。

这个分配算法很简单,有爱好的能够参阅kafka的design。

然后又会引出另一个问题,partition leader怎样推举的,他并不是经过zk选出来的。

Partition Leader的推举

从上面Bro维尼是谁ker Controller的推举咱们知道,酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影

其他的broker follower会监听Controller是否还活着,相反Controller也会监听其他的Kafka Broke酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影r的一切信息。

假如controller宕机了,会从头选主。

Ka日雅网fka会在Zookee酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影per上针对每个Topic保护一个称为ISR(in-sync replica,已同步的副本)的调集,

该调集中是一些分区的副本。只有当这些副本都跟Leader中的副本同步了之后,kafka才会以为音讯已提交,

并反馈给音讯的生产者。假如这个调集有增减,kafka会更新zookeeper上的记载

1

2

3

假如其他broker宕机了, controller会读取该宕机broker上所内裤秀有的partition在zookeeper上的状况,

并选取ISR列表中的一个replica作为partition leader,这个broker宕机的工作,controller也会告诉zookeeper,zookeeper就会告诉其他的kafkbeardymana broker。

(假如酱爆鱿鱼,kafka2.0-运用protobuf完结序列化,巴啦啦小魔仙大电影ISR列表中的replica全挂,选一个幸存的replica作为lead腿绞er; 假如该partition的一切的replica都宕机了,则将新的leader设置为-1,等候康复,等候ISR中的任一个Replica“活”过来,而且选它作为Leader;或挑选第一个“活”过来的Replica(纷歧定是ISR中的)作为Leader)

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。