Kafka的基础架构


前言

1、kafka是什么呢?

kafka传统定义:kafka是一个分布式的基于 发布/订阅模式 的 消息队列(Message Queue),主要应用于大数据实时处理领域。

Kafka最新定义:Kafka是一个开源的分布式事件流平台,用于高性能数据管道、流分析、数据集成和关键任务应用。

2、消息队列是什么呢?

消息队列是作为一个单独的中间件产品存在的,独立部署,当有大量数据集中访问服务器时,服务器无法同时受理,此时消息队列作为一个中间产品,进行一个负载,给这些消息排队,然后服务器再获取能够处理的消息进行处理,大大减轻了服务器的压力。

3、消息队列的应用场景

传统的消息队列的主要应用场景包括:缓存/消峰解耦异步通信

缓冲/消峰:有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况,就是服务器处理速度不够,通过中间的消息队列来降低服务器的压力。

解耦:允许独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。降低了代码的耦合性。

异步通信:允许用户把一个消息放入队列,但并不立即处理它,然后在需要的时候再去处理它们。就是执行过程不按照标准顺序来进行,而是类似于工厂,一个工人做完一部分后交给下面的工人,下面的工人不一定立刻对该产品进行再加工。


一、消息队列的两种模式

1、点对点模式

生产者生产消息,生产消息后传递到消息队列中。

消费者主动从消息队列中拉取消息,收到消息后主动删除消息队列中的消息。

点对点模式结构图

producer:消息生产者,就是向消息队列发送消息的客户端。

consumer:消息消费者,向消息队列取消息的客户端。

Message Queue:消息队列,将生产者产生的消息进行排队,供给消费者取。


2、发布/订阅模式

发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类型,订阅者只接收感兴趣的消息。

1)消息队列不再局限于只有一个队列,而是可以有多个主题,每个主题对应了一个队列,消费者可以通过获取不同的主题的消息。

2)消费者消费数据后,不删除数据。

3)每个消费者相互独立,都可以消费到数据。

发布/订阅模式结构图
Topic:消息队列中的主题,就是一个队列,生产者和消费者面向的都是一个Topic。在发布/订阅模式中,我们将消息队列划分为了多个主题,每个主题也是一个队列,每个主题可以负责处理不同的数据,例如:点赞、收藏、打赏,每个对应了一个独立的主题,即独立的队列。


二、kafka的架构

Kafka是基于 发布/订阅模式 的消息队列,他在原本的发布/订阅模式的基础上新增了很多模型,让其结构更为健壮。所以我们在理解时要基于 发布/订阅模式 进行理解。

Kafka基本架构
通过观察Kafka的基本架构图我们发现其本质结构是符合 发布/订阅模式 的结构的,在其原有的基础上进行了整合。

1、新增了broker的概念,每个broker就是一个Kafka的服务器。一个集群由多个broker组成。一个broker可以容纳多个topic。

2、为了方便扩展,并提高吞吐量,每个topic可以分为多个partition,每个partition可以放在不同的服务器上。

3、为了配合分区的设计,Kafka提出了消费者组的概念,组内每个消费者并行消费。

4、为了提高可用性,为每个partition增加了若干副本(follower),将副本放在其他的服务器中,当某个服务器宕机后不会导致其分区的不可用,此时启用其副本内容。

Kafka的分区实际上是存在于系统的不同存储位置,在应用时需要通过设置来进行分区调配。


总结

Kafka是作为中间件的存在,主要作用就是为服务器分担压力,在使用时通常考虑是否需要相应的分担,如果需要消息队列作为中间件分摊压力,都包含哪些类型,为其分配哪些主题,哪些分区,设置多少副本,要分别存储于哪些服务器中,服务器连接位置是否需要设置等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值