【kafka实践】01|kafka是什么?

1、kafka是什么

关于kafka是什么你一定有自己的答案,中间件、消息队列、消息中间件。这些都没有错,但是并不全面,那么我们直接来看kafka官方给自己的定义吧

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.                

翻译过来就是:Apache Kafka 是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。 

如果把事件流换成消息的话,有一个更为通用的叫法“消息引擎系统”,消息引擎确实比消息队列更能说明kafka在数据处理和传输上的能力,当然 官方最直接的定义是分布式流式处理平台,可见除了在消息引擎(毕竟这个发家的),kafka在大数据处理上的野心。那有人就问了,kafka是消息引擎,那消息引擎是什么呢?

2、消息引擎

那我们就来看看维基百科对消息引擎的定义:消息引擎系统是一组规范。企业利用这组规范在不同系统之间传递语义准确的消息,实现松耦合的异步式数据传递。

通俗来讲就是:系统 A 发送消息给消息引擎系统,系统 B 从消息引擎系统中读取 A 发送的消息。

2.1消息格式

既然消息引擎是用于在不同系统之间传输消息的,那么如何设计消息的格式就很重要了。稍微停顿几秒去思考一下,如果是你,你要如何设计你的消息编码格式。一个比较容易想到的是使用已有的一些成熟解决方案,比如使用 XML、JSON 亦或是 Protocol Buffer;其实 Kafka使用的是纯二进制的字节序列!当然消息还是结构化的,只是在传输之前都要将其转换成二进制的字节序列。

2.2传输模式

消息设计出来之后还不够,还要具体的传输协议,即我用什么方法把消息传输出去。kafka用到了两种方法:

  • 点对点模型:也叫消息队列模型。如果拿上面那个“民间版”的定义来说,那么系统 A 发送的消息只能被系统 B 接收,其他任何系统都不能读取 A 发送的消息。日常生活的例子比如电话客服就属于这种模型:同一个客户呼入电话只能被一位客服人员处理,第二个客服人员不能为该客户服务。
  • 发布 / 订阅模型:与上面不同的是,它有一个主题(Topic)的概念,你可以理解成逻辑语义相近的消息容器。该模型也有发送方和接收方,只不过提法不同。发送方也称为发布者(Publisher),接收方称为订阅者(Subscriber)。和点对点模型不同的是,这个模型可能存在多个发布者向相同的主题发送消息,而订阅者也可能存在多个,它们都能接收到相同主题的消息。生活中的报纸订阅就是一种典型的发布 / 订阅模型。
3、kafka能做什么

这里笔者列举了一些常见的用法,欢迎评论区补充交流

  • 实时数据传输:作为消息队列,Kafka 可以在不同的组件和服务之间传递实时数据,支持高吞吐量的数据流,在数据量激增时实现“削峰填谷”。
  • 日志收集与存储:用于收集和存储大规模系统产生的日志数据,支持数据的持久化存储。
  • 事件溯源:用于跟踪和记录系统中的事件流,支持追溯和分析系统中发生的事件。
  • 消息发布与订阅:支持发布-订阅模型,允许多个消费者同时订阅并处理相同的消息流。
  • 解耦系统组件:在大型系统中,Kafka 可以作为中间层,帮助解耦系统的不同组件,提高系统的灵活性和可维护性。
  • 流处理:Kafka 提供了流处理支持,可以用于构建实时数据处理应用,例如实时分析、实时计算等。
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值