部署 Zabbix 企业级分布式监控笔记

部署 Zabbix 企业级分布式监控笔记

一、监控系统基础

(一)监控的定义与类型

  • 定义:监控(Monitoring)包含检测和控制,核心是通过检测实现预防,确保 IT 系统稳定运行。
  • 计算机领域 5 种监控类型:
    • 应用性能监控(监控应用程序响应时间、错误率等)
    • 业务交易监控(监控业务流程如订单提交、支付完成等)
    • 网络性能监控(监控网络带宽、延迟、丢包等)
    • 操作系统监控(监控 OS 的 CPU、内存、磁盘等资源)
    • 数据库监控(补充原文,监控数据库连接数、慢查询等)

(二)监控的层次划分(从底层到上层)

  1. 基础设施监控
    • 负责对象:网络设备(交换机、路由器等)、机房环境(电源、温度等)。
    • 监控指标:网络流量、丢包率、错包率、设备连接数、硬件状态等。
    • 负责角色:运维人员,保障底层硬件稳定性以支撑上层服务。
  2. 系统层监控
    • 负责对象:物理机、虚拟机、操作系统(Linux/Windows 等)。
    • 监控指标:CPU 使用率、内存占用率、磁盘 IO 吞吐量、网络带宽利用率等。
  3. 应用层监控
    • 负责对象:Web 服务、API 接口、中间件、数据库等。
    • 监控指标:URL 访问延迟、接口调用成功率、慢 SQL 数量、缓存命中率、服务响应时间等。
  4. 业务监控
    • 负责对象:核心业务流程(如电商的登录、注册、下单、支付)。
    • 作用:为运营和管理层提供数据支持,辅助战略决策(如用户增长趋势、订单转化率等)。
  5. 端用户体验监控
    • 负责对象:用户端(浏览器、APP、PC 客户端)。
    • 监控指标:页面加载时间、返回错误码、不同地区 / 运营商的访问质量、客户端设备 / 浏览器版本分布等。

(三)监控系统实现原理

  1. 模块组成
    • 数据采集部分:通过 Agent、协议(SNMP 等)收集被监控对象的数据。
    • 数据处理部分:包含数据存储(数据库)、分析告警(触发阈值判断)、展示(Web 界面)。
  2. 采集协议
    • 专用客户端采集:基于私有协议或专属 Agent(如 Zabbix Agent)。
    • 公用协议采集:基于通用协议(SNMP、IPMI、SSH、Telnet 等),适用于无专属 Agent 的设备。
  3. 监控模式
    • 被动模式:Server 主动向 Agent 请求数据,对 Server 开销大,适合小规模环境。
    • 主动模式:Agent 主动向 Server 上报数据,对 Server 开销小,适合大规模环境。
  4. 代理架构(C/S/P 架构)
    • 适用场景:大规模、跨地域监控(如多机房、多网段)。
    • 作用:通过 Proxy 分摊 Server 压力,Proxy 收集数据后转发给 Server,减少网络传输开销。

(四)常见开源监控产品对比

产品名称 核心特点
Zabbix 企业级分布式监控,支持多类型设备 / 应用,功能全面(告警、绘图、自动发现等)
Prometheus+Grafana 时序数据监控,适合云原生环境,Grafana 负责可视化,社区插件丰富
Cacti 专注网络流量监控,基于 RRDTool 绘图,用户权限管理灵活
Nagios 轻量监控工具,擅长服务状态检测,告警机制成熟,但配置较复杂
Checkmk 高可扩展性,支持自动化配置,分基础版(免费)和企业版(增值功能)
OpenNMS 基于 Java/XML,支持多协议数据收集,适合分布式网络监控
Netdata 实时 Linux 性能监控,指标覆盖广,数据采集速度快
LibreNMS 网络设备监控利器,支持自动发现网络拓扑,适配多厂商设备(Cisco、华为等)

二、Zabbix 系统概述

(一)初识 Zabbix

  • 定位:企业级分布式开源监控解决方案,基于 Web 界面,支持网络、服务器、应用等全栈监控。
  • 开发背景:由 Alexei Vladishev 创建,目前由 Zabbix SIA 维护,基于 GPL v2 协议开源(免费使用)。
  • 核心功能:
    • 监控对象:网络参数、服务器资源、虚拟机、数据库、Web 应用等。
    • 特性:灵活告警(邮件、短信等)、数据可视化(图表、拓扑图)、历史数据存储(支持容量规划)。
    • 适用场景:从小型企业到大型企业的 IT 基础设施监控。

(二)Zabbix 的功能特性

  1. 数据收集
    • 支持可用性 / 性能检测、多协议(SNMP、IPMI 等)、自定义检测规则。
    • 角色分工:Server(核心节点)、Proxy(代理节点)、Agent(客户端节点)。
  2. 灵活的阈值定义
    • 通过 "触发器(Trigger)" 自定义告警阈值,阈值规则存储在数据库中。
  3. 高级告警配置
    • 支持告警升级(多次通知未处理时升级接收人)、自定义告警内容(含宏变量)。
    • 可联动远程命令实现自动化修复(如重启服务、清理磁盘)。
  4. 可视化与报告
    • 实时绘图:内置绘图工具展示监控指标趋势。
    • 自定义视图:支持多指标聚合展示、网络拓扑图、自定义仪表盘。
  5. 自动化能力
    • 网络自动发现:自动识别新设备、新磁盘 / 网卡。
    • Agent 自动注册:新节点 Agent 启动后自动接入监控系统。
  6. 扩展性
    • Zabbix API:支持第三方系统集成(如自动化运维平台)。
    • 模板机制:通过模板快速批量配置监控项(支持继承)。

(三)Zabbix 角色及架构

  1. 核心角色
    • Zabbix Server:核心组件,接收 Agent/Proxy 的数据,处理告警、存储数据,提供 API 接口。
    • Zabbix Agent:部署在被监控节点,采集本地数据(CPU、内存等),支持主动 / 被动模式。
    • Zabbix Proxy:代理节点,用于大规模监控,收集数据后转发给 Server,减轻 Server 压力。
    • Zabbix Web:Web 管理界面(PHP 开发),用于配置监控、查看告警和图表。
  2. 整体架构
    • 流程:Agent/Proxy 采集数据 → 发送至 Server → Server 存储至数据库 → Web 界面展示 / 触发告警。
    • 端口:Server 默认端口 10051(接收数据),Agent 默认端口 10050(发送数据)。

三、Zabbix 部署流程(基于 openEuler 24.03)

(一)资源清单(分布式架构)

操作系统 配置 主机名 IP 地址 角色
openEuler 24.03 2C4G zabbix 192.168.10.105 Zabbix Server(服务端)
openEuler 24.03 2C4G proxy 192.168.10.104 Zabbix Proxy(代理端)
openEuler 24.03 2C4G server01 192.168.10.101 被监控节点 1
openEuler 24.03 2C4G server02 192.168.10.102 被监控节点 2

(二)基础环境配置(所有节点执行)

目的:统一环境,避免依赖冲突或通信障碍。

  1. 关闭防火墙

    bash 复制代码
    [root@localhost~]# systemctl stop firewalld  # 临时关闭防火墙
    [root@localhost ~]# systemctl disable firewalld  # 禁用开机自启
    • 作用:避免防火墙拦截 Zabbix 组件间的通信(如 Server 与 Agent 的 10050/10051 端口)。
  2. 关闭 SELinux

    bash 复制代码
    [root@localhost ~]# setenforce 0  # 临时关闭(立即生效)
    [root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config  # 永久关闭(需重启)
    • 作用:防止 SELinux 安全策略限制 Zabbix 进程的文件访问或端口通信。
  3. 时间同步

    bash 复制代码
    [root@localhost ~]# timedatectl set-timezone Asia/Shanghai  # 设置时区为上海
    [root@localhost~]# chronyc sources -v  # 同步时间(依赖chrony服务)
    • 作用:确保所有节点时间一致,避免日志、告警时间混乱。
  4. 修改主机名

    bash 复制代码
    [root@localhost ~]# hostnamectl set-hostname zabbix  # 分别设置为zabbix、proxy、server01、server02
    • 作用:通过主机名区分节点角色,便于管理和配置。

(三)部署 Zabbix Server(在 zabbix 节点执行)

目的:安装 Server 核心组件,配置数据库存储监控数据,启动服务并初始化 Web 界面。

  1. 添加 Zabbix 源

    bash 复制代码
    [root@zabbix~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
    [root@zabbix ~]# dnf clean all  # 清理缓存,确保源生效
    • 作用:获取 Zabbix 6.4 版本的官方软件包。
  2. 安装依赖与 Server 组件

    bash 复制代码
    # 安装Zabbix Server、Web界面、数据库驱动等
    [root@zabbix ~]# dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
    # 安装MySQL数据库(存储监控数据)
    [root@zabbix ~]# dnf -y install mysql-server-8.0.41 mysql
    # 安装SNMP依赖(支持SNMP协议监控)
    [root@zabbix ~]# dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
    • 备注:Zabbix 6.4.8 要求 MySQL 8.0.30+、Nginx 1.20+、PHP 7.4.0+。
  3. 配置数据库

    bash 复制代码
    [root@zabbix ~]# systemctl enable mysqld --now  # 启动MySQL并设置开机自启
    [root@zabbix ~]# mysql -uroot  # 登录MySQL(初始无密码)

    执行以下 SQL 语句(设置密码、创建数据库和用户):

    sql 复制代码
    ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';  # 设置root密码
    FLUSH PRIVILEGES;  # 刷新权限
    create database zabbix character set utf8mb4 collate utf8mb4_bin;  # 创建Zabbix主数据库
    create user zabbix@localhost identified by '123456';  # 创建Zabbix数据库用户
    grant all privileges on zabbix.* to zabbix@localhost;  # 授权
    create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;  # 创建Proxy数据库(供Proxy使用)
    create user zabbix@'%' identified by 'zabbix';  # 允许远程访问(Proxy节点需要)
    grant all privileges on zabbix_proxy.* to zabbix@localhost;
    grant all privileges on zabbix_proxy.* to zabbix@'%';
    set global log_bin_trust_function_creators=1;  # 允许创建存储函数(导入数据需要)
    quit;
  4. 导入 Zabbix 初始化数据

    bash 复制代码
    # 导入Server核心数据表结构
    [root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
    # 导入完成后关闭存储函数创建权限
    [root@zabbix ~]# mysql -uroot -p
    mysql> set global log_bin_trust_function_creators=0;
    mysql> quit;
    • 作用:初始化 Zabbix 所需的表结构(监控项、触发器、历史数据等表)。
  5. 配置 Zabbix Server

    bash 复制代码
    [root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf  # 编辑配置文件

    修改以下参数(约 129 行):

    ini 复制代码
    DBPassword=zabbix  # 填写数据库用户zabbix的密码
    • 作用:配置 Server 与数据库的连接密码。
  6. 配置 Web 界面(Nginx)

    bash 复制代码
    [root@zabbix ~]# vim /etc/nginx/conf.d/zabbix.conf  # 编辑Nginx配置

    取消注释并设置端口(避免与其他服务冲突):

    nginx 复制代码
    listen 8080;  # Web界面端口
    server_name 192.168.10.105;  # 填写Server节点IP
  7. 启动服务

    bash 复制代码
    [root@zabbix ~]# systemctl restart zabbix-server zabbix-agent nginx php-fpm
    [root@zabbix ~]# systemctl enable zabbix-server zabbix-agent nginx php-fpm  # 设置开机自启

(四)Zabbix Web 界面初始化(浏览器操作)

  1. 访问 Web 界面
  2. 初始化步骤
    • 步骤 1:选择语言(如 "Chinese (zh_CN)")。
    • 步骤 2:检查环境(确保所有依赖项满足,如有缺失需修复)。
    • 步骤 3:配置数据库连接(数据库类型选 MySQL,密码填 "zabbix")。
    • 步骤 4:设置 Server 名称(默认即可)。
    • 步骤 5:确认配置并完成安装。
  3. 登录
    • 默认账号:Admin
    • 默认密码:zabbix

(五)部署 Zabbix Proxy(在 proxy 节点执行)

目的:部署代理节点,用于分担 Server 压力,收集被监控节点数据并转发给 Server。

  1. 添加 Zabbix 源(同 Server 步骤)

    bash 复制代码
    [root@proxy~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
    [root@proxy ~]# dnf clean all
  2. 安装 Proxy 组件

    bash 复制代码
    [root@proxy ~]# dnf -y install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy mysql
    [root@proxy~]# dnf -y install https://www.rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/net-snmp-libs-5.9.1-17.el9.x86_64.rpm
  3. 导入 Proxy 初始化数据

    • Server 节点临时开启存储函数权限:

      bash 复制代码
      [root@zabbix ~]# mysql -uroot -p
      mysql> set global log_bin_trust_function_creators=1;
      mysql> quit;
    • Proxy 节点导入数据(连接 Server 的数据库):

      bash 复制代码
      # 读取 Zabbix Proxy 的数据库初始化 SQL 脚本
      cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql 
      
      # 通过管道符将脚本内容传递给 mysql 命令执行
      |
      
      # 调用 mysql 客户端工具
      mysql 
      
      # 指定字符集为 utf8mb4(支持emoji等特殊字符)
      --default-character-set=utf8mb4 
      
      # 指定连接数据库的用户名(zabbix_proxy)
      -uzabbix_proxy 
      
      # 指定用户密码(123456,命令行显式密码有安全风险)
      -p123456 
      
      # 指定数据库服务器的IP地址(192.168.10.105)
      -h 192.168.10.105 
      
      # 指定要操作的数据库名称(zabbix_proxy)
      zabbix_proxy
    编辑proxy配置文件
    bash 复制代码
    DBUser=zabbix_proxy
    DBPassword=123456
    DBHost=192.168.10.105
    DBName=zabbix_proxy
    Server=192.168.10.105
    一、参数含义
    1. DBUser=zabbix_proxy
      • 含义:Zabbix Proxy 连接数据库时使用的数据库用户名
      • 作用:用于数据库身份验证,该用户需拥有对DBName指定数据库的读写权限(如创建表、插入数据等)。
    2. DBPassword=123456
      • 含义:上述数据库用户(zabbix_proxy)对应的密码
      • 作用:与用户名配合完成数据库登录验证,确保只有授权用户能访问数据库。
    3. DBHost=192.168.10.105
      • 含义:数据库所在服务器的IP 地址(或主机名)。
      • 作用:指定 Proxy 连接数据库的目标地址(这里指向192.168.10.105这台机器上的数据库)。
    4. DBName=zabbix_proxy
      • 含义:Proxy 专用的数据库名称
      • 作用:明确 Proxy 存储监控数据的数据库,必须与 Zabbix Server 的数据库(通常名为zabbix)完全分离。
    5. Server=192.168.10.105
      • 含义:Zabbix Server 的IP 地址(或主机名)。
      • 作用:指定 Proxy 需要连接的 Server 地址,Proxy 会将收集到的监控数据发送到该 Server,并从 Server 同步配置信息。
    二、关键注意事项
    1. 数据库与 Server 的独立性
    • 数据库隔离DBName=zabbix_proxy必须是 Proxy 专用数据库,绝对不能与 Zabbix Server 的数据库(如zabbix)共用 。两者表结构逻辑不同,共用会触发 "Zabbix proxy cannot work with a Zabbix server database" 错误(之前日志已出现)。
    • Server 与数据库的关系Server=192.168.10.105DBHost=192.168.10.105可以指向同一台机器(即 Server 和数据库部署在同一服务器),这是允许的,但数据库本身必须独立(名称不同)。
    2. 数据库权限配置

    需确保zabbix_proxy用户对zabbix_proxy数据库有完全权限 ,否则 Proxy 无法初始化表结构或写入数据。

    示例(MySQL 授权命令)

    sql 复制代码
    -- 登录数据库后执行(替换Proxy服务器IP为实际地址)
    GRANT ALL PRIVILEGES ON zabbix_proxy.* TO 'zabbix_proxy'@'Proxy服务器IP' IDENTIFIED BY '123456';
    FLUSH PRIVILEGES;

    验证连接:在 Proxy 服务器上执行以下命令,测试能否成功登录数据库:

    sql 复制代码
    mysql -h 192.168.10.105 -u zabbix_proxy -p123456 zabbix_proxy
    3. 与 Zabbix Server 的通信
    • 网络可达性 :Proxy 服务器必须能访问Server=192.168.10.10510051 端口(Zabbix Server 默认端口),可通过以下命令测试:

      bash 复制代码
      telnet 192.168.10.105 10051  # 能连接则端口开放
    • Server 端配置 :Zabbix Server 需在前端(Web 界面)预先添加该 Proxy,且 Proxy 的Hostname参数需与 Server 中配置的 Proxy 名称完全一致(否则 Server 会拒绝 Proxy 的连接)。

    4. 安全性与权限
    • 密码安全DBPassword=123456为弱密码,生产环境建议修改为复杂密码(含大小写、数字、特殊字符),并限制配置文件权限:

      bash 复制代码
      chmod 600 /etc/zabbix/zabbix_proxy.conf  # 仅root用户可读写
      chown zabbix:zabbix /etc/zabbix/zabbix_proxy.conf
    • 防火墙规则

      :确保 Proxy 服务器的防火墙允许:

      • 出站连接DBHost的数据库端口(如 MySQL 的 3306);
      • 出站连接Server的 10051 端口;
      • 入站接收 Agent 的 10050 端口(被动模式)。
    5. 初始化与启动
    • 数据库初始化

      :首次启动前,必须将 Proxy 专用的 SQL 脚本导入

      复制代码
      zabbix_proxy

      数据库(否则表结构缺失,启动失败):

      bash 复制代码
      # 假设脚本路径为/usr/share/zabbix-sql-scripts/mysql/proxy.sql
      cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -h 192.168.10.105 -u zabbix_proxy -p123456 zabbix_proxy
    • 重启生效

      :修改配置后,需重启 Proxy 服务并检查日志:

      bash 复制代码
      systemctl restart zabbix-proxy
      tail -f /var/log/zabbix/zabbix_proxy.log  # 确认无数据库或连接错误

    总结

    这些配置是 Proxy 正常工作的基础,核心要点是:数据库独立、权限正确、与 Server 通信畅通 。按照上述注意事项验证后,若日志中显示 "Zabbix Proxy started",则配置成功。

    三、验证步骤
    1. 确认zabbix_proxy数据库已创建并初始化表结构。
    2. 测试 Proxy 服务器到192.168.10.105的数据库连接:
      mysql -h 192.168.10.105 -u zabbix_proxy -p zabbix_proxy,输入密码后若能登录则连接正常。
    3. 重启 Proxy 服务后,查看日志是否仍有错误,若无则配置正确。

    关键说明:

    1. 整个命令的核心是将 proxy.sql 脚本中的表结构和初始数据导入到 zabbix_proxy 数据库
    2. 执行前需确保:
      • 目标 MySQL 服务器(192.168.10.105)已启动并可访问
      • 已创建 zabbix_proxy 数据库
      • 用户 zabbix_proxy 拥有该数据库的读写权限
    3. 命令行显式输入密码(-p123456)会有安全隐患,生产环境建议使用配置文件或交互式输入密码

    执行成功后,Zabbix Proxy 所需的数据库表结构就会被创建,可用于后续 Proxy 服务的配置。

    • Server 节点关闭权限:

      bash 复制代码
      [root@zabbix ~]# mysql -uroot -p
      mysql> set global log_bin_trust_function_creators=0;
      mysql> quit;
  4. 配置 Zabbix Proxy

    bash 复制代码
    [root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf

    修改以下参数:

    ini 复制代码
    Server=192.168.10.105  # 指向Zabbix Server的IP
    Hostname=Zabbix proxy  # Proxy名称(需与Web界面配置一致)
    DBHost=192.168.10.105  # 数据库主机(Server节点IP)
    DBPassword=123456  # 数据库密码
  5. 启动 Proxy 服务

    bash 复制代码
    [root@proxy ~]# systemctl start zabbix-proxy
    [root@proxy ~]# systemctl enable zabbix-proxy  # 开机自启
  6. Web 界面添加 Proxy

    • 路径:管理 → Proxy → 创建代理
    • 配置:名称填 "Zabbix proxy"(与配置文件一致),类型选 "主动式"。

(六)部署 Zabbix Agent(在 server01/server02 节点执行)

目的:在被监控节点部署 Agent,采集本地资源数据并发送给 Server 或 Proxy。

  1. 添加 Zabbix 源(同 Server 步骤)

    bash 复制代码
    [root@server01~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-latest-6.4.el9.noarch.rpm
    [root@server01~]# dnf clean all
  2. 安装 Agent

    bash 复制代码
    [root@server01 ~]# dnf -y install zabbix-agent
  3. 配置 Agent

    bash 复制代码
    [root@server01 ~]# vim /etc/zabbix/zabbix_agentd.conf

    修改以下参数:

    ini 复制代码
    Server=192.168.10.105  # 指向Server或Proxy的IP(直接连Server则填Server IP,通过Proxy则填Proxy IP)
    ServerActive=192.168.10.105  # 主动模式下的目标IP(同Server)
    Hostname=server01  # 主机名(需与Web界面添加的主机名一致)
  4. 启动 Agent 服务

    bash 复制代码
    [root@server01 ~]# systemctl start zabbix-agent
    [root@server01 ~]# systemctl enable zabbix-agent  # 开机自启
  5. Web 界面添加被监控主机

    • 直接连 Server:
      路径:数据采集 → 主机 → 创建主机
      配置:主机名填 "server01",群组选 "Linux servers",接口填 Agent 节点 IP(192.168.207.139),关联模板 "Template OS Linux"。
    • 通过 Proxy 连接:
      步骤同上,额外在 "由 Proxy 监测" 中选择已配置的 Proxy(Zabbix proxy)。

四、扩展:解决 Zabbix 图像字体显示问题(中文乱码)

问题:Zabbix 默认字体不支持中文,导致图表中中文显示为方块。

  1. 查找字体配置文件

    bash 复制代码
    [root@zabbix ~]# find / -name defines.inc.php
    /usr/share/zabbix/include/defines.inc.php  # 字体配置核心文件
  2. 确认默认字体名称

    bash 复制代码
    [root@zabbix~]# grep "ZBX_GRAPH_FONT_NAME" /usr/share/zabbix/include/defines.inc.php
    define('ZBX_GRAPH_FONT_NAME', 'graphfont');  # 默认字体文件名为graphfont.ttf
  3. 定位字体文件路径

    bash 复制代码
    [root@zabbix ~]# find / -name graphfont.ttf
    /usr/share/zabbix/assets/fonts/graphfont.ttf  # 默认字体路径
  4. 替换为中文字体

    • 上传中文字体文件(如 msyh1.ttc,微软雅黑)到/usr/share/zabbix/assets/fonts/

    • 创建软链接替换默认字体:

      bash 复制代码
      [root@zabbix fonts]# ln -snf msyh1.ttc graphfont.ttf  # 软链接指向中文字体
  5. 验证效果

    • 刷新 Web 界面,图表中的中文应正常显示。

通过以上步骤,可完成 Zabbix 企业级分布式监控系统的部署,实现对多节点、多类型资源的统一监控与告警。

相关推荐
泽虞16 分钟前
C语言深度语法掌握笔记:语法陷阱、内存管理、指针系统
c语言·笔记·面试
Keya1 小时前
鸿蒙开发样式复用:@Styles、@Extend与AttributeModifier深度对比
前端·分布式·harmonyos
yanxing.D2 小时前
考研408_数据结构笔记(第四章 串)
数据结构·笔记·考研·算法
久念祈2 小时前
C++ - 仿 RabbitMQ 实现消息队列--服务器模块实现
服务器·分布式·rabbitmq
给我个面子中不3 小时前
rabbitMq内容整理
分布式·rabbitmq
Fuliy963 小时前
【数字图像处理系列笔记】Ch04:灰度变换与空间域图像增强(2)
图像处理·人工智能·笔记·计算机视觉·数字图像处理
水木石画室3 小时前
Redis的分布式序列号生成器原理
数据库·redis·分布式
你我约定有三3 小时前
分布式微服务--Nacos 集群部署
分布式·微服务·架构
柏峰电子3 小时前
分布式光伏气象站:安装与维护
分布式
Acrel187018086623 小时前
安科瑞分布式光伏监控系统:筑牢10kV光伏电站的智能监测防线
分布式·能源