Kafka 概述

Kafka

  • 为什么需要消息队列(MQ)
  • 使用消息队列的好处
    • (1)解耦
    • (2)可恢复性
    • (3)缓冲
    • (4)灵活性 & 峰值处理能力
    • (5)异步通信
  • 消息队列的两种模式
    • (1)点对点模式
    • (2)发布/订阅模式
  • Kafka 定义
  • Kafka 的特性
    • ●高吞吐量、低延迟
    • ●可扩展性
    • ●持久性、可靠性
    • ●容错性
    • ●高并发
  • kafka架构
  • filebeat+kafka数据流向

为什么需要消息队列(MQ)

主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。
我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队列常应用于异步处理,流量削峰,应用解耦,消息通讯等场景。

当前比较常见的 MQ 中间件有 ActiveMQ、RabbitMQ、RocketMQ、Kafka 等。

使用消息队列的好处

(1)解耦

允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

(2)可恢复性

系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

(3)缓冲

有助于控制和优化数据流经过系统的速度,解决生产消息和消费消息的处理速度不一致的情况。

(4)灵活性 & 峰值处理能力

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

(5)异步通信

很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

消息队列的两种模式

(1)点对点模式

(一对一,消费者主动拉取数据,消息收到后消息清除)

(2)发布/订阅模式

(一对多,又叫观察者模式,消费者消费数据之后不会清除消息)

发布/订阅模式是定义对象间一种一对多的依赖关系,使得每当一个对象(目标对象)的状态发生改变,则所有依赖于它的对象(观察者对象)都会得到通知并自动更新。

Kafka 定义

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

Kafka 的特性

●高吞吐量、低延迟

Kafka 每秒可以处理几十万条消息,它的延迟最低只有几毫秒。每个 topic 可以分多个 Partition,Consumer Group 对 Partition 进行消费操作,提高负载均衡能力和消费能力。

●可扩展性

kafka 集群支持热扩展

●持久性、可靠性

消息被持久化到本地磁盘,并且支持数据备份防止数据丢失

●容错性

允许集群中节点失败(多副本情况下,若副本数量为 n,则允许 n-1 个节点失败)

●高并发

支持数千个客户端同时读写

kafka架构

在这里插入图片描述

producer 生产者

副本 leader 领导者 follower 跟随者

consumer 消费者

borkers 服务器

partition 分区

topic 消息主题 或者表 或者键 存放 表和键的数据

replica 副本 有多个副本可以实现高可用 副本中有leader领导者 follwer 跟随者

leader 负责读写

follower 复制备份

kafka消息队列MQ 大数据实时处理 应用解耦 数据缓冲 流量晓峰 异步处理

发布/订阅模式(观察者模式,一对多,消费完不会清楚数据)

每个组只能有一个消费者分区

zookeeper负责监控寻找(offset记录信息)

filebeat+kafka数据流向

在这里插入图片描述

filebeat收集各个日志

到kafka

kafka传到logstash

logstash再给es(可以一台或多台)

传给kibana进行展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/86151.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Neo4j笔记-数据迁移(导出/导入)

这里先说明以下几点: Neo4j在4.0下版本默认的库名是:graph.db Neo4j在4.0上版本默认的库名是:neo4j.db 不管是Neo4j,还是Neo4j Desktop,都会在bin目录下有neo4j、neo4j-admin软件。在conf目录下,有neo4j.…

MySQL SUBSTRING_INDEX() 函数的详细介绍

MySQL SUBSTRING_INDEX() 从给定字符串中返回指定数量的分隔符出现之前的子字符串。 当指定数字为正数时从最终分隔符的左侧返回子字符串,当指定数字为负数时从最终分隔符的右侧返回子字符串。 如果指定的次数大于分隔符的出现次数,则返回的子字符串将…

【每日一题】1572. 矩阵对角线元素的和

【每日一题】1572. 矩阵对角线元素的和 1572. 矩阵对角线元素的和题目描述解题思路 1572. 矩阵对角线元素的和 题目描述 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1&a…

pycharm的Terminal中如何设置打开anaconda3的虚拟环境

在pycharm的File -> Settings -> Tools -> Terminal下面,如下图所示 修改为红框中内容,然后关闭终端在重新打开终端,即可看到anaconda3的虚拟环境就已经会被更新

数学建模(一)前继概念

课程推荐:数学建模老哥_哔哩哔哩_bilibili 目录 一、什么是数学建模? 二、数学建模的一般步骤 三、数学建模赛题类型 1.预测型 2. 评价类 3.机理分析类 4. 优化类 一、什么是数学建模? 数学建模是利用数学方法解决实际问题的一种实践。…

《Linux从练气到飞升》No.12 Linux进程概念

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的…

maven 删除下载失败的包

本文介绍了当Maven包报红时,使用删除相关文件的方法来解决该问题。文章详细说明了_remote.repositories、.lastUpdated和_maven.repositories文件的作用,以及如何使用命令行删除这些文件。这些方法可以帮助开发者解决Maven包报红的问题,确保项…

css-4:元素水平垂直居中的方法有哪些?如果元素不定宽高呢?

1、背景 在开发中,经常遇到这个问题,即让某个元素的内容在水平和垂直方向上都居中,内容不仅限于文字,可能是图片或其他元素。 居中是一个非常基础但又是非常重要的应用场景,实现居中的方法存在很多,可以将这…

go语言从0基础到安全项目开发实战

一.环境搭建并helloworld 搭建环境比较简单 1.1安装SDK 到以下链接下 Go下载 - Go语言中文网 - Golang中文社区 下载windows版本64位zip包 https://studygolang.com/dl/golang/go1.20.7.windows-amd64.zip 1.2配置环境变量 不配置的话就只能在bin目录下才能运行go命令 …

[保研/考研机试] 猫狗收容所 C++实现

题目描述: 输入: 第一个是n,它代表操作序列的次数。接下来是n行,每行有两个值m和t,分别代表题目中操作的两个元素。 输出: 按顺序输出收养动物的序列,编号之间以空格间隔。 源代码&#xff…

RabbitMQ在CentOS下的安装

RabbitMQ的版本是3.8.2 1.环境配置:CentOs 7.6以上版本,我的版本是7.9,不要对yum换源,否则可能会安装失败。 echo "export LC_ALLen_US.UTF-8" >> /etc/profile source /etc/profile 以上命令,是…

ESP 32 蓝牙虚拟键盘链接笔记本电脑的键值问题

由于打算利用esp32 通过蓝牙链接电脑后实现一些特俗的键盘功能,所以就折腾了一下,折腾最耗费时间的却是键值问题,让一个20多年的老司机重新补充了知识 过程曲折就不说了,直接说结果。 我们通过网络搜索获取的键值和蓝牙模拟键盘传…

谷粒商城第十一天-完善商品分组(主要添上关联属性)

目录 一、总述 二、前端部分 2.1 改良前端获取分组列表接口及其调用 2.2 添加关联的一整套逻辑 三、后端部分 四、总结 一、总述 前端部分和之前的商品品牌添加分类差不多。 也是修改一下前端的分页获取列表的接口,还有就是加上关联的那一套逻辑,…

广州华锐互动:VR3D课程在线教育平台为职业院校提供沉浸式的虚拟现实学习体验

随着科技的飞速发展,虚拟现实(VR)和增强现实(AR)技术已经逐渐渗透到我们生活的各个领域。其中,VR3D课程在线教育平台作为一种新兴的教育方式,正在逐渐改变我们的学习方式和体验。本文将详细介绍VR3D课程在线教育平台的应用前景及特点。 VR3D课…

新一代构建工具 maven-mvnd

新一代构建工具 maven-mvnd mvnd的前世今生下载安装 mvndIDEA集成 mvnd的前世今生 maven 作为一代经典的构建工具,流行了很多年,知道现在依然是大部分Java项目的构建工具的首选;但随着项目复杂度提高,代码量及依赖库的增多使得ma…

使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

一、说明 我将把这个系列分成 3 或 4 篇文章。在本系列的最后,您将了解使用flask构建 restful API 是多么容易。在本文中,我们将设置环境并创建将显示“Hello World”的终结点。 我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文…

java 自定义xss校验注解实现

自定义一个注解Xss。名字随意 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targe…

AIGC技术揭秘:探索火热背后的原因与案例

文章目录 什么是AIGC技术?为何AIGC技术如此火热?1. 提高效率与创造力的完美结合2. 拓展应用领域,创造商业价值3. 推动技术创新和发展 AIGC技术案例解析1. 艺术创作:生成独特的艺术作品2. 内容创作:实时生成各类内容3. …

Ajax 笔记(四)—— Ajax 进阶

笔记目录 4. Ajax 进阶4.1 同步代码和异步代码4.2 回调函数地狱4.2.1 解决方法一:Promise 链式调用4.2.2 解决方法二:async 函数和 await 4.3 Promise.all 静态方法4.4 事件循环4.4.1 事件循环4.4.2 宏任务与微任务 4.5 案例4.5.1 案例一-商品分类4.5.2 …

Python ImportError报错:No module named ‘numpy.core_multiarray_umath‘

文章目录 背景Import 报错是版本问题吗?删除pandas在Visual Studio中设置Python 环境为什么要在Visual Studio IDE下继续安装Python package在Visual Studio安装numpy和pandasPYTHONPATHDebug模式下继续报错配置Release 工程优化不便之处 1不便之处 2后续 参考 背景…