Kafka技术详解[1]:简介与基础概念

news/2024/9/28 5:40:03/

目录

1. Kafka入门

1.1 概述

1.1.1 初识Kafka

1.1.2 消息队列

1.1.3 生产者-消费者模式

1.1.4 消息中间件对比

1.1.5 ZooKeeper


1. Kafka入门

1.1 概述

1.1.1 初识Kafka

Kafka是由Scala和Java语言开发的高吞吐量分布式消息发布和订阅系统,也是大数据技术领域中用作数据交换的核心组件之一。因其高吞吐量、低延迟、高可伸缩性、高可靠性、高并发性以及活跃的社区支持等特点而受到广泛欢迎。

2010年,LinkedIn公司为了解决消息传输过程中的阻塞和服务不可访问等问题,主导开发了一款分布式消息日志传输系统。该系统的命名灵感来源于西方表现主义文学先驱小说家Franz Kafka的作品《变形记》,尽管这个名字与软件特性并无直接关联。由于其卓越的性能,Kafka在2011年被捐献给Apache基金会,并在同年被纳入Apache软件基金会孵化器项目。2012年10月,Kafka正式成为Apache顶级项目,并逐渐发展成为一款开源分布式事件流处理平台系统,被广泛应用于高性能数据管道、流分析、数据集成和关键任务应用程序。

官网地址:Apache KafkaApache Kafka: A Distributed Streaming Platform.icon-default.png?t=O83Ahttps://kafka.apache.org/

1.1.2 消息队列

Kafka最初设计为专门用于数据传输的消息系统,类似于RabbitMQ、ActiveMQ、RocketMQ等。这些软件的名称中的“MQ”是“Message Queue”(消息队列)的缩写,核心功能是传输数据。Java中实现数据传输功能通常需要遵循Java消息服务技术规范(JMS)。ActiveMQ完全遵循了JMS技术规范,而RabbitMQ则遵循了AMQP(Advanced Message Queuing Protocol)规范,并兼容JMS规范。此外,还有用于物联网设备间消息传输的MQTT协议。

虽然Kafka具备消息系统的基本功能,但其设计具有独特之处,仅借鉴了JMS规范的思想而未完全遵循。因此,虽然Kafka是一个消息系统,但它并未被称为“KafkaMQ”。

为了更好地理解消息系统,这里简要介绍JMS规范:

  • JMS是Java平台的消息中间件通用规范,定义了用于消息中间件的标准接口。类似于JDBC规范,JMS定义了系统之间传输消息的接口。
  • JMS定义了许多用于通信的组件:
    • JMS Provider:实现JMS接口和规范的消息中间件,如RabbitMQ、ActiveMQ、Kafka。
    • JMS Message:数据,通常采用Java数据模型进行封装,包含消息头、属性和主体内容。
    • JMS Producer:生产数据的客户端应用程序,通过JMS接口发送消息。
    • JMS Consumer:从消息提供者中获取数据的客户端应用程序,通过JMS接口接收消息。
  • JMS支持两种消息模型:P2P(点对点)模型和发布/订阅模型。
    • P2P模型:基于队列,消息生产者将数据发送到队列,消费者从中接收消息。
    • 发布/订阅模型:基于主题,生产者按主题发送消息,消费者订阅感兴趣的主题。

1.1.3 生产者-消费者模式

生产者-消费者模式通过一个容器(通常是阻塞队列)来解耦生产者和消费者。在分布式环境中,这个容器通常由第三方软件实现,即所谓的中间件。中间件的使用旨在降低生产者和消费者之间的耦合度,并提高消息传输效率。

1.1.4 消息中间件对比

下表总结了几种常见消息中间件的主要特性:

特性ActiveMQRabbitMQRocketMQKafka
单机吞吐量万级万级10万级10万级
Topic数量对吞吐量的影响不详不详Topic可以达到几百/几千量级Topic可以达到几百量级,更多时吞吐量会下降
时效性ms级微秒级别ms级ms级
可用性非常高非常高
消息可靠性有较低概率丢失数据基本不丢经过参数优化配置,可以做到0丢失经过参数优化配置,可以做到0丢失
功能支持MQ领域的功能极其完备并发能力强,性能极好,延时很低MQ功能较为完善,分布式,扩展性好功能较为简单,支持简单的MQ功能,在大数据领域被广泛使用
其他社区不是很活跃开源,稳定,社区活跃度高阿里开发,社区活跃度不高开源,高吞吐量,社区活跃度极高

在大数据场景中,Kafka作为消息中间件被广泛采用;而在Java EE开发中,则主要使用ActiveMQ、RabbitMQ、RocketMQ。如果项目需要融合Java EE和大数据,则Kafka是一个很好的选择。

1.1.5 ZooKeeper

ZooKeeper是一款开源的分布式应用程序协调服务软件。在多节点分布式架构中,ZooKeeper用于保持各节点间环境和系统配置的一致性。Kafka作为分布式事件流处理平台,利用ZooKeeper来协调其多个服务节点。然而,为了减少与其他软件的耦合,从Kafka 2.8.X版本开始,引入了Raft算法进行节点间的协调管理,以期在未来版本中逐步替代ZooKeeper。


http://www.ppmy.cn/news/1531456.html

相关文章

基于nodejs+vue的外卖管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

UI设计师面试整理-工具和技术技能

在UI设计师面试中,展示你对工具和技术的掌握程度非常重要。这不仅能体现你的专业能力,还能让面试官了解你是否具备他们团队所需的技能。以下是一些常用的UI设计工具和相关技术技能,以及如何在面试中有效展示它们。 1. UI设计工具 a. Sketch ● 用途

STM32之串口通信

什么是串口 串行通信接口:指按位发送和接收的接口,如RS232/422/485 RS232电平和COMS/TTL电平对比 RS232电平:逻辑1:-15V ~ -3V 逻辑0:3V ~ 15V CMOS电平: 逻辑1:3.3V 逻辑0:0V (STM32使用&am…

C语言VS实用调试技巧

文章目录 一、什么是bug?二、什么是调试?三、Debug和Release四、VS调试快捷键4.1环境准备4.2调试快捷键 五、监视和内存观察5.1监视5.2内存 六、调试举例七、编程常见错误归类7.1编译型错误7.2链接型错误7.3运行时错误 一、什么是bug? 🍎bug本意是 “…

【Python快速学习笔记01】下载解释器/环境变量配置/PyCharm下载/第一个代码

目录 1.下载python解释器 2.第一个python程序 3.配置解释器环境变量 4.下载开发工具 PyCharm 4.通过PyCharm编写第一个python程序 1.下载python解释器 官网下载,但是下载太慢了,所以直接百度搜了下载了个 Welcome to Python.org 1.官网下载 2.直…

StarRocks Elasticsearch Catalog原理简析

前言 Elasticsearch不仅是强大的全文搜索引擎,在很多场景下(特别是TiDB、ShardingSphere等框架成熟之前)也被当做分布式HTAP数据库使用,在存储、更新海量数据的同时,提供高效的点查和部分聚合查询能力。StarRocks从3.1版本开始支持Elasticsea…

​​合​​合​​信​息​​​龙​​湖​​数​​科​​一​​面​​​

1. 请尽可能详细地说明,Git中merge和rebase的区别和应用场景?Git中pull和fetch的区别和应用场景?Git中revert和reset的区别和应用场景?你的回答中不要写出示例代码。 Git中merge和rebase的区别和应用场景 merge 区别&#xff1…

前端工程记录:Vue2 typescript项目升级Vue3

由于typescript飞速发展,某些vue2项目也在vue3出现之前集成了typescript开发,例如我的个人网站,当时花费了不少时间。而vue3我使用一段时间后,在2022年左右开始投入生产,但是这个个站就没怎么维护了。若是想继续&#…