kafka使用场景

article/2025/10/7 22:19:55

kafka基本介绍

kafka是使用scala语言和java语言编写的一套高可用的消息队列,广泛应用在后端开发里,是后端开发里的一个重要中间件。

kafka的使用场景

1、异步处理

下图为一个订单状态在后端各个模块之间的处理流程,后一个流程必须要等到前一个流程执行完后才能得到执行。当统计完成后,返回给客户端数据。

这样的设计方式,看似很合理,每个模块依照顺序执行,编写起来也相对简单。但是有一个非常大的缺陷,**同步的执行效率非常底下。**很多后端模块执行业务请求时其实是可以并行执行的。

在这里插入图片描述

如果使用kafka,后端的业务流程就可以变成这样。库存模块作为生产者,订单、短信、统计模块作为消费者。相较于同步的执行方式,引入kafka后,订单、短信、统计都可以直接从kafka中拉取库存信息,并行的执行。效率会得到大幅提升。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MSsjHknr-1670000133739)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669982075097.png)]

2、流量削峰

在后端业务开发中,流量削峰是非常重要的。

如果不对客户端的流量进行控制,所有的流量全部打到后端服务中,一旦后端无法支撑流量请求,就很容易造成服务崩溃,大量客户端无法使用后端服务。

互联网app中有大量流量削峰的场景,例如打LOL时经常会排队,玩DNF时经常需要挤频道。。。这都是流量削峰的体现。。

在kafka中可以设定消息队列里消息的最大个数,以此来达到削峰的目的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vXmxtSB5-1670000133740)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669982328273.png)]

3、服务解耦

高内聚,低耦合。是代码设计的重要思想,对于不同的服务之间也是如此。

如果两个服务直接关联,那么耦合度就太高了,类似于下图这样的交互方式。

耦合度太高带来的后果就不用多说了,牵一发而动全身,当一个服务出现问题,可能会导致大量的服务也跟着出现问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UVcxWmvX-1670000133740)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669982518733.png)]

软件设计中,引入中间层实现解耦是很常见的方式,例如MVC设计方式就是典型的引入中间层从而实现模块之间的解耦。

kafka同样可以实现这样的功能。并且,kafka支持数据的持久化,如果一个服务在业务运行的过程中启动,也可以拉取到之前的数据。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LC9bOyi-1670000133740)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669982683799.png)]

4、发布订阅模式

多个消费者可以拉取同一条消息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TSSm3quX-1670000133741)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669983148378.png)]

5、高并发缓存

如果后端的流量非常庞大,业务服务每秒只能支持1W次请求。如果没有kafka做消息队列。

如果有一段时间每秒的请求数量达到了2W,此时直接打到业务服务上,业务服务器可能就挂了。

加入消息队列后,可以对流量进行一个缓存。业务服务可以按照自己的处理速度去拉取流量。

比如消费完1个再拉取一次流量,这样就能保证业务服务可以按照自己能处理的过来的速度去处理请求,避免因为处理不过来宕机的风险。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aw7S74Vb-1670000133741)(C:\Users\张茂杰\AppData\Roaming\Typora\typora-user-images\1669983272262.png)]


http://chatgpt.dhexx.cn/article/BO0shtx0.shtml

相关文章

kafka的应用场景

关于消息队列的使用 一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ…

解开Kafka神秘的面纱(一):kafka架构与应用场景

文章目录 一、前言二、Kafka简介2.1 Kafka简介2.2 基于分布式的Kafka 三、Kafka架构3.1 消息生产与消费3.1.1 消息生产与消费模型3.1.2 Kafka消费单元是消费者组3.1.3 Kafka只消费Partition主分区的消息3.1.4 消费者组中的每个消费者的offset3.1.5 小结 3.2 Partition备份与选主…

Metricbeat使用与入门-1 收集系统指标数据到ES中

Metricbeat由模块和指标集组成。Metricbeat 模块定义了从特定服务(例如Redis,MySQL等)收集数据的基本逻辑。 系统环境:CentOS 7.4 ES版本:7.6.1 Metricbeat版本:7.6.1 1 安装 Metricbeat版本:7…

Beats:Beats 入门教程 (二)

这篇文章是 “Beats 入门教程 (一)”的续篇。在上一篇文章,我们主要讲述了 Beats 的一些理论方面的知识。在这篇文章中,我们将具体展示如何使用 Filebeat 及 Metriceat 把数据导入到我们的 Elasticsearch 并对他们进行分析。 安装…

MetricBeat + Elasticsearch + Kibana 实现监控指标可视化

1、Elasticsearch 监控指标可视化概述 之前的推文 Elasticsearch 磁盘使用率超过警戒水位线,怎么办?有读者留言:“配合监控系统”。 是的,监控系统就像我们的车载监控,平时可能用不到,一用到的时候就是“大…

关于 Kubernetes中集群统一日志管理方案(Elasticsearch+Filebeat+Kibana+Metricbeat)搭建的一些笔记

写在前面 学习K8s,所以整理分享给小伙伴这里要说明的是:这一套方案太吃硬件了,需要高配的本才能跑起来我的16G运存,集群用三个虚机部署的,工作节点都是3核5G的配置折腾了两天没有跑起来,后来放弃了,查了下&…

metricbeat实现容器监控

Metricbeat是elastic下的项目,在5.1及之后的版本中支持对Docker的监控,需与EK配合使用能在界面上显示,也可直接将数据导入kafka中。 -1.安装 使用版本: elasticsearch-5.2.0-1.noarch(用于输出显示) kibana-5.2.0-…

Centos 7.9 安装 ELK8.1.0+MetricBeat

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 环境 一、前期准备: 1.下载ELKMetircBeat rpm包 2.CentOS 设置 二、安装Elasticsearch 1.安装rpm 2.配置Elasticsearch 修改配置档 开防火墙 设…

Storm Metric

storm从0.9.0开始,增加了指标统计框架,用来收集应用程序的特定指标,并将其输出到外部系统。 本文中采用的监听类是LoggingMetricsConsumer,统计指标值将输出到metric.log日志文件中。 当然也可以自定义监听类,只需要实…

Beats:如何启动 Metricbeat 中的 MySQL 模块 - query Metricset

在我做之前的教程 “Observability:Elastic Metrics 应用介绍”,我发现当我尝试启动 MySQL 模块中的 query metricset 会出现错误。之后我发现官方文档也缺少相应的资料。在今天的文章中,我将介绍如上启动这个 metricset。在使用这个 metrics…

Metricbeat源码分析

0X00 版本信息 Golang:1.16.8 Metricbeat:7.14 0X01 Metricbeat介绍 Metricbeat quick start: installation and configuration | Metricbeat Reference [7.14] | Elastichttps://www.elastic.co/guide/en/beats/metricbeat/7.14/metricbeat-install…

Elk-Metricbeat配置Tomcat的日志分析 (Metricbeat-part3)

1, 安装软件 Metricbeat安装 请参考之前的文档链接: Metricbeat 8.4.0 linux 安装(Metricbeat-part1)_yangkei的博客-CSDN博客Metricbeat 能够以一种轻量型的方式,输送各种系统和服务统计数据,从 CPU 到内存,从 Redis 到 Nginx…

Metricbeat config file metricbeat.yml must be owned by the user identifier (uid=0) or root

Linux 上修改呢metricbeat.yml的权限,启动的时候报错。查了下解决方案 记录下 https://www.elastic.co/guide/en/beats/libbeat/5.3/config-file-permissions.html#config-file-permissions 简而言之就是所有者必须是root,然后权限必须是0644 sudo c…

Elk-Metricbeat配置Nginx的日志分析 (Metricbeat-part2)

1 情况说明: Metricbeat的基本安装部分可以参考: Metricbeat 8.4.0 linux 安装(Metricbeat-part1)_yangkei的博客-CSDN博客 下面来聊聊如何通过elkmetricbeat来监控Nginx日志。 借用网上以为大师的图就是这样子 Metricbeat 采集 Nginx 指标_叶康铭的…

metricbeat收集elasticsearch、kibana监控数据

一、kibana 1、下载metricbeat并部署到kibana所在的服务器 2、禁用 Kibana 监控指标的默认集合,在kibana.yml文件中增加如下配置: monitoring.kibana.collection.enabled: false3、从控制台或命令行,在生产集群上设置xpack.monitoring.col…

ELK日志采集平台(四)---轻量级采集工具metricbeat

目录 一、安装metricbeat 二、与kibana数据可视化联用 logstash是负责采集数据的,是入口,流向为logstash-> ES->kibana,但是它的资源消耗很大,有时候没那么多内存给他占用,同时有些定制的采集指标logstash无法…

Metricbeat安装下载,nginx模块使用

目录 MetricbeatMetricbeat组成下载启动Metricbeat Modulesystem module配置内容 Nginx Module开启Nginx Module 配置nginx module测试 Metricbeat 定期收集操作系统或应用服务的指标数据存储到Elasticsearch中,进行实时分析 Metricbeat组成 Metricbeat有2部分组成…

metricbeat对接kafka

在监控系统中经常用到kafka来处理数据,上层平台会从kafka直接取数据进行分析,今天分享下metricbeat监控的数据如何输出到kafka中,并对各配置项进行详细说明。 metricbeat环境搭建点这里 kafka环境搭建点这里 -在metricbeat配置文件中配置o…

Beats:通过 Metricbeat 实现外部对 Elastic Stack 的监控

自 Elastic 7.5 发布开始,通过外部监控 Elastic Stack 已经全面实施。 可以通过 Metricbeat 模块监视 Elasticsearch,Kibana,Logstash,APM 服务器和 Beats。 使用外部收集,用户现在可以收集和发送其 Elastic Stack 的…

Metricbeat 的使用

目标 统计并展示系统的信息 cpu, 内存等 (当然metricbeat能收集的信息种类还很多) 前提 版本: 5.x已经安装了ELK (elasticsearch, logstash (可选), kibana)安装了x-pack (配置了对应的security)(可选&a…