北冰洋以北 发表于 2024-8-25 05:37:35

Kafaka根本入门

转载请标明出处:https://blog.csdn.net/donkor_/article/details/140316727


一、参考资料

官网:https://kafka.apache.org/
二、根本熟悉

2.1 消息中间件(消息队列)

消息队列是一种在应用步伐之间传递消息的通信模式。它将消息发送方和消息接收方解耦,使得消息发送方可以异步地向消息队列发送消息,而消息接收方则可以按照本身的节奏从消息队列中接收和处置惩罚消息。
消息队列可以用于办理不同应用步伐之间的异步通信问题,尤其实用于大规模和复杂的分布式系统中。它可以帮助处置惩罚高并发、高可靠性、可扩展性等问题
2.2 常见的消息中间件



[*] RabbitMQ:RabbitMQ 是一个可靠、机动、可扩展的开源消息队列系统,它支持多种消息协议,并提供了丰富的特性,如消息持久化、消息路由、消息确认机制等。它是一个传统的消息代理模型,典型的应用场景包罗任务分发、日记处置惩罚、实时消息推送等。
[*] Apache Kafka:Kafka 是一个高吞吐量、可持久化、分布式的发布订阅消息系统。它设计用于处置惩罚大数据流,具有高可伸缩性和高可靠性,实用于实时数据流处置惩罚、日记收集、事件驱动等场景。Kafka 的一个特点是以分布式日记存储的方式来处置惩罚消息,包管了消息的持久化和高性能。
[*] ActiveMQ:ActiveMQ 是一个基于 Java 的开源消息中间件,它实现了 JMS(Java Message Service)的规范,提供了可靠的消息传递、消息持久化、消息订阅和发布等功能。ActiveMQ 支持多种传输协议,如 TCP、STOMP、AMQP 等,可以与各种编程语言和应用集成。
[*] RocketMQ:RocketMQ 是阿里巴巴开源的分布式消息中间件,它具有高吞吐量、低延迟、高可靠性等特点。RocketMQ 支持分布式摆设,可以或许处置惩罚大规模的消息流量,广泛用于电商、物流、金融等领域的实时消息处置惩罚和数据流转。
[*] NATS:NATS 是一个轻量级的、高性能的开源消息中间件,它主要关注简便、性能和易用性。NATS 提供了基于主题的消息传递模型,支持发布-订阅、哀求-相应等消息模式,实用于微服务架构、大规模摆设和云原生应用。
2.3 消息中间件的通信协议



[*] AMQP(Advanced Message Queuing Protocol):AMQP 是一个开放的、标准化的消息传递协议,支持可靠的、异步的、分布式的消息通信。它定义了一套统一的消息格式和通信模型,使得不同的消息中间件可以进行互操纵。
[*] MQTT(Message Queuing Telemetry Transport):MQTT 是一种轻量级的、基于发布-订阅模型的消息传输协议,主要用于物联网装备之间的实时通信。MQTT 协议特殊得当在网络带宽有限、网络毗连不稳定的环境中使用。
[*] STOMP(Simple Text Oriented Messaging Protocol):STOMP 是一个简朴的文本导向的消息传输协议,它定义了一套根本的命令和消息格式,用于在消息中间件和客户端之间进行通信。
[*] JMS(Java Message Service):JMS 是 Java 平台上定义的一套消息中间件的 API 规范,它为 Java 应用步伐提供了统一的消息模型和接口。JMS 可以使用不同的底层通信协议,如 AMQP、MQTT、STOMP 等。
[*] HTTP/REST:一些消息中间件也支持使用 HTTP 协议进行消息的传输和交互,通过 REST 接口提供消息的发布和订阅功能。这种方式实用于基于 HTTP 的应用和服务之间的消息通信
三、Kafka根本介绍

3.1 概述

Kafka是最初由Linkedin公司开辟,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处置惩罚大量数据以满意各种需求场景:好比基于hadoop的批处置惩罚系统、低延迟的实时系统、storm/Spark流式处置惩罚引擎,web/nginx日记、访问日记,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目
3.2 Kafaka的特性



[*] 高吞吐量:Kafka 的设计目的是高吞吐量的消息传递,可以处置惩罚大规模的数据流。它可以或许快速地将大量的消息写入磁盘,并以每秒百万级的速度进行消息的读取和处置惩罚。
[*] 可靠性:Kafka 在消息传递过程中具有高度的可靠性。它使用多副本机制将消息持久化到磁盘,并可以自动地进行副本的同步和故障恢复。即使出现节点故障,也不会丢失消息。
[*] 可扩展性:Kafka 的分布式架构可以支持大规模的集群摆设,并可以或许自动进行负载平衡和故障转移。通过增长节点和分区数目,可以很容易地扩展 Kafka 的容量和性能。
[*] 机动的数据处置惩罚:Kafka 可以以事件流的方式进行数据传递,使得数据的处置惩罚变得机动且实时。它支持多个消耗者并行地消耗同一条消息流,消耗者可以根据本身的需求选择订阅的数据分区,并进行多次消耗。
[*] 生态系统支持:Kafka 是一个生态系统丰富的消息系统,有大量的开源工具和组件与其集成。比方,可以使用 Apache Spark、Apache Flink 等流处置惩罚引擎与 Kafka 进行集成,实现实时的数据流处置惩罚
3.3 Kafaka的应用场景



[*] 日记收集和数据管道:Kafka 可以作为日记收集的中间件,将多个日记源的数据集中存储和分发。它可以实时地接收大量的日记数据,并将其传递给后续的处置惩罚组件,如实时分析、存储、监控等。
[*] 实时数据流处置惩罚:Kafka 可以作为实时数据流处置惩罚的消息传递层。它接收实时产生的数据,并将其传递给流处置惩罚框架,如Spark Streaming、Flink等,来进行实时的数据转换、计算、分析等。
[*] 事件驱动架构:Kafka 的发布订阅模型和容错性使其成为构建事件驱动架构的抱负选择。多个应用步伐可以将事件发布到 Kafka,其他的应用步伐则可以订阅这些事件并进行相应的处置惩罚。
[*] 流量解耦和削峰填谷:Kafka 可以办理生产者和消耗者之间的流量差别问题。生产者和消耗者之间通过 Kafka 进行解耦,生产者可以以高吞吐量将数据写入 Kafka,而消耗者可以按照本身的处置惩罚能力从 Kafka 中获取数据进行消耗。
[*] 分布式消息系统:Kafka 的分布式架构和高可用性使其成为构建分布式消息系统的良好选择。多个 Kafka 集群可以组成一个分布式的消息系统,实现数据的传输和复制,以支持多数据中央的数据传输和同步
四、消息队列通信的模式

4.1 点对点模式

https://i-blog.csdnimg.cn/direct/245755a5086b4d8cb36b108cd7b772bd.png#pic_center
在点对点模式中,每个消息都有一个确定的发送者和接收者。发送者将消息发送到队列中,而且只有一个接收者可以从队列中获取该消息并进行处置惩罚。消息的发送者和接收者之间是一对一的关系。一旦消息被接收者处置惩罚,它将从队列中移除,不再被其他接收者处置惩罚。
4.2 发布订阅模式

https://i-blog.csdnimg.cn/direct/1fd070d654514e319df7d1098449cbec.png#pic_center
在发布-订阅模式中,消息通过主题(Topic)进行发布和订阅。发布者将消息发布到一个或多个主题,而订阅者可以选择性地订阅一个或多个主题来接收消息。多个订阅者可以同时订阅同一个主题,每个订阅者都将收到发布到该主题的消息。订阅者和发布者之间是一对多的关系。
五、Kafaka根本架构与术语

5.1 根本架构图

https://i-blog.csdnimg.cn/direct/93fea66b1d9b4683a72adfc2f509f0e6.png#pic_center
5.2 常见术语



[*] Broker(代理):Kafka集群中的一个服务器节点,负责处置惩罚消息的存储和传递,每个代理可以管理多个主题和分区。
[*] Topic(主题):消息的逻辑分类,Producers(生产者)发送消息到特定的主题,Consumers(消耗者)订阅特定的主题以接收消息。
[*] Partition(分区):每个主题可以被分为多个分区,每个分区在Kafka集群中是一个独立的存储单元。分区是消息在Kafka中的根本单位,每个分区都有一个唯一的标识符。
[*] Producer(生产者):产生消息并发送到Kafka集群的应用步伐。
[*] Consumer(消耗者):从Kafka集群中订阅主题并消耗消息的应用步伐。
[*] Consumer Group(消耗者组):一组具有相同组ID的消耗者。Kafka将消息分发给消耗者组的不同消耗者,以实现负载平衡和高可用性。
[*] Offset(偏移量):Kafka为分区中的每条消息分配的唯一标识符。消耗者可以跟踪它们在分区中消耗的消息位置。
[*] Leader(首领)和 Follower(追随者):每个分区在Kafka集群中有一个Leader和零个或多个Follower。Leader负责处置惩罚分区的读写哀求,而Follower用于备份和冗余。
[*] Replica(副本):分区的副本集,包罗Leader和Follower。副本用于实现数据的冗余和故障恢复。
[*] Commit(提交):消耗者将已消耗的消息的偏移量提交给Kafka集群,表现已经成功消耗了这些消息。
[*] Commit Offset(提交偏移量):消耗者将已消耗的消息的偏移量提交给Kafka集群,以便在重启消耗者时可以或许从精确的位置继承消耗

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Kafaka根本入门