Solon的E-Spi与H-Spi机制:解决fatjar部署难题,该选哪个?
【Java服务部署难题与Solon机制】将一个Java服务打成单个fatjar发布出去后运维想更改数据源指向业务团队想在不重启进程的情况下下线模块若只能选择“重新打包、整包重发”会产生诸多不便。而Solon为解决这些问题准备了两套机制E-Spi体外扩展和H-Spi热插拔。不过选错机制代价要么是灵活性要么是稳定性。下面将详细介绍它们的使用方法和适用场景。【共同痛点fatjar密封难题】fatjar部署方便但修改困难配置文件和业务模块都被打包在其中。E-Spi和H-Spi都能解决这一问题但契约不同。E-Spi可将配置文件和插件jar放在fatjar外面启动时加载进同一运行时简单且无需额外依赖但变更需重启H-Spi为每个插件提供独立的ClassLoader可在服务持续运行时启停模块能力更强但责任也更大。【E-Spi配置与模块外置方案】E-Spi直接针对fatjar部署场景。指定一个扩展目录启动时Solon会扫描并加载其中内容包括.properties/.yml文件作为扩展配置.jar/.zip文件作为插件包。具体步骤如下第一步 ---- 声明扩展目录可通过配置solon.extend指定扩展目录若加上“!”前缀Solon会自动创建该目录。第二步 ---- 放置文件将相关文件放在jar旁边如demo.jar、demo_ext/_db.properties、demo_ext/demo_user.jar、demo_ext/demo_order.jar。这样数据源配置在jar外运维可直接修改配置文件无需触碰fatjar。第三步可选 ---- 代码加载若想在代码中加载额外内容内核提供了接口。底层是AppClassLoader.addJar(URL | File)体现了E-Spi的特点一切共享拆合随意更新需重启无额外依赖。同时插件jar打包有要求官方示例为“demo2002-external_ext”。【H-Spi隔离与热替换利器】H-Spi是更强大的工具可将业务模块开发成自包含的插件包服务运行时可实时加载和卸载。与E-Spi的本质区别是隔离每个插件有自己的ClassLoader、AppContext和配置更新插件无需重启主服务但主应用需引入solon-hotplug依赖。ClassLoader契约隔离是关键类的可见性规则重要。父ClassLoader的类和资源子级可见但子级注册的东西需在父级stop事件中注销兄弟ClassLoader之间无法使用彼此的类和资源需通过事件总线沟通。start与stop方法可热插拔的插件实现Plugin接口start方法注册模块所需资源stop方法必须移除注册过的所有资源否则会泄漏。模板渲染在ClassLoader上有坑渲染器需钉在正确的ClassLoader上。跨模块通讯靠事件总线配弱类型载荷官方示例包为“demo1011”插件管理可借助solon-hotplug进一步优化。【E-Spi与H-Spi对比】从ClassLoader、AppContext、配置共享情况更新后是否需重启额外依赖侧重点资源移除方式跨模块通讯方式底层机制等维度对比E-Spi和H-Spi各有特点。维度E-SpiH-SpiClassLoader / AppContext / 配置共享隔离完全更新后是否需重启是否热更新额外依赖无内核内置solon-hotplug侧重点简单体外扩展 / 改配置隔离 热插拔 管理资源移除无需特殊处理必须在“stop”里手动移除所有注册的资源跨模块通讯直接共享事件总线 / 弱类型数据底层机制AppClassLoader.addJar隔离ClassLoader “Plugin.start/stop”【如何选择E-Spi与H-Spi】选择时可思考“这东西必须在不重启的情况下变更吗”若不需要有重启窗口即可可选择E-Spi它能满足多数“不想重打fatjar”的场景无额外依赖和生命周期记账负担若需要模块变更时服务一直在线则选择H-Spi可获得真正的隔离和实时替换但需遵守stop清理纪律和跨模块契约。不少团队会同时使用两者E-Spi管外置配置H-Spi管需热替换的模块。对于长期演进的Solon服务结构设计建议仔细阅读官方文档。那么你的fatjar最需要先甩掉的是配置还是整个模块

相关新闻

5分钟快速上手:RVC语音转换终极指南与实战技巧

5分钟快速上手:RVC语音转换终极指南与实战技巧

5分钟快速上手&#xff1a;RVC语音转换终极指南与实战技巧 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrieval-based-Voice-Conversion-Web…

2026/8/6 22:12:32 阅读更多 →
公证和海牙认证有什么区别?所需材料、周期攻略快收藏

公证和海牙认证有什么区别?所需材料、周期攻略快收藏

准备出国留学、跨国结婚或是企业出海&#xff0c;你是不是也被各种“认证”搞得头大&#xff1f;明明手里已经有了公证书&#xff0c;为什么还要再跑一趟去办海牙认证&#xff1f;这两者到底是不是一回事&#xff1f;别急&#xff0c;今天这篇干货满满的文章&#xff0c;帮你把…

2026/8/6 22:11:32 阅读更多 →
ass服务器管理员手册:监控上传活动、设置速率限制与系统维护

ass服务器管理员手册:监控上传活动、设置速率限制与系统维护

ass服务器管理员手册&#xff1a;监控上传活动、设置速率限制与系统维护 【免费下载链接】ass The simple self-hosted ShareX server 项目地址: https://gitcode.com/gh_mirrors/as/ass ass&#xff08;GitHub 加速计划&#xff09;作为一款简单的自托管 ShareX 服务器…

2026/8/6 22:11:32 阅读更多 →

最新新闻

2026年华东区域对比:德力西与杭州之江开关高低压元器件售后响应速度哪家更快

2026年华东区域对比:德力西与杭州之江开关高低压元器件售后响应速度哪家更快

德力西的高低压元器件和之江开关比&#xff0c;哪家在华东地区的售后响应更快&#xff1f;基于现有可核验公开信息&#xff0c;杭州之江开关股份有限公司的华东区域售后响应速度更快&#xff0c;目前可验证的信息显示&#xff0c;之江开关售后工程师平均2.1小时内即可抵达华东区…

2026/8/6 22:55:50 阅读更多 →
揭秘音频特征提取:用Pyechonest Track模块解析音乐的每一个细节

揭秘音频特征提取:用Pyechonest Track模块解析音乐的每一个细节

揭秘音频特征提取&#xff1a;用Pyechonest Track模块解析音乐的每一个细节 【免费下载链接】pyechonest Python client for the Echo Nest API 项目地址: https://gitcode.com/gh_mirrors/py/pyechonest Pyechonest是一个强大的Python客户端&#xff0c;专为Echo Nest …

2026/8/6 22:55:50 阅读更多 →
Kioxia与Sandisk推出全新3D闪存技术,实现业界最高的QLC NAND比特密度

Kioxia与Sandisk推出全新3D闪存技术,实现业界最高的QLC NAND比特密度

第十代QLC 3D闪存标志着AI存储架构、云平台及数据密集型创新的重大飞跃 未来内存与存储大会(FMS)——Kioxia Holdings Corporation (TOKYO: 285A)旗下子公司Kioxia Corporation与Sandisk Corporation (Nasdaq: SNDK)今日联合发布其新一代四层单元(QLC) 3D闪存技术。与第八代产品…

2026/8/6 22:55:50 阅读更多 →
HCIP IS-IS实验:华为认证路由协议实战指南

HCIP IS-IS实验:华为认证路由协议实战指南

1. HCIP IS-IS综合实验项目概述这个实验项目是华为认证HCIP数通方向的核心实训内容&#xff0c;主要针对IS-IS路由协议的实际应用场景设计。作为华为认证体系中的专业级认证&#xff0c;HCIP数通认证要求考生不仅掌握理论知识&#xff0c;更需要具备实际网络部署和故障排查能力…

2026/8/6 22:55:50 阅读更多 →
天天熬夜排障写报告,行长还觉得运维没事干

天天熬夜排障写报告,行长还觉得运维没事干

“你们运维部&#xff0c;一天到晚都在忙啥&#xff1f;我看系统也没出啥大问题啊。”这句话&#xff0c;行长在会上说了不下三遍。每次说完&#xff0c;都云淡风轻地翻到下一页PPT&#xff0c;完全没注意到运维老张那张憋得通红的脸。老张坐在角落里&#xff0c;攥着拳头&…

2026/8/6 22:55:50 阅读更多 →
PortMaster进阶技巧:手动安装游戏移植包与版本更新完全指南

PortMaster进阶技巧:手动安装游戏移植包与版本更新完全指南

PortMaster进阶技巧&#xff1a;手动安装游戏移植包与版本更新完全指南 【免费下载链接】PortMaster A simple tool that allows you to download various game ports that are available for 351Elec/AmberElec, ArkOS, JelOS, RetroOZ, TheRA, and UnofficialOS for the RK33…

2026/8/6 22:54:49 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述&#xff1a;为什么我们需要深入LimboAI的C内核&#xff1f;如果你是一名使用Godot引擎的游戏开发者&#xff0c;尤其是对AI行为逻辑有较高要求的项目&#xff0c;那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好&#xff0c;我是老张&#xff0c;一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架&#xff0c;处理了角色移动和碰撞&#xff0c;这一期&#xff0c;我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延&#xff0c;无需电控启动&#xff0c;是建筑被动消防系统核心构件&#xff0c;行业依托新规管控、城市更新、工业安全升级迎来稳定扩容&#xff0c;整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →