一、Kafka入门

一、消息中间件

1、为什么使用消息中间件?

异步
解耦
削峰填谷

2、异步

3、解耦

异步处理使整个数据操作流程解耦,如果短信服务或者积分服务异常,不影响前面重要的功能。

面试问题点:

所以尽量将不重要的服务放到下游,且不要产生依赖关系,如果下游服务产生耦合,那么这里的异步操作将失去意义。

4、削峰填谷

双十一秒杀、春节12306场景有流量洪峰,但是后端服务器短时间内无法处理大量请求,使用消息中间件可以缓存涌入进来的大量请求,后端服务慢慢消费这些请求,尽最大努力处理请求。

也不用为了这些“偶然”场景去搭建更高性能的服务集群,节约成本。

5、开发解耦

使用MQ可以避免直接调用接口。
如果B还未提供接口,A也不必等着

二、Kafka安装与配置

1、下载

Apache Kafka

2、解压

上传到Linux虚拟机,我这里使用的是阿里云服务器。

3、使用zookeeper启动

进入kafka的bin目录,编写两个启动脚本,一个启动zookeeper,一个启动kafka。

# 启动zookeeper脚本
#!/bin/bash
source /root/kafka/kafka_2.13-3.8.0/bin/zookeeper-server-start.sh /root/kafka/kafka_2.13-3.8.0/config/zookeeper.properties &# 启动kafka脚本
#!/bin/bash
source /root/kafka/kafka_2.13-3.8.0/bin/kafka-server-start.sh /root/kafka/kafka_2.13-3.8.0/config/server.properties &

4、直接启动

1)获取kafka唯一标识

# 获取kafka唯一标识
sh kafka-storage.sh random-uuid

使用uuid方式启动kafka后,可以看到返回一个uuid,这个uuid是kafka集群中节点的唯一标识。

2)格式化存储目录

 sh kafka-storage.sh format -t 25Z4D7QnRBKhQlw-VcDd8A -c ../config/kraft/server.properties

把相关的存储目录格式化,保存数据文件。

 3)启动kafka

sh kafka-server-start.sh ../config/kraft/server.properties

三、kafka的命令

1、topic - 主题

kafka-topics.sh

# 创建主题
sh kafka-topics.sh --bootstrap-server localhost:9092 --create --topic allwe-topic --replication-factor 1 --partitions 8# 查询主题
sh kafka-topics.sh --bootstrap-server localhost:9092 --list# 查询主题明细
sh kafka-topics.sh --bootstrap-server localhost:9092 --describe

2、生产者

kafka-console-producer.sh

# 启动生产者 - 指定一个主题
sh kafka-console-producer.sh --broker-list localhost:9092 --topic allwe-topic

3、消费者

kafka-console-consumer.sh

# 启动消费者 - 指定一个主题
sh kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic allwe-topic --from-beginning --consumer.config ../config/consumer.properties

四、kafka中的基本概念

1、主题和分区

主题:表示一类消息。

分区:认为是一个文件。可以理解为一个分区就是一个队列。

分区的意义:提高消费的并发程度。由于消费消息相对于生产消息很慢,可以增加分区去提高消费的并发度,从而平衡生产和消费的速度。

2、消息和批次

kafka内部只存储byte数组,消费者取消息时也只是取byte数组。

对于很大的数据,kafka会将这个大的数据分为多段小的数据,分批次发送。

3、生产者和消费者

生产者生产消息

消费者消费消息

4、偏移量、消费者群组

消费者根据偏移量确定上次消费到哪了,拿着偏移量继续消费。

当启动多个消费者时,可以组成一个消费者群组。

在群组消费者群组场景下,每个分区的消息只能由一个消费者消费,但是一个消费者可以消费多个分区的消息。这样做的目的是确保消息的顺序。

5、kafka中生产和消费流程

6、kafka硬件配置的选择

磁盘:非常依赖磁盘

        吞吐量:存储消息的速度。

        容量:堆积消息的能力,只有达到一定条件才会删除过时文件。

网络:比较依赖网络,网络的吞吐量对kafka集群的影响很大。

内存:影响消费速度,需要将数据从磁盘拿到内存中进行消费。建议单独部署。

CPU:依赖性不强

7、配置文件

server.properties

# 配置为正数。在集群场景下,如果出现网络ip变化,有了这个参数就不用担心
broker.id=0   # 配置kafka的端口号
listeners=PLAINTEXT://localhost:9092# 网络请求线程数
num.network.threads=3# 数据存储目录
log.dirs=/tmp/kafka-logs# 创建主题时,默认分区数
num.partitions=1# 在重启或启动时,加载数据的线程数,建议和cpu核数对应
num.recovery.threads.per.data.dir=1# 配置日志保存时间,默认是168小时,过期自动清理
log.retention.hours=168# 如果以zookeeper启动,指定zookeeper的ip+port
zookeeper.connect=localhost:2181

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

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

相关文章

闲盒支持的组网方式和注意事项

1. 直连光猫拨号​ 通过光猫拨号,设备直连光猫的设备,需要对光猫开启UPNP并关闭DMZ 如果只接一个盒子,建议直接针对盒子IP开dmz。 2. 直连路由器​ 通过路由器拨号,设备直连路由器的设备,需要对路由器开启UPNP并关闭…

Spring Security学习

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程:封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

如何防止U盘资料被复制?这六个策略你值得牢记!

随着U盘广泛应用于企业和个人数据存储,如何防止U盘资料被非法复制和泄露成为企业信息安全的重要问题。 U盘作为便携的数据存储设备,虽然方便,但也带来了数据泄露的风险。 为了有效防止U盘资料被复制,以下六个策略能够帮助企业和个…

gradio交互式界面部署

gradio交互式界面部署 示例:http://xxxxx:1111/api/v1/my_model 为模型服务api,传入参数为: {"company": company,"name": name,"t_date": t_date,"amount": amount,"img1_path": img1_…

LeetCode Hot100 C++ 哈希 128.最长连续序列

128.最长连续序列 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续&#xff0…

怎么测试射频芯片质量的好坏?

无论是手机通信,还是卫星导航,射频芯片都是其核心组件之一。本文将探讨如何准确判断射频芯片的质量,以确保技术设备的稳定运行。 1. 外观检查 检查射频芯片是否有破损、引脚断裂、缺陷等。 2. 电气参数测试 对射频芯片的输入输出阻抗、功耗、…

RabbitMQ:交换机详解(Fanout交换机、Direct交换机、Topic交换机)

♥️作者:小宋1021 🤵‍♂️个人主页:小宋1021主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油&#xff01…

伊犁云计算22-1 rhel8 dhcp 配置

1 局域网搭建 2 yum 配置 这个参考前面 不说 3 dnf 安装dhcp 好我们废话不说开始安装。理论看书去 进入 dhcp.conf 配置 重启dhcpd 不能报错!!!! 我们在客户机上做测试 全局的dhcp关闭 很明显我们的客户机获取到192.16…

libreoffice word转pdf

一、准备一个word文件 运行: cd /root libreoffice --headless --convert-to pdf --outdir /root/output doc1.docx 发现中文乱码: 此时我们需要给linux 上添加中文字体: centos7 添加中文字体 再次运行正常: libreoffice --h…

如何使用Postman搞定带有token认证的接口实战!

现在许多项目都使用jwt来实现用户登录和数据权限,校验过用户的用户名和密码后,会向用户响应一段经过加密的token,在这段token中可能储存了数据权限等,在后期的访问中,需要携带这段token,后台解析这段token才…

基于SpringBoot社区疫情信息管理系统的设计和实现

文未可获取一份本项目的java源码和数据库参考。 选题的意义 保护好人民群众的基本安全,贯彻党的领导下中国一盘棋的基本准则。将病毒隔绝在外,信息系统的存在显得至关重要,应对新型冠状病毒肺炎疫情治理的实践背景。实时关注更新疫情动态&a…

支持K歌音箱方案应用的高性能 32 位蓝牙音频应用处理器-BP1048B2

DSP是一类嵌入式通用可编程微处理器,主要用于实现对信号的采集、识别、变换、增强、控制等算法处理,是各类嵌入式系统的“大脑”应用十分广泛。BP1048B2是一款高性能DSP音频数字信号处理器芯片,能实现多种音频功能如混响、均衡、滤波、反馈抑…

Vue 自定义指令实现权限控制

一. 引言 Vue.js 提供了一种简单、灵活的方式来创建交互式的用户界面。在 Vue.js 中,指令是一种特殊的属性,可以附加到 HTML 元素上以执行一些操作。我们可以使用自定义指令来实现各种功能,比如:权限控制、自动聚焦、拖动指令等等…

通过docker启动ElasticSearch后为ElasticSearch设置用户和密码

文章目录 0. 前言1. 没有设置用户名和密码的情况2. 为ElasticSearch设置用户名和密码2.1 进入 ElasticSearch 容器内部2.2 修改 ElasticSearch 的配置文件2.3 设置用户名和密码 3. 在 kibana 容器中指定访问 ElasticSearch 的用户名和密码4. 设置用户名和密码后的情况4.1 访问 …

[51单片机] 简单介绍 (一)

文章目录 1.单片机介绍2.单片机内部三大资源3.单片机最小系统4.STC89C52RC单片机 1.单片机介绍 兼容Intel的MCS-51体系架构的一系列单片机。 STC89C52:8K FLASH、512字节RAM、32个IO口、3个定时器、1个UART、8个中断源。 单片机简称MCU单片机内部集成了CPU、RAM、…

Maxim(美信)—MAX20079AATP/VY PMIC芯片详解

写在前面 本系列文章主要讲解Maxim(美信)—MAX20079AATP/VY PMIC芯片的相关知识,希望能帮助更多的同学认识和了解MAX20079AATP/VY芯片。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) PMIC是Power Management Int…

CC面试准备

半导体基础 半导体是介于导体和绝缘体之间的一种介质,在不同条件下表现出不同的导电性或者不导电特性, 电子半导体器件材料大部分为硅,锗等元素 本征半导体:完全不含杂质的纯净半导体,因为不含杂质,其中…

QT widgets 窗口缩放,自适应窗口大小进行布局

1. 窗口布局 2. 尺寸策略:扩展 Fixed (固定): 行为:控件的大小是固定的,不会随着窗口大小的变化而改变。它的大小由控件的 sizeHint() 返回的值决定。 适用场景:当你希望控件的大小保持不变,不随布局调整时使用&#x…

RAG+Agent人工智能平台:RAGflow实现GraphRA知识库问答,打造极致多模态问答与AI编排流体验

1.RAGflow简介 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。大语言模型 LLM 以及向量模型均支持配置。基于多路召回、融合重排序。提供易用的 API,可以轻松集成到各类企业系统。支持丰富的文件类型,包括 Word 文档、PPT、exc…

前端报错401 【已解决】

前端报错401 【已解决】 在前端开发中,HTTP状态码401(Unauthorized)是一个常见的错误,它表明用户试图访问受保护的资源,但未能提供有效的身份验证信息。这个错误不仅关乎用户体验,也直接关系到应用的安全性…