Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux – quota的举例说明

Linux – quota的举例说明

作者头像
全栈程序员站长
发布于 2022-07-22 06:44:07
发布于 2022-07-22 06:44:07
1.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

实作 Quota 流程-1:文件系统支持

[root@www ~]# df -h /home Filesystem Size Used Avail Use% Mounted on /dev/hda3 4.8G 740M 3.8G 17% /home <==鸟哥主机的 /home 确实是独立的! [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw)

从上面的数据来看,这部主机的 /home 确实是独立的 filesystem,因此可以直接限制 /dev/hda3 。 如果你的系统的 /home 并非独立的文件系统,那么可能就得要针对根目录 (/) 来规范了!不过,不太建议在根目录配置 Quota。 此外,由於 VFAT 文件系统并不支持 Linux Quota 功能,所以我们得要使用 mount 查询一下 /home 的文件系统为何? 看起来是 Linux 传统的 ext2/ext3 ,这种文件系统肯定有支持 Quota 啦!没问题!

如果只是想要在这次启动中实验 Quota ,那么可以使用如下的方式来手动加入 quota 的支持:

[root@www ~]# mount -o remount,usrquota,grpquota /home [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota) # 重点就在於 usrquota, grpquota !注意写法!

事实上,当你重新挂载时,系统会同步升级 /etc/mtab 这个文件, 所以你必须要确定 /etc/mtab 已经加入 usrquota, grpquota 的支持到你所想要配置的文件系统中。 另外也要特别强调,使用者与群组的 quota 文件系统支持参数分别是:usrquota, grpquota !千万不要写错了!这一点非常多初接触 Quota 的朋友常常搞错。

不过手动挂载的数据在下次重新挂载就会消失,因此最好写入配置档中啊!

[root@www ~]# vi /etc/fstab LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 # 其他项目鸟哥并没有列出来!重点在於第四栏位!於 default 后面加上两个参数! [root@www ~]# umount /home [root@www ~]# mount -a [root@www ~]# mount | grep home /dev/hda3 on /home type ext3 (rw,usrquota,grpquota)

还是要再次的强调,修改完 /etc/fstab 后,务必要测试一下!若有发生错误得要赶紧处理! 因为这个文件如果修改错误,是会造成无法启动完全的情况啊!切记切记!最好使用 vim 来修改啦! 因为会有语法的检验,就不会让你写错字了!

实作 Quota 流程-2:创建 quota 记录档

其实 Quota 是透过分析整个文件系统中,每个使用者(群组)拥有的文件总数与总容量, 再将这些数据记录在该文件系统的最顶层目录,然后在该记录档中再使用每个帐号(或群组)的限制值去规范磁碟使用量的。 所以啦,建置这个 Quota 记录档就显的非常的重要。扫瞄有支持 Quota 参数 (usrquota, grpquota) 的文件系统, 就使用 quotacheck 这个命令!这个命令的语法如下:

quotacheck :扫瞄文件系统并创建 Quota 的记录档

[root@www ~]# quotacheck [-avugfM] [/mount_point] 选项与参数: -a :扫瞄所有在 /etc/mtab 内,含有 quota 支持的 filesystem,加上此参数后, /mount_point 可不必写,因为扫瞄所有的 filesystem 了嘛! -u :针对使用者扫瞄文件与目录的使用情况,会创建 aquota.user -g :针对群组扫瞄文件与目录的使用情况,会创建 aquota.group -v :显示扫瞄过程的资讯; -f :强制扫瞄文件系统,并写入新的 quota 配置档 (危险) -M :强制以读写的方式扫瞄文件系统,只有在特殊情况下才会使用。

quotacheck 的选项你只要记得『 -avug 』一起下达即可!那个 -f 与 -M 是在文件系统可能已经启动 quota 了, 但是你还想要重新扫瞄文件系统时,系统会要求你加入那两个选项啦 (担心有其他人已经使用 quota 中)!平时没必要不要加上那两个项目。

# 针对整个系统含有 usrquota, grpquota 参数的文件系统进行 quotacheck 扫瞄 [root@www ~]# quotacheck -avug quotacheck: Scanning /dev/hda3 [/home] quotacheck: Cannot stat old user quota file: No such file or directory <==有找到文件系统,但尚未制作记录档! quotacheck: Cannot stat old group quota file: No such file or directory quotacheck: Cannot stat old user quota file: No such file or directory quotacheck: Cannot stat old group quota file: No such file or directory done <==上面三个错误只是说明记录档尚未创建而已,可以忽略不理! quotacheck: Checked 130 directories and 107 files <==实际搜寻结果 quotacheck: Old file not found. quotacheck: Old file not found. # 若运行这个命令却出现如下的错误信息,表示你没有任何文件系统有启动 quota 支持! # quotacheck: Can't find filesystem to check or filesystem not mounted with # quota option. [root@www ~]# ll -d /home/a* -rw------- 1 root root 8192 Mar 6 11:58 /home/aquota.group -rw------- 1 root root 9216 Mar 6 11:58 /home/aquota.user # 在鸟哥的案例中,/home 独立的文件系统,因此搜寻结果会将两个记录档放在 # /home 底下。这两个文件就是 Quota 最重要的资讯了!

这个命令只要进行到这里就够了,不要反覆的进行!因为等一下我们会启动 quota 功能,若启动后你还要进行 quotacheck , 系统会担心破坏原有的记录档,所以会产生一些错误信息警告你。如果你确定没有任何人在使用 quota 时, 可以强制重新进行 quotacheck 的动作。强制运行的情况可以使用如下的选项功能:

# 如果因为特殊需求需要强制扫瞄已挂载的文件系统时 [root@www ~]# quotacheck -avug -mf quotacheck: Scanning /dev/hda3 [/home] done quotacheck: Checked 130 directories and 109 files # 数据要简洁很多!因为有记录档存在嘛!所以警告信息不会出现!

这样记录档就创建起来了!你不用手动去编辑那两个文件~因为那两个文件是 quota 自己的数据档,并不是纯文字档啦! 且该文件会一直变动,这是因为当你对 /home 这个文件系统进行操作时,你操作的结果会影响磁碟吧! 所以当然会同步记载到那两个文件中啦!所以要创建 aquota.user, aquota.group,记得使用的是 quotacheck 命令! 不是手动编辑的喔!

实作 Quota 流程-3:Quota 启动、 关闭与限制值配置

制作好 Quota 配置档之后,接下来就是要启动 quota 了!启动的方式很简单!使用 quotaon ,至於关闭就用 quotaoff 即可

quotaon :启动 quota 的服务

[root@www ~]# quotaon [-avug] [root@www ~]# quotaon [-vug] [/mount_point] 选项与参数: -u :针对使用者启动 quota (aquota.user) -g :针对群组启动 quota (aquota.group) -v :显示启动过程的相关信息; -a :根据 /etc/mtab 内的 filesystem 配置启动有关的 quota ,若不加 -a 的话, 则后面就需要加上特定的那个 filesystem 喔! # 由於我们要启动 user/group 的 quota ,所以使用底下的语法即可 [root@www ~]# quotaon -auvg /dev/hda3 [/home]: group quotas turned on /dev/hda3 [/home]: user quotas turned on # 特殊用法,假如你的启动 /var 的 quota 支持,那么仅启动 user quota 时 [root@www ~]# quotaon -uv /var

这个『 quotaon -auvg 』的命令几乎只在第一次启动 quota 时才需要进行!因为下次等你重新启动系统时, 系统的 /etc/rc.d/rc.sysinit 这个初始化脚本就会自动的下达这个命令了!

quotaoff :关闭 quota 的服务

[root@www ~]# quotaoff [-a] [root@www ~]# quotaoff [-ug] [/mount_point] 选项与参数: -a :全部的 filesystem 的 quota 都关闭 (根据 /etc/mtab) -u :仅针对后面接的那个 /mount_point 关闭 user quota -g :仅针对后面接的那个 /mount_point 关闭 group quota

edquota :编辑帐号/群组的限值与宽限时间

edquota 是 edit quota 的缩写,所以就是用来编辑使用者或者是群组限额的命令罗。

[root@www ~]# edquota [-u username] [-g groupname] [root@www ~]# edquota -t <==修改宽限时间 [root@www ~]# edquota -p 范本帐号 -u 新帐号 选项与参数: -u :后面接帐号名称。可以进入 quota 的编辑画面 (vi) 去配置 username 的限制值; -g :后面接群组名称。可以进入 quota 的编辑画面 (vi) 去配置 groupname 的限制值; -t :可以修改宽限时间。 -p :复制范本。那个 范本帐号 为已经存在并且已配置好 quota 的使用者, 意义为『将 范本帐号 这个人的 quota 限制值复制给 新帐号 』!

范例一:配置 dmtsai 这个使用者的 quota 限制值 [root@www ~]# edquota -u myquota1 Disk quotas for user myquota1 (uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 0 0 10 0 0

上头第一行在说明针对哪个帐号 (myquota1) 进行 quota 的限额配置,第二行则是标头行,里面共分为七个栏位, 七个栏位分别的意义为:

1、文件系统 (filesystem):说明该限制值是针对哪个文件系统 (或 partition); 2、磁碟容量 (blocks):这个数值是 quota 自己算出来的,单位为 Kbytes,请不要更动他; 3、soft:磁碟容量 (block) 的 soft 限制值,单位亦为 KB 4、hard:block 的 hard 限制值,单位 KB; 5、文件数量 (inodes):这是 quota 自己算出来的,单位为个数,请不要更动他; 6、soft:inode 的 soft 限制值; 7、hard:inode 的 hard 限制值; 当 soft/hard 为 0 时,表示没有限制的意思。好,依据我们的范例说明,我们需要配置的是 blocks 的 soft/hard ,至於 inode 则不要去更动他!因此上述的画面我们将他改成如下的模样:

Disk quotas for user myquota1 (uid 710): Filesystem blocks soft hard inodes soft hard /dev/hda3 80 250000 300000 10 0 0 # 鸟哥使用 1000 去近似 1024 的倍数!比较好算啦!然后就可以储存后离开罗!

# 将 myquota1 的限制值复制给其他四个帐号 [root@www ~]# edquota -p myquota1 -u myquota2 [root@www ~]# edquota -p myquota1 -u myquota3 [root@www ~]# edquota -p myquota1 -u myquota4 [root@www ~]# edquota -p myquota1 -u myquota5

[root@www ~]# edquota -g myquotagrp Disk quotas for group myquotagrp (gid 713): Filesystem blocks soft hard inodes soft hard /dev/hda3 400 900000 1000000 50 0 0 # 记得,单位为 KB 喔!

# 宽限时间原本为 7 天,将他改成 14 天吧! [root@www ~]# edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/hda3 14days 7days # 原本是 7days ,我们将他给改为 14days 喔!

实作 Quota 流程-4:Quota 限制值的报表

quota :单一用户的 quota 报表

[root@www ~]# quota [-uvs] [username] [root@www ~]# quota [-gvs] [groupname] 选项与参数: -u :后面可以接 username ,表示显示出该使用者的 quota 限制值。若不接 username ,表示显示出运行者的 quota 限制值。 -g :后面可接 groupname ,表示显示出该群组的 quota 限制值。 -v :显示每个用户在 filesystem 的 quota 值; -s :使用 1024 为倍数来指定单位,会显示如 M 之类的单位! # 直接使用 quota 去显示出 myquota1 与 myquota2 的限额 [root@www ~]# quota -uvs myquota1 myquota2 Disk quotas for user myquota1 (uid 710): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 80 245M 293M 10 0 0 Disk quotas for user myquota2 (uid 711): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 80 245M 293M 10 0 0 # 这个命令显示出来的数据跟 edquota 几乎是一模一样的!只是多了个 grace 项目。 # 你会发现 grace 底下没有任何数据,这是因为我们的使用量 (80) 尚未超过 soft # 显示出 myquotagrp 的群组限额 [root@www ~]# quota -gvs myquotagrp Disk quotas for group myquotagrp (gid 713): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 400 879M 977M 50 0 0

repquota :针对文件系统的限额做报表

[root@www ~]# repquota -a [-vugs] 选项与参数: -a :直接到 /etc/mtab 搜寻具有 quota 标志的 filesystem ,并报告 quota 的结果; -v :输出的数据将含有 filesystem 相关的细部资讯; -u :显示出使用者的 quota 限值 (这是默认值); -g :显示出个别群组的 quota 限值。 -s :使用 M, G 为单位显示结果 # 查询本案例中所有使用者的 quota 限制情况: [root@www ~]# repquota -auvs *** Report for user quotas on device /dev/hda3 <==针对 /dev/hda3 Block grace time: 14days; Inode grace time: 7days <==block 宽限时间为 14 天 Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 651M 0 0 5 0 0 myquota1 -- 80 245M 293M 10 0 0 myquota2 -- 80 245M 293M 10 0 0 myquota3 -- 80 245M 293M 10 0 0 myquota4 -- 80 245M 293M 10 0 0 myquota5 -- 80 245M 293M 10 0 0 Statistics: <==这是所谓的系统相关资讯,用 -v 才会显示 Total blocks: 9 Data blocks: 2 Entries: 22 Used average: 11.000000

实作 Quota 流程-5:测试与管理

# 测试一:利用 myquota1 的身份,建置一个 270MB 的大文件,并观察 quota 结果! [myquota1@www ~]$ dd if=/dev/zero of=bigfile bs=1M count=270 hda3: warning, user block quota exceeded. 270+0 records in 270+0 records out 283115520 bytes (283 MB) copied, 3.20282 seconds, 88.4 MB/s # 注意看,我是使用 myquota1 的帐号去进行 dd 命令的喔!不要恶搞啊! # 然后你可以发现出现一个 warning 的信息喔!接下来看看报表。 [root@www ~]# repquota -auv *** Report for user quotas on device /dev/hda3 Block grace time: 14days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- myquota1 +- 276840 250000 300000 13days 11 0 0 # 这个命令则是利用 root 去查阅的! # 你可以发现 myquota1 的 grace 出现!并且开始倒数了! # 测试二:再创建另外一个大文件,让总容量超过 300M ! [myquota1@www ~]$ dd if=/dev/zero of=bigfile2 bs=1M count=300 hda3: write failed, user block limit reached. dd: writing `bigfile2': Disk quota exceeded <==看!错误信息不一样了! 23+0 records in <==没办法写入了!所以只记录 23 笔 22+0 records out 23683072 bytes (24 MB) copied, 0.260081 seconds, 91.1 MB/s [myquota1@www ~]$ du -sk 300000 . <==果然是到极限了!

此时 myquota1 可以开始处理他的文件系统了!如果不处理的话,最后宽限时间会归零,然后出现如下的画面:

[root@www ~]# repquota -au *** Report for user quotas on device /dev/hda3 Block grace time: 00:01; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- myquota1 +- 300000 250000 300000 none 11 0 0 # 倒数整个归零,所以 grace 的部分就会变成 none 啦!不继续倒数

warnquota :对超过限额者发出警告信

warnquota字面上的意义就是 quota 的警告 (warn) 嘛!那么这东西有什么用呢?他可以依据 /etc/warnquota.conf 的配置,然后找出目前系统上面 quota 用量超过 soft (就是有 grace time 出现的那些家伙) 的帐号,透过 email 的功能将警告信件发送到使用者的电子邮件信箱。 warnquota 并不会自动运行,所以我们需要手动去运行他。单纯运行『 warnquota 』之后,他会发送两封信出去, 一封给 myquota1 一封给 root !

[root@www ~]# warnquota # 完全不会出现任何信息!没有信息就是『好信息』! ^_^ [root@www ~]# mail N329 root@www.vbird.tsai Fri Mar 6 16:10 27/1007 "NOTE: .... & 329 <==因为新信件在第 329 封之故 From root@www.vbird.tsai Fri Mar 6 16:10:18 2009 Date: Fri, 6 Mar 2009 16:10:17 +0800 From: root <root@www.vbird.tsai> Reply-To: root@myhost.com Subject: NOTE: You are exceeding your allocated disk space limits To: myquota1@www.vbird.tsai Cc: root@www.vbird.tsai <==注意这三行,分别是标题、收件者与副本 (CC)。 Your disk usage has exceeded the agreed limits on this server <==问题说明 Please delete any unnecessary files on following filesystems: /dev/hda3 <==底下这几行为发生磁碟『爆表』的资讯啦! Block limits File limits Filesystem used soft hard grace used soft hard grace /dev/hda3 +- 300000 250000 300000 13days 12 0 0 root@localhost <==这个是警告信息发送者的『签名数据』啦! & exit <==离开 mail 程序!

[root@www ~]# warnquota # 完全不会出现任何信息!没有信息就是『好信息』! ^_^ [root@www ~]# mail N329 root@www.vbird.tsai Fri Mar 6 16:10 27/1007 "NOTE: .... & 329 <==因为新信件在第 329 封之故 From root@www.vbird.tsai Fri Mar 6 16:10:18 2009 Date: Fri, 6 Mar 2009 16:10:17 +0800 From: root <root@www.vbird.tsai> Reply-To: root@myhost.com Subject: NOTE: You are exceeding your allocated disk space limits To: myquota1@www.vbird.tsai Cc: root@www.vbird.tsai <==注意这三行,分别是标题、收件者与副本 (CC)。 Your disk usage has exceeded the agreed limits on this server <==问题说明 Please delete any unnecessary files on following filesystems: /dev/hda3 <==底下这几行为发生磁碟『爆表』的资讯啦! Block limits File limits Filesystem used soft hard grace used soft hard grace /dev/hda3 +- 300000 250000 300000 13days 12 0 0 root@localhost <==这个是警告信息发送者的『签名数据』啦! & exit <==离开 mail 程序!

如果你重复运行 warnquota ,那么 myquota1 就会收到类似如下的信件内容:

Subject: 注意:你在本系统上拥有的文件容量已经超过最大容许限额 To: myquota1@www.vbird.tsai Cc: root@www.vbird.tsai 你的磁碟容量已经超过本机的容许限额, 请在如下的文件系统中,删除不必要的文件: /dev/hda3 Filesystem used soft hard grace used soft hard grace /dev/hda3 +- 300000 250000 300000 none 11 0 0 你的系统管理员 (root@localhost)

不过这个方法并不适用在 /var/spool/mail 也爆表的 quota 控管中,因为如果使用者在这个 filesystem 的容量已经爆表,那么新的信件当然就收不下来啦!此时就只能等待使用者自己发现并跑来这里删除数据, 或者是请求 root 帮忙处理罗!知道了这玩意儿这么好用,那么我们怎么让系统自动的运行 warnquota 呢? 你可以这样做:

[root@www ~]# vi /etc/cron.daily/warnquota /usr/sbin/warnquota # 你没有看错!只要这一行,且将运行档以绝对路径的方式写入即可! [root@www ~]# chmod 755 /etc/cron.daily/warnquota

setquota :直接於命令中配置 quota 限额

如果你想要使用 script 的方法来创建大量的帐号,并且所有的帐号都在创建时就给予 quota ,那该如何是好? 其实有两个方法可以考虑: 1、先创建一个原始 quota 帐号,再以『 edquota -p old -u new 』写入 script 中; 2、直接以 setquota 创建用户的 quota 配置值。

不同於 edquota 是呼叫 vi 来进行配置,setquota 直接由命令输入所必须要的各项限制值。 他的语法有点像这样:

[root@www ~]# setquota [-u|-g] 名称 block(soft) block(hard) \ > inode(soft) inode(hard) 文件系统 # 观察原始的 myquota5 限值,并给予 soft/hard 分别为 100000/200000 [root@www ~]# quota -uv myquota5 Disk quotas for user myquota5 (uid 714): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 80 250000 300000 10 0 0 [root@www ~]# setquota -u myquota5 100000 200000 0 0 /home [root@www ~]# quota -uv myquota5 Disk quotas for user myquota5 (uid 714): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 80 100000 200000 10 0 0 # 看吧!真的有改变过来!这就是 quota 的简单脚本配置语法!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/125809.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
面试官:说说如何打破或违反双亲委派!
SPI的全名为Service Provider Interface,主要是应用于厂商自定义组件或插件中,在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java SPI机制的思想:我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块、xml解析模块、jdbc模块等方案。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具体的实现类,就违反了可拔插的原则,如果需要替换一种实现,就需要修改代码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。Java SPI就是提供这样的一个机制:为某个接口寻找服务实现的机制。有点类似IOC的思想,就是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要。
业余草
2021/12/06
2.2K1
面试官:说说如何打破或违反双亲委派!
双亲委派机制,懂吧~ 那什么情况下需要破坏它,知道吗?
那么在Class的forName(className)方法中,会根据是谁调用了Class.forName(className)这个方法,那么就获得当时加载了它的那个ClassLoader,然后,再通过类加载器来负责对类进行加载操作。
爪哇缪斯
2023/08/19
3190
双亲委派机制,懂吧~ 那什么情况下需要破坏它,知道吗?
【Java——SPI机制详解】
SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,主要是被框架的开发人员使用,比如java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,MySQL和PostgreSQL都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。Java中SPI机制主要思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,其核心思想就是 解耦。
奥耶可乐冰
2024/05/31
2K0
Java的SPI机制实践
先给出结论:“Java的SPI是一种服务发现机制,用于约定接口和动态发现实现类,体现了分层解耦的思想”。 Java的SPI机制常用于框架扩展或组件替换,最常见的Java SPI应用就是JDBC Driver,JDK提供了java.sql.Driver接口,却将具体的实现交给了相应的数据库驱动,比如:在mysql-connector-java-6.0.6.jar文件中可以看到一个遵循Java SPI机制的文件META-INF/services/java.sql.Driver,并且在该文件中定义了具体的驱动实现类完整限定名称:com.mysql.cj.jdbc.Driver。
编程随笔
2023/10/15
2310
Java的SPI机制实践
一文读懂微内核架构
微内核是一种典型的架构模式 ,区别于普通的设计模式,架构模式是一种高层模式,用于描述系统级的结构组成、相互关系及相关约束。微内核架构在开源框架中的应用非常广泛,比如常见的 ShardingSphere 还有Dubbo都实现了自己的微内核架构。那么,在介绍什么是微内核架构之前,我们有必要先阐述这些开源框架会使用微内核架构的原因。
JAVA日知录
2021/01/04
3.3K0
一文读懂微内核架构
Java SPI机制详解
什么是SPI? SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实
aoho求索
2018/06/04
1.2K0
SPI 机制-插件化扩展功能
SPI(Service Provider Interfaces),中文直译服务提供者接口,一种服务发现机制。可能很多人都不太熟悉这个机制,但是平常或多或少都用到了这个机制,比如我们使用 JDBC 连接操作数据库的时候。
andyxh
2019/09/05
9720
SPI 机制-插件化扩展功能
温习 SPI 机制 (Java SPI 、Spring SPI、Dubbo SPI)
SPI 全称为 Service Provider Interface,是一种服务发现机制。
勇哥java实战
2024/10/29
3580
温习 SPI 机制 (Java SPI 、Spring SPI、Dubbo SPI)
深入理解 Java 中 SPI 机制
SPI(Service Provider Interface),是JDK内置的一种服务提供发现机制,本文由浅入深地介绍了Java SPI机制。
2020labs小助手
2019/09/09
8660
JAVA拾遗--关于SPI机制
JDK提供的SPI(Service Provider Interface)机制,可能很多人不太熟悉,因为这个机制是针对厂商或者插件的,也可以在一些框架的扩展中看到。其核心类 java.util.ServiceLoader可以在jdk1.8的文档中看到详细的介绍。虽然不太常见,但并不代表它不常用,恰恰相反,你无时无刻不在用它。玄乎了,莫急,思考一下你的项目中是否有用到第三方日志包,是否有用到数据库驱动?其实这些都和SPI有关。再来思考一下,现代的框架是如何加载日志依赖,加载数据库驱动的,你可能会对class.
kirito-moe
2018/04/27
9040
JAVA拾遗--关于SPI机制
Java SPI机制的运行原理是什么?
SPI的全称是(Service Provider Interface)是服务提供接口的意思。如果我们不写框架性代码或者开发插件的话,对于SPI机制可能不会那么熟悉,但如果我们阅读诸如Dubbo、JDBC数据库驱动包、Spring以及最近比较流行的Spring Boot相关starter组件源码的话,就会发现SPI机制及其思想在这些框架中有大量的应用。
用户5927304
2019/07/30
1.9K0
Java SPI机制的运行原理是什么?
JAVA SPI 是怎么实现的?
SPI(Service Provider Interface) ,是 JDK 内置的一种提供发现机制。SPI 是一种动态替换发现的机制。
王小明_HIT
2020/06/04
7680
JAVA SPI  是怎么实现的?
项目中疯狂使用SPI思想,在这里总结下
相信你对SPI机制也所了解,但在项目中估计就没用过。巧了,前段时间我们项目中疯狂使用SPI思想,今天就来总结一下。
田维常
2022/11/25
4420
项目中疯狂使用SPI思想,在这里总结下
java SPI机制的使用及原理
本片文章是针对dubbo SPI机制深入分析的平滑过渡的作用。当然咱们主要是学习优秀的思想,SPI就是一种解耦非常优秀的思想,我们可以思考在我们项目开发中是否可以使用、是否可以帮助我们解决某些问题、或者能够更加提升项目的框架等
全栈程序员站长
2021/08/05
3640
JAVA 拾遗 —— 关于SPI机制
实现一个自定义的SPI1. 项目结构2. interface 模块3. good-printer 模块4. bad-printer模块SPI 在实际项目中的应用SPI 在扩展方面的应用
芋道源码
2019/10/29
4980
JAVA 拾遗 —— 关于SPI机制
Java SPI机制和使用示例
SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface。根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即服务提供者。然后在使用的时候再根据 SPI 的规范去获取对应的服务提供者的服务实现。通过 SPI 服务加载机制进行服务的注册和发现,可以有效的避免在代码中将服务提供者写死。从而可以基于接口编程,实现模块间的解耦。
朝雨忆轻尘
2019/06/19
2.5K0
聊聊 SPI 机制
短信平台是通过 SPI 机制加载三方渠道插件,所以这篇文章,我们有必要温习 SPI 机制。
勇哥java实战
2023/11/25
3510
(转)JAVA拾遗--关于SPI机制
JDK提供的SPI(Service Provider Interface)机制,可能很多人不太熟悉,因为这个机制是针对厂商或者插件的,也可以在一些框架的扩展中看到。其核心类java.util.ServiceLoader可以在jdk1.8的文档中看到详细的介绍。虽然不太常见,但并不代表它不常用,恰恰相反,你无时无刻不在用它。玄乎了,莫急,思考一下你的项目中是否有用到第三方日志包,是否有用到数据库驱动?其实这些都和SPI有关。再来思考一下,现代的框架是如何加载日志依赖,加载数据库驱动的,你可能会对class.forName(“com.mysql.jdbc.Driver”)这段代码不陌生,这是每个java初学者必定遇到过的,但如今的数据库驱动仍然是这样加载的吗?你还能找到这段代码吗?这一切的疑问,将在本篇文章结束后得到解答。
屈定
2018/09/27
9150
(转)JAVA拾遗--关于SPI机制
源码级深度理解 Java SPI
SPI 是一种用于动态加载服务的机制。它的核心思想就是解耦,属于典型的微内核架构模式。SPI 在 Java 世界应用非常广泛,如:Dubbo、Spring Boot 等框架。本文从源码入手分析,深入探讨 Java SPI 的特性、原理,以及在一些比较经典领域的应用。
2020labs小助手
2022/11/07
8740
聊聊 Java SPI
SPI (Service Provider Interface) 是自 Java 1.6 引入的一种基于接口或抽象类的服务发现机制。得益于 Java SPI 机制,开发人员只需为第三方预留出 SPI 拓展接口,这样可以在不修改代码的前提下,通过增删第三方依赖来实现系统的灵活拓展。
程序猿杜小头
2022/12/01
8930
聊聊 Java SPI
相关推荐
面试官:说说如何打破或违反双亲委派!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档