当前位置: 首页 > news >正文

使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent

作者:来自 Elastic Nima Rezainia

Confluent Cloud 用户现在可以使用更新后的 Elasticsearch Sink Connector 与 Elastic Agent 和 Elastic Integrations 来实现完全托管且高度可扩展的数据提取架构。

Elastic 和 Confluent 是关键的技术合作伙伴,我们很高兴宣布对该合作伙伴关系进行新的投资。Confluent 的 Kafka 是许多企业摄取架构的关键组件,它确保客户能够保证将关键的可观察性和安全性数据传输到他们的 Elasticsearch 集群中。我们一直致力于改进我们产品的结合方式。借助 Elastic Agent 的新 Kafka 输出和 Confluent 新改进的 Elasticsearch Sink Connectors,无缝地从边缘收集数据、通过 Kafka 将其传输到 Elasticsearch 集群从未如此简单。

在这篇博客中,我们研究了一种将 Elastic Agent 与 Confluent Cloud 的 Kafka 产品集成的简单方法,以减轻摄取业务关键数据的运营负担。

Elastic Agent 和 Confluent Cloud 的优势

Elastic Agent 和 Confluent Cloud 的更新版 Elasticsearch Sink connector 结合使用时,可为各种规模的组织提供无数优势。这种组合解决方案可以灵活地以高效且有弹性的方式处理任何类型的数据采集工作负载。

完全托管

Elastic Cloud Serverless 和 Confluent Cloud 结合使用时,可为用户提供完全托管的服务。这使得部署和采集几乎无限量的数据变得毫不费力,而无需担心节点、集群或扩展。

完全支持 Elastic 集成

300 多个 Elastic 集成中的任何一个都完全支持通过 Kafka 发送数据。在这篇博文中,我们概述了如何在两个平台之间建立连接。这可确保你能从我们在内置警报、SLO、AI 助手等方面的投资中受益。

解耦架构

Kafka 充当数据源(如 Elastic Agent 和 Logstash)和 Elasticsearch 之间的弹性缓冲区,将数据生产者与消费者解耦。这可以显著降低总体拥有成本,因为你可以根据典型的数据摄取量(而不是最大摄取量)调整 Elasticsearch 集群的大小。它还可以确保系统在数据量激增时具有弹性。

完全控制你的数据

借助我们新的 “Output per Integration - 每个集成输出” 功能,客户现在可以使用同一代理将不同的数据发送到不同的目的地。客户可以轻松地将安全日志直接发送到 Confluent Cloud/Kafka,这可以提供交付保证,同时将不太重要的应用程序日志和系统指标直接发送到 Elasticsearch。

部署参考架构

在以下部分中,我们将引导你了解使用 Confluent Cloud 的 Elasticsearch Sink Connector 将 Confluent Kafka 与 Elastic Agent 和 Elasticsearch 集成的方法之一。与任何流式传输和数据收集技术一样,根据特定用例,可以通过多种方式配置管道。这篇博文将重点介绍一个简单的架构,可以将其用作更复杂部署的起点。

该架构的一些亮点包括:

  • Elastic Agents 上的动态 Kafka 主题选择
  • Elasticsearch Sink Connectors,用于从 Confluent Kafka 到 Elasticsearch 的完全托管传输
  • 利用 Elastic 的 300 多个集成处理数据


先决条件

在开始之前,请确保你在 Confluent Cloud 中部署了 Kafka 集群,在 Elastic Cloud 中部署了 Elasticsearch 集群或项目,并安装并注册了 Elastic Agent。

为 Elastic Agent 配置 Confluent Cloud Kafka 集群

导航到 Confluent Cloud 中的 Kafka 集群,然后选择 “Cluster Settings”。找到并记下 Bootstrap Server 地址,稍后在 Fleet 中创建 Kafka 输出时我们将需要此值。

导航到左侧导航菜单中的主题并创建两个主题:

  • 名为 logs 的主题
  • 名为 metrics 的主题

接下来,导航到左侧导航菜单中的 API Keys:

  1. 单击 + 添加 API Key
  2. 选择 Service Account  API key type
  3. 为此 API Key 提供一个有意义的名称
  4. 授予 metrics 和 logs 主题的密钥写入权限
  5. 创建密钥

请记录提供的 Key 和 Secret,我们稍后在 Fleet 中配置 Kafka 输出时会用到它们。

配置 Elasticsearch 和 Elastic Agent

在本节中,我们将配置 Elastic Agent 以将数据发送到 Confluent Cloud 的 Kafka 集群,并将配置 Elasticsearch 以便它可以从 Confluent Cloud Elasticsearch Sink Connector 接收数据。

配置 Elastic Agent 以将数据发送到 Confluent Cloud

Elastic Fleet 简化了向 Kafka 和 Confluent Cloud 发送数据的过程。使用 Elastic Agent,可以轻松将 Kafka “输出” 附加到来自代理的所有数据,也可以将其仅应用于来自特定数据源的数据。

在左侧导航中找到 Fleet,单击 “Settings” 选项卡。在 “Settings” 选项卡上,找到 “Output” 部分,然后单击 “dd Output”。

执行以下步骤来配置新的 Kafka output:

  • 为 output 提供 Name
  • 将 Type 设置为 Kafka
  • 使用我们之前记下的 Bootstrap Server 地址填充主机字段。
  • 在身份验证下,使用 API 密钥填充用户名,使用我们之前记下的密码填充密码

  • 在 Topics 下,选择 Dynamic Topic,并将 Topic from field 设置为 data_stream.type

  • 单击 “Save and apply settings”

接下来,我们将导航到 Fleet 中的 “Agent Policies” 选项卡,然后单击以编辑我们要将 Kafka 输出附加到的代理策略。打开代理策略后,单击 “Settings” 选项卡,然后将 Output for integrations 和 Output for agent monitoring 更改为我们刚刚创建的 Kafka 输出。

为每个 Elastic 集成选择一个输出:要设置用于特定数据源的 Kafka 输出,请参阅集成级输出文档。

关于主题选择的说明:data_stream.type 字段是一个保留字段,如果我们发送的数据是日志,Elastic Agent 会自动将其设置为 logs,如果我们发送的数据是指标,则设置为 metrics。使用 data_stream.type 启用 Dynamic Topic 选择将导致 Elastic Agent 自动将指标路由到 metrics 主题,并将日志路由到 logs 主题。有关主题选择的信息,请参阅 Kafka 输出的主题设置文档。

在 Elasticsearch 中配置发布端点

接下来,我们将为 Confluent Cloud Sink Connector 设置两个发布端点(数据流),以便在将文档发布到 Elasticsearch 时使用:

  • 我们将创建一个数据流 logs-kafka.reroute-default 用于处理 logs
  • 我们将创建一个数据流 metrics-kafka.reroute-default 用于处理 metrics

如果我们让这些数据流中的数据保持原样,数据虽然可用,但我们会发现数据未经解析且缺乏重要的丰富内容。因此,我们还将创建两个索引模板和两个摄取管道,以确保数据由我们的 Elastic Integrations 处理。

创建 Elasticsearch 索引模板和摄取管道

以下步骤使用 Kibana 中的 Dev Tools,但所有这些步骤都可以通过 REST API 或使用 Stack Management 中的相关用户界面完成。

首先,我们将创建用于处理 logs 的索引模板和摄取管道:

PUT _index_template/logs-kafka.reroute
{"template": {"settings": {"index.default_pipeline": "logs-kafka.reroute"}},"index_patterns": ["logs-kafka.reroute-default"],"data_stream": {}
}
PUT _ingest/pipeline/logs-kafka.reroute
{"processors": [{"reroute": {"dataset": ["{{data_stream.dataset}}"],"namespace": ["{{data_stream.namespace}}"]}}]
}

接下来,我们将创建用于处理 metrics 的索引模板和提取管道:

PUT _index_template/metrics-kafka.reroute
{"template": {"settings": {"index.default_pipeline": "metrics-kafka.reroute"}},"index_patterns": ["metrics-kafka.reroute-default"],"data_stream": {}
}
PUT _ingest/pipeline/metrics-kafka.reroute
{"processors": [{"reroute": {"dataset": ["{{data_stream.dataset}}"],"namespace": ["{{data_stream.namespace}}"]}}]
}

关于 rerouting 的说明:下面是一个实际示例,其中与 Linux 网络指标相关的文档将首先进入 metrics-kafka.reroute-default,然后此 Ingest Pipeline 将检查该文档并发现 data_stream.dataset 设置为 system.network,data_stream.namespace 设置为 default。它将使用这些值将文档从 metrics-kafka.reroute-default 重新路由到 metrics-system.network-default,然后由系统集成进行处理。

配置 Confluent Cloud Elasticsearch Sink 连接器

现在是时候配置 Confluent Cloud Elasticsearch Sink 连接器了。我们将执行以下步骤两次并创建两个单独的连接器,一个用于 logs 的连接器,一个用于 metrics 的连接器。如果所需的设置不同,我们将突出显示正确的值。

导航到 Confluent Cloud 中的 Kafka 集群,然后从左侧导航菜单中选择 Connectors。在 Connectors 页面上,从可用的连接器目录中选择 Elasticsearch Service Sink。

Confluent Cloud 为用户提供了配置连接器的简化工作流程。这里我们将逐步介绍该过程的每个步骤:

步骤 1:主题选择

首先,我们将根据要部署的连接器选择连接器将从中消费数据的主题:

  • 部署用于 logs 的 Elasticsearch Sink 连接器时,请选择 logs 主题。
  • 部署用于 metrics 的 Elasticsearch Sink 连接器时,请选择 metrics 主题。

步骤 2:Kafka 凭据

选择 KAFKA_API_KEY 作为集群身份验证模式。提供前面提到的 API Key 和 Secret

我们收集所需的 Confluent Cloud Cluster 信息。

步骤 3:身份验证

提供我们的 Elasticsearch 集群的 Elasticsearch Endpoint 地址作为连接 URI。连接用户和连接密码是 Elasticsearch 中帐户的身份验证信息,Elasticsearch Sink Connector 将使用这些信息将数据写入 Elasticsearch。

步骤 4:配置

在此步骤中,我们将 Input Kafka record value format 设置为 JSON。接下来,展开 Advanced Configuration。

  1. 我们将 Data Stream Dataset 设置为 kafka.reroute
  2. 我们将根据要部署的连接器设置 Data Stream Type:
    • 在为 logs 部署 Elasticsearch Sink 连接器时,我们将 Data Stream Type 设置为 logs
    • 在为 metrics 部署 Elasticsearch Sink 连接器时,我们将Data Stream Type 设置为 metrics
  3. 其他设置的正确值将取决于具体环境。

步骤 5:调整大小

在此步骤中,请注意 Confluent Cloud 为我们的部署提供了建议的最少任务数。遵循此处的建议是大多数部署的良好起点。

步骤 6:检查和启动

查看 Connector configuration 和 Connector pricing 部分,如果一切正常,则是时候单击 continue 并启动连接器了!连接器可能会报告为配置,但很快就会开始使用来自 Kafka 主题的数据并将其写入 Elasticsearch 集群。

你现在可以导航到 Kibana 中的发现并找到流入 Elasticsearch 的日志!还请查看 Confluent Cloud 为你的新 Elasticsearch Sink Connector 部署提供的实时指标。

如果你只部署了第一个 logs 接收器连接器,你现在可以重复上述步骤来部署第二个 metrics 接收器连接器。

享受完全托管的数据采集架构

如果你遵循上述步骤,那么恭喜你。你已成功:

  1. 配置 Elastic Agent 以将日志和指标发送到 Kafka 中的专用主题
  2. 在 Elasticsearch 中创建发布端点(数据流),专用于处理来自 Elasticsearch Sink Connector 的数据
  3. 配置托管 Elasticsearch Sink Connector 以使用来自多个主题的数据并将该数据发布到 Elasticsearch

接下来,你应该启用其他集成,部署更多 Elastic Agent,在 Kibana 中探索你的数据,并享受 Elastic Serverless 和 Confluent Cloud 完全托管的数据采集架构带来的好处!

原文:Deploying Elastic Agent with Confluent Cloud's Elasticsearch Connector — Elastic Observability Labs

相关文章:

使用 Confluent Cloud 的 Elasticsearch Connector 部署 Elastic Agent

作者:来自 Elastic Nima Rezainia Confluent Cloud 用户现在可以使用更新后的 Elasticsearch Sink Connector 与 Elastic Agent 和 Elastic Integrations 来实现完全托管且高度可扩展的数据提取架构。 Elastic 和 Confluent 是关键的技术合作伙伴,我们很…...

二叉树的最小深度力扣--111

目录 题目 思路 代码 题目 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出&#xff1…...

PySide(PyQT)进行SQLite数据库编辑和前端展示的基本操作

以SQLite数据库为例,学习数据库的基本操作,使用QSql模块查询、编辑数据并在前端展示。 SQLite数据库的基础知识: https://blog.csdn.net/xulibo5828/category_12785993.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId1278…...

ARM64平台Flutter环境搭建

ARM64平台Flutter环境搭建 Flutter简介问题背景搭建步骤1. 安装ARM64 Android Studio2. 安装Oracle的JDK3. 安装 Dart和 Flutter 开发插件4. 安装 Android SDK5. 安装 Flutter SDK6. 同意 Android 条款7. 运行 Flutter 示例项目8. 修正 aapt2 报错9. 修正 CMake 报错10. 修正 N…...

Linux系统编程:进程状态和进程优先级/nice

目录 一,相对于OS的进程状态 1.1运行状态 1.2阻塞状态 1.3挂起状态 二,并发执行与进程切换 2.1,CPU并发执行 2.2进程切换 三,Linux内核管理进程状态的方法 3.1查看进程状态 3.2R状态 3.3S状态 3.4D状态 3.5T状态 3.6X状态 3.7Z状态 3.8孤儿进程 四,进程优先级 …...

【算法】数论基础——唯一分解定理(算术基本定理)python

目录 定义进入正题热身训练实战演练总结 定义 唯一分解定理:也叫做算数基本定理: 任意一个大于1的整数N,都可以唯一分解为若干个质数的乘积 换句话说,任何大于1的整数n可以表示为: 例如: 30 2^1 * 3^1 * 5^1 100 2^2…...

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代,数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛,格式多样,常见的数据格式包括XML(可扩展标记语言)和JSON&a…...

性能优化案例:通过合理设置spark.shuffle.memoryFraction参数的值来优化PySpark程序的性能

在PySpark中,合理调整spark.shuffle.memoryFraction参数可以有效优化Shuffle阶段的性能,尤其是在存在大量磁盘溢出的场景下。 通过合理设置spark.shuffle.memoryFraction并结合其他优化手段,可显著减少Shuffle阶段的磁盘I/O,提升P…...

[C]基础9.深入理解指针(1)

博客主页:算法歌者本篇专栏:[C]您的支持,是我的创作动力。 文章目录 0、总结1、内存和地址1.1 内存1.2 理解编址 2、指针变量和地址2.1 取地址操作符(&)2.2 指针变量2.3 解引用操作符(*)2.4…...

网络模型简介:OSI七层模型与TCP/IP模型

计算机网络是现代信息社会的基石,而网络通信的基础在于理解网络模型。网络模型是对通信过程的抽象,它帮助我们理解数据从源到目的地的传输过程。常见的网络模型有 OSI 七层模型 和 TCP/IP 模型,这两种模型在理论和实践中都起着重要作用。 一、…...

第100+35步 ChatGPT学习:时间序列EMD-ARIMA-RF模型 vol. 2

基于Python 3.9版本演示 一、写在前面 上一节,我们学了EMD-ARIMA-RF模型去做预测。 这一节开始,我们尝试使用多项式回归矫正。 二、EMD&RF-ARIMA组合策略 该组合策略主要是将传统的经验模态分解(EMD)方法和现代的机器学习技…...

Adobe的AI生成3D数字人框架:从自拍到生动的3D化身

一、引言 随着人工智能技术的发展,我们见证了越来越多创新工具的出现,这些工具使得图像处理和视频编辑变得更加智能与高效。Adobe作为全球领先的创意软件公司,最近推出了一项令人瞩目的新技术——一个能够将普通的二维自拍照转换成栩栩如生的三维(3D)数字人的框架。这项技…...

2025美赛数学建模MCM/ICM选题建议与分析,思路+模型+代码

2025美赛数学建模MCM/ICM选题建议与分析,思路模型代码,详细更新见文末名片 一、问题A:测试时间:楼梯的恒定磨损(Archaeological Modeling) 适合专业:考古学、历史学、数学、机械工程 难度:中等…...

golang中的包管理-上--简介

‌Go语言中的包(Package)是组织和管理代码的基本单元,通过合理地使用包,可以提高代码的复用性、可维护性和可读性。 包的基本概念和定义 在Go语言中,每个源代码文件都属于一个包。包的声明位于文件的最顶部&#xff…...

深入了解 HTTP 头部中的 Accept-Encoding:gzip、deflate、br、zstd

在现代Web开发中,性能优化是至关重要的一部分。HTTP协议中的Accept-Encoding头部正是为性能提升提供了一个非常有效的方式,它告知服务器客户端能够理解并接收哪些压缩算法的响应内容。在这篇博客中,我们将详细探讨Accept-Encoding头部的作用&…...

QModbusTCPClient 服务器断开引起的程序崩溃

最近使用QModbusTCPClient 与一套设备通信,有一个QTimer频繁的通过读取设备寄存器。程序运行良好,但是有个问题:正常进行中设备断电了,整个程序都会崩溃。解决过程如下: 1.失败方案一 在QModbusTCPClient的errorOccu…...

Unity|小游戏复刻|见缝插针2(C#)

控制针的运动 新建一个Pin脚本 将Pin脚本拖到针Pin的下面 保存代码 using UnityEngine;public class Pin : MonoBehaviour {public float speed 5;private bool isFly false;private bool isReach false;private Transform startPosition;// Start is called once bef…...

数据结构——堆(C语言)

基本概念: 1、完全二叉树:若二叉树的深度为h,则除第h层外,其他层的结点全部达到最大值,且第h层的所有结点都集中在左子树。 2、满二叉树:满二叉树是一种特殊的的完全二叉树,所有层的结点都是最…...

ML基础2-python中的可视化1:matplotlib

承接我的上一篇博客: https://blog.csdn.net/weixin_62528784/article/details/145329298?spm1001.2014.3001.5501 在机器学习的过程中,我们需要掌握大量的Python包,常用的有pandas和numpy这些基本数据管理的包(在后续更新中我会讲解)与mat…...

SpringBoot--基本使用(配置、整合SpringMVC、Druid、Mybatis、基础特性)

这里写目录标题 一.介绍1.为什么依赖不需要写版本?2.启动器(Starter)是何方神圣?3.SpringBootApplication注解的功效?4.启动源码5.如何学好SpringBoot 二.SpringBoot3配置文件2.1属性配置文件使用2.2 YAML配置文件使用2.3 YAML配置文件使用2.…...

9.C++文件与流

C文件与流 在 C 中,文件和流是用于处理输入输出操作的重要概念,以下是关于它们的详细讲解: 流的概念 定义:流是一种抽象概念,它代表了数据的序列。在 C 中,流可以是输入流(从外部源如文件或键…...

CSRF 跨站请求伪造漏洞

原理 当一个网站A使用Cookie,存储Session或Token来用于单点登录和权限操作时。浏览器将Cookie存储到浏览器中。当用户在访问另一个网站V时,黑客可以通过伪造表单,向网站A发送修改重要信息(如密码)、支付等操作,浏览器会自动携带C…...

从ABCD谈人工智能对软件开发的影响(2)

接“造词圈子割韭菜”-从ABCD谈人工智能对软件开发的影响(1) (六)分步解析之二:组织价值(业务用例图) 这一步本来建模难度也只有,AI的助力分数可以做到30分。 ★很多领域驱动设计…...

我谈《概率论与数理统计》的知识体系

学习《概率论与数理统计》二十多年后,在廖老师的指导下,才厘清了各章之间的关系。首先,这是两个学科综合的一门课程,这一门课程中还有术语冲突的问题。这一门课程一条线两个分支,脉络很清晰。 概率论与统计学 概率论…...

第 10 课 Python 内置函数

1. 什么是内置函数 Python解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能就是内置函数。Python解释器启动以后,内置函数也生效了,可以直接拿来使用。 内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是…...

MySQL中的读锁与写锁:概念与作用深度剖析

MySQL中的读锁与写锁:概念与作用深度剖析 在MySQL数据库的并发控制机制中,读锁和写锁起着至关重要的作用。它们是确保数据在多用户环境下能够正确、安全地被访问和修改的关键工具。 一、读锁(共享锁)概念 读锁,也称为…...

Kotlin Bytedeco OpenCV 图像图像50 仿射变换 图像缩放

Kotlin Bytedeco OpenCV 图像图像50 仿射变换 图像缩放 1 添加依赖2 测试代码3 测试结果 在OpenCV中,仿射变换(Affine Transformation)和透视变换(Perspective Transformation)是两种常用的图像几何变换方法。 变换方…...

导出地图为图像文件

使用函数可以将地图或布局视图的内容导出为图像文件. 操作方法: 1.打开目标地图文档 2.导入arcpy.mapping模块 import arcpy.mapping as mapping 3.引用当前活动地图文档,把该引用赋值给变量 mxd mapping.MapDocument() 4.获取地图文档中的数据框列表,查找目标数据框,并…...

【Linux】命令为桥,存在为岸,穿越虚拟世界的哲学之道

文章目录 Linux基础入门:探索操作系统的内核与命令一、Linux背景与发展历史1.1 Linux的起源与发展1.2 Linux与Windows的对比 二、Linux的常用命令2.1 ls命令 - "List"(列出文件)2.2 pwd命令 - "Print Working Directory"&#xff08…...

如何在gitee/github上面搭建obsidian的图床

在搭建图床之前我们需要知道图床是一个什么东西,图床顾名思义就是存放图片的地方,那么我们为什么要搭建图床呢?因为我们在写博客的时候,很多同学都是在本地使用typora或者是obsidian进行markdown语法的文章的书写,文件格式通常都是…...

【DIY小记】减肥10kg保持半年的经验分享

作为程序员,脑力劳动者,保持一个健康的身体,是非常重要的。回顾24年自己取得的结果,一个比较亮眼的就是减肥减了10kg,到达了一个比较健康的体重,保持了半年没有反弹,当然到现在也依然在保持。今…...

[STM32 - 野火] - - - 固件库学习笔记 - - -十一.电源管理系统

一、电源管理系统简介 电源管理系统是STM32硬件设计和系统运行的基础,它不仅为芯片本身提供稳定的电源,还通过多种电源管理功能优化功耗、延长电池寿命,并确保系统的可靠性和稳定性。 二、电源监控器 作用:保证STM32芯片工作在…...

C# 探秘:PDFiumCore 开启PDF读取魔法之旅

一、引言 在当今数字化时代,PDF 文件就像一个个神秘的宝盒,里面装满了各种信息。无论是项目文档、学术论文还是产品说明书,PDF 格式凭借其良好的兼容性和稳定性,成为了信息传递的重要载体。想象一下,你接到一个紧急任…...

计算机网络-运输层

重点内容: 运输层 是整个网络体系结构中的关键层次之一。一定要弄清以下一些重要概念: (1) 运输层为相互通信的应用进程提供逻辑通信。 (2) 端口和套接字的意义。 (3) 无连接的 UDP 的特点。 (4) 面向连接的 TCP 的特点。 (5) 在不可靠的网…...

TLF35584 基本介绍

1 概述 1)多电压电源芯片,包含6路输出电压。 LDO_Com:低降后调节器 5V/200mA 通信电源。LDO_C :低降后调节器 5V/600mA (TLF35584xxVS1)/3.3 V/600mA (TLF35584xxVS2) uC电源。Volt_Ref :参考电压5.0 V /- 1%/150mA …...

【Python】第四弹---深入理解Python控制流:从顺序到循环的全面解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】【Python】 目录 1、顺序语句 2、条件语句 2.1、什么是条件语句 2.2、语法格式 2.3、缩进和代码块 2.4、练习 2.5、空…...

PBFT算法

在我的博客中对于RAFT算法也有详细的介绍,raft算法包含三种角色,分别是:跟随者( follower ),候选人(candidate )和领导者( leader )。集群中的一个节点在某一…...

软件过程模型

软件过程概念 软件生命周期 软件过程 在工作产品构建过程中,所需完成的工作活动,动作和任务的集合。 软件过程模型 软件过程评估 能力成熟度模型(CMM) 传统软件过程模型 瀑布模型(第一个软件过程模型&#xff…...

【Ubuntu】安装SSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 …...

代码随想录算法【Day31】

Day31 56. 合并区间 class Solution { public://按照左边界&#xff0c;从小到大排序static bool cmp(const vector<int>& a, const vector<int>& b){return a[0] < b[0];} ​vector<vector<int>> merge(vector<vector<int>>…...

Apache Tomcat文件包含漏洞复现(详细教程)

1.漏洞原理 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;其安装后会默认开启ajp连接器&#xff0c;方便与其他web服务器通过ajp协议进行交互。属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发…...

C#高级:常用的扩展方法大全

1.String public static class StringExtensions {/// <summary>/// 字符串转List&#xff08;中逗 英逗分隔&#xff09;/// </summary>public static List<string> SplitCommaToList(this string data){if (string.IsNullOrEmpty(data)){return new List&…...

麒麟操作系统基础知识保姆级教程(二十一)进入单用户模式

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 在咱们运维工作中&#xff0c;服务器的密码长度&#xff0c;密码复杂度&#xff0c;修改时间&#xff0c;超时时间&#xff0c;用户权限管理&#xff0c;root直接远程连接&#xff0c;普通用户su到r…...

基于C语言的数组从入门到精通

简介:本篇文章主要介绍了一维数组,二维数组,字符数组的定义,数组的应用,数组的核心代码解析,适用于0基础的初学者. C语言数组 1.一维数组 1.1定义 1.1.1声明 语法:数据类型 数组名[数组大小];示例:int arr[5]; 1.1.2初始化 a.静态初始化 完全初始化&#xff1a;int arr[5] {1…...

CLOUDFLARE代理请求重定向你太多次

现象 使用CLOUDFLARE代理前请求正常&#xff0c;使用CLOUDFLARE代理请求后出现 原因分析 以下是我的猜测&#xff0c;在默认情况下 CLOUDFLARE代理&#xff0c;可能是直接请求我们服务器的IP&#xff0c;比如&#xff1a;http://1.1.1.1 而不是通过域名的方式&#xff08;如…...

算法随笔_21:字符的最短距离

上一篇:算法随笔_20:区间子数组个数 -CSDN博客 题目描述如下: 给你一个字符串 s 和一个字符 c &#xff0c;且 c 是 s 中出现过的字符。 返回一个整数数组 answer &#xff0c;其中 answer.length s.length 且 answer[i] 是 s 中从下标 i 到离它 最近 的字符 c 的 距离 。 …...

第19个项目:蛇年特别版贪吃蛇H5小游戏

下载地址:https://download.csdn.net/download/mosquito_lover1/90308956 游戏玩法: 点击"开始游戏"按钮开始 使用键盘方向键控制蛇的移动 吃到红色食物可以得分 撞到墙壁或自己会结束游戏 核心源码: class SnakeGame { constructor() { this.canvas = docum…...

Vue3 30天精进之旅:Day01 - 初识Vue.js的奇妙世界

引言 在前端开发领域&#xff0c;Vue.js是一款极具人气的JavaScript框架。它以其简单易用、灵活高效的特性&#xff0c;吸引了大量开发者。本文是“Vue 3之30天系列学习”的第一篇博客&#xff0c;旨在帮助大家快速了解Vue.js的基本概念和核心特性&#xff0c;为后续的深入学习…...

单值二叉树(C语言详解版)

一、摘要 今天要讲的是leetcode单值二叉树&#xff0c;这里用到的C语言&#xff0c;主要提供的是思路&#xff0c;大家看了我的思路之后可以点击链接自己试一下。 二、题目简介 如果二叉树每个节点都具有相同的值&#xff0c;那么该二叉树就是单值二叉树。 只有给定的树是单…...

贵州端午黔粽探源:贵州味道与黔味文化与糯米的融合?

黔粽的由来? 黔粽的贵州味道?探索贵州“黔味文化”找寻答案! 黔粽的特色由来与贵州味道 贵州粽,简称黔粽。黔粽的主要特色是“酸辣”,以其独特的“酸辣”口味和地域特色,与浙粽、京粽、粤粽、川粽、云粽、闽粽、台湾粽并列为“全国八大粽子派别”之一,并与甜味粽、咸味粽共…...