【企业级分布式系统】Ceph集群

文章目录

  • 存储基础
    • 单机存储设备
    • 单机存储的问题
    • 商业存储解决方案
    • 分布式存储(SDS,软件定义的存储)
    • 分布式存储的类型
  • Ceph
    • Ceph的基本特点
      • Ceph的应用场景
    • Ceph的架构
    • Ceph的核心组件
    • OSD存储引擎
    • Ceph数据存储过程
    • Ceph集群部署
  • 基于 ceph-deploy 部署 Ceph 集群
    • Ceph 生产环境推荐配置
    • Ceph 环境规划
    • 环境准备
    • Ceph 集群部署
      • 1. 创建工作目录
      • 2. 安装 `ceph-deploy`
      • 3. 在管理节点为其它节点安装 Ceph 软件包
      • 4. 生成初始配置
      • 5. 初始化 mon 节点
      • 6. 部署管理节点(可选)
      • 7. 部署 osd 存储节点
      • 8. 部署 mgr 节点
      • 9. 开启监控模块
    • Ceph 资源池 Pool 管理
      • 创建资源池
      • 查看 Pool 信息
      • 查看资源池副本数量
      • 查看 PG 和 PGP 数量
      • 修改 PG 和 PGP 数量
      • 修改 Pool 副本数量
      • 修改默认副本数
      • 删除 Pool 资源池

存储基础

单机存储设备

  1. DAS(直接附加存储)
    • 定义:直接接到计算机的主板总线上去的存储。
    • 接口:IDE、SATA、SCSI、SAS、USB。
    • 特性:提供块级别的存储,即存储设备直接以块的形式向主机提供存储空间。
  2. NAS(网络附加存储)
    • 定义:通过网络附加到当前主机文件系统之上的存储。
    • 协议:NFS、CIFS、FTP。
    • 特性:文件系统级别的存储,客户端通过网络将远程存储上的文件系统挂载到本地,像使用本地文件系统一样使用远程存储。无法对NAS存储进行再次格式化创建新的文件系统。
  3. SAN(存储区域网络)
    • 定义:一种网络存储,通过专用网络将存储设备与服务器连接起来。
    • 协议与物理层:SCSI协议(仅用于数据传输)、FCSAN(物理层使用光纤)、iSCSI(物理层使用以太网)。
    • 特性:提供块级别的存储,客户端可以直接访问存储设备的块空间。

单机存储的问题

  1. 存储处理能力不足:传统磁盘的IO能力有限,无法满足大规模用户同时访问的需求。
  2. 存储空间能力不足:单块磁盘的容量有限,无法满足大规模数据存储的需求。
  3. 单点故障问题:单机存储存在单点故障风险,一旦存储设备故障,可能导致数据丢失。

商业存储解决方案

  • 品牌:EMC、NetAPP、IBM、DELL、华为、浪潮等。
  • 特点:提供高性能、高可用性的存储解决方案,通常具有冗余和备份机制,以降低单点故障风险。

分布式存储(SDS,软件定义的存储)

  • 定义:通过软件来定义和管理存储资源,实现存储资源的高扩展性、高性能和高可用性。
  • 常见系统:Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS)等。

分布式存储的类型

  1. 块存储
    • 定义:提供没有被组织过的存储空间,通常以裸设备的形式存在。
    • 适用场景:容器或虚拟机存储卷分配、日志存储、文件存储等。
    • 特性:底层以分块的方式来存储数据,每个块是一个独立的存储单元。
  2. 文件存储
    • 定义:建立在块存储结构之上,以文件形式来存储数据。
    • 适用场景:目录结构的存储、日志存储等。
    • 特性:文件的元数据和实际数据是分开存储的,可以通过网络被多个服务器同时挂载和使用。
  3. 对象存储
    • 定义:基于API接口提供的文件存储,每个文件都是一个对象。
    • 适用场景:图片存储、视频存储等。
    • 特性:文件的元数据和实际数据是存放在一起的,具有块存储的高速读写能力和文件存储的共享特性。每个对象都有唯一的标识符,可以通过API进行访问和管理。

Ceph是一个开源的分布式存储系统,具有高扩展性、高性能和高可靠性的优点,广泛应用于云计算和大数据领域。以下是对Ceph的详细介绍:

Ceph

Ceph的基本特点

  • 开源性:Ceph是一个开源项目,其源代码可以在GitHub等平台上获取,社区活跃,有大量的开发者和用户参与贡献和维护。
  • 自我修复和自我管理:Ceph具有自我修复和自我管理的能力,能够自动检测和处理故障,确保存储系统的稳定性和可靠性。
  • 多种存储类型支持:Ceph支持对象存储、块存储和文件系统等多种存储类型,可以满足不同应用场景的需求。

Ceph的应用场景

  • 云平台后端存储:Ceph可以作为云平台的后端存储,支持虚拟机镜像的存储和管理,提高云平台的性能和可靠性。
  • 大数据存储:Ceph支持大数据存储和处理,能够处理PB级的数据量,适用于分布式文件系统、数据仓库等场景。
  • 内容分发网络(CDN):Ceph的对象存储功能可以支持内容分发网络,提供高效的内容存储和分发服务。

Ceph的架构

Ceph的架构可以自下向上分为四个层次:

  • RADOS基础存储系统:RADOS是Ceph最底层的功能模块,是一个无限可扩容的对象存储服务。它将文件拆解成无数个对象(碎片)存放在硬盘中,提高了数据的稳定性。RADOS主要由OSD和Monitor两个组件组成,OSD负责数据的存储和复制,Monitor负责集群的状态监控和元数据管理。
  • LIBRADOS基础库:LIBRADOS提供了与RADOS进行交互的方式,并向上层应用提供Ceph服务的API接口。上层的RBD、RGW和CephFS都是通过LIBRADOS访问的。LIBRADOS支持多种编程语言,如PHP、Ruby、Java、Python、Go、C和C++等,方便开发者进行客户端应用开发。
  • 高层应用接口:包括对象存储接口RGW、块存储接口RBD和文件存储接口CephFS。RGW提供S3和Swift兼容的RESTful API接口,支持对象存储服务;RBD提供块设备接口,主要用于Host/VM;CephFS提供了一个符合POSIX标准的文件系统,支持分布式文件系统功能。
  • 应用层:基于高层接口或者基础库LIBRADOS开发出来的各种APP,或者Host、VM等诸多客户端。这些应用可以直接与Ceph存储系统进行交互,实现数据的存储、访问和管理。

Ceph的核心组件

  • OSD(Object Storage Daemon):负责物理存储的进程,一般配置成和磁盘一一对应。主要功能是存储数据、复制数据、平衡数据、恢复数据,以及与其它OSD间进行心跳检查等。通常至少需要3个OSD来实现冗余和高可用性。
  • PG(Placement Group):归置组是一个虚拟的概念,用于数据寻址。Ceph先将每个对象数据通过HASH算法映射到一个PG中,然后将PG通过CRUSH算法映射到OSD上。
  • Pool:存储对象的逻辑分区,起到namespace的作用。每个Pool包含一定数量的PG,并可以做故障隔离域。Pool中数据保存方式支持多副本和纠删码两种类型。
  • Monitor:用来保存OSD的元数据,并维护集群状态的映射视图(包括OSD Map、Monitor Map、PG Map和CRUSH Map等)。同时负责维护展示集群状态的各种图表,以及管理集群客户端认证与授权。一个Ceph集群通常至少需要3或5个(奇数个)Monitor节点来实现冗余和高可用性。
  • Manager:负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载等。为外部监视和管理系统提供额外的监视和接口。一个Ceph集群通常至少需要2个Manager节点实现高可用性。
  • MDS(Metadata Server):是CephFS服务依赖的元数据服务,负责保存文件系统的元数据和管理目录结构。对象存储和块设备存储不需要元数据服务;如果不使用CephFS可以不安装MDS。

OSD存储引擎

OSD存储引擎主要有两种方式:FileStore和BlueStore。

  1. FileStore
    • FileStore是Ceph中存储对象的一个遗留方法,它依赖于标准文件系统(如XFS)和一个键/值数据库(传统上是LevelDB,BlueStore引入后则为RocksDB的变种)来保存和管理元数据。
    • FileStore经过了良好的测试,在生产中得到了广泛应用,但由于其总体设计和对传统文件系统的依赖,性能上存在一些不足。
  2. BlueStore
    • 从Ceph 12.2.0(Luminous)版本开始,BlueStore被引入作为一种新的、高性能的OSD存储引擎,以替代旧的FileStore引擎。
    • BlueStore将对象直接存储在原始块设备上,免除了对文件系统层的需要,提高了读写操作速度。它直接操作底层块设备来管理数据,而不是通过传统的文件系统。
    • BlueStore提供了更快的响应时间和更高的数据吞吐量,同时具有更好的可靠性和稳定性。它可以直接与Solid State Drive(SSD)交互,并利用其快速读写速度。
    • BlueStore还具有可扩展性,可以处理数百万个物理盘和千亿个对象。它实现了动态负载平衡和自动恢复机制,以确保高可用性和数据可靠性。

Ceph数据存储过程

  1. 客户端从MON(Monitor)节点获取最新的Cluster Map,该地图包含了集群中所有OSD、MON和PG的状态信息。
  2. Ceph存储的数据会被切分成一到多个固定大小的对象(Object),对象大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的OID(Object ID),由ino(文件的FileID,用于在全局唯一标识每一个文件)和ono(分片的编号)组成。
  3. 通过对OID使用HASH算法,得到一个16进制的特征码。用该特征码与Pool中的PG总数取余,得到的序号则是PGID(Placement Group ID)。
  4. PG会根据设置的副本数量进行复制。通过对PGID使用CRUSH算法,可以算出PG中目标主和次OSD的ID,然后将数据(实际上是PG中的所有对象)存储到不同的OSD节点上。CRUSH是Ceph使用的数据分布算法,它类似于一致性哈希,可以确保数据被分配到预期的地方。

Ceph版本发行生命周期
Ceph从Nautilus版本(14.2.0)开始,每年都会有一个新的稳定版发行,预计是每年的3月份发布。每年的新版本都会起一个新的名称和一个主版本号。版本号的格式为x.y.z,其中x表示发布周期,y表示发布版本类型(0为开发版本,1为发布候选版本,2为稳定/错误修复版本),z表示具体的修订版本。

Ceph集群部署

  1. ceph-deploy
    • 一个集群自动化部署工具,使用较久且成熟稳定。
    • 被很多自动化工具所集成,可用于生产部署。
  2. cephadm
    • 从Octopus和较新的版本后开始使用cephadm来部署ceph集群。
    • 使用容器和systemd安装和管理Ceph集群。
    • 目前在某些场景下可能不建议用于生产环境(但这一情况可能随时间变化,请查阅最新文档或社区建议)。
  3. 二进制手动部署
    • 需要一步步手动部署Ceph集群,支持较多定制化和了解部署细节。
    • 安装难度较大,适合对Ceph有深入了解的用户。

基于 ceph-deploy 部署 Ceph 集群

Ceph 生产环境推荐配置

  1. 存储集群全采用万兆网络
  2. 集群网络与公共网络分离
    • 集群网络(cluster-network):用于集群内部通讯
    • 公共网络(public-network):用于外部访问Ceph集群
  3. mon、mds 与 osd 分离部署在不同主机上
    • 测试环境中可以让一台主机节点运行多个组件
  4. OSD 可使用 SATA 磁盘
  5. 根据容量规划集群
  6. 硬件要求
    • CPU:至强E5 2620 V3或以上
    • 内存:64GB或更高
  7. 集群主机分散部署
    • 避免机柜的电源或网络故障

Ceph 环境规划

主机名Public网络Cluster网络角色
admin192.168.80.10admin(管理节点)、client
node01192.168.80.11192.168.100.11mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02192.168.80.12192.168.100.12mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03192.168.80.13192.168.100.13mon、osd(/dev/sdb、/dev/sdc、/dev/sdd)
client192.168.80.14client

环境准备

  1. 创建 Ceph 的管理用户
    创建一个专门用于管理 Ceph 的用户,并赋予其 root 权限。
    useradd cephadm
    passwd cephadm
    visudo
    cephadm ALL=(root) NOPASSWD:ALL
    
  2. 关闭 selinux 与防火墙
    实验环境中确保 Ceph 集群的网络通信不受限制。
    systemctl disable --now firewalld
    setenforce 0
    sed -i 's/enforcing/disabled/' /etc/selinux/config
    
  3. 根据规划设置主机名
    hostnamectl set-hostname admin
    hostnamectl set-hostname node01
    hostnamectl set-hostname node02
    hostnamectl set-hostname node03
    hostnamectl set-hostname client
    
  4. 配置 hosts 解析
    确保各节点之间可以通过主机名互相访问。
    cat >> /etc/hosts << EOF
    192.168.80.10 admin
    192.168.80.11 node01
    192.168.80.12 node02
    192.168.80.13 node03
    192.168.80.14 client
    EOF
    
5. **安装常用软件和依赖包**```bashyum -y install epel-releaseyum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass
  1. 在 admin 管理节点配置 ssh 免密登录所有节点
    简化集群节点间的操作,避免每次都需要输入密码。
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@admin
    sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node01
    sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node02
    sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node03
    
  2. 配置时间同步
    确保集群内各节点的时间一致,避免因时间不同步导致的问题。
    systemctl enable --now chronyd
    timedatectl set-ntp true                    # 开启 NTP
    timedatectl set-timezone Asia/Shanghai      # 设置时区
    chronyc -a makestep                         # 强制同步下系统时钟
    timedatectl status                           # 查看时间同步状态
    chronyc sources -v                          # 查看 ntp 源服务器信息
    timedatectl set-local-rtc 0                 # 将当前的UTC时间写入硬件时钟# 重启依赖于系统时间的服务
    systemctl restart rsyslog 
    systemctl restart crond# 关闭无关服务
    systemctl disable --now postfix
    
  3. 配置 Ceph yum源
    添加 Ceph 的 yum 源以便于安装 Ceph 软件包。
    wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate
    rpm -ivh ceph-release-1-1.el7.noarch.rpm --force
    
  4. 执行完上面所有的操作之后重启所有主机(可选)
    确保所有配置生效,重启后集群可以正常运行。
    sync
    reboot
    

Ceph 集群部署

1. 创建工作目录

mkdir -p /etc/ceph

2. 安装 ceph-deploy

cd /etc/ceph
yum install -y ceph-deploy
ceph-deploy --version

3. 在管理节点为其它节点安装 Ceph 软件包

ceph-deploy install --release nautilus node0{1..3} admin

或手动安装:

sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repo
yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

4. 生成初始配置

ceph-deploy new --public-network 192.168.80.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03

5. 初始化 mon 节点

ceph-deploy mon create node01 node02 node03
ceph-deploy --overwrite-conf mon create-initial
ceph-deploy gatherkeys node01

查看 mon 进程:

ps aux | grep ceph

查看集群状态:

ceph -s

查看 mon 集群选举情况:

ceph quorum_status --format json-pretty | grep leader

扩容 mon 节点:

ceph-deploy mon add <节点名称>

6. 部署管理节点(可选)

ceph-deploy --overwrite-conf config push node01 node02 node03
ceph-deploy admin node01 node02 node03

7. 部署 osd 存储节点

添加硬盘后直接使用:

lsblk

擦净磁盘(可选):

ceph-deploy disk zap node01 /dev/sdb

添加 osd 节点:

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb

查看集群状态:

ceph -s

查看 osd 状态:

ceph osd status
ceph osd tree
rados df
ssh root@node01 systemctl status ceph-osd@0

扩容 osd 节点:

ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd

8. 部署 mgr 节点

ceph-deploy mgr create node01 node02

查看集群状态:

ceph -s

解决 mons are allowing insecure global_id reclaim 问题:

ceph config set mon auth_allow_insecure_global_id_reclaim false

扩容 mgr 节点:

ceph-deploy mgr create <节点名称>

9. 开启监控模块

yum install -y ceph-mgr-dashboard
ceph mgr module ls | grep dashboard
ceph mgr module enable dashboard --force
ceph config set mgr mgr/dashboard/ssl false
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
ceph config set mgr mgr/dashboard/server_port 8000
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force
ceph mgr services
echo "12345678" > dashboard_passwd.txt
ceph dashboard set-login-credentials admin -i dashboard_passwd.txt

访问 dashboard:

http://192.168.80.11:8000

账号密码为 admin/12345678

Ceph 资源池 Pool 管理

在 Ceph 集群中,资源池(Pool)是存储 Object 对象的逻辑分区。Pool 由多个 PG(Placement Group)组成,PG 通过 CRUSH 算法映射到不同的 OSD(Object Storage Daemon)上。Pool 可以设置副本大小,默认副本数量为 3。

创建资源池

cd /etc/ceph
ceph osd pool create mypool 64 64  # 创建名为 mypool 的 Pool,PGs 和 PGP 数量设置为 64

查看 Pool 信息

ceph osd pool ls                # 列出所有 Pool
rados lspools                   # 列出所有 Pool
ceph osd lspools                # 列出所有 Pool

查看资源池副本数量

ceph osd pool get mypool size   # 查看 mypool 的副本数量

查看 PG 和 PGP 数量

ceph osd pool get mypool pg_num # 查看 mypool 的 PG 数量
ceph osd pool get mypool pgp_num # 查看 mypool 的 PGP 数量

修改 PG 和 PGP 数量

ceph osd pool set mypool pg_num 128  # 修改 mypool 的 PG 数量为 128
ceph osd pool set mypool pgp_num 128  # 修改 mypool 的 PGP 数量为 128
ceph osd pool get mypool pg_num       # 确认修改
ceph osd pool get mypool pgp_num       # 确认修改

修改 Pool 副本数量

ceph osd pool set mypool size 2      # 修改 mypool 的副本数量为 2
ceph osd pool get mypool size        # 确认修改

修改默认副本数

vim ceph.conf                      # 编辑 ceph.conf 文件
......
osd_pool_default_size = 2          # 设置默认副本数为 2ceph-deploy --overwrite-conf config push node01 node02 node03  # 推送配置文件给所有节点

删除 Pool 资源池

1) 编辑 ceph.conf 文件,开启删除 Pool 的支持
vim ceph.conf
......
[mon]
mon_allow_pool_delete = true       # 开启删除 Pool 的支持2) 推送 ceph.conf 配置文件给所有 mon 节点
ceph-deploy --overwrite-conf config push node01 node02 node033) 重启所有 mon 节点的 ceph-mon 服务
systemctl restart ceph-mon.target   # 重启 mon 服务4) 执行删除 Pool 命令
ceph osd pool rm mypool mypool --yes-i-really-really-mean-it  # 删除名为 mypool 的 Pool

注意

  • 修改 PG 和 PGP 数量会影响数据的分布和性能,需谨慎操作。
  • 删除 Pool 会导致数据丢失,务必确认无误后再执行删除操作。
  • 修改默认副本数会影响后续创建的 Pool,需全局考虑。

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

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

相关文章

.net 8使用hangfire实现库存同步任务

C# 使用HangFire 第一章:.net Framework 4.6 WebAPI 使用Hangfire 第二章:net 8使用hangfire实现库存同步任务 文章目录 C# 使用HangFire前言项目源码一、项目架构二、项目服务介绍HangFire服务结构解析HangfireCollectionExtensions 类ModelHangfireSettingsHttpAuthInfoUs…

【已解决】“EndNote could not connect to the online sync service”问题的解决

本人不止一次在使用EndNote软件时遇到过“EndNote could not connect to the online sync service”这个问题。 过去遇到这个问题都是用这个方法来解决&#xff1a; 这个方法虽然能解决&#xff0c;但工程量太大&#xff0c;每次做完得歇半天身体才能缓过来。 后来再遇到该问…

私有化部署视频平台EasyCVR宇视设备视频平台如何构建视频联网平台及升级视频转码业务?

在当今数字化、网络化的时代背景下&#xff0c;视频监控技术已广泛应用于各行各业&#xff0c;成为保障安全、提升效率的重要工具。然而&#xff0c;面对复杂多变的监控需求和跨区域、网络化的管理挑战&#xff0c;传统的视频监控解决方案往往显得力不从心。 EasyCVR视频融合云…

Ubuntu从入门到精通(二)远程和镜像源配置齐全

Ubuntu从入门到精通(二) 1 常见操作配置 1.1 英文语言配置 1.1.1 打开设置 1.1.2 设置语言为英文 1.1.3 重启生效 1.1.4 再次进入,选择更新名字 1.1.5 再次进入,发现已经变成了英文 1.2 输入法配置 1.3 rustdesk安装 1.3.1 Windows系统配置 登陆:https://github.com…

【Node.js】全面解析 Node.js 安全最佳实践:保护您的应用

Node.js 是一种强大的 JavaScript 运行时&#xff0c;广泛用于构建现代 Web 应用和 API。然而&#xff0c;由于其开放性和异步特性&#xff0c;Node.js 应用容易受到多种安全威胁的攻击&#xff0c;比如 SQL 注入、跨站脚本 (XSS) 和拒绝服务攻击 (DoS)。在本文中&#xff0c;我…

Spring Cloud Alibaba、Spring Cloud 与 Spring Boot各版本的对应关系

参考spring-cloud-alibaba github wiki说明&#xff1a;版本说明 下面截取说明&#xff1a; 2022.x 分支 2021.x 分支 2.2.x 分支 组件版本关系

ChatGPT Search VS Kimi探索版:AI搜索哪家强?!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

Linux常用命令,持续更新钟

在Linux系统中&#xff0c;你可以使用多种命令来拷贝和移动文件及目录。以下是常用的几个命令及其用法&#xff1a; 一、拷贝文件或目录 cp 命令 cp 命令用于拷贝文件或目录。 拷贝文件&#xff1a; cp source_file destination_file 例如&#xff1a; cp file1.txt /hom…

基于SpringBoot的校园二手商品在线交易系统+含项目运行说明文档

一、项目技术栈 二、项目功能概述 管理员可以完成的功能包括管理员登录、管理员首页展示、系统设置、物品管理、学生管理、评论管理、举报管理、新闻公告、网站设置等&#xff0c;前台的客户可以进行查看所有商品分类、搜索商品、登录或注册、发布商品、求购商品等。 三、部分…

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk) 1.计算模型介绍 使用GARCH&#xff08;广义自回归条件异方差&#xff09;模型计算VaR&#xff08;风险价值&#xff09;时&#xff0c;方差法是一个常用的方法。GARCH模型能够捕捉到金融时间序列数据中的波…

动态规划 —— 子数组系列-乘积为正数的最长子数组长度

江河入海&#xff0c;知识涌动&#xff0c;这是我参与江海计划的第4篇。 1. 乘积为正数的最长子数组长度 题目链接&#xff1a; 1567. 乘积为正数的最长子数组长度 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/maximum-length-of-subarray-with-posit…

C语言-详细讲解-洛谷P1420 最长连号

1.题目要求 2.题目分析 考虑到说明里的数据规模&#xff0c;我们可以用动态内存分配来创建合适大小的数组&#xff0c;避免栈溢出问题&#xff0c;通过循环遍历&#xff0c;最终找到最长连号。 3.代码实现 #include <stdio.h> #include <stdlib.h>int main() {…

Python Matplotlib 数据可视化全面解析:选择它的七大理由与入门简介

Python Matplotlib数据可视化全面解析&#xff1a;选择它的七大理由与入门简介 本文介绍了Matplotlib这一强大而灵活的数据可视化工具&#xff0c;涵盖其基本概念、独特优势以及为何在众多Python绘图库中脱颖而出。Matplotlib具有广泛的社区支持、高度自定义能力、多样的绘图类…

《基于 PySpark 的电影推荐系统分析及问题解决》

以下是一篇关于上述代码的博客文章&#xff1a; 基于PySpark的电影推荐系统实现与分析 在当今数字化时代&#xff0c;个性化推荐系统在各个领域中都发挥着至关重要的作用&#xff0c;尤其是在娱乐行业&#xff0c;如电影推荐。本文将详细介绍如何使用PySpark构建一个简单的电…

ant-design-vue中table组件多列排序

antD中table组件多列排序 使用前注意实现效果图实现的功能点及相关代码1. 默认按某几个字段排序2. 点击排序按钮可同时对多个字段进行排序3. 点击重置按钮可恢复默认排序状态。 功能实现完整的关键代码 使用前注意 先要确认你使用的antD版本是否支持多列排序&#xff0c;我这里…

【华为】配置VXLAN构建虚拟网络实现相同网段互通(静态方式)

微思网络 厦门微思网络 组网需求 企业已经建成比较成熟的园区网络&#xff0c;但是没有专用的数据中心网络&#xff0c;所有的服务器分布在不同的部门&#xff0c;并且不具备集中放置的条件。现在用户希望在已有园区网络上构建一个虚拟网络&#xff0c;需求如下&#xff1a; 将…

神经网络问题之:梯度不稳定

梯度不稳定是深度学习中&#xff0c;特别是在训练深度神经网络时常见的一个问题&#xff0c;其本质涉及多个方面。 一、根本原因 梯度不稳定问题的根本原因在于深度神经网络的结构和训练过程中的一些固有特性。随着网络层数的增加&#xff0c;梯度在反向传播过程中会逐层累积变…

AI工具百宝箱|任意选择与Chatgpt、gemini、Claude等主流模型聊天的Anychat,等你来体验!

文章推荐 AI工具百宝箱&#xff5c;使用Deep Live Cam&#xff0c;上传一张照片就可以实现实时视频换脸...简直太逆天&#xff01; Anychat 这是一款可以与任何模型聊天 &#xff08;chatgpt、gemini、perplexity、claude、metal llama、grok 等&#xff09;的应用。 在页面…

云原生之k8s服务管理

文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度&#xff1a;…

Kafka 工作流程解析:从 Broker 工作原理、节点的服役、退役、副本的生成到数据存储与读写优化

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…