Nightingale 夜莺监控系统 - 部署篇(1)

Nightingale

Author:rab

官方文档:https://flashcat.cloud/docs


目录

    • 一、概述
    • 二、架构
      • 2.1 中心机房架构
      • 2.2 边缘下沉式混杂架构
    • 三、环境
    • 四、部署
      • 4.1 中心机房架构部署
        • 4.1.1 MySQL
        • 4.1.2 Redis
        • 4.1.3 Prometheus
        • 4.1.4 n9e
        • 4.1.5 Categraf
        • 4.1.6 验证
        • 4.1.7 配置数据源
      • 4.2 边缘下沉式混杂部署
        • 4.2.1 架构分析
        • 4.2.2 实验环境
        • 4.2.3 Prometheus
        • 4.2.4 n9e-edge
        • 4.2.5 Categraf
        • 4.2.6 验证
    • 总结


一、概述

以下为夜莺官方解释。

夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念,集数据采集、可视化、监控告警、数据分析于一体,与云原生生态紧密集成,提供开箱即用的企业级监控分析和告警能力。夜莺于 2020 年 3 月 20 日,在 github 上发布 v1 版本,已累计迭代 100 多个版本。

夜莺最初由滴滴开发和开源,并于 2022 年 5 月 11 日,捐赠予中国计算机学会开源发展委员会(CCF ODC),为 CCF ODC 成立后接受捐赠的第一个开源项目。夜莺的核心研发团队,也是 Open-Falcon 项目原核心研发人员。

二、架构

2.1 中心机房架构

image-20240108205038365

首先上图中间的飞鸟代表夜莺的核心进程 n9e (下文以 n9e 代替),它的集群方式非常简单只需部署多节点即可实现。

对于 n9e 来说,它本身依赖的存储有两个

  • Mysql : 存放配置类别信息,如用户,监控大盘,告警规则等
  • Redis : 存放访问令牌(JWT Token),心跳信息,如机器列表中 CPU、内存、时间偏移、核数、操作系统、CPU 架构等。

从 v6 版本开始,夜莺尝试转型为统一可观测性平台,n9e 不再仅支持接入时序数据源(Prometheus、Victoriametrics、M3DB、Thanos),也可以接入日志类数据源(Elasticsearch,Loki【预】),链路追踪数据源(Jaeger)。

这种中心架构还有一种就是:将 Prometheus、Thanos、VictoriaMetrics、M3DB、Mimir 等某个时序库作为夜莺的数据源,即只使用夜莺的告警管理功能。

image-20240108231154005

但是本次我们并不使用时序数据库“作为数据源”的这种方式,而是采用夜莺接收数据并存储到时序数据库的方式!

当然了,作为后端时序数据存储的 prometheus 也是可以在该架构中用作数据源,这样的话,n9e 不仅能展示数据,也能读取 prometheus 数据进行告警。

2.2 边缘下沉式混杂架构

image-20240108205100257

从 v6.0.0.ga.9 开始,合并了 n9e-alert、n9e-pushgw 模块为 n9e-edge,应对边缘机房的场景。n9e-edge 不依赖 mysql、redis,只依赖中心端的 n9e,所以 edge.toml 配置文件里,需要配置中心端 n9e 的地址。

三、环境

1、主机

OSVersionComment
Rocky Linux8.5/4.18.0-

2、服务

ServiceVersionComment
n9e6.7.2夜莺 - 服务端(数据展示)
Categraf0.3.45夜莺 - 客户端(数据采集)
MySQL5.7.36DB 存储
Redis6.2.6DB 缓存
Prometheus2.37.0时序数据库

时序数据存储选型:官方建议 VictoriaMetrics,但得根据你的实际业务场景来决定,如果你已经有 Prometheus 服务了,那也可以继续使用 Prometheus 直接作为数据源,如果没有,则可选择 VictoriaMetrics 作为时序库。

3、服务部署方式

DB 我采用 Docker 部署(当然你也可以采用其他方式部署),其他采用二进制部署!

四、部署

4.1 中心机房架构部署

4.1.1 MySQL

MySQL 用于存储用户、监控大盘、告警规则等。

# 部署过程略,本次通过shell脚本化部署

image-20240108210220829

4.1.2 Redis

存放访问令牌(JWT Token),心跳信息,如机器列表中CPU、内存、时间偏移、核数、操作系统、CPU架构等。

# 部署过程略,本次通过shell脚本化部署

image-20240108210220829

4.1.3 Prometheus

作为时序库接收 remote write 协议的数据,即夜莺收到时序数据之后,会将时序数据写入 Prometheus 中。夜莺也可以同时将此时的时序库用作 n9e 的数据源。

1、二进制包下载

二进制包下载:https://prometheus.io/download/

image-20240109090747109

2、解药安装包

tar xf prometheus-2.45.2.linux-amd64.tar.gz -C /data/

3、配置 Systemd 管理

注意:启动 Prometheus 时需要在启动参数里添加 --enable-feature=remote-write-receiver ,否则夜莺转发数据的时候会报 404,因为没有这个参数,Prometheus 就不会开启 /api/v1/write 接口的处理监听。

cat <<EOF >/etc/systemd/system/prometheus.service
[Unit]
Description="prometheus"
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple

ExecStart=/data/prometheus-2.45.2.linux-amd64/prometheus  --config.file=/data/prometheus-2.45.2.linux-amd64/prometheus.yml --storage.tsdb.path=/data/prometheus-2.45.2.linux-amd64/data --web.enable-lifecycle --enable-feature=remote-write-receiver --query.lookback-delta=2m 

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=prometheus


[Install]
WantedBy=multi-user.target
EOF

4、启动

systemctl daemon-reload
systemctl enable prometheus
systemctl restart prometheus
systemctl status prometheus

image-20240109170418430

5、访问验证

http://yourIP:9090/

image-20240108212205194

4.1.4 n9e

生产环境中建议使用二进制方式部署,便于后续的升级维护等管理。

1、二进制包下载

二进制包下载链接:https://flashcat.cloud/download/nightingale/

image-20240108213423464

2、创建 work 目录

mkdir /data/n9e

3、上传安装包至服务器并解压

tar xzf n9e-v6.7.2-linux-amd64.tar.gz -C /data/n9e/

image-20240108213939722

4、导入 sql 文件

mysql -h 10.206.0.17 -u root -p'Zhurs@123' < /data/n9e/n9e.sql

image-20240108221431660

创建监控用户并授权:

CREATE USER 'nightingale'@'%' IDENTIFIED BY '67by5DV7vK3fiygm';
GRANT ALL PRIVILEGES ON n9e_v6.* TO 'nightingale'@'%';

5、修改配置文件

主要修改 DB 部分。

cp etc/config.toml etc/config.toml.bak
vim etc/config.toml

image-20240108223343819

时序数据库配置:

如果你想把数据转发给后端多个时序库,就可以配置多个 [[Pushgw.Writers]],比如:

[Pushgw]
LabelRewrite = true
[[Pushgw.Writers]]
Url = "http://127.0.0.1:8428/api/v1/write"
[[Pushgw.Writers]]
Url = "http://127.0.0.1:9090/api/v1/write"

image-20240108223451867

配置完成后,此时夜莺接收到 categraf、telegraf、grafana-agent 等各类 agent 上报上来的监控数据,都会转发给后端的 Prometheus。

6、配置 systemd 管理并启动

cat <<EOF >/etc/systemd/system/n9e.service
[Unit]
Description="n9e.service"
After=network.target

[Service]
Type=simple
ExecStart=/data/n9e/n9e
WorkingDirectory=/data/n9e
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e.service
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start  n9e.service
systemctl enable n9e.service
systemctl status n9e.service

image-20240108223734971

监听 17000 端口:

image-20240111222355081

4.1.5 Categraf

1、概述

需要部署 categraf 上报监控数据,因为夜莺本身其实只是一个服务端组件,不负责数据采集。但如果我们 Prometheus、VictoriaMetrics、Thanos 等时序数据库已经存储有相关的监控指标数据,那也可以将他们作为夜莺的数据源使用,此时夜莺就相当于 Grafana 一样。

比如原本有一套 Prometheus + 各类 Exporter 的体系,复用即可,不需要非得用 categraf 替换采集逻辑,把这套 Prometheus 作为数据源接入夜莺,用夜莺告警就可以了。

我觉得官方文档说得已经非常明白了。

2、客户端下载

下载地址:https://github.com/flashcatcloud/categraf

image-20240108225959479

3、上传服务器并解压

tar xzf categraf-v0.3.45-linux-amd64.tar.gz -C /data/

4、修改配置文件

官方参考文档:https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v6/agent/categraf/

vim /data/categraf-v0.3.45-linux-amd64/conf/config.toml
  • 将数据推送到 n9e 服务端

    数据到达 n9e 时,然后 n9e 服务端再将数据写入后端时序数据库(本次我们配置的是 Prometheus)

    这里要清楚,官方文档说了,写入 prometheus 前,会将监控数据的一些元数据存储到 DB 中(MySQL/Redis)

    image-20240109220640979

  • Categraf 建立与 n9e 的心跳检测

    image-20240109220749231

5、配置 systemd 管理

cat <<EOF >/etc/systemd/system/categraf.service
[Unit]
Description="categraf.service"
After=network.target

[Service]
Type=simple
ExecStart=/data/categraf-v0.3.45-linux-amd64/categraf
WorkingDirectory=/data/categraf-v0.3.45-linux-amd64
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=categraf.service
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start  categraf.service
systemctl enable categraf.service
systemctl status categraf.service

image-20240108232848711

因此这里我们要清楚的是,采集器(客户端)不止 Categraf,还有 telegraf、grafana-agent 等。

6、那该 agent 是如何采集数据的呢?

我们下载后的安装包中就包含了基本的采集项:即以 input. 开头的目录就是各种采集插件的配置目录,运行 Categraf 客户端时,它就会通过这些目录的配置去采集数据。如果某个采集器 xx 不想启用,把 input.xx 改个其他前缀(或者删除这个目录),比如 bak.input.xx,categraf 就会忽略这个采集器。

image-20240109221817391

categraf启动时 可以通过-configs参数指定配置目录,如果不指定,会默认读取工作目录下的conf。 conf 目录结构如下:

  • config.toml # 主配置
  • logs.toml # logs-agent 配置
  • prometheus.toml # prometheus agent 配置
  • traces.yaml # trace-agent 配置
  • conf/input.*/*.toml 插件配置文件

主配置文件看官方文档解释就行,说得很清楚了。

一般地,Categraf 采集 agent 中的采集插件已经实现了基本的数据采集(CPU、内存、磁盘、磁盘 IO、网络),因此我们直接运行采集客户端 Categraf 时就会帮我们采集这些基础数据。

4.1.6 验证

默认账户/密码:root/root.2020

默认的密码可登陆后自行更改即可。

image-20240108222522859

image-20240108223934509

查看是否监控到主机:

但此时的主机是没有归组的,我们可创建用户及团队,然后将对应主机放入该团队中,那团队中的用户就可以看见监控主机了。

image-20240108234045362

创建用户:

image-20240108233805632

创建团队:

注意书写:rab-dev => 这表示一个层级关系,如下图

image-20240108233839674

创建业务组:

image-20240108234552546

将监控的机器归到指定的业务组中:

image-20240108234308622

image-20240108234711536

此时该服务器就属于 cctv/web 这个业务组了,同时这个业务组中的团队就可以查看这些服务器:

image-20240108234820158

4.1.7 配置数据源

如何将我们的时序库作为 n9e 的数据源(如下操作即可):

image-20240109215605932

image-20240108233325711

image-20240109215647054

4.2 边缘下沉式混杂部署

4.2.1 架构分析

官方文档说的很清楚【看文档】,无需再造轮子。

边缘监控无需依赖 MySQL、Redis 存储。

所谓的下沉,其思想就是将中心 N9e 的时序数据库下沉部署到边缘机房,避免大量时序数据传输到中心机房带来的网络带宽压力,同时也避免了因网络问题,边缘机房无法上报数据的问题。但是其本质还是需要和中心机房建立网络通信,尽管有时也会因为网络原因,边缘监控与中心监控也会存在延迟,但是边缘机房的监控数据是不会丢的。

image-20240111175232606

图中 region02 的机房中采集器使用的是 vmagent,并把采集的数据直接写入时序数据库,通过 n9e-edge 对监控数据做告警判断。这种架构比较简洁,但是会有一点点小问题,由于采集数据没有流经 n9e-edge,就没法从数据流中解析出机器信息,也就没法把机器信息写入数据库 target 表,也就导致页面上机器列表页面看不到相关的机器。这不影响告警,看图这些核心功能,只是用不了机器分组,自定义标签,告警自愈之类的功能。

更推荐使用 Categraf + n9e-edge 的方式来采集数据,其架构如图 region01 所示。当 Categraf 采集的数据上报给 n9e-edge 后,n9e-edge 就可以从监控数据中解析出机器信息,然后通过中心端的 n9e 写入数据库 target 表,这样就可以在页面上看到机器列表了。就可以使用机器分组,自定义标签,告警自愈之类的功能。

4.2.2 实验环境

在 4.1 你会看到服务器的主机名是 blog,为了实验方便查看,我这里先将主机命令为 n9e,另一个测试主机为 pro-blog。

hostnamectl set-hostname n9e
OSHostComment
RockyLinux 8.5n9e(10.206.0.17)VPC/南京
RockyLinux 8.5pro-blog(172.xx.xx.15)VPC/香港

这里相当于模拟了两个机房,n9e 作为监控中心机房,pro-blog 作为边缘监控机房。

4.2.3 Prometheus

上面说了,边缘主机的监控数据会采集到边缘主机的时序库(Prometheus、VIVTORIA 等时序库),因此这里需要部署时序数据库。

部署方式同 4.1.3 小结,这里不再演示。

image-20240111215650680

4.2.4 n9e-edge

这个应用程序已经包含在 n9e 压缩包中,直接使用即可。

1、二进制包下载

二进制包下载链接:https://flashcat.cloud/download/nightingale/

image-20240108213423464

2、创建 work 目录

mkdir -p /data/n9e-edge

3、解压二进制包

tar xzf n9e-v6.7.2-linux-amd64.tar.gz -C /data/n9e-edge/

4、配置 n9e-edge 连接中心 n9e

从 v6.0.0.ga.9 开始,合并了 n9e-alert、n9e-pushgw 模块为 n9e-edge,应对边缘机房的场景。n9e-edge 不依赖 mysql、redis,只依赖中心端的 n9e,所以 edge.toml 配置文件里,需要配置中心端 n9e 的地址。

vim /data/n9e-edge/etc/edge/edge.toml
...
[CenterApi]
Addrs = ["http://119.45.140.59:17000"]
BasicAuthUser = "user001"
BasicAuthPass = "ccc26da7b9aba533cbb263a36c07dcc5"
# unit: ms
Timeout = 9000
...

认证信息(BasicAuthUser、BasicAuthPass)对应中心端 n9e 的 HTTP.APIForService.BasicAuth 配置段,如下:

/data/n9e/etc/config.toml

当然,这个值是可自定义的。

image-20240111220034535

5、配置 n9e-edge 时序数据库

vim /data/n9e-edge/etc/edge/edge.toml

# 填写时序库IP+Port即可

image-20240111220631504

6、启动 n9e-edge

cat <<EOF >/etc/systemd/system/n9e-edge.service
[Unit]
Description="n9e-edge.service"
After=network.target

[Service]
Type=simple
ExecStart=/data/n9e-edge/n9e-edge --configs /data/n9e-edge/etc/edge
WorkingDirectory=/data/n9e-edge
Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=n9e-edge.service
[Install]
WantedBy=multi-user.target
EOF
systemctl start n9e-edge.service
systemctl enable n9e-edge.service
systemctl status n9e-edge.service

image-20240111221900462

注意,n9e-edge 启动命令中 --configs 选项指定的是一个目录,而不能是文件,否则报错:

image-20240111221726442

监听 19000 端口:

image-20240111222509747

问题?

边缘机房的 n9e-edge 如果只有一个实例,挂了就麻烦了,如何做高可用?简单,只需要在边缘机房部署多台 n9e-edge 就可以了,注意,同一个 edge 集群,edge.toml 里配置的 EngineName 要一样。n9e-edge 前面再搞个负载均衡,给 agent 上报数据、心跳使用,这样就可以实现 n9e-edge 的高可用了。

4.2.5 Categraf

安装同 4.1.5 小节,这里不再演示。

不同之处1:上报数据

注意端口号

image-20240111223431753

不同之处2:心跳检测

categraf 向 n9e-edge 心跳的话,urlpath 就不能写 /v1/n9e/heartbeat 了,而要写成 /v1/n9e/edge/heartbeat

image-20240111223052413

4.2.6 验证

配置好后,就去中心夜莺监控,看边缘机房的数据是否正常采集成功。

1、到 n9e 去查看告警引擎

如下图,n9e-edge 已经和 n9e 建立心跳连接了。

image-20240111225437654

边缘机房的 n9e-edge 默认的引擎名字是 edge,与中心端 n9e 的引擎名字(default)相区分。注意:边缘机房的时序库在夜莺里添加数据源的时候,要选择边缘机房的告警引擎(edge)。如果你有两个边缘机房,注意两个边缘机房的 n9e-edge 的引擎名字要不一样。下图是配置数据源的时候,选择告警引擎的地方:

20230531105059

如何设置每个边缘机房的 n9e-egde 的引擎名?

vim /data/n9e-edge/etc/edge/edge.toml

# 修改其配置文件即可
...
[Alert]
[Alert.Heartbeat]
# auto detect if blank
IP = ""
# unit ms
Interval = 1000
EngineName = "edge"        # 修改此处(保证各个边缘机房的引擎名唯一)

# [Alert.Alerting]
# NotifyConcurrency = 10
...

2、中心 n9e 配置数据源

image-20240111231938880

image-20240111232239741

3、查看数据

image-20240111232400926

注意:边缘式下沉部署不是通过 n9e-edge 推送数据,而是将 n9e-edge 边缘机房的时序数据库作为 n9e 中心机房的数据源。

总结

1. 中心机房

  • 工作流:n9e 作为中心机房的 Server 端,Categraf 作为 Agent 目标数据采集端,上报数据给 n9e,然后 n9e 将相关数据对于存储于 MySQL、Redis、时序库中;
  • 存储:n9e 依赖 MySQL、Redis,用于存储用户、规则等相关元信息;
  • 时序数据库:Prometheus、influxDB 等时序库;
  • 单点问题:部署多实例 n9e 并采用 Nginx 负载均衡/反代/VIP。

2. 边缘机房

  • 工作流:n9e-edge 作为下沉机房的 Server 端,Categraf 作为 Agent 目标数据采集端,上报数据给 n9e-edge,然后 n9e-edge 将相关数据对于存储于时序库中;
  • 存储:n9e-edge 不依赖于 MySQL、Redis;
  • 时序数据库:Prometheus、influxDB 等时序库;
  • 单点问题:部署多实例 n9e-edge 并采用 Nginx 负载均衡/反代/VIP。

官方:如果机房之间网络链路很好,就让所有的 categraf 和中心端的 n9e 通信即可,如果某个机房和中心端网络链路不好,就让 categraf 和 n9e-edge 通信,n9e-edge 和中心端的 n9e 通信。

—END

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装、运行和控制AI apps在您的计算机上一键式

pinokio 你是否曾为安装、运行和自动化 AI 应用程序和大模型而感到困惑&#xff1f;是否希望有一个简单而强大的工具来满足你的需求&#xff1f;如果是这样&#xff0c;那么 Pinokio 将会是你的理想选择&#xff01;Pinokio 是一款革命性的人工智能浏览器&#xff0c;是一个开…

专业课140+总分410+电子科技大学858信号与系统考研经验,电子信息通信

我的初试备考从4月末&#xff0c;持续到初试前&#xff0c;这中间没有中断。 我是二战考生&#xff0c;准备的稍微晚一些&#xff0c;如果是一战考生&#xff0c;建议在2、3月份开始。 总的时间分配上&#xff0c;是数学>专业课>英语>政治&#xff0c;虽然大家可支配…

Python如何免费调用微软Bing翻译API

一、引言 现在免费的机器翻译越来越少了&#xff0c;随着有道翻译开始收费&#xff0c;百度降低用户的免费机器翻译额度(目前只有实名认证过的高级用户才能获得100万字符的免费翻译额度)&#xff0c;而亚马逊、腾讯等机器翻译调用相对比较麻烦&#xff0c;需要下载各种插件包&…

【代码随想录05】242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和

目录 242.有效的字母异位词题目描述做题思路参考代码 349. 两个数组的交集题目描述做题思路参考代码 202. 快乐数题目描述做题思路参考代码 1.两数之和题目描述参考代码 242.有效的字母异位词 题目描述 给定两个字符串 *s* 和 *t* &#xff0c;编写一个函数来判断 *t* 是否是…

使用swift创建第一个ios程序

一、安装xcode 先到app store中下载一个Xcode app 二、创建项目 1、项目设定 创建ios app 2、工程结构 三、修改代码实现按键联动 四、运行测试

时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤)

时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤) 目录 时序预测 | MATLAB实现GRNN广义回归神经网络时间序列未来多步预测(程序含详细预测步骤)预测效果基本介绍程序设计参考资料预测效果 基本介绍 MATLAB实现GRNN广义回归神经网络时间序列…

【Windows】基于Hyper-V安装Ubuntu虚拟机

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍基于Hyper-V安装Ubuntu虚拟机。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新…

使用kibana来创建ElasticSearch的索引库与文档的命令

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;&#x1f380;使用kibana来为ElasticSearch创建索引库&#x1f380;使用kibana来为ElasticSearch创建修改文档 &#x1f412;个人主页 &#x1f3c5;JavaEE系列专栏 &#x1f4d6;前言…

粒子群算法优化RBF神经网络回归分析

目录 完整代码和数据下载链接:粒子群算法优化RBF神经网络回归分析(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88738570 RBF的详细原理 RBF的定义 RBF理论 易错及常见问题 RBF应用实例,基于rbf的空调功率预测 代码 结果分析 展望…

MySQL-多表连接查询

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

行为型设计模式——中介者模式

中介者模式 中介者模式主要是将关联关系由一个中介者类统一管理维护&#xff0c;一般来说&#xff0c;同事类之间的关系是比较复杂的&#xff0c;多个同事类之间互相关联时&#xff0c;他们之间的关系会呈现为复杂的网状结构&#xff0c;这是一种过度耦合的架构&#xff0c;即…

二、MySQL安装

目录 1、双击mysql8的安装向导 2、分为首次安装和再安装 1&#xff09;、首次安装 &#xff08;1&#xff09;如果是首次安装mysql系列的产品&#xff0c;需要先安装mysql产品的安装向导 &#xff08;2&#xff09;选择安装模式 2&#xff09;、不是首次安装 &#xff0…

每日一博 - 使用APIFOX调测 @RequestBody标注的对象

文章目录 概述发送 post 请求步骤1.新建接口&#xff0c;设置为 post 请求2. 填写 URL 和参数3.发送请求 实战 RequestBody 概述 APIFOX&#xff08;类似Postman&#xff09;提供了丰富的功能来支持用户发送包含各种信息的 POST 请求&#xff0c;如文本数据、JSON 或 XML 数据…

centos7下搭建ldap服务器

参考&#xff1a; 全网最全Centos7.9搭建LDAP服务器图形界面_ldap服务器搭建-CSDN博客 LDAP服务搭建 - 简书 https://www.cnblogs.com/netsa/p/16017326.html 安装 #安装ldap服务 yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openl…

FlinkAPI开发之窗口(Window)

案例用到的测试数据请参考文章&#xff1a; Flink自定义Source模拟数据流 原文链接&#xff1a;https://blog.csdn.net/m0_52606060/article/details/135436048 窗口的概念 Flink是一种流式计算引擎&#xff0c;主要是来处理无界数据流的&#xff0c;数据源源不断、无穷无尽。…

【教3妹学编程-算法题】最大频率元素计数

2哥 : 3妹&#xff0c;最近有个电视剧《繁花》非常火&#x1f525;&#xff0c;你听说了吗&#xff1f; 3妹&#xff1a;没有&#xff0c;最近一直在忙着找工作&#xff0c;哪有时间看电视啊 2哥 : 啊&#xff1f;大周末还不休息一下啊&#xff0c;这么辛苦。 3妹&#xff1a;当…

一、MySQL 卸载

目录 1、软件的卸载准备 2、软件的卸载 方式一&#xff1a;通过控制面板卸载 方式二&#xff1a;通过mysql8的安装向导卸载 1、双击mysql8的安装向导 2、取消更新 3、选择要卸载的mysql服务器软件的具体版本 4、确认删除数据目录 5、执行删除 6、完成删除 3、清理残…

学习JavaEE的日子 day13 封装 static private this 类加载机制

Day13 1. private – 私有化 理解&#xff1a;private是访问修饰符的一种&#xff0c;访问修饰符规定了访问权限. 作用&#xff1a; ​ 1.private修饰属性&#xff1a;该属性只能在类的内部使用 ​ 2.private修饰方法&#xff1a;该方法只能在类的内部使用 应用场景&#xff1…

华为路由器配置访问控制列表ACL用例

配置要求 如组网图所示&#xff0c;R3为服务器&#xff0c;R1为客户端&#xff0c;客户端与服务器 之间路由可达。其中R1和R2间互联物理接口地址分别为 10.1.2.1/24和10.1.2.2/24&#xff0c;R2和R3间互联物理接口地址分别 为10.1.3.2/24和10.1.3.1/24。另外&#xff0c;R1上创…

【大数据】Flink 详解(十):SQL 篇 Ⅲ

《Flink 详解》系列&#xff08;已完结&#xff09;&#xff0c;共包含以下 10 10 10 篇文章&#xff1a; 【大数据】Flink 详解&#xff08;一&#xff09;&#xff1a;基础篇【大数据】Flink 详解&#xff08;二&#xff09;&#xff1a;核心篇 Ⅰ【大数据】Flink 详解&…