kafka学习总结-快速入门

本文深入解析Kafka消息系统,涵盖其架构、应用场景与设计理念。Kafka作为高效的消息队列,擅长处理实时与离线数据流,支持高并发读写,确保数据安全与持久性。文章还探讨了Kafka在分布式系统中的角色,以及如何通过Zookeeper实现动态管理和故障恢复。

To See More…Detail

1、kafka简介

Kafka是Linkedin于2010年12月份创建的开源消息系统,它主要用于处理活跃的流式数据。活的流式数据在web网站应用中非常常见,这些活
动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计分析。
传统的日志分析系统是一种离线处理日志信息的方式,但若要进行实时处理,通常会有较大延迟。现有的消息队列系统能够很好的处理实时或者近
似实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类,间隔时间较长的离线应用而言,在数据安全上会出现问题。Kafka
正是为了解决以上问题而设计的,它能够很好地进行离线和在线应用。
Kafka 是一个分布式的消息缓存系统,用于日志处理的分布式消息队列。日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户
行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进状态)。当前很多的消息队列服务提供可靠
交付保证,并默认是即时消费(不适合离线)。高可靠交付对日志不是必须的,故可通过降低可靠性来提高性能,同时通过构建分布式的集群,
允许消息在系统中累积,使得kafka 同时支持离线和在线日志处理。
Kafka的设计理念之一就是同时提供离线处理和实时处理。根据这一特性,可以使用Storm这种实时流处理系统对消息进行实时在线处理,同时使
用Hadoop这种批处理系统进行离线处理,还可以同时将数据实时备份到另一个数据中心,只需要保证这三个操作所使用的Consumer属于不同
的Consumer Group即可。
Kafka的设计理念之一就是同时提供离线处理和实时处理。根据这一特性,可以使用Storm这种实时流处理系统对消息进行实时在线处理,同时使用
Hadoop这种批处理系统进行离线处理,还可以同时将数据实时备份到另一个数据中心,只需要保证这三个操作所使用的Consumer属于不同的Consumer Group即可。

2、kafka架构

在这里插入图片描述

kafka producer发送消息到topic上,consumer到topic上取消息。(topics运行在具体的broker(或者说是kafka服务器)上),多个broker
协同合作,producer和consumer部署在各个业务逻辑中被频繁的调用,三者通过zookeeper管理协调请求和转发。这样一个高性能的分布式消息
发布与订阅系统就完成了。图上有个细节需要注意,producer到broker的过程是push,也就是有数据就推送到broker,而consumer到broker
的过程是pull,是通过consumer主动去拉数据的,而不是broker把数据主动发送到consumer端的。

系统运行的顺序:
1. 启动zookeeper的server
2. 启动kafka的server
3. Producer如果生产了数据,会先通过zookeeper找到broker,然后将数据存放进broker
4. Consumer如果要消费数据,会先通过zookeeper找对应的broker,然后消费

3、kafka关键字

•Broker : Kafka消息服务器,消息中心。一个Broker可以容纳多个Topic。
•Producer :消息生产者,就是向Kafka broker发消息的客户端。
•Consumer :消息消费者,向Kafka broker取消息的客户端。
•Zookeeper :管理Producer,Broker,Consumer的动态加入与离开。
•Topic :可以为各种消息划分为多个不同的主题,Topic就是主题名称。Producer可以针对某个主题进行生产,Consumer可以针对某个主题进行订阅。
•Consumer Group: Kafka采用广播的方式进行消息分发,而Consumer集群在消费某Topic时, Zookeeper会为该集群建立Offset消费偏移量,最新Consumer加入并消费该主题时,可以从最新的Offset点开始消费。
•Partition:Kafka采用对数据文件切片(Partition)的方式可以将一个Topic可以分布存储到多个Broker上,一个Topic可以分为多个Partition。在多个Consumer并发访问一个partition会有同步锁控制。

在这里插入图片描述

4、为什么要用kafka

1、解耦;举个简单例子,快递小哥手上有很多快递需要配送,若一一通知收件人,估计快递小哥要疯掉,有了丰巢快递柜后,快递小哥可以集中将快递放到快递柜子里面,后面只需发送短信给收件人即可,这样以来快递柜子就充当了消息中间件,实现了解耦,两个人互不耽误。
在这里插入图片描述

2、实现冗余备份;当快递小哥兴致冲冲的拉来一车快递后,正准备投递到丰巢快递柜子,但不幸的是蜂巢快递柜子坏了,无法投资快递,快递小哥也没招,只能老老实实的去下一个丰巢快递柜子投递快递,若快递柜子又坏了,快递小哥还可以去下一个快递柜子,如此一来,实现了消息队列的冗余备份,保证你的快递不被丢失;

3、异步;如果楼下有你的快递,快递小哥需要一直在楼下等你取走快递后,快递小哥才能进行下一个快递的派单,这样以来快递小哥的效率极其低下,而有了快递柜子后,快递小哥只需要将你的快递放到柜子,然后给你发送取件短信即可,这样以来效率大大提高,这正体现了中间件的好处。
在这里插入图片描述

4、削峰;当双十一来临后,快递小哥的业务量倍增,这样快递小哥直接怀疑人生,自从各种丰巢、菜鸟驿站等各种消息中间件后,快递小哥没那么繁忙了,这正是体现了消息中间件的削峰作用。
在这里插入图片描述

5、同步和异步的区别

消息队列三个特点:解耦、异步、削峰
同步:处理完后返回,告知结果
异步:发送处理请求后即返回,处理完成后通过回调告知结果
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进一步有进一步的欢喜

您的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值