SOFAServerless架构的意义

传统架构的痛点

资源成本高企:每个微服务,无论业务量大小,通常都需要独立的计算实例(如虚拟机或容器)来承载。这意味着即使是一个仅处理少量请求的小服务,也需要承担完整的基础设施(如 Web 服务器、运行时框架)内存开销。对于大量长尾应用,聚合起来的资源浪费(尤其是内存)非常可观,导致资源利用率低下15。

研发运维效率瓶颈:

协作阻塞 :多人协作开发同一个大型应用时,功能开发、测试、发布相互依赖,形成串行流程,任何一个环节的延迟都会阻塞整个应用的迭代速度。

反馈周期长 :传统应用启动缓慢(尤其是 Java 应用),构建和部署流程耗时数分钟甚至更长。这导致从代码提交到验证上线的周期很长,难以支持业务的快速试错和频繁发布。
架构演进僵化:在业务发展过程中,应用需要在单体、模块化、微服务等架构形态间平滑演进。但无论是将单体拆分为微服务,还是将多个微服务合并,传统的改造方式代码改动量和风险都极高,使得架构演进成本高昂,甚至难以实施

SOFAServerless

架构拆分逻辑

纵向拆分 :将传统单体应用拆分为基座模块 两个层次。基座作为稳定的底层运行时平台,负责机器资源、通用技术组件(如Web容器、数据库连接池等)和通用业务逻辑,为模块提供统一的运行环境。模块则是纯粹的业务逻辑单元,开发者只需关注业务实现,无需感知底层基础设施。
横向拆分 :在业务层,将业务横向拆分为多个独立的模块。每个模块可以独立开发、测试、部署和运维,从而实现并行迭代,解决多人协作时的阻塞问题。

核心技术原理列举

核心技术原理列举

构建与部署
模块构建加速的真相

模块需要依赖基座提供的容器、连接、rpc框架等,以确保编译通过,但基座的作用域被设置为provided。

在进行打包时,maven会将provided作用域的依赖排除在最终的模块JAR包外,使得构建产物非常轻量(可小于1MB)。

因此在模块部署时,构建那么快速的原因是"打包负担锐减"的结果,贡献了大部分时间节省。

部署模式的演进

分为基座容器和模块实例

基座容器:数量较少且稳定,像"服务器"一样提供基础运行环境。

模块实例:数量多于基座,根据业务需求动态部署到基座上,像"应用程序"一样灵活伸缩。

这种模式实现了极致的资源复用,多个模块共享一个基座的基础框架内存开销,避免了传统微服务每个应用独立部署的浪费。

且因热部署的原因,模块部署在基座上的效率远比微服务部署的速度更快,加快了发布上线的速度,提升了工程效率。

类隔离机制

SOFAArk框架是实现多模块共存的基础。SOFAArk框架为每个模块创建一个独立的SOFAArk ClassLoader

这种机制确保了:

隔离性:不同模块可以使用相同依赖库的不同版本而不会发生冲突。

共享性:模块的类加载器将基座的类加载器作为父加载器,从而可以安全地复用基座已加载的类。

通过这种机制,既实现了模块间的隔离,又避免了重复加载基础类造成的资源浪费。

热部署技术

热部署是实现秒级发布的关键。当需要更新模块时,运维平台通过热部署技术将新模块包动态安装到正在运行的基座JVM进程中。

这个过程无需重启基座,通常能在秒级完成

核心价值体现

SOFAServerless带来的核心价值可总结为以下几点

价值维度 传统应用 SOFAServerless模块 提升效果

发布效率 平均6分钟 10-30秒 10倍以上提升

资源占用 每个应用独立基础框架开销 多模块共享基座开销 资源利用率提升10倍

变更风险 影响整个应用 仅影响单个模块 变更范围大大缩小

思考与总结

SOFAServerless的核心思路,是通过"基座+模块"的架构,对传统应用进行纵向和横向拆分,旨在解决微服务架构普遍存在的资源成本高、研发运维效率低、应用拆分难度大等问题。

通过优化"构建与部署","类隔离机制","热部署技术",极大效率的节省了资源和部署的效率。通过引入基座的方式屏蔽基础设施,模块的开发者可以专注于业务逻辑,减少其他基础设施问题的干扰。

相关推荐
weixin_440784114 小时前
【HandlerThread实现原理】
android·java·开发语言
leoZ2314 小时前
本地跑大模型实战(七):llama.cpp 性能调优,让推理更快更省
java·人工智能·spring·生成对抗网络·语言模型·自然语言处理·llama
有梦不弃4 小时前
模块化单体架构设计方案:DDD + 六边形架构落地实践
后端·架构
杨云龙UP4 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
ZENERGY-众壹4 小时前
500个工商业电站压垮数据库?海量光伏时序数据存储的架构取舍
数据库·架构·influxdb·光伏·光伏运维
PC2005-cloud5 小时前
从零上手 openGauss:Docker 部署 + 全场景连接教程
运维·docker·容器
独隅5 小时前
Cursor+GitOps 自动化运维实战:智能编写 Ansible 与 Terraform
运维·自动化·ansible
mubei-1235 小时前
SpringDAO的用法
java·开发语言·数据库
happymagic5 小时前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
星空你好5 小时前
AI辅助运维:开源一个内网日志监控工具
运维