当前位置: 首页 > news >正文

Kafka 的应用场景

Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性。

Kafka 最初是为分布式系统中海量日志处理而设计的。它可以通过持久化功能将消息保存到磁盘,并让消费者按照自己的节奏提取消息。Kafka 不仅仅是一个消息队列,它还是一个开源的分布式流处理平台。

Kafka 的应用场景

Kafka 作为一款热门的消息队列中间件,具备高效可靠的消息异步传递机制,主要用于不同系统间的数据交流和传递。

下面给大家介绍一下 Kafka 在分布式系统中常用的应用场景:

  • 日志处理与分析
  • 消息队列
  • 系统监控与报警
  • CDC(数据变更捕获)
  • 数据流式处理

日志处理与分析

日志收集是 Kafka 最初的设计目标之一,也是最常见的应用场景之一。

可以用 Kafka 收集各种服务的日志,如 web 服务器、服务器日志、数据库服务器等,通过 Kafka 可以统一接口服务的方式开放给各种消费者,例如 Flink、Hadoop、Hbase、ElasticSearch 等。这样可以实现分布式系统中海量日志数据的处理与分析。

下图是一张典型的 ELK(Elastic-Logstash-Kibana)分布式日志采集架构。

  1. 服务将日志数据写在 log 文件中。
  2. Logstash 读取日志文件发送到 Kafka 的日志主题中。
  3. ElasticSearch 订阅日志主题,建立日志索引,保存日志数据。
  4. 开发者通过 Kibana 连接到 ElasticSeach 即可查询其日志索引内容。

消息队列

Kafka 最常见的应用场景就是作为消息队列。提供了一个可靠且可扩展的消息队列,可以处理大量数据。

Kafka 可以实现不同系统间的解耦和异步通信,如订单系统、支付系统、库存系统等。在这个基础上 Kafka 还可以缓存消息,提高系统的可靠性和可用性,并且可以支持多种消费模式,如点对点或发布订阅。

系统监控与报警

Kafka 常用于传输监控指标数据。例如,在分布式系统中可能会有数百台服务器,通过工具把 CPU 利用率、内存使用率、磁盘使用率、流量使用等指标发布到 Kafka。然后,通过监控应用程序可以使用这些指标来进行实时可视化、警报和异常检测。

常见监控报警系统的工作流程。

  1. 采集器(agent)读取购物车指标发送到 Kafka 中。
  2. Flink 读取 Kafka 中的指标数据进行聚合处理。
  3. 实时监控系统和报警系统读取聚合数据作展示以及报警处理。

CDC

CDC:数据变更捕获。用来将数据库中的发生的更改以流的形式传输到其他系统以进行复制或者缓存等。

Kafka 中有一个连接器组件可以支持 CDC 功能,它需要和具体的数据源结合起来使用。数据源可以分成两种:源数据源( data source ,也叫作“源系统”)和目标数据源( Data Sink ,也叫作“目标系统”)。

Kafka 连接器和源系统一起使用时,它会将源系统的数据导入到 Kafka 集群。Kafka 连接器和目标系统一起使用时,它会将 Kafka 集群的数据导人到目标系统。

常见 CDC 系统的工作流程。

  1. 源数据源将事务日志发送到 Kafka。
  2. Kafka 的连接器将事务日志写入目标数据源。
  3. 目标数据源包含 ElasticSearch、Redis、备份数据源等。

数据流式处理

流式处理是 Kafka 在大数据领域的重要应用场景之一。

可以用 Kafka 作为流式处理平台的数据源或数据输出,与 Spark Streaming、Storm、Flink 等框架进行集成,实现对实时数据的处理和分析,如过滤、转换、聚合、窗口、连接等。

比如要实现一个推荐系统的工作流程。

  1. 将用户的点击流数据发送到 Kafka 中。
  2. Flink 读取 Kafka 中的流数据实时写入数据湖中其进行聚合处理。
  3. 机器学习使用来自数据湖的聚合数据进行训练,算法工程师也会对推荐模型进行调整。
  4. 这样推荐系统就能够持续改进对每个用户的推荐相关性。

http://www.lryc.cn/news/231767.html

相关文章:

  • 保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧
  • F.binary_cross_entropy、nn.BCELoss、nn.BCEWithLogitsLoss与F.kl_div函数详细解读
  • 后端接口性能优化分析
  • 【ceph】ceph集群中使用多路径(Multipath)方法
  • Xshell+Xftp通过代理的方式访问局域网内网服务器
  • 对盒子中的材料进行计数
  • 科技驱动固定资产管理变革:RFID技术的前沿应用
  • Django路由层之有名分组和无名分组、反向解析、路由分发、伪静态的概念、名称空间、虚拟环境、Django1和Django2的区别
  • 【nlp】2.5 人名分类器实战项目(对比RNN、LSTM、GRU模型)
  • 海康Visionmaster-环境配置:MFC 二次开发环境配置方法
  • 利用EXCEL中的VBA对同一文件夹下的多个数据文件进行特定提取
  • FPGA时序约束(七)文献时序约束实验测试
  • 【数据库开发】DataX开发环境的安装部署(Python、Java)
  • Flutter实践一:package组织
  • SpringCloud微服务:Ribbon负载均衡
  • 【教程】大气化学在线耦合模式WRF/Chem
  • GDS 命令的使用 srvctl service TAF application continuity
  • go 语言之 select
  • 23款奔驰GLC260L升级小柏林音响 全新15个扬声器
  • ssh 免密码登录
  • 小程序使用腾讯位置插件获取当前位置
  • 零基础学Python怎么学习?我来告诉你
  • 开源软件 FFmpeg 生成模型使用图片数据集
  • Linux Shell 通配符 / glob 模式
  • 深入了解域名与SSL证书的关系
  • 计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法
  • 2023.11.14 hivesql的容器,数组与映射
  • Android Glide照片宫格RecyclerView,点击SharedElement共享元素动画查看大图,Kotlin(1)
  • SELinux零知识学习八、SELinux策略语言之客体类别和许可(2)
  • deepstream-测试发送AMQP