首页 > 其他分享 >kafka应用

kafka应用

时间:2024-08-16 11:27:56浏览次数:8  
标签:服务 数据源 系统 Kafka 应用 日志 kafka 数据

记录一下,以后尝试一下

  • 日志处理与分析

  • 推荐数据流

  • 系统监控与报警

  • CDC(数据变更捕获)

  • 系统迁移

  • 事件溯源

  • 消息队列

1. 日志处理与分析

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

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

  1. 购物车服务将日志数据写在 log 文件中。

  2. Logstash 读取日志文件发送到 Kafka 的日志主题中。

  3. ElasticSearch 订阅日志主题,建立日志索引,保存日志数据。

  4. 开发者通过 Kibana 连接到 ElasticSeach 即可查询其日志索引内容。

2. 推荐数据流

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

淘宝、京东这样的线上商城网站会通过用户过去的一些行为(点击、浏览、购买等)来和相似的用户计算用户相似度,以此来给用户推荐可能感兴趣的商品。

下图展示了常见推荐系统的工作流程。

  1. 将用户的点击流数据发送到 Kafka 中。

  2. Flink 读取 Kafka 中的流数据实时写入数据湖中其进行聚合处理。

  3. 机器学习使用来自数据湖的聚合数据进行训练,算法工程师也会对推荐模型进行调整。

这样推荐系统就能够持续改进对每个用户的推荐相关性

3. 系统监控与报警

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

下图展示了常见监控报警系统的工作流程。

  1. 采集器(agent)读取购物车指标发送到 Kafka 中。

  2. Flink 读取 Kafka 中的指标数据进行聚合处理。

实时监控系统和报警系统读取聚合数据作展示以及报警处理。

4. CDC(数据变更捕获)

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

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

下图展示了常见 CDC 系统的工作流程。

  1. 源数据源将事务日志发送到 Kafka。

  2. Kafka 的连接器将事务日志写入目标数据源。

  3. 目标数据源包含 ElasticSearch、Redis、备份数据源等。

 

5. 系统迁移

Kafka 可以用来作为老系统升级到新系统过程中的消息传递中间件(Kafka),以此来降低迁移风险。

例如,在一个老系统中,有购物车 V1、订单 V1、支付 V1 三个服务,现在我们需要将订单 V1 服务升级到订单 V2 服务。

下图展示了老系统迁移到新系统的工作流程。

  1. 先将老的订单 V1 服务进行改造接入 Kafka,并将输出结果写入 ORDER 主题。

  2. 新的订单 V2 服务接入 Kafka 并将输出结果写入 ORDERNEW 主题。

  3. 对账服务订阅 ORDER 和 ORDERNEW 两个主题并进行比较。如果它们的输出结构相同,则新服务通过测试。

 

6. 事件溯源

事件溯源是 Kafka 在微服务架构中的重要应用场景之一。可以用 Kafka 记录微服务间的事件,如订单创建、支付完成、发货通知等。这些事件可以被其他微服务订阅和消费,实现业务逻辑的协调和同步。

简单来说事件溯源就是将这些事件通过持久化存储在 Kafka 内部。如果发生任何故障、回滚或需要重放消息,我们都可以随时重新应用 Kafka 中的事件。

7. 消息队列

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

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

 

 

标签:服务,数据源,系统,Kafka,应用,日志,kafka,数据
From: https://www.cnblogs.com/HePandeFeng/p/18362526

相关文章

  • IMU惯性测量模块在ROS环境下的应用示例
    Ubuntu版本:20.04;ROS环境:noetic;IMU型号:亚博10轴IMU惯导模块目录一.ROS环境配置1、在终端运行对应的命令 2、安装ROS串口驱动二、IMU软件包使用1、新建、编译工作空间 2、绑定IMU端口3、修改参数配置 三、运行可视化界面 1、运行launch文件2、可能遇到的问题3、......
  • Phpstorm环境配置与应用
    PhpStorm是一款由JetBrains开发的PHP专用的集成开发环境(IDE),它提供了强大的功能,包括代码编辑、调试、版本控制、单元测试等,适用于PHP开发者进行高效编程。以下是关于如何配置和应用PhpStorm的一些基本步骤:1.安装PhpStorm首先,你需要从JetBrains官方网站下载PhpS......
  • Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI
    Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程XorbitsInference(Xinference)是一个开源平台,用于简化各种AI模型的运行和集成。借助Xinference,您可以使用任何开源LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并......
  • 【MPC】模型预测控制 | 在车辆控制中的应用(二)目标函数构建
    写在前面:......
  • 掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析
    PyTorch提供了几种张量乘法的方法,每种方法都是不同的,并且有不同的应用。我们来详细介绍每个方法,并且详细解释这些函数有什么区别:1、torch.matmultorch.matmul是PyTorch中用于矩阵乘法的函数。它能够处理各种不同维度的张量,并根据张量的维度自动调整其操作方式。torch......
  • type-C接口的应用和PD取电快充协议的介绍
    USB快充控制芯片又称为快充诱骗芯片,是一种集成电路,主要用来和充电器内部的供电协议芯片进行通讯握手快充协议。它一般应用在Type-C接口的控制电路中,可以和充电器通讯,获取充电器的快充电压。电路中使用这种Type-C控制芯片后,可以自适应市面上各家的快充协议充电器,使其输出快充电......
  • pd协议的工作原理和应用
    PD协议通过type-C接口的CC线进行通信,协商电压、电流及供电方向。通信过程需要按照特定的数据包格式进行,存在相互认证的过程,当电缆接通后PD协议的SOP通信在CC线上进行从此来选择电源传输的规格。PD协议的优势在于其通用性和智能控制方式,使得一个充电器可以配置多个设备。XSP08Q......
  • 图数据库在社交网络分析中的应用
    图数据库在社交网络分析中的应用广泛且深入,其独特的数据结构和高效的查询能力为理解和分析复杂的社交网络关系提供了强有力的支持。以下将详细探讨图数据库在社交网络分析中的多个方面,包括用户关系建模、推荐系统优化、实时社交分析、影响力分析、欺诈检测与安全、知识图谱......
  • 智慧安防/一网统管/视频监控EasyCVR视频汇聚平台的视频轻量化特点及应用
    在数字化时代,视频监控已成为保障公共安全、提升管理效率的重要手段。随着技术的不断进步,EasyCVR视频汇聚平台应运而生,平台以其独特的视频轻量化特点在安防监控领域展现出强大的应用潜力。本文将详细探讨EasyCVR视频汇聚平台的视频轻量化特点及其应用。一、视频轻量化特点1)高效接......
  • Spring Boot应用的版本控制与发布流程
    SpringBoot应用的版本控制与发布流程大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在软件开发过程中,版本控制和发布流程是确保软件质量和高效协作的关键环节。SpringBoot作为当前流行的Java开发框架,与版本控制和持续集成/持续部署(CI/CD)工具的集成......