惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Cyberwarzone
Cyberwarzone
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
Cyber Attacks, Cyber Crime and Cyber Security
L
Lohrmann on Cybersecurity
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Cloudflare Blog
V
V2EX
博客园_首页
博客园 - 聂微东
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
G
GRAHAM CLULEY
T
Tenable Blog
Last Week in AI
Last Week in AI
Y
Y Combinator Blog
L
LINUX DO - 最新话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
SecWiki News
SecWiki News
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
N
News | PayPal Newsroom
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
T
Troy Hunt's Blog
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
H
Hacker News: Front Page
A
About on SuperTechFans
B
Blog RSS Feed
Engineering at Meta
Engineering at Meta
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
D
DataBreaches.Net
P
Privacy & Cybersecurity Law Blog
Schneier on Security
Schneier on Security
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Google DeepMind News
Google DeepMind News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Jina AI
Jina AI
D
Docker
P
Proofpoint News Feed

补陋阁 RSS 2.0

补陋阁 补陋阁 补陋阁 补陋阁 补陋阁 补陋阁 补陋阁 补陋阁 补陋阁
补陋阁
补陋阁 · 2025-11-27 · via 补陋阁 RSS 2.0

从公司项目说起

前段时间在整理技术方案时,想起了之前公司的那个项目架构。我们当时做了一个中台系统,配合各种业务模块,效果还挺不错的。简单说就是:

  • 有个中台统一管理所有应用

  • 各个业务模块独立开发、独立部署

  • 前端也是模块化的,可以动态加载

  • 整个流程都是自动化的

总结一下原公司的架构可能为“中台 + 模块化微服务 + 微前端”结合的云原生架构体系,特点是:

  • 中台统一管理:负责应用注册、菜单、权限、页面路由管理

  • 模块化微服务:业务模块独立开发、独立打包、独立部署,Kubernetes 管理生命周期

  • 前端微前端/模块化页面:业务页面可在中台中集成展示

  • CI/CD 构建流水线:模块从开发到部署全自动化


为什么要折腾插件化?

生命在于折腾。

在逛各位大佬们的博客的时候有幸遇到很多优秀的博客,其中不乏有一些独立开发的站点并且开源。

不过有些开源站点他设计的功能会很丰富,导致很多人可能用不上部分功能,所以导致功能冗余占用性能(虽然也只是蚊子腿)。

就好比说博客网站可能主要的就是博客列表、博客详情,除了一些强耦合在页面里的功能如:评论、推荐、总结等功能不能拆分的。

很多开源站点还支持履历、设备展示、照片墙、数据统计、旅游地图等这种单开一个页面的功能,那实际用户使用的时候可能就没有照片墙或者设备需要展示,这几个页面甚至是对应的查询api和库都是不需要的。

这次重构博客的时候我有在思考,博客本质就是文章,其他的内容能不能按类似的方案开发,比如添加一些功能模块,比如:

  • 图书角:展示我读过的书

  • 影视墙:记录看过的电影电视剧

  • 旅游足迹:分享旅行经历

  • 友链管理:方便管理友情链接

但是这套架构在企业环境里确实很香,但当我想要给自己的博客搞类似功能时,发现完全不是那么回事,其技术栈复杂、开发周期长、运维成本高,对于一个个人使用的博客而言无异于是“杀鸡用牛刀”、“大炮打蚊子”。

在前面几月折腾PT的时候发现了一个项目,使用了插件化的开发思路,为此我想借鉴一番。(玩PT的程序大佬是真的多,一个项目里学到好多东西)

用插件来注册对应需要拓展的页面,实现功能的扩展,方便开源后,用户们的自行组装,有点搭积木的意思。


AI加持,尝试“云”架构一波

最近没时间验证,尝试把想要使用的架构和逻辑思路丢给AI,不断的沟通修正,让他回答出一份看似可行的技术架构说明。

以下只是一个方向,还待验证

技术选型策略

分析"前端模块联邦 + 后端插件管理"的技术路线:

前端技术选型:Module Federation + Nuxt

Module Federation是Webpack 5引入的革命性特性,它允许JavaScript应用在运行时动态加载远程模块。这一特性完美契合插件化架构的需求:

  • 动态加载:主应用可在运行时动态加载插件的前端UI和逻辑

  • 依赖共享:可配置共享依赖,避免重复加载

  • 独立部署:各插件可独立开发、独立部署

后端技术选型:PF4J框架 + SpringBoot

PF4J(Plugin Framework for Java)是一个轻量级的Java插件框架,它提供了:

  • 插件生命周期管理:支持插件的安装、启动、停止、卸载

  • 扩展点机制:通过扩展点实现插件与主应用的解耦

  • 类加载隔离:确保插件间的类冲突不会影响主应用

核心组件职责

主应用职责:

  • 提供基础网站功能(博客、个人信息、主页等)

  • 维持轻量级和稳定性,不受插件逻辑影响

  • 负责插件的发现、加载和管理

插件系统职责:

  • 支持功能的动态添加、移除和升级

  • 每个插件独立开发、独立部署

  • 实现具体业务功能(图书角、影视墙、旅游足迹等)

模拟演练

阶段一:开发阶段

前端项目开发:

  1. 创建独立的book-ui项目

  2. 配置Module Federation,暴露./BookPage组件

  3. 构建产出dist/目录

后端项目开发:

  1. 创建book-plugin项目

  2. 实现MenuExtension接口,注册菜单项

  3. 实现RequestExtension接口,处理/books/list请求

  4. 将前端构建产物放入后端资源的static/目录

打包发布:

将后端JAR和前端资源打包成book-corner-1.0.0.zip发布包

阶段二:部署安装阶段

  1. 在个人网站后台上传插件ZIP包

  2. 主应用后端使用PF4J解压并加载JAR文件

  3. 检测到MenuExtension,将菜单信息存入数据库

  4. 检测到静态资源,建立文件映射:http://api.site.com/plugins/book/assets/

  5. 执行插件内置的init.sql,创建plg_book_table

阶段三:运行阶段

  1. 用户访问首页,前端Shell请求/api/config获取配置

  2. 后端返回插件配置信息,包括模块名称、入口文件地址、路由路径

  3. 前端Shell根据配置生成"图书角"菜单项

  4. 用户点击菜单,前端动态加载remoteEntry.js文件

  5. 渲染远程组件,组件内部发起API请求获取数据

  6. 后端拦截请求,转交给book-plugin处理,返回JSON数据

技术优势分析

极致的模块解耦

  • 各插件完全独立,互不影响

  • 插件升级不会影响主应用和其他插件

  • 支持并行开发和部署

主应用轻量化

  • 核心功能精简,启动速度快

  • 内存占用低,运行效率高

  • 稳定性不受插件质量影响

开发效率提升

  • 插件开发者只需关注具体业务逻辑

  • 标准化的接口降低了开发门槛

  • 支持快速原型验证和功能迭代

个站优化

考虑到是个人博客,一个人可以做一些简化:

  1. 统一技术栈,使用相同版本,避免版本冲突,减少插件体积。

  2. 数据库简化,使用一个实例,前缀区分表明、安装建表,卸载删除。

架构升级

当插件量增大(如几十到上百个)时,核心矛盾从「单一插件的前后端协同」转变为「规模化插件的高效管理性能控制隔离稳定性生态标准化」。

原方案的核心架构(MF + PF4J)仍适用,但需要在「加载机制、管理平台、隔离策略、性能优化、生态规范」五个维度进行升级,以下是具体落地方案:

核心升级思路

规模化插件的核心需求是:「平台化管理 + 轻量化运行 + 强隔离 + 低损耗」

  • 管理层面:从「手动加载插件」升级为「插件市场 + 统一管理平台」,支持插件的搜索、安装、升级、卸载全生命周期管理;

  • 加载层面:从「全量加载」升级为「按需加载 + 预加载策略」,避免大量插件同时加载导致的性能问题;

  • 隔离层面:从「基础隔离」升级为「强隔离(沙箱化)」,防止插件间的依赖冲突、数据泄露、资源抢占;

  • 性能层面:通过「缓存、资源优化、异步处理」降低大量插件对主应用的性能损耗;

  • 生态层面:通过「插件开发规范 + SDK」标准化插件接入,降低多开发者协作的成本。

当插件量增大时,原方案(MF + PF4J)通过「平台化管理 + 按需加载 + 沙箱隔离 + 标准化生态」的升级,完全可以支撑大量插件的稳定运行,核心优势:

  1. 管理效率:插件市场 + 管理后台解决了大量插件的安装、升级、卸载、监控问题,无需人工干预;

  2. 性能可控:按需加载 + 资源优化 + 隔离策略,避免大量插件导致的加载缓慢、内存溢出、资源抢占;

  3. 稳定性保障:强隔离(前端沙箱 + 后端类加载器 / 多数据源)+ 健康检查 + 熔断,防止单个插件异常影响全局;

  4. 生态可扩展:SDK + 规范 + 审核机制,降低第三方开发者的插件开发成本,形成良性生态。

落地优先级建议

  1. 先搭建「插件市场 + 管理后台」,解决大量插件的管理问题;

  2. 再优化「加载机制 + 隔离策略」,保障性能和稳定性;

  3. 最后完善「SDK + 规范 + 审核机制」,支撑生态扩展。

适用场景边界

  • 适合插件量:100 个以内(个人网站 / 中小型平台),通过上述方案可稳定支撑;

  • 若插件量超 1000 个(大型开放平台),需进一步升级为「微服务化插件」(每个插件独立部署为微服务,主应用通过服务发现调用)

抽象总结

这篇博文的核心内容多由 AI 生成 —— 只因文中架构尚处于 “构想阶段”(是我 “云” 出的思路,未经过实际落地操作)。

但想借这点说明:AI 虽无法独立完成完整应用的开发,可只要我们提供明确的架构方向与逻辑,让它参与讨论、验证,它就能在关键环节帮我们排查漏洞、修正偏差。

带着思路和 AI 协作的方式,远比直接把问题丢给 AI、收到格式生硬的回复要舒服得多,对渴望成长为架构师的新手来说,这无疑是个实用的辅助功能。

也算是水一篇博文了,不然直接拷贝AI回复也太抽象了。