分布式消息系统之Kafka
随着疫情在中国顺利控制,各公司逐渐开始招聘,而且跳跃的好时机,除了金,银和银,是金,九和银十。准备看到机会的朋友可以抓住这个机会,准备简历,审查项目经验,并为每个知识点弥补深度。我们希望为您添加的知识点是分布式消息系统Kafka。
在互联网的大规模数据的要求下,高并发性,高可用性和低延迟,必须使用消息系统来转发数据和系统之间的解耦。要学习Kafka,让我们来看看Kafka的典型用法场景。 。
场景1的消息系统是关于解耦的生产者应用程序和消费者应用程序,生产者的消息通过Kafka发送,以及消费者订阅了Kafka消息。
场景2的日志集合意味着通过Kafka收集各种服务的日志,然后将它们打开到统一接口服务中的每个消费者。
方案中的用户活动跟踪3表示通过Kafka录制Web用户或应用程序用户的活动,消费者订阅数据进行实时分析。
场景4的操作指示符是通过KAFKA记录操作指示符和监视数据,并且消费者订阅这些数据以提醒。
场景5流处理,即连接SparkStreaming和Storm实时处理数据。
然后我们继续介绍Kafka的基本名词概念。在Kafka,有五个基本概念:经纪人,主题,分区,细分,生产者和消费者。所谓的代理是Kafka节点,服务器实例,存储消息队列数据;所谓的主题是一条消息,例如,在购买产品之后,将推动成功购买产品。这是一种信息;所谓的分区是一个分组,并且可以将主题分成多个分区,例如,在购买产品之后,您可以根据用户区域推送消息。北京地区是分区,上海地区是分区;所谓的段被分成多个段,并且存储了消息;所谓的制片人是生产者,负责生产新闻;所谓的消费者是消费者,负责消费新闻。 Kafka工作的过程是生产者发布消息,系统为每种类型的数据创建主题,持续存在并备份代理群集中的特定Kafka消息,以及消费者订阅主题以消耗邮件。
作为开源软件,Kafka最重要的能力是提供API。 Kafka中有四个主要API:生产者API,消费者API,Stream API,Connector API。
通过生产者API,消息制作人可以直接连接到群集中的Kafka服务器,并将流数据发送到一个或多个Kafka主题。
通过消费者API,消息消费者可以直接连接到群集中的Kafka服务器,并在Kafka中使用主题的流消息。
通过Stream API,您可以使用主题顺利使用输入流并产生输出流。在流处理中,还通过KafkastreamS API提供给大数据平台,Cassandra和Spark的数据分析。
通过连接器API,开发人员可以建立并运行可重复使用的生产者和消费者。
作为分布式消息系统,Kafka如何实现分布式? Kafka需要与ZooKeeper一起使用,以便在外部提供分布式消息传递系统功能。我们假设在Kafka集群中存在这样的方案,有一个要处理的大主题。我们首先将此主题放在代理服务器Broker1,Broker2和Broker3上,并在经纪人1/2/3中包含1/2/3的分区。当经纪人开始时,它将首先使用zookeeper注册自己的代理,主题,分区信息和其他元元信息。当消费者启动时,它还将使用Zookeeper节点注册自己的信息并监控生产者的更改。那么节点中分布的数据如何?实际上,每个节点的数据将在整个群集中复制。例如,Broker1中每个分区中的数据将被复制到群集中的Broker2和Broker3。 Broker1用作主节点,以向生产者和消费者提供数据。当Broker1节点挂起时,使用ZooKeeper工具从剩余的Broker2和Broker3从剩余的Broker2和Broker3选择新的主节点,以为外部世界提供服务。因此,Kafka集群中的所有数据都可以在每个代理节点上使用,可始终确保高服务可用性。
最后,让我们来看看Kafka如何保证数据可靠性。
首先,阅读和写作新闻的顺序。如果生产者首先写入消息1然后写入消息2,则消费者核心首先消耗1,然后消耗2。
其次,考虑在将消息写入所有Kafka节点后发送消息。
第三,一旦发送消息,只要kafka节点仍然存在,数据将不会丢失。
第四,消费者只能读取提交的信息。这些机构充分保证了Kafka系统数据的可靠性。
本文从五个方面介绍了Kafka:使用场景,基本概念,重要功能,分散保证和可靠性保证。如果面试官有关Kafka和信息队列的了解,他并不害怕被问到。