ceph集群搭建
文章目录
- 理论知识
- 具体操作
- 搭建ceph本地源
- yum源及ceph的安装
- 配置NTP(解决时间同步问题)
- 部署ceph
- 自定义crush
理论知识
Ceph是一个分布式存储系统,并且提供了文件、对象、块存储功能。
- Ceph集群中重要的守护进程有:Ceph OSD、Ceph Monitor。
- Ceph OSD(Object Storage Device): OSD是数据存储的地方,该守护进程处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD守护进程的心跳来向Ceph Monitors提供一些监控信息。 。
- Ceph Monitor: 是一个监视器,监视Ceph集群状态和维护集群中的各种关系。是集群的控制中心。同时ceph monitor还负责集群的指挥工作,将集群的状态同步给客户端。当集群状态有变化,比如OSD增加或故障时,monitor会负责更新集群的状态并反馈给客户端。为了保证高可用,monitor节点需要部署多个。比如3个,5个。。。
- Ceph存储集群至少需要一个Ceph Monitor和两个 OSD 守护进程。
集群的状态:
- Monitor Maps,集群Ceph Monitor集群的节点状态,通过ceph mon dump可以获取;
- OSD Maps,集群数据存储节点的状态表,记录集群中OSD状态变化,通过ceph osd dump可以获取;
- PGs Maps,PGs即placement group,表示在OSD中的分布式方式,通过ceph pg dump可以获取;
- Crush Maps,Crush包含资源池pool在存储中的映射路径方式,即数据是如何分布的;
- MDS Maps,CephFS依赖的MDS管理组件,可通过ceph mds dump获取,用于追踪MDS状态。
ceph集群把从客户端接收的数据(不管是ceph块设备、ceph对象存储还是ceph文件系统)切割成多个对象(object),然后将对象存储在osd设备上,由osd守护进程处理读写操作。
至于这些对象是如何选择对应的OSD设备呢?这就需要使用调度算法CRUSH。不管是客户端还是OSD守护进程都使用crush算法来计算对象在集群中OSD设备的位置信息。
以一个100G的文件为例,每个对象默认是4M,那么就会切割成25600个对象。如果一个文件或者OSD出现了异常,那么集群就需要对每个对象都进行调度,那么在一个大规模集群中crush算法调度任务就会变得非常繁重。因此,ceph集群引入了PG(Place Group,放置组)的概念。可以理解为放置对象的容器。 因此,可以将对象映射到PG,再通过crush算法将PG调度到某个osd。由于PG的数量相对是固定的,因此,调度任务没有那么繁重。同时,当某个OSD异常时,只需要将对应的PG调度到其他OSD上。

具体流程为:
- 一个文件将会切割为多个object(如1G文件每个object为4M将切割为256个),每个object会由一个由innode(ino)和object编号(ono)组成oid,即object id,oid唯一标识object对象;
- 针对object id做hash并做取模运算,从而获取到pgid,即place group id,通过hash+mask获取到PGs ID,PG是存储object的容器;
- Ceph通过CRUSH算法,将pgid进行运算,找到当前集群最适合存储PG的OSD节点,如osd1和osd2(假设为2个副本);
- PG的数据最终写入到OSD节点,完成数据的写入过程,当然这里会涉及到多副本,一份数据写多副本
其中还有pool的概念,存储池是用于存储对象的逻辑分区,可以实现不同数据的逻辑隔离。可以简单记作:文件分割成了一个个对象,若干对象则是存储在不同的PG里,而多个PG 构成了Pool。
上述只总结了ceph的基础知识,更全面的集群架构信息可以参考:https://www.cnblogs.com/hukey/p/12588436.html#%E5%89%8D%E8%A8%80
https://docs.ceph.com/en/pacific/architecture/
具体操作
Ceph集群搭建参考链接:https://cloud.tencent.com/developer/article/1006084
实验所用虚拟机均为Centos 7.6系统,8G内存,16核CPU:
Ceph-admin: 用作ntp server和ceph本地源
Ceph-1: 3个2T硬盘和一个800G硬盘,deploy、mon1、osd3
Ceph-2: 3个2T硬盘和一个800G硬盘,mon1、osd3
Ceph-3: 3个2T硬盘和一个800G硬盘,mon1、osd3
需要在每台主机上配置好域名解析

搭建ceph本地源
下面操作均是在ceph-admin节点上:
1、安装httpd和createrepo
yum install httpd createrepo -y
2、创建ceph源目录,
mkdir -p /var/www/html/ceph/10.2.2
3、下载所有文件【选择并下载你需要安装的ceph版本,这里选择的是/rpm-jewel/el7/x86_64/,然后把所有的包含10.2.2的rpm包都下下来,除了那个ceph-debuginfo,1G多太大了,可以不下。最后再加上ceph-deploy的rpm链接】
cd /var/www/html/ceph/10.2.2
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-base-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-common-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-devel-compat-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-fuse-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-libs-compat-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-mds-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-mon-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-osd-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-radosgw-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-selinux-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ceph-test-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/cephfs-java-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libcephfs1-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libcephfs1-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libcephfs_jni1-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libcephfs_jni1-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librados2-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librados2-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libradosstriper1-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/libradosstriper1-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librbd1-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librbd1-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librgw2-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/librgw2-devel-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/python-ceph-compat-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/python-cephfs-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/python-rados-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/python-rbd-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/rbd-fuse-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/rbd-mirror-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/rbd-nbd-10.2.2-0.el7.x86_64.rpm
wget http://mirrors.aliyun.com/ceph/rpm-hammer/el7/noarch/ceph-deploy-1.5.36-0.noarch.rpm
4、创建源
createrepo /var/www/html/ceph/10.2.2

5、开启httpd服务
systemctl start httpd
yum源及ceph的安装
在ceph-1节点、ceph-2节点、ceph-3节点上执行:
yum clean all
rm -fr /etc/yum.repos.d/*.repo
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo
增加ceph的源:
scp ceph-admin:/etc/yum.repos.d/ceph.repo /etc/yum.repos.d/
安装ceph客户端和ntp:
yum makecache
yum install ceph ceph-radosgw ntp -y
关闭火墙
sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
配置NTP(解决时间同步问题)
ceph-admin 节点、ntp-1节点、ntp-2 节点、ntp-3节点都需要安装 ntp:
yum install ntp -y
将 ceph-admin 节点作为 NTP server
将ntp-1节点、ntp-2 节点、ntp-3节点作为 NTP client
下述操作在ceph-admin 节点上:
vim /etc/ntp.conf

vim /etc/ntp/step-tickers

开启服务:
systemctl enable ntpd
systemctl start ntpd

只有当命令的下一行是 * 时,才是正常的。
至此,NTP server端已经配置完毕,下面开始配置client端。
在ceph-1、ceph-2、ceph-3三个节点上:
修改/etc/ntp.conf,注释掉四行server,添加一行server指向ceph-admin:
vim /etc/ntp.conf

开启服务:
systemctl enable ntpd
systemctl start ntpd

观察client 已经正确连接到server端,同样正确连接的标准是ntpq -p的最下面一行以*号开头。
如果还没显示 * 号,就等一会,估计5分钟就好了。
一定要确定server和所有的client端的NTP都正确连接才能继续搭建ceph 。
部署ceph
在 ceph-1 节点(部署节点)上执行如下:
安装 ceph-deploy :
yum install ceph-deploy -y

在部署节点上创建部署目录,开始部署
cd
mkdir cluster
cd cluser
ceph-deploy new ceph-1 ceph-2 ceph-3
在部署节点ssh-copy-id到各个其他节点。
ssh-copy-id ceph-2
ssh-copy-id ceph-3
此时在 cluster 目录下有文件:
ceph.conf
ceph-deploy-ceph.log
ceph.mon.keyring
vim ceph.conf :

其中,osd_crush_update_on_start=false 表示启动 osd 时不自动更新 crush,后续将自定义 crush 。
osd_journal_size=20480 表示设置日志盘为20G
开始部署 monitor :
ceph-deploy mon create-initial
下面开始部署OSD:
先需要理清楚各个主机磁盘:
ceph-1主机:
| /dev/vdc | 2T 【假设为sata硬盘】 |
|---|---|
| /dev/vdd | 800G 【ssd硬盘】 |
| /dev/vde | 2T 【假设为sata硬盘】 |
| /dev/vdf | 2T 【假设为sata硬盘】 |
ceph-2以及ceph-3 主机:
| /dev/vdc | 800G【ssd硬盘】 |
|---|---|
| /dev/vdd | 2T 【假设为sata硬盘】 |
| /dev/vde | 2T 【假设为sata硬盘】 |
| /dev/vdf | 2T 【假设为sata硬盘】 |
先从SATA硬盘开始部署OSD:
[root@ceph-1 cluster]# ceph-deploy --overwrite-conf osd prepare ceph-1:/dev/vdc ceph-1:/dev/vde ceph-1:/dev/vdf ceph-2:/dev/vdd ceph-2:/dev/vde ceph-2:/dev/vdf ceph-3:/dev/vdd ceph-3:/dev/vde ceph-3:/dev/vdf
然后激活创建的OSD,
注意,这里osd activate后面的参数格式为:HOSTNAME:data-disk1,需要注意的是,刚刚的/dev/vdc这里需要写成/dev/vdc1,因为分了区。
[root@ceph-1 ~]# ceph-deploy --overwrite-conf osd activate ceph-1:/dev/vdc1 ceph-1:/dev/vde1 ceph-1:/dev/vdf1 ceph-2:/dev/vdd1 ceph-2:/dev/vde1 ceph-2:/dev/vdf1 ceph-3:/dev/vdd1 ceph-3:/dev/vde1 ceph-3:/dev/vdf1
然后可以使用 ceph -s 查看集群状态,能看到osd的状态为 9 up, 9 in。
再部署3个ssd:
[root@ceph-1 ~]# ceph-deploy --overwrite-conf osd prepare ceph-1:/dev/vdd ceph-2:/dev/vdc ceph-3:/dev/vdc
[root@ceph-1 ~]# ceph-deploy --overwrite-conf osd activate ceph-1:/dev/vdd1 ceph-2:/dev/vdc1 ceph-3:/dev/vdc1
然后 ceph -s 查看集群状态,能看到有12个 osd 是 up 的。
自定义crush

创建对应的Bucket
在 ceph-1 节点执行如下命令:
ceph osd crush add-bucket root-sata root
ceph osd crush add-bucket root-ssd root
ceph osd crush add-bucket ceph-1-sata host
ceph osd crush add-bucket ceph-2-sata host
ceph osd crush add-bucket ceph-3-sata host
ceph osd crush add-bucket ceph-1-ssd host
ceph osd crush add-bucket ceph-2-ssd host
ceph osd crush add-bucket ceph-3-ssd host
再将对应的host移到root下,然后把OSD移到对应的host下面,注意添加OSD时的weight是该OSD的实际大小(2T为2 ,800G为0.8),
ceph osd crush move ceph-1-sata root=root-sata
ceph osd crush move ceph-2-sata root=root-sata
ceph osd crush move ceph-3-sata root=root-sata
ceph osd crush move ceph-1-ssd root=root-ssd
ceph osd crush move ceph-2-ssd root=root-ssd
ceph osd crush move ceph-3-ssd root=root-ssd
ceph osd crush add osd.0 2 host=ceph-1-sata
ceph osd crush add osd.1 2 host=ceph-1-sata
ceph osd crush add osd.2 2 host=ceph-1-sata
ceph osd crush add osd.3 2 host=ceph-2-sata
ceph osd crush add osd.4 2 host=ceph-2-sata
ceph osd crush add osd.5 2 host=ceph-2-sata
ceph osd crush add osd.6 2 host=ceph-3-sata
ceph osd crush add osd.7 2 host=ceph-3-sata
ceph osd crush add osd.8 2 host=ceph-3-sata
ceph osd crush add osd.9 0.8 host=ceph-1-ssd
ceph osd crush add osd.10 0.8 host=ceph-2-ssd
ceph osd crush add osd.11 0.8 host=ceph-3-ssd
查看 ceph osd tree:

导出 crushmap,并添加rule :
cephosd getcrushmap -o /tmp/crush
crushtool -d /tmp/crush -o /tmp/crush.txt
# -d 的意思是decompile,导出的crush是二进制格式的。
vim /tmp/crush.txt :
# rules
rule rule-sata {ruleset 0 #rule的编号type replicatedmin_size 1max_size 10step take root-sata #设置sata的root名称step chooseleaf firstn 0 type hoststep emit
}
rule rule-ssd {ruleset 1type replicatedmin_size 1max_size 10step take root-ssd #设置ssd的root名称step chooseleaf firstn 0 type hoststep emit
}
编译 /tmp/crush.txt,并注入集群中:
[root@ceph-1 cluster]# crushtool -c /tmp/crush.txt -o /tmp/crush.bin
[root@ceph-1 cluster]# ceph osd setcrushmap -i /tmp/crush.bin
查看 ceph -s:

如果health HEALTH_WARN,那么增加rdb的pg数,即可。
cephosd pool set rbd pg_num 256
ceph osd pool set rbd pgp_num 256
然后就能看到状态变成HEALTH_OK 了。
一些用法:
查看rbd池的情况
[root@ceph-1cluster]# ceph osd pool ls detail
将rbd池是ruleset设置为1,即由osd.9-osd.11组成的结构,rbd池的所有数据将会保存在这三个SSD上
[root@ceph-1cluster]# ceph osd pool set rbd crush_ruleset 1
创建不同的pool:
[root@ceph-1cluster]# ceph osd pool create sata-pool 256 rule-sata pool 'sata-pool' created
[root@ceph-1 cluster]# ceph osd pool create ssd-pool 256 rule-ssd pool 'ssd-pool' created


模拟了将同一台主机上的SATA和SSD分开使用,在一批次同样结构的主机上,构建出两种不同速度的pool,CRUSH的自定义性,给ceph提供了极大的可塑性。
相关文章:
ceph集群搭建
文章目录 理论知识具体操作搭建ceph本地源yum源及ceph的安装配置NTP(解决时间同步问题)部署ceph自定义crush 理论知识 Ceph是一个分布式存储系统,并且提供了文件、对象、块存储功能。 Ceph集群中重要的守护进程有:Ceph OSD、Cep…...
前端密码加密 —— bcrypt、MD5、SHA-256、盐
🐔 前期回顾悄悄告诉你:前端如何获取本机IP,轻松一步开启网络探秘之旅_彩色之外的博客-CSDN博客前端获取 本机 IP 教程https://blog.csdn.net/m0_57904695/article/details/131855907?spm1001.2014.3001.5501 在前端密码加密方案中ÿ…...
汽车UDS诊断深度学习专栏
1.英文术语 英文术语翻译Diagnostic诊断Onboard Diagnostic 在线诊断 Offboard Diagnostic离线诊断Unified diagnostic service简称 UDS 2.缩写表 缩写解释ISO国际标准化组织UDSUnified diagnostic service,统一的诊断服务ECU电控单元DTC 诊断故障码 ISO14229UD…...
macOS 下安装brew、nvm
1、brew: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew -v 查看版本 示例: 安装jdk brew search jdk 查询可用的jdk版本 brew install openjdk11 安装制定版本jdk 更换源࿱…...
【云原生】Kubernetes工作负载-StatefulSet
StatefulSet StatefulSet 是用来管理有状态应用的工作负载 API 对象 StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符 和 Deployment 类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同…...
Java:方法的重载
方法重载 为什么需要方法重载 在使用方法的过程中我们可能会遇到以下如同例子的情形: public class method1 {public static void main(String[] args) {int a1 10;int b1 20;double ret1 add(a1, b1);System.out.println("ret1 " ret1);do…...
7.react useCallback与useMemo函数使用与常见问题
react useCallback与useMemo函数使用与常见问题 useCallback返回一个可记忆的函数,useMemo返回一个可记忆的值,useCallback只是useMemo的一种特殊形式。 那么这到底是什么意思呢?实际上我们在父子通信的时候,有可能传递的值是一…...
Sentinel限流中间件
目录 介绍 Sentinel 的特征 Sentinel 的组成 实战使用 简单实例 配置本地控制台 使用可视化ui配置简单流控 配置异步任务限流 使用注解定义限流资源 SpringCloud整合Sentinel 简单整合 并发线程流控 关联模式 整合openFeign使用 介绍 随着微服务的流行࿰…...
使用ajax进行前后端交互的方法
使用ajax进行前后端交互的方法:(我只测试通了json对象作为参数的方式,其他方式我没有测试通过) 1、前端方法: 传参方式:POST 请求类型:json对象 响应类型:json对象 function test() …...
动手学深度学习——线性回归从零开始
生成数据集synthetic_data()读取数据集data_iter()初始化模型参数w, b定义模型:线性回归模型linreg()定义损失函数:均方损失squared_loss()定义优化算法:梯度下降sgd()进行训练:输出损失loss和估计误差 %matplotlib inline impor…...
Redis缓存击穿
Redis缓存击穿是指在使用Redis作为缓存时,某个热点数据过期或不存在,导致大量请求直接打到后端存储系统(例如数据库),使得后端系统压力骤增,性能下降的情况。这种情况通常发生在热点数据失效的瞬间。 缓存…...
网络安全(黑客)自学的一些建议
1.选择方向 首先是选择方向的问题,网络安全是一个很宽泛的专业,包含的方向特别多。比如 web安全,系统安全,无线安全 ,二进制安全,运维安全,渗透测试,软件安全,IOT安全&a…...
全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面既然已经搞定了spi-nor驱动,那么下一步考虑的就是怎么从spi-nor flash上面加载uboot、kernel和rootfs。目前spi-nor就是一块白片,上面肯定什么都没有,那么这个时候,我们要做…...
如何恢复损坏/删除的 Word 文件
有关如何修复不可读的 Microsoft Word 文件或 Rich Text 文件中的文本的分步说明。这些说明有助于从损坏的*.doc、*.docx、*.dot、*.dotx、*.rtf文件(任何版本和大小)中提取文本,只需单击几下: 从此处下载奇客数据恢复 ÿ…...
【论文阅读】Feature Inference Attack on Shapley Values
摘要 研究背景 近年来,解释性机器学习逐渐成为一个热门的研究领域。解释性机器学习可以帮助我们理解机器学习模型是如何进行预测的,它可以提高模型的可信度和可解释性。Shapley值是一种解释机器学习模型预测结果的方法,它可以计算每个特征对…...
TDesign 中后台系统搭建
目录 1 模板安装2 启动项目3 添加页面总结 一般如果希望开发小程序,是要给使用的用户提供一套中后台系统来管理数据的。现在中后台系统开源项目也比较多,本篇我们介绍一个腾讯开源的TDesign模板。 1 模板安装 先要在电脑里安装好nodejs,搜索…...
Android 实现阅读用户协议的文字控件效果
开发中,经常要用到一些阅读隐私协议的场景,原生的textview控件很难做到在一个控件里有两个点击事件,那现在就来安利一个强大的组件——SpannableStringBuilder。 先看看效果: 直接上代码,布局文件: <Li…...
19.主题时钟
主题时钟 html部分 <div class"btn">黑色</div><div class"clock-container"><div class"time">21</div><div class"date">21</div><div class"clock"><div class&qu…...
ChatGPT在智能电子设备中的应用如何?
ChatGPT在智能电子设备中有着广泛的应用潜力,可以为电子设备提供更智能、更个性化的用户体验,并为用户提供更多便利和高效的功能和服务。智能电子设备是指通过集成计算机、传感器、网络和人工智能等技术,实现智能化的功能和交互的设备。ChatG…...
MGRE之OSPF实验
目录 题目: 步骤二:拓扑设计与地址规划编辑 步骤三:IP地址配置 步骤四:缺省路由配置 步骤五:NAT的配置 步骤六:MGRE配置 中心站点R1配置 分支站点配置 中心站点R5 R1配置 分支站点配置 检测&…...
国产AI Agent爆发:从“龙虾风暴”看企业级Agent工具选型与实战指南
摘要: 作为一名在企业架构领域摸爬滚打15年的老兵,我见证了从SOA到微服务,再到如今AI原生架构的数次演进。2026年3月底,国内AI圈掀起的“龙虾风暴”标志着Agent工具正式进入爆发期。然而,对于IT负责人和CIO而言&#x…...
终极指南:Redoc安全最佳实践,全面保护你的API文档
终极指南:Redoc安全最佳实践,全面保护你的API文档 【免费下载链接】redoc 📘 OpenAPI/Swagger-generated API Reference Documentation 项目地址: https://gitcode.com/gh_mirrors/re/redoc Redoc是一款强大的OpenAPI/Swagger生成API参…...
Spring IoC 与 DI 核心详解 —— 基于 XML 配置:Bean 创建、依赖注入与生命周期全解析(Spring系列1)
在 Java 企业级开发中,Spring 框架凭借其强大的 IoC(控制反转) 与 DI(依赖注入) 能力,成为了事实上的标准。本文将带你从最原始的 XML 配置开始,逐步过渡到纯注解开发,并深入剖析 Io…...
点集相等概念表明流传2300多年使世人深信不疑的直线公理将无穷多各异直线误为同一线
黄小宁 “科学”共识:在初等数学领域绝对不可能有颠覆性创新,谁若说“已非常成熟”的初等数学存在重大错误那就说明谁有“自大狂型精神病”。 “实数集”R可几何化为R轴。与x∈R相异(等)的实数均可表为yxδ(增量δ可…...
飞书机器人自动化:OpenClaw调用Qwen3-4B实现会议纪要生成
飞书机器人自动化:OpenClaw调用Qwen3-4B实现会议纪要生成 1. 为什么选择OpenClawQwen3-4B做会议纪要 上个月我经历了连续三天的跨部门会议,每天手动整理会议纪要到深夜的痛苦让我开始寻找自动化解决方案。试过几款SaaS工具后,发现要么需要上…...
被头条、站长论坛力荐!爱娃子博客:五年深耕,藏着普通人最动人的生活真相
在流量至上、内容同质化严重的当下,想找到一个不迎合热度、不堆砌噱头,却能让人反复品读、获得共鸣的博客,早已成为很多人的奢望。而今天要给大家推荐的爱娃子博客,正是这样一处被各大平台力荐的“心灵栖息地”——它不仅被今日头…...
GESP2025年3月认证C++三级( 第一部分选择题(1-8))
🎯 第1题:Base64魔法箱📜 题目核心: 👉 每 3个字节 → 变成4个字节1、🧠 故事理解有一个魔法机器:👉 每放进去 3个苹果 🍎🍎🍎(不足3个…...
Arduino I²C pH传感器库:高鲁棒性嵌入式pH测量方案
1. 项目概述 iarduino_I2C_pH 是一款专为 iArduino 系列 IC 接口 pH 传感器模块设计的 Arduino 兼容 C 库。该库面向嵌入式硬件工程师与固件开发者,提供对 pH-метр(pH 计)模块的完整底层控制能力,支持标准硬件 IC 外设&#…...
2026届学术党必备的五大AI辅助写作网站推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下这个学术写作的场景范围里,论文AI工具已然变成辅助研究者去完成文献梳理的…...
空间多组学解决方案发展提速:未来六年CAGR锁定15.3%,行业增长预期持续向好
在生命科学领域,精准医学和个性化治疗的需求日益增长,对生物组织和细胞在空间维度上的深入理解成为关键。空间多组学解决方案作为这一需求的核心支撑技术,正受到全球科研和产业界的广泛关注。据恒州诚思调研统计,2025年全球空间多…...
