官方服务微信:dat818 购买与出租对接

深入了解Apache Kafka:分布式发布-订阅消息系统的架构与优势

3万

主题

2

回帖

10万

积分

管理员

积分
109693
发表于 2025-3-4 06:11:01 | 显示全部楼层 |阅读模式
    一、简介

    Kafka 是一种快速的、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

    几种分布式系统消息系统的对比:

    推荐相关文章:有关于各种消息队列的对比,还有对 Kafka 的深度解析,这是众人都推荐的精彩好文!

    二、Kafka基本架构

    它的架构包括以下组件:

    话题是特定类型的消息流。消息是以字节为形式的有效负载,而话题则是消息的分类名或者种子名。

    2、生产者():是能够发布消息到话题的任何对象;

    服务代理:已发布的消息被保存在一组服务器里,这些服务器被称作代理或者 Kafka 集群。

    消费者能够订阅一个或者多个话题,然后从拉数据,以此来消费这些已经发布的消息。

    从上图中能够看出,生产者会把数据发送给代理,而代理拥有多个话题,即 topic,消费者会从代理那里获取数据。

    三、基本原理

    我们把消息的发布叫做[某种称呼],把消息的订阅表述为[另一种表述],把中间的存储阵列称作(代理),如此便能大致描绘出这样一个场面:

    生产者把数据生产出来,接着把它交给某一方进行存储。当消费者需要消费数据时,就从存储之处拿出数据,之后完成一系列针对数据的处理操作。

    乍一看,它似乎太简单了。不是已经说了它是分布式的吗?难道仅仅把、和放在三台不同的机器上就算是分布式了吗?看 kafka 官方给出的图:

    多个部分协同合作,它们在各个业务逻辑中被频繁调用。这三者通过管理协调请求和转发来实现功能。如此一来,一个高性能的分布式消息发布订阅系统便完成了。

    图上有个细节需留意,从一处到另一处的过程是 push,意味着有数据就会推送到目的地;从一处到另一处的过程是 pull,是通过特定方式主动去拉数据,而非将数据主动发送到另一端。

    四、在kafka的作用

    上述,提到了,那么在kafka的作用是什么?

    kafka 集群依赖于某些东西来保证系统可用性,同时集群也保存一些 meta 信息。

    Kafka 以其分布式协调框架而被使用,它能很好地把消息生产、消息存储以及消息消费的过程整合在一起。

    同时借助 kafka,生产者、消费者以及包括在内的所有组件在无状态的情况下,可以建立起生产者和消费者的订阅关系,并且能够实现生产者与消费者的负载均衡。

    五、执行流程

    首先看一下如下的过程:

    我们来看上面的图,将  的数量进行减少,只剩下一台。现在假定我们依据上图来进行部署:

    其实就是 kafka 相关的。因为某些东西和某些东西都需要去归还它。它主要还是用于存储。

    -2 是某一端,它维持着一张表,此表记录了各个节点的 IP 以及端口等信息。

    3、4、5 他们的共同之处在于都进行了配置。更确切地说,就是在运行前必须配置相关的地址。道理其实很简单,因为它们之间的连接都需要通过某种方式来进行分发。

    -1 和 -2 的关系是,它们既可以放置在一台机器上,也可以分别放置,还可以搭配集群。这样做的目的是为了防止其中某一台出现故障。

    简单说下整个系统运行的顺序:

    (1)启动 的

    (2)启动kafka 的

    如果有数据被生产出来,首先会通过某种方式去寻找,接着把数据存放到相应的地方。

    (4) 如果要消费数据,会先通过  找对应的 ,然后消费。

    六、Kafka的特性

    高吞吐量方面,kafka 每秒能够处理几十万条消息;低延迟方面,它的延迟最低仅为几毫秒;每个 topic 可以进行划分,并且可以对多个 group 进行操作。

    (2)可扩展性:kafka集群支持热扩展;

    消息会被持久化存储在本地磁盘,同时具备支持数据备份的功能,以此来防止数据丢失。

    容错性方面,集群中的节点是允许失败的。如果副本数量为 n,那么就允许 n - 1 个节点失败。

    (5)高并发:支持数千个客户端同时读写;

    支持实时在线处理与离线处理:能够运用 Storm 这样的实时流处理系统来对消息进行实时处理,并且也可以利用这种批处理系统来进行离线处理。

    七、Kafka的使用场景

    日志收集方面,一个公司能够利用 Kafka 来收集各类服务的 log 。Kafka 以统一接口服务的形式,将这些 log 开放给诸如 Hbase、Solr 等各种服务。

    (2)消息系统:解耦和生产者和消费者、缓存消息等;

    用户活动会被跟踪。Kafka 常常被用于记录 web 用户或者 app 用户的各类活动,像浏览网页、进行搜索、点击等活动。这些活动的信息会被各个服务器发布到 Kafka 的 topic 里。接着,订阅者通过订阅这些 topic 来进行实时的监控分析,也可以将其装载到数据仓库中进行离线分析和挖掘。

    运营指标方面,Kafka 时常被用于记录运营监控数据。它能够收集各类分布式应用的数据,并且生成各种操作的集中反馈,例如报警和报告。

    (5)流式处理:比如spark 和storm;

    (6)事件源;
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2025, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2025-5-25 17:58 , Processed in 0.081345 second(s), 18 queries .