kafka2.0-运用protobuf完成序列化
作者头像
  • shubohui
  • 2019-10-17 07:52:25 7

Kafka简介

Kafka是一种消息队列系统,目前有许多开源的消息队列解决方案,例如ActiveMQ、RocketMQ、RabbitMQ等。此外,一些大型互联网公司也有自己的私有消息队列,如阿里巴巴的MetaQ和京东的JMQ。

Kafka依赖于Zookeeper,因此要想深入了解Kafka,需要熟悉Zookeeper的相关知识。以下是Kafka的架构示意图,有助于更好地理解其工作原理。 架构图

场景描述

假设网络爬虫系统抓取了大量的网页数据,并将这些数据发送到Kafka,随后业务系统会从Kafka中获取这些数据进行处理,并最终存储到数据库中。尽管这是一个简单的流程,但其中涉及的技术细节却非常丰富。

Kafka集群

Kafka集群由多台服务器组成,无论是物理服务器还是虚拟机,在Kafka中每台服务器被称为一个Broker。在这其中,有一台Broker会被选举为Controller,这是通过Zookeeper完成的。这台Broker被称为Leader,其余的则为Follower。

Broker Controller选举

Kafka的Leader选举过程相对简单,通过在Zookeeper上创建一个临时节点来实现。只有第一个成功创建该节点的Broker会被选为Leader,其他Broker会监听这个节点的状态变化,以便及时响应Leader的变化。

Topic、Broker、Partition与Replica

在Kafka集群中,每个Topic会被拆分成多个Partition,以实现负载均衡和高可用性。每个Partition可以有多个副本,这些副本被称为Replica。这些设计旨在提高系统的可靠性和性能。

分区领导者的选举

分区的Leader选举并非通过Zookeeper完成,而是由Controller负责。当Controller检测到某个Broker宕机时,会从ISR(In-Sync Replicas,已同步的副本)列表中选出一个新的Leader。ISR列表包含了所有与Leader同步的Replica,只有当所有这些Replica都同步了,Kafka才会认为消息已经提交,并通知消费者。

ISR列表的管理

ISR列表动态地反映当前同步状态良好的Replica。如果某个Replica宕机,Controller会根据ISR列表选择一个新的Leader。如果ISR列表为空,Kafka会选择第一个恢复的Replica作为新的Leader。

以上内容概述了Kafka的核心概念及其工作原理,希望对你有所帮助。

    本文来源:图灵汇
责任编辑: : shubohui
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
序列化protobuf运用完成kafka2.0
    下一篇