常用知识点问答
kafka如何部署?
- 先说明kafka的版本
- 如果是 2.X 版本,则要先部署 3或5 个服务器的zookeeper集群,然后在每个zookeeper服务器上部署kafka应用。
- 如果是 3.X 版本,kafka不再依赖zookeeper,所以可以直接在java17的环境上部署 3或5 个服务器的kafka集群。
-
zookeeper在kafka集群中有什么作用?
- 管理集群元数据:Zookeeper负责存储Kafka的元数据,包括Broker列表、主题信息和分区信息
- Leader选举:当一个Kafka分区的Leader节点失效时,Zookeeper帮助选举新的Leader节点
- 配置管理:Zookeeper提供了Kafka的配置管理,确保各个节点的配置一致
- 集群成员管理:Zookeeper追踪Kafka集群中的所有Broker,并通知它们的状态变化
-
kafka如何保证数据的可靠性?
- kafka是通过 ack 应答机制来保证数据的可靠性。
- 在生产者配置文件producer.properties中设置ack应答机制参数 acks
- acks 参数值设置为
- 0,表示生产者不等待kafka确认就会继续发送下一条消息。此机制性能最高,但可靠性最低,当leader的broker故障可能会导致数据丢失
- 1(默认值),表示生产者会等待leader接收数据并确认后才会发送下一条数据。此机制性能其次,可靠性一般,当follower同步备份完成前leader故障可能会导致数据丢失
- -1或all,表示生产者需要等待所有的follower都同步备份完成并确认后才会发送下一条数据。此机制性能最低,可靠性最高。
kafka如何保证消息顺序?
- 分区级别顺序:Kafka保证分区(partition)内的消息是有序的,Producer在发送消息时指定分区
- 单Producer顺序:当同一Producer发送消息到同一分区时,消息的顺序能得到保证
- 有序消费:消费者在同一分区内读取消息时,能按发送顺序读取
-
kafka的消息堆积和消息并发发送性能低的问题原因,排查步骤和解决方案?
原因
- Broker处理能力不足
- 网络带宽瓶颈
- 磁盘I/O性能差
- 配置不合理
排查步骤
- 监控Kafka集群:使用Kafka自带的监控工具或Prometheus、Grafana等第三方工具。
- 检查Broker日志:查看Kafka Broker的日志文件,找出错误和警告信息。
- 查看Zookeeper状态:确保Zookeeper运行正常,没有延迟。
- 分析网络带宽:使用网络监控工具(如iftop、netstat)检查网络带宽是否饱和。
- 评估磁盘I/O:使用iostat等工具检查磁盘I/O情况。
解决方案
- 增加Broker节点,提高集群处理能力。
- 优化Producer和Consumer配置,如增大批量大小、压缩数据等。
- 优化Kafka Broker配置,如调整分区数、副本数等。
- 升级硬件资源,如使用更快的磁盘和网络设备。
ELK的各个组件的作用和工作原理?
- Logstash
- 负责采集日志数据,还可通过插件模块对日志数据进行过滤、格式化处理,再输出给ElasticSearch
- 支持多实例部署,由input、filter、output插件模块组成
- ElasticSearch
- 负责对日志数据进行分片、存储,并创建索引,方便全文检索
- 集群化部署,节点分三种类型:master/data/client;通过设置相同的集群名称cluster.name,并使用Zen Discovery发现模块实现单播列表中的节点发现
- Kibana
- 用于接入ElasticSearch的数据源,将日志数据进行图形化展示,方便用户通过浏览器查看、搜索、分析日志
- Filebeat
- 用于替代Logstash采集日志数据,优点:比Logstash更轻量,资源消耗更少
- Fluentd
- 也是Logstash的一种替代方案,可用于替代Logstash采集日志数据和过滤转换等功能,常用于收集K8S环境中的容器日志
- Kafka/Redis
- 作为消息队列MQ,实现流量销峰、缓冲、应用解耦等功能
工作原理
- 在所有需要收集日志的服务器上部署 Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
- Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
- Elasticsearch 对格式化后的数据进行索引和存储。
- Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示
-
ELK如何优化?
logstash优化
- 加大服务器内存和JVM堆内存
- 用多实例做负载均衡
- 使用filebeat替代logstash采集日志数据
elasticsearch优化
因为ES作为日志存储时的特性是:高并发写、读少、接受一定的延时、可容忍部分日志数据的丢失。所以ES会围绕以下几个方面进行优化:
1)对索引进行优化:优化fsync,适当加大刷盘间隔时间(index.translog.sync_interval,默认值为5s,可调整为30s或60s)
优化refresh,适当加大把内存数据写入Lucene的间隔时间(index.refresh_interval,默认值为1s,可调整为5s或10s)
优化merge,根据硬盘的性能适当调整merge的线程数(index.merge.scheduler.max_thread_count,默认值为max,可调整为1,设置为1可允许最多3个并发的merge线程数)
2)优化write线程池配置,减少拒绝任务的情况:修改ES配置文件elasticsearch.yml,设置write线程为 CPU核数+1
thread_pool:
write:
size: N #N为CPU核数+1
3)锁定内存,不让ES使用swap:swapoff -a ,关闭swap
修改内核参数 vm.swappiness=1,使系统尽量不使用swap
修改ES配置文件:bootstrap.memory_lock: true ,启动ES锁定内存
4)适当的减少索引的分片数、副本数
分片数:index.number_of_shards,默认值为5,索引大小较小时,可调整分片数为3
副本数:index.number_of_replicas,默认值为1,即每个索引会有一份额外的副本数据,对于日志数据不需要太高的安全性,有1个副本即可,所以可调整副本数为0
你们的生产环境中ElasticSearch群集部署了多少台节点?如何实现ES群集的节点发现?ES群集中有哪些类型的节点和其作用,以及如何分配各节点的数量?
### 生产环境中ElasticSearch集群部署节点数量
在生产环境中,Elasticsearch集群的部署节点数量和类型会根据具体的业务需求、数据量和查询负载来决定
### 如何实现ES集群的节点发现
Elasticsearch集群中的节点发现可以通过多种方法实现,以下是常用的方法:
1. **单播发现(Unicast Discovery)**:
配置静态的主节点列表,每个节点在启动时会通过这个列表找到其他主节点。适用于静态环境。
2. **多播发现(Multicast Discovery)**:
Elasticsearch支持多播发现,可以通过广播方式发现集群中的其他节点。但在生产环境中不建议使用多播,因为它在大规模网络中不可靠且难以调试。
3. **基于云服务的发现(Cloud Discovery)**:
使用云服务提供的API(如AWS、GCP)进行节点发现,适用于动态环境,能自动发现和加入集群。
### 节点类型及其作用
1. **主节点(Master Node)**:
- 负责管理集群状态和元数据。
- 进行分片的创建、删除和分配。
- 进行节点的添加和移除。
2. **数据节点(Data Node)**:
- 存储和管理数据。
- 执行数据相关的CRUD操作和搜索请求。
- 提供索引和查询的计算资源。
3. **协调节点(Coordinating Node)**:
- 处理客户端请求。
- 分发搜索请求到相应的数据节点并合并结果。
- 适用于减少数据节点的负载。
4. **冷数据节点(Cold Data Node)**:
- 存储冷数据,即不常访问的历史数据。
- 降低存储成本,适用于较便宜的存储设备。
5. **机器学习节点(ML Node)**:
- 运行机器学习任务。
- 进行数据分析和预测。
- 独立于数据节点以提高任务执行效率。
### 如何分配各节点的数量
- **主节点**:通常设置为3个,确保高可用性,避免单点故障。
- **数据节点**:根据数据量和查询负载进行分配,建议保持在10-20个之间,确保数据存储和查询的高效性。
- **协调节点**:根据查询请求的负载,设置2-4个,以提高查询性能。
- **冷数据节点**:根据历史数据的存储需求,设置3-5个,降低存储成本。
- **机器学习节点**:根据机器学习任务的复杂度和数量,设置2-3个,确保任务高效执行。
通过合理配置和管理Elasticsearch集群的节点类型和数量,可以有效提高集群的性能、稳定性和扩展性。
如何管理ES的索引?并举例
创建索引
curl -X PUT 'http://ES-IP:9200/<索引名>/<类型>/<ID>?pretty&pretty' \
-H 'content-Type: application/json' -d '{"键1":"值1","键2":"值2"}'
删除索引
curl -X DELETE 'http://ES-IP:9200/<索引名>'
查看索引配置
curl -X GET 'http://ES-IP:9200/<索引名>/_settings'
修改索引配置
curl -X PUT 'http://ES-IP:9200/<索引名>/_settings' \
-H 'content-Type: application/json' -d '{"键":"值"}'
创建索引别名
curl -X POST 'http://ES-IP:9200/_aliases' \
-H 'Content-Type: application/json' -d '{"actions":[{"add":{"index":"索引名","alias":"索引别名"}}]}'
删除索引别名
curl -X POST 'http://ES-IP:9200/_aliases' \
-H 'Content-Type: application/json' -d '{"actions":[{"remove":{"index":"索引名","alias":"索引别名"}}]}'
相关文章:

常用知识点问答
kafka如何部署? 先说明kafka的版本如果是 2.X 版本,则要先部署 3或5 个服务器的zookeeper集群,然后在每个zookeeper服务器上部署kafka应用。如果是 3.X 版本,kafka不再依赖zookeeper,所以可以直接在java17的环境上部署…...

paddlenlp cpu windows 下测试gpt
paddlenlp 安装python3.11版本 conda create -n python311 python3.11 激活python conda activate python311 安装paddlepaddle conda install paddlepaddle3.0.0b0 -c paddle pip install paddlenlp3.0.0b0 -U -i https://pypi.tuna.tsinghua.edu.cn/simple windows下…...

uboot的功能
uboot裸机程序,uboot的核心功能是启动内核 uboot启动流程 XIP设备: 1、硬件初始化 2、读flash上面的内核,拷贝进内存 3、启动内核 非XIP设备 1、BROM程序拷贝uboot到RAM 2、执行uboot 3、硬件初始化 4、读flash上面的内核,拷贝进…...

java导出word实现
参考:Poi-tl Documentation...

Flink 提交作业的方式
首先我进行了flink单机部署,个人建议不管是学习还是开发尽量不使用 然后开始了flink自带集群部署,部署在三台服务器上,资源管理由flink集群自己管理,然后为了解决集群的单点故障问题,使用zookeeper监听事件࿰…...

JVM系列 | 垃圾收集算法
JVM系列 | 垃圾收集算法 文章目录 前言如何判断对象已"死"?引用计数法可达性分析算法可达性分析2.0版 | 引用的增强对象的消亡过程回收方法区主要回收目标:回收操作 垃圾收集算法分代收集理论 与 跨代引用假说分代收集理论跨带引用假说 垃圾收…...

深入理解Spring Boot中的事件驱动架构
深入理解Spring Boot中的事件驱动架构 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 事件驱动架构在现代软件开发中越来越受欢迎,它能够提高系统的松耦合性和可扩展性。Sprin…...

Moldflow安装包下载:附网盘地址+详细教程步骤
如大家所了解的,Autodesk Moldflow仿真软件具有注塑成型仿真工具,能够帮助您验证和优化塑料零件、注塑模具和注塑成型流程。目前常用的版本有Moldflow 2019和Moldflow2023。 还没有获取Moldflow软件安装包资源的小伙伴,可以用百度云盘保存或下…...

2024辽宁省数学建模B题【钢铁产品质量优化】思路详解
2024 辽宁省大学数学建模竞赛试题 B 题 钢铁产品质量优化 由于连续退火工序中各阶段的工艺参数之间存在耦合性(加热炉的温度设定会影响后续均热与冷却温度的设定,以及带钢穿行速度),导致难以建立该工序的机理模型,从而…...

C++基础入门(上)
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 C基础入门(上) 收录于专栏【C语法基础】 本专栏旨在分享学习C的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. C发展历史 2. C版本…...

基于深度学习的情感分析
基于深度学习的情感分析是一种利用深度学习技术从文本数据中提取情感信息,判断文本的情感倾向(如正面、负面或中性)的方法。这项技术在市场营销、客户服务、社交媒体分析、产品评价和政治分析等领域有广泛应用。以下是对这一领域的系统介绍&a…...

mybatis 延迟加载
MyBatis的延迟加载(Lazy Loading)是一种优化技术,用于在需要时才加载关联对象或集合,从而提高性能和效率。以下是对MyBatis延迟加载的详细介绍: 延迟加载的基本概念 延迟加载是指在第一次访问对象的属性时才加载该对象…...

使用QT5.14.2开发族谱管理软件过程记录
目标缘由:出生在农村、学习了电脑技术,总有一个想法就是将老家传承下来的族谱录入电脑中,方便快速查询和长期保存。开始入手时候发现还挺有难度。 难点如下: 过去族谱纸质版书籍是民国时候印刷的、很多字都是繁体字、还有好些字…...

【QT】布局管理器
布局管理器 布局管理器1. 垂直布局2. 水平布局3. 网格布局4. 表单布局5. Spacer 布局管理器 之前使⽤ Qt 在界⾯上创建的控件, 都是通过 “绝对定位” 的⽅式来设定的;也就是每个控件所在的位置, 都需要计算坐标, 最终通过 setGeometry 或者 move ⽅式摆放过去。 …...

兼容问题---ios底部的安全距离css设置
在H5上适配安全区域:采用viewportenvconstant方案。 具体操作如下: 1. 需要将viewport设置为cover,env和constant才能生效。设置代码如下: <meta name"viewport" content"widthdevice-width,initial-scale1.…...

python JSON Lines (JSONL)的保存和读取;jsonl的数据保存和读取,大模型prompt文件保存常用格式
1. JSON Lines (JSONL)文件保存 将一个包含多个字典的列表保存为 JSON Lines (JSONL) 格式的文件,每个字典对应一个 JSONL 文件中的一行。以下是如何实现这一操作的 Python 代码 import json# 定义包含字典的列表 data [{"id": 1, "name": &qu…...

Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案
😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…...

ubuntu基于cmakelist的Qt工程,如何将图片打包进二进制程序
qt界面使用的图片打包进入二进制可执行程序,可以避免发布的软件,因为路径问题无法加载图片的问题。 以下步骤参考自百度AI. 步骤如下: 1.创建一个新的Qt资源文件(.qrc文件) 2.在*.qrc文件中添加图片路径 qrc文件使用…...

Spring的启动流程refresh方法、配置类解析流程@Component、@Configuration、@Import、@Bean
Spring的启动流程概述: 核心方法: refresh方法,作用就是实例化spring容器中的所有单例。 3步: 生成BeanFactory容器(有beanDefinition类信息和bean对象实例)生成BeanDefinition类信息生成bean对象实例 需…...

运算放大器(2)
(1)反向放大器 Vout(-R2/R1)*Vi 图一运放的同向端接地0V,反向端和同向端虚短,所以也是0V 反向输入端输入电阻很高,虚断,几乎没有电流注入和流出,那么R1和R2相当于是串联的,流过一个…...

智能优化算法之模拟退火算法SA
发展历史和算法思想 模拟退火算法(Simulated Annealing, SA)是一种基于热力学原理的随机优化算法,最早由 S. Kirkpatrick, C. D. Gelatt 和 M. P. Vecchi 于 1983 年提出。算法的灵感来自于固体物理学中的退火过程:通过加热和缓慢…...

同时用到,网页,java程序,数据库的web小应用
具体实现功能:通过网页传输添加用户的请求,需要通过JDBC来向 MySql 添加一个用户数据 第一步,部署所有需要用到的工具 IDEA(2021.1),Tomcat(9),谷歌浏览器,MySql,jdk(17) 第二步,创建java项目,提前部署数…...

星环科技推出语料开发工具TCS,重塑语料管理与应用新纪元
5月30-31日,2024向星力未来数据技术峰会期间,星环科技推出一款创新的语料开发工具——星环语料开发工具TCS(Transwarp Corpus Studio),旨在通过全面的语料生命周期管理,极大提升语料开发效率,助…...

【ARM】MDK安装ARM_compiler5无法打开安装程序
【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 在客户安装了最新版本的MDK5.37及后续更新版本,但原工程使用ARM_Compiler_5.06进行编译和调试,需安装ARM_Compiler_5.06的编译器版本,但在解压缩的过程中后续无法打开ARM_Compiler…...

PHP文字ocr识别接口示例、人工智能的发展
全球在人工智能升级的大背景下,有一定规模的制造商开始大量部署人工智能机器人、系统,以此取代危险、简单和重复性的工作。各种人工智能技术的迅猛发展,正在驱动各行业就业市场发现变革。 京东物流大家并不陌生,京东快递机器人在…...

【2024 全国青少年信息素养大赛复赛指南】算法创意实践挑战赛复赛、智能算法应用挑战赛复赛指南
目录 2024 全国青少年信息素养大赛算法创意实践挑战赛复赛指南 一、比赛内容 二、编程题作答说明 三、准备说明 四、进入复赛 五、设备检测 六、答题与交卷 全国青少年信息素养大赛智能算法应用挑战赛复赛指南 一、 比赛规则: 二、学生具体操作流程 三、 评判方法…...

构建自定义Tensorflow镜像时用到的链接地址整理
NVIDIA相关: NVIDIA CUDA镜像的docker hub:https://hub.docker.com/r/nvidia/cuda/tags?page&page_size&ordering&name12.4.1NVIDIA 构建的Tensorflow镜像包:https://docs.nvidia.com/deeplearning/frameworks/tensorflow-rele…...

C++——二叉搜索树的实现
1、二叉搜索树的概念 二叉搜索树又叫做二叉排序树,他或者是一棵空树,或者具有以下性质: 若他的左子树不为空,则左子树的所有节点的值都小于根节点的值, 若他的右子树不为空,则右子树的所有节点的值都大于…...

【AppScan】安装教程 AppScan v10 Web应用安全测试工具(附安装包)零基础入门到精通,收藏这一篇就够了
获取方式及安装教程下滑至文章底部查看 此软件“仅限学习交流,不能用于商业用途”,如用于商业用途,请到官方购买正版软件,追究法律责任与本平台无关! 配置要求 操作系统:64位 Win10、Win8、Win7 软件介绍 IBM AppScan是一款非常好用…...

Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】
一、项目简介 本项目是一套基于SSM框架实现的中小型企业财务管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…...