kafka学习记录

什么是kafka

	关于kafka的介绍就不详细叙述了,Kafka 是一种分布式的发布-订阅消息系统,
	具有一些高数据吞吐量等各种优点,总结的概括一下kafka可以理解为一种消息处理系统。
	日常情况下,对于服务器来说,需要连续不断的接收、处理信息,如同日常缴费窗口的排队,
	数据量较小的时候,处理较快就不会发生拥堵,当信息较大时,系统处理不过来就可能导致系统、
	服务器的崩溃,kafka可以理解为在系统处理之前加入的一个信息管理系统。

在这里插入图片描述
常见情况下,信息直接怼到信息处理系统中,信息量小的时候能够较快的处理、信息量较大的时候将会导致系统的崩溃。
在这里插入图片描述
在中间加入kafka后,kafka能够有效的应对高数据吞吐量的工作,进行数据的削峰,缺点可能会导致部分数据处理的延时。

kafka应用环境

对于kafka的常见应用环境,主要有削峰、解耦等常见功能:
2.1 削峰:
举个例子来说,双十一十二点大家一起抢购东西,由于同一时间点击购买同一件东西的人较多,服务器的处理能力有限,例如服务器处理能力是每秒1000次,一到12点,突然三千人同时点击抢购,服务器就可能会崩溃,但是假如kafka之后,消息按照先来后到的方式进行kafka中,排成一个数据队列,先到的先处理,后到的后处理,服务器还是以1000次每秒的数据依次处理,通过这样的数据缓冲就不会导致服务器的崩溃,缺点是处理较慢,可能有人点击后隔上两三秒才会有反应,一些实时显示的数据可能有延时。
2.2 应用解耦:
还是以电商的例子,客户端发送了订单请求到订单处理服务器,此时如果订单处理服务器出现的宕机或者故障,可能将会导致大量的订单数据发送过程中丢失、接收不到,加入kafka之后,发送的订单请求将会缓存在kafka的消息队列中,当订单服务器重启之后,请求数据并不会丢失,宕机时产生的数据将会排成一个数据队列依次被订单处理服务器处理,起到了应用解耦的作用。

kafka名词· 概念解释

常见的关键词如下:
producer:消息的生产者,用于生产消息
consumer:消息的消费者。
topic:直译过来就是主题,是消息生产者和消息的消费者之间的纽带,生产者将数据或消息发送给topic,消息在topic中进行存储,消费者(consumer)使用两种方式从topic中获取数据,第一种是消费者(consumer)订阅对应的topic,topic将数据推送给消费者(consumer),第二种是消费者(consumer)不订阅topic,采用pull的方式从topic中拉取消息。
Partition:topic是消息的主题,但是消息主题可能有多个消息分区,每一个消息分区都被称之为partition,通畅情况下, 每一个partition都会有对应的副本,用于备份数据
offset 直译过来的名称为补偿,偏移量,当信息发送给指定的topic的时候,每一条消息有一个对应的ID,offset就是这个ID
broker:直接翻译是代理,经纪人,可以简单的理解就是服务器,由于kafka是一个分布式构架,因此信息通畅存储于多个服务器上,提高消息存储的安全性,而每一个服务器就可以理解是一个broker
leader 对于topic来说,会有对个partition,一般来说每个partition都分布在不同的broker上,而对于这个partition负责读写的broker就是leader,后文将会对leader有详细叙述

kafka集群原理及示例

kafka是一个分布式消息处理系统,整个信息处理系统将会由多个服务器组成,下文将会以一个三个服务器的组成的kafka集群为例子进行详细说明。首先我们建设建立一个Topic,对于这个Topic来说,需要声明由几个partition组成,每一个partition有几个副本备份,以建立一个Topic为例子,该Topic由三个partition组成,分别为partition0、partition1、partition2组成,每一个partition分别有两个对应的副本,
则可以看到建立的kafka集群(Kafka Cluster)如下图所示:
在这里插入图片描述
(1)整个集群由三个服务器组成,每个服务器就是一个broker,分别为broker1、broker2、broker3,整个kafka集群由zookeeper进行管理,上文中建立的topic的具体参数、partition个数、副本个数都是存放于zookeeper中。
(2)建立的topic由三个partition组成,每个partition分别放在不同的服务器(broker)中,为了保证数据存储安全性和可靠性,一般不会在一台服务器(broker)上存放同一个topic的不同的partition(后文将会解释),同时每个partition分别有两个副本,每个副本将分别放置在不同的服务器上。
(3)对于整个kafka集群来说,partition0位于broker1上,那么broker1就是partition0的leader,同理,broker2就是partition1的leader,broker3就是partition2的leader
(4)使用该方法的好处显而易见,整个kafka集群由三个服务器(broker)组成,那么当broker1服务器出现宕机、则broker2、broker3依然能够继续保证数据的完整性,即便broker1、broker2同时出现故障导致损坏,那么broker3也能保证数据完整性,最大限度的提高的数据安全性。

kafka的信息传递过程

kafka的信息传递过程如下图所示:
在这里插入图片描述
从左往右,最左边producer,即消息的生产者,在整个消息传输、存储过程中是发出消息,可以看到使用push方式来推送msg(消息),同时可以看到由一条虚线直销zookeeper,zookeeper,从zookeeper中获取broker id等等,随后生产者将数据推送给kafka集群,由于一个topic中含有多个partition,因此当信息传入kafka集群时,采用轮询的方式的方式分别写入每一个partition中,如下图所示:
在这里插入图片描述
(1)第一组信息写入第一个partition中(partition0),信息写入后会获得一个消息ID号,这个消息ID号就是offset,例如图中的0,同时分别写入partition0的两个备份中
(2)第二组信息会写入第二个partition中(partition1),同样也会获得一个ID号码,并将消息进行备份到副本中
(3)第三组消息写入第三个partition中(partition2)
(4)第四组消息轮询写入第一个partition(partition0)中
从而实现数据的写入
(5)对于kafka来说,每一个partition可以缺少信息的先来先消费,即所谓的FIFO( First Input First Output)先进先出策略,但是对于拥有多个partition的Topic来说,则不一定保证满足FIFO( First Input First Output)先进先出策略。

消费者(consumer)信息传递方式

在这里插入图片描述
数据消费者(consumer)与Topic之间主要的关系有两种,如图所示:
(1)消费者通过订阅和拉取(pull)来获取消息,订阅需要指定具体的topic,当topic获取消息后会推送给consumer
(2)使用pull方式则是consumer主动地拉取消息通过这两种方式,consumer可以获取传入Topic中的信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值